我有一台运行 FreeBSD 9.1 的 KVM 虚拟机,具有典型的单分区布局,带有用于交换、/、/tmp、/var、/usr 的切片。现在我需要将该虚拟服务器与其他服务器一起升级到更大的硬盘。
我不想重新安装整个系统和所有服务器应用程序,所以我宁愿增加现有系统的切片大小。
我在网上看到,使用 fdisk、disklabel 和 growfs 很容易增加分区中最后一个片的大小,通常是 /usr。但是,我还需要增加 /var 切片的大小。
root@chaos ~ % bsdlabel /dev/vtbd0s1
# /dev/vtbd0s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 1048576 0 4.2BSD 0 0 0
b: 980816 1048576 swap
c: 31456593 0 unused 0 0 # "raw" part, don't edit
d: 2586624 2029392 4.2BSD 0 0 0
e: 1048576 4616016 4.2BSD 0 0 0
f: 25792001 5664592 4.2BSD 0 0 0
root@chaos ~ % gpart show -l vtbd0
=> 63 31457217 vtbd0 MBR (15G)
63 31456593 1 (null) [active] (15G)
31456656 624 - free - (312k)
root@chaos ~ % df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/vtbd0s1a 495M 215M 240M 47% /
devfs 1.0k 1.0k 0B 100% /dev
/dev/vtbd0s1e 495M 12k 456M 0% /tmp
/dev/vtbd0s1f 11G 2.5G 8.5G 23% /usr
/dev/vtbd0s1d 1.2G 562M 562M 50% /var
是否有任何“最佳实践”方法如何做到这一点?
或者除了最后一个之外,所有其他切片都不允许这样做吗?
PS:系统使用UFS文件系统
PPS:Disk I/O via virtio drivers from ports
夫妇的想法:
无法将 BSD 片扩展到磁盘上的两个物理位置(磁盘上的新空间仅在末尾,不在末尾的片无法扩展到该新空间)。我不知道可以移动切片的工具,但如果不存在我会感到惊讶。
您不需要在单独的分区上使用 var。笨重的旧安装程序将始终为您提供传统的分区布局,这与安装程序一样过时。由于这些确切的原因,我很少像安装程序那样将文件系统分成难以管理的小块。
实际上,您只需从中删除 /var 的行,
/etc/fstab
系统将在下次重新启动时在根切片上重新创建 var 层次结构。然而,您的根分区可能也很小,这也是安装程序的默认设置。这应该是Just Work™,但我已经看到应用程序软件在他们的文件/var
被扔掉时会出现问题。如果当前的 var 切片很小,则可能更容易扔掉整个切片并在新的可用空间中创建一个新切片。应该有很多方向,但如果您需要更多详细信息,请发布,我可以填写空白。
如果您的磁盘布局真的很糟糕,那么通常更容易下降到单一模式,创建整个混乱的 tar,吹走并重新创建分区/标签(使用引导 CD 或类似的),然后从 tar 恢复。我去过那里几次。在 VM 上更容易,因为您通常可以挂载全新的 vmdk/vhd/whatever,分区/切片/布局,下降到单模式,并使用双 tar 管道复制系统而无需使用现有驱动器(在万一你oops这个过程)。
更新- 您有一个与 var 切片相邻的基本上未使用的 /tmp 切片。您可以卸载、删除
/tmp
文件夹、将其符号链接到 var (ln -s /var/tmp /tmp
)、删除 tmp 和 var 切片、在该空间中创建一个新的 var 切片、重新加载,然后 Bob 就是您的叔叔。