====== FreeBSD 14でPortsのOpenZFSを使う ====== ===== 試した環境 ===== * FreeBSD 14.3-RELEASE-p2 * [[https://www.freshports.org/filesystems/openzfs/|filesystem/openzfs]], [[https://www.freshports.org/filesystems/openzfs-kmod/|filesystem/openzfs-kmod]] 2.3.3 ===== 手順 ===== 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側に変更する。 # 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を持ってて、こっちの実装は最小限だったりして、新プール&新機能との互換性がない可能性があるので。