1. zfsファイルシステムを作成する
まず,
# echo 'zfs_enable="YES"' >> /etc/rc.conf # reboot
次に,
# zpool create tank ad4s3f
これで,
# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT tank 69.5G 111K 69.5G 0% ONLINE -
zfsコマンドを用い,
# zfs create tank/home3
作ったファイルシステムはdfコマンドで確認することができる。
# mount
/dev/ad4s2a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad4s2g on /home (ufs, local, soft-updates)
/dev/ad4s3e on /home2 (ufs, local, soft-updates)
/dev/ad4s2e on /tmp (ufs, local, soft-updates)
/dev/ad4s2f on /usr (ufs, local, soft-updates)
/dev/ad4s2d on /var (ufs, local, soft-updates)
tank on /tank (zfs, local)
tank/home3 on /tank/home3 (zfs, local)
/tank/
気になるスピードであるが,
表3 ZFSとgjournalでのports.
ファイルシステム | オプション | 新規展開 | 上書展開 | 削除 |
---|---|---|---|---|
zfs | - | 27. |
51. |
50. |
UFS2 | gjournal | 40. |
52. |
25. |
2. 圧縮機能付きファイルシステムを作製する
zfsは,
# zfs set compression=on tank/home3
圧縮アルゴリズムはcompression=gzip
ないしcompression=gzip-数字
ファイル圧縮はzfs setを行った後のファイル操作から有効になる。たとえば圧縮無しでportsを展開すると299Mバイトのディスク領域を消費するが,
表4 compression無しと有りでのports.
ファイルシステム | オプション | 新規展開 | 上書展開 | 削除 |
---|---|---|---|---|
zfs | - | 27. |
51. |
50. |
zfs | compression | 30. |
63. |
20. |
3. スナップショットを利用する
zfsにはまた,
スナップショットを撮る
# zfs snapshot tank/home3@today # zfs list NAME USED AVAIL REFER MOUNTPOINT tank 207M 68.2G 19K /tank tank/home3 207M 68.2G 207M /tank/home3 tank/home3@today 0 - 207M -
ファイルシステムを改変する
# cd /tank/home3 # ls ports ports.tgz # rm -rf ports # zfs list NAME USED AVAIL REFER MOUNTPOINT tank 211M 68.2G 19K /tank tank/home3 207M 68.2G 92.2M /tank/home3 tank/home3@today 115M - 207M - # ls ports.tgz
元に戻す
# cd / # zfs rollback tank/home3@today # ls tank/home3/ ports ports.tgz
4. ZFSを使うのをやめる
gjournalのときと同じく,
# zfs destroy -R tank
で依存性も含めて
# zpool destroy tank
でプールを開放すれば元通りである。
# zfs list no datasets available
今後zfsを使わないのであれば,zfs_
の行も削除しておくとよいだろう。
5. ZFSの制限
以上便利なZFSであるが,
Mar 14 17:58:30 pen4 kernel: ZFS WARNING: Recommended minimum kmem_size is 256MB; expect unstable behavior. Mar 14 17:58:30 pen4 kernel: Consider tuning vm.kmem_size or vm.kmem_size_min
また,
km_malloc(131072): kmem_map too small: 294715392 total allocated cpuid = 1