复制 root@ykla:~ # gpart show
=> 40 167772087 nda0 GPT (80G)
40 532480 1 efi (260M)
532520 1024 2 freebsd-boot (512K)
533544 984 - free - (492K)
534528 4194304 3 freebsd-swap (2.0G)
4728832 142071775 4 freebsd-zfs (68G)
146800607 20971520 - free - (10G)
复制 root@ykla:~ # gpart resize -i 4 nda0
nda0p4 resized
复制 root@ykla:~ # gpart show
=> 40 167772087 nda0 GPT (80G)
40 532480 1 efi (260M)
532520 1024 2 freebsd-boot (512K)
533544 984 - free - (492K)
534528 4194304 3 freebsd-swap (2.0G)
4728832 163043295 4 freebsd-zfs (78G)
复制 root@ykla:~ # zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 67.5G 2.20G 65.3G - - 2% 3% 1.00x ONLINE - # 这里看到还是 67.5G 没有扩容
root@ykla:~ # zpool status
pool: zroot
state: ONLINE
status: Some supported and requested features are not enabled on the pool.
The pool can still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0 # 可以看到池名是默认的 zroot
nda0p4 ONLINE 0 0 0 # 这里看到是 nda0p4
errors: No known data errors
复制 root@ykla:~ # zpool online -e zroot nda0p4
复制 root@ykla:~ # zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 77.5G 2.20G 75.3G - - 2% 2% 1.00x ONLINE -
复制 root@freebsd:~ # gpart show
=> 3 41943035 da0 GPT (20G)
3 122 1 freebsd-boot (61K)
125 66584 2 efi (33M)
66709 2097152 3 freebsd-swap (1.0G)
2163861 10486633 4 freebsd-ufs (5.0G)
12650494 29292544 - free - (14G)
警告
如果你使用的是 GPT 分区表,上边的扩容操作(在虚拟机或云服务器上的 )会破坏 GPT 分区表,所以需要先恢复之:
执行后下面步骤相同。
复制 root@freebsd:~ # gpart resize -i 4 da0
da0p4 resized
复制 root@freebsd:~ # service growfs onestart
Growing root partition to fill device
da0 recovering is not needed
da0p4 resized
growfs: no room to allocate last cylinder group; leaving 7.7MB unused
super-block backups (for fsck_ffs -b #) at:
11544384, 12827072, 14109760, 15392448, 16675136, 17957824, 19240512, 20523200, 21805888, 23088576, 24371264,
25653952, 26936640, 28219328, 29502016, 30784704, 32067392, 33350080, 34632768, 35915456, 37198144, 38480832
复制 root@freebsd:~ # df -hl
Filesystem Size Used Avail Capacity Mounted on
/dev/gpt/rootfs 18G 4.8G 12G 29% /
devfs 1.0K 0B 1.0K 0% /dev
/dev/gpt/efiesp 32M 651K 31M 2% /boot/efi
tmpfs 20M 4.0K 20M 0% /tmp
tmpfs 32M 156K 32M 0% /var
复制 root@ykla:~ # gpart show -p
=> 40 244277168 mmcsd0 GPT (116G)
40 532480 mmcsd0p1 efi (260M)
532520 2008 - free - (1.0M)
534528 243740672 mmcsd0p2 freebsd-zfs (116G)
244275200 2008 - free - (1.0M)
=> 34 976773101 nda0 GPT (466G)
34 6 - free - (3.0K)
40 567256 nda0p1 efi (277M)
567296 419436064 nda0p2 ms-basic-data (200G)
420003360 310592132 nda0p3 ms-basic-data (148G)
730595492 4 - free - (2.0K)
730595496 177626968 nda0p4 ms-basic-data (85G)
908222464 67100672 nda0p5 freebsd-swap (32G)
975323136 1445937 nda0p6 ms-recovery (706M)
976769073 4062 - free - (2.0M)
复制 root@ykla:~ # gpart show -rp
=> 40 244277168 mmcsd0 GPT (116G)
40 532480 mmcsd0p1 c12a7328-f81f-11d2-ba4b-00a0c93ec93b (260M)
532520 2008 - free - (1.0M)
534528 243740672 mmcsd0p2 516e7cba-6ecf-11d6-8ff8-00022d09712b (116G)
244275200 2008 - free - (1.0M)
=> 34 976773101 nda0 GPT (466G)
34 6 - free - (3.0K)
40 567256 nda0p1 c12a7328-f81f-11d2-ba4b-00a0c93ec93b (277M)
567296 419436064 nda0p2 ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 (200G)
420003360 310592132 nda0p3 ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 (148G)
730595492 4 - free - (2.0K)
730595496 177626968 nda0p4 ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 (85G)
908222464 67100672 nda0p5 516e7cb5-6ecf-11d6-8ff8-00022d09712b (32G)
975323136 1445937 nda0p6 de94bba4-06d1-4d40-a16a-bfd50179d6ac (706M)
976769073 4062 - free - (2.0M)
UFS 全称是 Unix File System,即 UNIX 文件系统,基于 UNIX v7。过去,macOS 也使用该文件系统作为 root 文件系统。目前 FreeBSD 在使用的是 UFS2。Linux 对 UFS 的读写支持也不完整。这个文件系统只能扩大不能被缩小。
注意
UFS 文件系统和手机等设备中使用的 UFS 存储完全不是一回事,那个 UFS 是 Universal Flash Storage(通用闪存存储)的缩写,已经出到 4.0 了(FreeBSD 于 10.4 支持 eMMC;而 UFS 出现在 FreeBSD 15.0 的开发计划中,尚不支持)。而作为文件系统的 UFS 版本号才是 2。而且手机内部的系统也不可能是 UFS 文件系统,因为基于 Linux 的安卓根本不支持 UFS 这个文件系统,这些设备一般的根文件系统是 ext4(一些新设备是 F2FS)。