文書の過去の版を表示しています。
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と紛らわしいので注意。
ミラー用のデバイスを取り外す
zpool detach ZTANK ada
$ zpool status zhome2
pool: zhome2
state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
see: http://illumos.org/msg/ZFS-8000-2Q
scan: resilvered 572G in 1h50m with 0 errors on Mon Aug 1 00:18:18 2016
config:
NAME STATE READ WRITE CKSUM
zhome2 DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
15064995861805685088 UNAVAIL 0 0 0 was /dev/ada12p1
3873376026971882544 UNAVAIL 0 0 0 was /dev/ada13p1
ada13p1 ONLINE 0 0 0
ada12p1 ONLINE 0 0 0
ZILを外す
zpool remove POOOLNAME ada0p0
ミラーにしてる時は順次デバイスをdetachし、最後の1つをremoveする。
zpool detach POOLNAME ada0p0 zpool detach POOLNAME ada1p0 ... zpool remove POOLNAME adaXp0
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