Skip to content

30.8 更新 OpenZFS

在实现多版本 FreeBSD 共存时,一个重要的考虑因素是 ZFS 池版本的兼容性问题。通常,在 FreeBSD 大版本之间,ZFS 池版本和特性都会发生变化,例如大版本更新时 zpool 通常有所变动,这可能导致无法互相访问存储池。

可通过 Ports 中的 OpenZFS 实现 13、14、15 等多个系统版本的共存。

30.8.1 查看内置的 OpenZFS 版本

首先查看当前系统内置的 ZFS 版本信息,以便确认待替换的版本。

显示当前 ZFS 工具和内核模块的版本信息:

sh
# zfs version
zfs-2.2.7-FreeBSD_ge269af1b3
zfs-kmod-2.2.7-FreeBSD_ge269af1b3

目前 FreeBSD 基本系统内置的是 OpenZFS 2.2.7(即来自 https://github.com/openzfs/zfs/commit/e269af1b3)。

30.8.2 安装 filesystems/openzfs

Ports 中的 OpenZFS 提供了比基本系统更灵活的版本选择。可以使用 pkg 或 Ports 两种方式来安装它。

  • 使用 pkg 安装
sh
# pkg install openzfs
  • 使用 Ports 安装:
sh
# cd /usr/ports/filesystems/openzfs/
# make install clean

30.8.3 编辑 /boot/loader.conf 文件

安装完成后,需要配置系统启动时加载哪个 ZFS 模块。默认情况下,系统会加载基本系统内置的 ZFS 模块,需要修改这个行为。

为了防止系统加载基本系统内置的 ZFS 版本,需要在 zfs_load=YES 前加上注释 #,取消其开机自动加载。

形如:

ini
# zfs_load=YES 	# 不加载内置 ZFS 内核模块

再新增下列数行:

ini
zfs_load=NO        # 显式禁用内置 ZFS 内核模块加载
openzfs_load=YES   # 启用 OpenZFS 模块加载

完成后重启系统。

30.8.4 检查 ZFS 版本

配置完成并重启后,需要验证系统是否正确加载了 Ports 版本的 OpenZFS。

在重启后,检查 ZFS 版本:

sh
# zfs version
zfs-2.2.7-FreeBSD_ge269af1b3
zfs-kmod-2.3.5-1

随后即可更新其他存储池或启用新的特性。

警告

考虑到基本系统中的 OpenZFS 版本不一定是最新的,建议所有版本均使用 Ports 中的 OpenZFS 以保持版本统一,包括 15.0-RELEASE 也应按照相同方法替换 ZFS。