Parted:调整分区大小而不调整文件系统大小

Parted:调整分区大小而不调整文件系统大小

parted 可以在不调整底层文件系统大小的情况下调整分区大小吗?

目前,它会打印一条警告:

警告:您正在尝试使用 parted 操作(调整)文件系统。parted 的文件系统操作代码不如 e2fsprogs 等专用文件系统特定软件包中的代码那么强大。我们建议您尽可能只使用 parted 来操作分区表。在即将发布的版本中,将不再支持在大多数类型的文件系统上执行大多数操作。

答案1

调整分区大小是一项常见任务,尤其在使用硬件 RAID、虚拟机等时,即使在操作系统运行时,磁盘大小也会改变。

不幸的是,parted 不会调整分区大小(而且实际上从未做到过)。要实现同样的效果,您必须删除原始分区并使用新的结束地址重新创建它。您必须保持起始地址不变,否则可能会损坏所有数据。您还必须将所有标志重新设置为其原始值,以确保下次启动时正确使用该分区。

开始之前,请确保您已备份系统!

在 parted 中,使用以下命令将显示单元切换为扇区,u s并使用以下命令打印出当前值p

值得将这些值记下来,以防您破坏某些东西并需要恢复原始分区。

然后删除现有分区rm

然后使用以下命令创建新分区mkpart

最后设置标志toggle

退出 parted 后,您可能需要运行partprobe以使内核更新其分区视图,例如:cat /proc/partitions

使用 LVM2 时,您可以增大分区,然后运行pvresize /dev/...,新的容量将可用于卷组。然后,您可以继续执行lvresizeresize2fs任何适合您操作系统的操作。

答案2

你正在尝试做的事情最好的情况下是危险且困难的,最坏的情况下则是灾难性的。

文件系统本身设计为占用整个分区。格式化为占用小于整个分区的文件系统是“合法的”,但尝试将未占用的空间用于其他文件系统则是一种黑客行为。

“调整大小”有两种类型:增大和缩小。

如果您的初始状态是一个文件系统占据了整个分区,并且您扩大了分区(使其变大),这基本上意味着您调整了分区表(只是硬盘驱动器一小块区域中的一堆数字,格式取决于您的分区类型,例如 MBR 或 GPT),以便分配给分区的块比文件系统使用的块多。文件系统不会使用分区末尾的额外块,因为文件系统仍然认为它在比实际更小的分区上运行。“智能”文件系统可以轻松检测并开始使用剩余空间,但我不知道是否有任何文件系统真正这样做。无论哪种方式,您在安装驱动器时都可能会收到至少警告。

如果您尝试缩小分区(使其更小)而不同时缩小文件系统,您将丢失数据:当文件系统尝试写入超出分区末尾的块时,设备节点将因尝试写入超出分区边界而引发异常,并且文件系统将向用户空间引发 I/O 错误。您之前在重新分区的空间中拥有的任何数据都将丢失。

不管怎样,你都是在搬起石头砸自己的脚。我甚至不知道你该如何告诉文件系统从分区内的某个块开始挂载文件系统。类似这样的命令mount /dev/sda1意味着挂载从分区的最开始开始。是的,如果你能够在“隐藏分区”中创建文件系统,那么你会稍微掩盖“隐藏分区”中任何数据的位置;但任何聪明到想在你的硬盘上四处寻找的人都会很容易地找到它,所以不要以为你获得了任何安全措施。

如果您担心计算机的其他用户或未经授权的人员对计算机进行物理访问,则应使用基于强加密的全盘加密。如果大多数物理访问用户正在寻找磁盘上有趣的东西,那么仅仅隐藏分区不会让他们困惑很长时间。

检查一下fdisk或者cfdisk您是否仍想这样做,但这样做会使书中的所有保修条款(甚至一些保修条款)失效...

相关内容