zfs は zpool と対になって使う。zpool で仮想デバイスを管理し、zfs でファイルシステムを作る。よく、この様にまとめられる。FreeBSD で言うと、zpool は GEOM、つまりデバイスレベルの制御、zfs は ufs 等のファイルシステムレベルの制御の様だ。 一つの zpool の特徴的な動作としては、zpool が提供するにはファイルシステムだと言うこと。GEOM だと、デバイスしか提供しないので、その上にファイルシステムを作る必要がある。zpool は既にファイルシステムを提供するので、そのままでも使えるし、その中から別途ファイルシステムに割り当てる事も出来る。
zfs モジュールを読み込む。
$ kldload zfs
常用するのなら、echo 'zfs_enable="YES"' >> /etc/rc.conf
を行なう。
既に GPT で切られているパーティションをそのまま使う。何か失敗した時に、再度パーティションを切る手間を省く為だ。もちろん、ディスク全体を使うことも出来る。
$ gpt show da0
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 7600000 1 GPT part - FreeBSD UFS/UFS2
7600034 407485 2 GPT part - FreeBSD UFS/UFS2
8007519 32 Sec GPT table
8007551 1 Sec GPT header
$ gpart modify -i 1 -t freebsd-zfs da0
da0p1 modified
$ gpart modify -i 2 -t freebsd-zfs da0
da0p2 modified
$ gpart show da0
=> 34 8007485 da0 GPT (3.8G)
34 7600000 1 freebsd-zfs (3.6G)
7600034 407485 2 freebsd-zfs (199M)
$ gpt show da0
gpt show: unable to open device 'da0': Operation not permitted
$ gpart show da0
=> 34 8007485 da0 GPT (3.8G)
34 7600000 1 freebsd-zfs (3.6G)
7600034 407485 2 freebsd-zfs (199M)
$ gpt show da0
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 7600000 1 GPT part - FreeBSD ZFS
7600034 407485 2 GPT part - FreeBSD ZFS
8007519 32 Sec GPT table
8007551 1 Sec GPT header
scratch と言う名で、zpool を作った。
$ zpool create scratch /dev/da0p1 /dev/da0p2
$ df /scratch
Filesystem 1K-blocks Used Avail Capacity Mounted on
scratch 3904896 128 3904768 0% /scratch
$ zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
scratch 3.78G 112K 3.78G 0% ONLINE -
既に、/scratch としてマウントされている。
圧縮を有効にする。
$ zfs set compression=on scratch
zpool の様子を調べてみた。
セコメントをする