gpart实践(ufs分区)
在 FreeBSD Linux Jail 遇到一个疑似 Linuxulator 在FreeBSD 15 Alpha 2上对 ZFS metadata 翻译层支持的bug,想要验证一下是否在UFS(简单有效)文件系统上可以绕过这个问题,对比验证一下FreeBSD 15 Alpha 2是否确实存在bug。本文为一个简单的UFS文件系统实践记录。
使用
geom检查当前磁盘:
使用
geom 列出磁盘geom disk list
系统中只安装了一块 铠侠KIOXIA EXCERIA G2 NVMe SSD存储 显示设备名为 nda0 :
单块NVMe存储分区
Geom name: nda0
Providers:
1. Name: nda0
Mediasize: 2000398934016 (1.8T)
Sectorsize: 512
Mode: r2w2e4
descr: KIOXIA-EXCERIA G2 SSD
lunid: 00000000000000008ce38e030091c40e
ident: Y39B70RTK7AS
rotationrate: 0
fwsectors: 0
fwheads: 0
当前系统分区已经在 gpart实践(linux分区及zfs分区) 划分,所以使用 gpart 检查磁盘:
使用
gpart 检查磁盘分区gpart show
显示当前分区有5恶,其中分区4是准备调整的分区:
使用
gpart 检查磁盘分区,分区4需要调整=> 40 3907029088 diskid/DISK-Y39B70RTK7AS GPT (1.8T)
40 532480 1 efi (260M)
532520 2008 - free - (1.0M)
534528 4194304 2 freebsd-swap (2.0G)
4728832 536870912 3 freebsd-zfs (256G)
541599744 536870912 4 linux-data (256G)
1078470656 2828558336 5 freebsd-zfs (1.3T)
3907028992 136 - free - (68K)
删除分区4:
删除分区4
#语法 gpart delete -i index [-f flags] geom
gpart delete -i 4 /dev/diskid/DISK-Y39B70RTK7AS
这里有一个问题,一共5个分区,删掉中间的分区4,那么分区5的index会变化么?
使用
gpart 检查磁盘分区gpart show
可以看到分区5的index依然是 5 :
使用
gpart 检查磁盘分区,删除分区4之后分区5的index依然是5=> 40 3907029088 diskid/DISK-Y39B70RTK7AS GPT (1.8T)
40 532480 1 efi (260M)
532520 2008 - free - (1.0M)
534528 4194304 2 freebsd-swap (2.0G)
4728832 536870912 3 freebsd-zfs (256G)
541599744 536870912 - free - (256G)
1078470656 2828558336 5 freebsd-zfs (1.3T)
3907028992 136 - free - (68K)
创建一个 UFS 分区:
创建一个UFS分区
gpart add -t freebsd-ufs -a 1M -s 56G /dev/diskid/DISK-Y39B70RTK7AS
可以看到新创建的UFS分区使用了分区4的index :
使用
gpart 检查磁盘分区,新创建的UFS分区使用了分区4的index=> 40 3907029088 diskid/DISK-Y39B70RTK7AS GPT (1.8T)
40 532480 1 efi (260M)
532520 2008 - free - (1.0M)
534528 4194304 2 freebsd-swap (2.0G)
4728832 536870912 3 freebsd-zfs (256G)
541599744 117440512 4 freebsd-ufs (56G)
659040256 419430400 - free - (200G)
1078470656 2828558336 5 freebsd-zfs (1.3T)
3907028992 136 - free - (68K)
最后创建 Linux 分区将剩余空间用掉:
创建Linux分区
gpart add -t linux-data -a 1M /dev/diskid/DISK-Y39B70RTK7AS
可以看到每次新创建的分区都是使用可分配index的最小值,这次轮到了6:
使用
gpart 检查磁盘分区,新创建的Linux分区使用了可用index最小值6=> 40 3907029088 diskid/DISK-Y39B70RTK7AS GPT (1.8T)
40 532480 1 efi (260M)
532520 2008 - free - (1.0M)
534528 4194304 2 freebsd-swap (2.0G)
4728832 536870912 3 freebsd-zfs (256G)
541599744 117440512 4 freebsd-ufs (56G)
659040256 419430400 6 linux-data (200G)
1078470656 2828558336 5 freebsd-zfs (1.3T)
3907028992 136 - free - (68K)
UFS文件系统创建和挂载
对第4分区创建UFS文件系统
创建UFS系统
#newfs /dev/diskid/DISK-Y39B70RTK7ASp4
# 参数
# -U 激活soft updates,可以提高性能以及crash快速恢复文件系统
# -t 激活SSD存储的TRIM支持
# -j 激活Soft Updates的Journaling功能
newfs -Utj /dev/diskid/DISK-Y39B70RTK7ASp4
创建挂载目录
/udata:
创建目录
mkdir /udata
配置
/etc/fstab添加UFS挂载参数
/etc/fstab 添加UFS挂载参数# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/swap0 none swap sw 0 0
/dev/diskid/DISK-Y39B70RTK7ASp4 /udata ufs rw 1 2
执行
mount /udata命令挂载分区,然后执行df -h可以看到分区4已经挂好如下:
检查分区挂载
Filesystem Size Used Avail Capacity Mounted on
...
/dev/diskid/DISK-Y39B70RTK7ASp4 54G 448M 49G 1% /udata
一切就绪,开始实践 VNET + Thick(厚) Jail(UFS)