FreeBSD使用UFS(Unix File System)作为操作系统的文件系统,也被称为freebsd-ufs。当我们变更云服务器的硬盘到更大容量后,系统不会自动扩容磁盘大小,需要执行这些步骤完成扩容。该帮助适用于FreeBSD各版本操作系统。
扩容系统盘
1、查看硬盘分区
首先远程登录到Linux云服务器,用df命令和gpart shows命令查看硬盘分区情况。如下所示,可以看到这台服务器只有一块25G的系统盘。
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ufs/rootfs 24G 924M 21G 4% /
devfs 1.0K 1.0K 0B 100% /dev
# gpart show
=> 40 52428720 vtbd0 GPT (25G)
40 1024 1 freebsd-boot (512K)
1064 52427696 2 freebsd-ufs (25G)
变更硬盘容量到40G后,我们再次用以上命令查看新的硬盘分区情况。如下所示,可以看到vtbd0分区的大小已变更为40G,并且标记为CORRUPT(损坏)状态。
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ufs/rootfs 24G 924M 21G 4% /
devfs 1.0K 1.0K 0B 100% /dev
# gpart show
=> 40 52428720 vtbd0 GPT (40G) [CORRUPT]
40 1024 1 freebsd-boot (512K)
1064 52427696 2 freebsd-ufs (25G)
2、恢复损坏分区
用gpart recover命令恢复损坏的vtbd0分区。
# gpart recover vtbd0
vtbd0 recovered
# gpart show
=> 40 83886000 vtbd0 GPT (40G)
40 1024 1 freebsd-boot (512K)
1064 52427696 2 freebsd-ufs (25G)
52428760 31457280 - free - (15G)
3、扩容FreeBSD分区
根据FreeBSD官方手册,在修改挂载状态的文件系统分区表时,存在数据丢失的风险。因此如果需要扩容的分区上有重要数据,建议做一次异地备份后再执行扩容。准备完毕后,用gpart resize命令扩容分区。
# gpart resize -i 2 vtbd0
vtbd0p2 resized
# growfs /dev/ufs/rootfs
4、确认扩容成功
用gpart show命令和df命令查看硬盘分区情况,确认是否扩容成功。可以看到系统盘已成功扩容到40G。
# gpart show
=> 40 83886000 vtbd0 GPT (40G)
40 1024 1 freebsd-boot (512K)
1064 83884976 2 freebsd-ufs (40G)
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ufs/rootfs 39G 924M 35G 3% /
devfs 1.0K 1.0K 0B 100% /dev
创建数据盘
创建一块新的数据盘后,需要进行分区初始化并且挂载到操作系统上。在下面的示例中,我们将创建一块50G的数据盘作为整个分区,并命名为vtbd1。
1、创建分区
我们使用gpart create命令来创建,并采用GPT分区模式。
# gpart create -s GPT vtbd1
vtbd1 created
# gpart add -t freebsd-ufs -l vultr\_block\_storage vtbd1
vtbd1p1 added
2、初始化分区
使用UFS文件系统初始化分区。
# newfs -U vtbd1p1
/dev/vtbd1p1: 51200.0MB (104857528 sectors) block size 32768, fragment size 4096
using 82 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
with soft updates
super-block backups (for fsck_ffs -b #) at:
192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 11540352, 12822592, 14104832, 15387072, 16669312, 17951552, 19233792, 20516032, 21798272, 23080512, 24362752, 25644992, 26927232, 28209472, 29491712,
30773952, 32056192, 33338432, 34620672, 35902912, 37185152, 38467392, 39749632, 41031872, 42314112, 43596352, 44878592, 46160832, 47443072, 48725312, 50007552, 51289792, 52572032, 53854272, 55136512, 56418752, 57700992, 58983232,
60265472, 61547712, 62829952, 64112192, 65394432, 66676672, 67958912, 69241152, 70523392, 71805632, 73087872, 74370112, 75652352, 76934592, 78216832, 79499072, 80781312, 82063552, 83345792, 84628032, 85910272, 87192512, 88474752,
89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432, 98732672, 100014912, 101297152, 102579392, 103861632
Now you're ready to mount the new device for use!
3、挂载分区
在这个例子中,我们创建的挂载目录为/mnt/blockstorage,也可以根据需要进行调整。
# mkdir /mnt/blockstorage
# echo /dev/vtbd1p1 /mnt/blockstorage ufs rw,noatime 0 2 >> /etc/fstab
# mount /mnt/blockstorage
4、确认创建成功
用df命令查看硬盘分区情况,确认是否创建成功。
# df -h /mnt/blockstorage/
Filesystem Size Used Avail Capacity Mounted on
/dev/vtbd1p1 48G 8.0K 45G 0% /mnt/blockstorage