在 FreeBSD 上调整 UFS /root 分区的大小

在 FreeBSD 上调整 UFS /root 分区的大小

有没有办法在运行驻留在 UFS /root 分区上的操作系统时调整其大小?我正在运行 FreeBSD。

答案1

有一个关于在 FreeBSD 下扩展磁盘的相当全面的指南在手册中对于UFS(FreeBSD的默认设置),从内核版本10.0及以上版本都可以在线升级。

但是,更改已安装文件系统周围的分区可能会导致数据丢失或不一致,这些数据可能会在系统下次尝试引导时首先发现。还要记住检查您的引导加载程序。


增长文件系统基本上可以归结为:

  1. 调整分区表。执行此步骤时要非常小心,因为这里搞乱可能会导致整个磁盘损坏。您可能希望卸载运行最小系统不需要的所有分区,尤其是交换分区。

    从你的问题来看,我假设你知道如何使用gpart来实现这一点。

    完成调整后,您可以安全地重新安装所有分区并重新启用交换。

  2. 实际成长FS。growfs <blockdevice>对于 FreeBSD,这就像<blockdevice>发出调整大小的分区一样简单。

为了缩小,您必须反向执行这些步骤:

  1. 缩小文件系统确保您不会覆盖任何重要的内容:growfs -s <new_size> <blockdevice>.确保您选择小于新目标的尺寸文件系统大小,即如果您想从 100GB 分区减小到 70GB,请在此步骤将 FS 大小调整为大约 60-65GB。超调越多意味着更多的空间,但通常也意味着更多的重新定位,从而导致更长的等待时间。
  2. 调整分区表。与以前不同,在此步骤中您可以选择确切的目标尺寸。您可能也想在此步骤卸载其他分区,特别是如果您移动其他分区(事实上,在这种情况下您必须卸载这些)。
  3. 扩大文件系统。这消除了您在(新)分区末尾留下的净空:growfs <blockdevice>。省略大小参数会告诉它使用整个分区。

答案2

有一个更好的方法可以做到这一点:

service growfs onestart

它将调用/etc/rc.d/growfs一次。该脚本基本上调用 FreeBSD 手册中的所有相同命令。该脚本旨在在首次启动时调用,以便您可以分配一个非常小的虚拟硬盘,然后当它在大型虚拟硬盘上首次启动时,VM 会扩展以使用提供的整个磁盘。如果您稍后扩展虚拟磁盘(或者将dd文件系统扩展到更大的物理磁盘),您可以手动调用一次脚本来执行所有正确的操作。

答案3

您必须将 rootfs 挂载为只读,并在调整大小完成后立即重新启动。

相关内容