文書の過去の版を表示しています。
ZFS Tips
ZFSを使い始めて早6年、自分なりにノウハウもたまってきたので纏めてみる。尚、FreeBSD自宅鯖のゆる~い環境での実績であり、ミッションクリティカルな環境では必ずしも適合しないと思われるので、そこんとこ承知の上で夜露死苦!
あれこれ
Root on ZFS環境ではシステム用とデータ用でプールを分ける
ブート領域も含めてZFS上にFreeBSD環境を作ることを、界隈ではRoot on ZFSと呼んだりする。この時、例え物理ストレージが1台だけだとしても、システムとデータでパーティションを分け、それぞれ別のプールにした方が良い。
なぜならば、システムが入っているプール、すなわちルートプールは以下の様な制限があるからだ。
- 単一またはミラー構成しかサポートしない
- 複数のvdevを持てない
- すなわちslogやL2ARCを持てない
要するに、運用状況に応じて後からどうにかできる、というZFSのメリットを享受できないのだ。
コマンド例集
マウントポイントを指定してプールをインポートする
zpool import -R /path/to/mountroot poolname
zpool.cacheの場所を指定してプールをインポートする
zpool import -o cachefile=/path/to/writable/zpool.cache poolname
-Rと合わせてRoot on ZFSなFreeBSDに便利
プールの名前を変更する
一旦エクスポートして新名称を与えてインポートする手順を踏む。
zpool export ztank zpool import ztank ztank_new_name
Unicode正規化方式を指定してFSを作成
zfs create -o nomalization=type fsname
任意のzpool.cacheでzdb
zdb -U /path/to/zpool.cache
1デバイスのプールにミラー用のデバイスを追加する
zpool attach POOLNAME ada1p1 ada2p1
ada1p1が既存のデバイスで、ada2p1が追加するミラー用のデバイス。
addと紛らわしいので注意。
gpartコマンド例集
ZFSと一緒に使う事が多いので、gpartコマンド例も一緒にまとめておく。
GPTでパーティションテーブルを初期化
gpart create -s gpt adaX
パーティションテーブルを削除
gpart destroy adaX
この時、パーティションテーブルが空じゃないとgpart: Device busyと怒られる。大抵パーティションテーブルには何かしら書かれてる事多いので、殆どの場合でこのメッセージを見る事になる。その時は-Fオプションで強制的に削除する。
パーティションの追加
gpart add -a 4k -s SIZE -t freebsd-zfs adaX