FreeBSD 14でPortsのOpenZFSを使う

pkgでfilesystem/openzfsをインストールする。自動でopenzfs-kmodもインストールされる。

# pkg install openzfs
(略)

Message from openzfs-kmod-2.3.3.1403000,1:

--
Amend /boot/loader.conf as follows to use this module:

- change zfs_load="YES" to NO
- change opensolaris_load="YES" to NO
- add openzfs_load="YES"
- (for ARM64) add cryptodev_load="YES"
=====
Message from openzfs-2.3.3,1:

--
Ensure that any zfs-related commands, such as zpool, zfs, as used in scripts
and in your terminal sessions, use the correct path of /usr/local/sbin/ and
not the /sbin/ commands provided by the FreeBSD base system.

Consider setting this in your shell profile defaults!

メッセージにあるとおり、使用するカーネルモジュールをports側に変更する。

/boot/loader.conf
# use port's ZFS
zfs_load="NO"
openzfs_load="YES"

opensolaris_load=“NO”も必要ってことだけど、元々書いてない場合は特になくても問題ないと思われる。ZFSを使う場合は基本書くことになっているが、zfs_load=“YES”なら自動で読み込まれるので、実は明記しなくても大丈夫だったりする。

続いて、各種ZFSコマンドが/usr/local/sbinの方が優先的に使われるようにPATH変数設定をいじる。これはシェルによって違うので割愛。設定せずともフルパスで指定してやれば問題ない。

その後rebootすると、ports側のカーネル拡張が使われていることがわかる。

# kldstat
Id Refs Address                Size Name
 1   21 0xffffffff80200000  1f41500 kernel
 2    1 0xffffffff82142000   6048d0 openzfs.ko  ★これ
 3    1 0xffffffff833f9000     4250 ichsmb.ko
 4    1 0xffffffff833fe000     2178 smbus.ko
 5    1 0xffffffff83401000     430c virtio_console.ko
 6    1 0xffffffff83406000     3560 fdescfs.ko

zfs versionでコマンドとカーネル拡張のバージョンを確認できる。

$ /usr/local/sbin/zfs version
zfs-2.3.3-1
zfs-kmod-2.3.3-1

$ /sbin/zfs version
zfs-2.2.7-FreeBSD_ge269af1b3
zfs-kmod-2.3.3-1

基本、ZFSは下位互換性が保たれてるハズなので、間違って古いZFSコマンドを使っても致命的に壊れる、みたいなことはないと思う。多分。

ただしカーネルが入ってる起動用プール、要はzrootのプールバージョンを上げたり、新機能を使う場合は注意が必要と思われる。FreeBSDはシステムのZFSモジュールとは別に、ブートローダーにもZFSを持ってて、こっちの実装は最小限だったりして、新プール&新機能との互換性がない可能性があるので。

  • freebsd/freebsd_14_use_ports_openzfs.txt
  • 最終更新: 2025-08-12 23:41
  • by Decomo