gpart实践(linux分区及zfs分区)

在部署FreeBSD+Linux的混合系统时,我的实践将一个NVMe分为多个分区:

磁盘

  • 由于PCIe被用于GPU设备,所以主机只安装了一块NVMe存储,使用 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 检查磁盘分区
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 zpool
zpool create -f -o ashift=12 zdata /dev/nda0p5

# 启用压缩
zfs set compression=lz4 zdata