gpart实践(linux分区及zfs分区)
在部署FreeBSD+Linux的混合系统时,我的实践将一个NVMe分为多个分区:
使用GPT分区在ZFS上构建FreeBSD Root(安装) FreeBSD安装过程自定义256G空间用于
zroot存储池,实现FreeBSD on ZFS root划分256G用于 LFS(Linux from scratch) 构建,分区将分别实验(最终采用 XFS文件系统 ):
单独划分一个分区用于构建 ZFS Stripe条带化 (FreeBSD环境实践) 实现独立的
zdata存储池,后续可以进一步扩展
磁盘
由于PCIe被用于GPU设备,所以主机只安装了一块NVMe存储,使用
geom检查如下:
geom 列出磁盘geom disk list
系统中只安装了一块 铠侠KIOXIA EXCERIA G2 NVMe SSD存储 显示设备名为 nda0 :
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
由于我在安装过程中 使用GPT分区在ZFS上构建FreeBSD Root(安装) ,所以当前为操作系统分配的
zroot存储池只占用部分存储空间,使用 gpart 检查磁盘分区:
gpart 检查磁盘分区gpart show nda0
当前有3个分区,是 使用GPT分区在ZFS上构建FreeBSD Root(安装) 创建的
gpart 检查磁盘分区=> 40 3907029088 nda0 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 3365429384 - free - (1.6T)
磁盘分区
在上述3个分区之后,再创建一个(分区4)分区(
-t linux-data表示是Linux分区),分配256G(-s)并设置以1M大小进行对齐(-a 1M):
gpart add -t linux-data -a 1M -s 256G nda0
剩余磁盘空间再创建一个分区,此时因为是完全分配剩余空间,所以不指定
-s参数
gpart add -t freebsd-zfs -a 1M nda0
完成后检查
gpart show nda0可以看到上述操作已经添加了2个分区:
gpart 检查磁盘分区可以看到添加的2个分区=> 40 3907029088 nda0 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)
ZFS Stripe条带化
备注
由于FreeBSD对Linux文件系统支持有限,所以这里 linux-data 分区后续采用 bhyve虚拟化运行Ubuntu 来完成文件系统创建(读写可以在FreeBSD中进行,所以我最终会采用 FreeBSD Linux Jail 来实现 FreeBSD使用Linux XFS文件系统 读写访问,用于构建 LFS(Linux from scratch) )
这里使用了单块磁盘的单个分区,所以实践采用 FreeBSD ZFS单块磁盘stripe :
zdata zpoolzpool create -f -o ashift=12 zdata /dev/nda0p5
# 启用压缩
zfs set compression=lz4 zdata