差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
zfs:zfs_tips [2016-03-07 10:30] Decomo Page name changed from freebsd:zfsメモ to freebsd:zfs_tips |
zfs:zfs_tips [2020-12-03 19:49] (現在) Decomo ↷ freebsd:zfs_tips から zfs:zfs_tips へページを移動しました。 |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== ZFSメモ | + | ====== ZFS Tips ====== |
+ | |||
+ | ZFSを使い始めて早6年、自分なりにノウハウもたまってきたので纏めてみる。尚、FreeBSD自宅鯖のゆる~い環境での実績であり、ミッションクリティカルな環境では必ずしも適合しないと思われるので、そこんとこ承知の上で夜露死苦! | ||
+ | |||
+ | ===== あれこれ ===== | ||
+ | |||
+ | ==== Root on ZFS環境ではシステム用とデータ用でプールを分ける ==== | ||
+ | |||
+ | ブート領域も含めてZFS上にFreeBSD環境を作ることを、界隈ではRoot on ZFSと呼んだりする。この時、例え物理ストレージが1台だけだとしても、システムとデータでパーティションを分け、それぞれ別のプールにした方が良い。 | ||
+ | |||
+ | なぜならば、システムが入っているプール、すなわちルートプールは以下の様な制限があるからだ。 | ||
+ | |||
+ | * 単一またはミラー構成しかサポートしない | ||
+ | * 複数のvdevを持てない | ||
+ | * すなわちslogやL2ARCを持てない | ||
+ | |||
+ | 要するに、運用状況に応じて後からどうにかできる、というZFSのメリットを享受できないのだ。 | ||
===== コマンド例集 ===== | ===== コマンド例集 ===== | ||
行 7: | 行 24: | ||
zpool import -R / | zpool import -R / | ||
</ | </ | ||
+ | |||
==== zpool.cacheの場所を指定してプールをインポートする ==== | ==== zpool.cacheの場所を指定してプールをインポートする ==== | ||
< | < | ||
行 12: | 行 30: | ||
</ | </ | ||
-Rと合わせてRoot on ZFSなFreeBSDに便利 | -Rと合わせてRoot on ZFSなFreeBSDに便利 | ||
+ | |||
+ | ==== プールの名前を変更する ==== | ||
+ | |||
+ | 一旦エクスポートして新名称を与えてインポートする手順を踏む。 | ||
+ | < | ||
+ | zpool export ztank | ||
+ | zpool import ztank ztank_new_name | ||
+ | </ | ||
==== Unicode正規化方式を指定してFSを作成 ==== | ==== Unicode正規化方式を指定してFSを作成 ==== | ||
行 25: | 行 51: | ||
==== 1デバイスのプールにミラー用のデバイスを追加する ==== | ==== 1デバイスのプールにミラー用のデバイスを追加する ==== | ||
< | < | ||
- | zpool attach | + | zpool attach |
</ | </ | ||
ada1p1が既存のデバイスで、ada2p1が追加するミラー用のデバイス。 | ada1p1が既存のデバイスで、ada2p1が追加するミラー用のデバイス。 | ||
addと紛らわしいので注意。 | addと紛らわしいので注意。 | ||
+ | |||
+ | ==== ミラー用のデバイスを取り外す ==== | ||
+ | |||
+ | zpool detach ZTANK UUID または zpool detach ZTANK デバイス | ||
+ | < | ||
+ | # zpool status zhome2 | ||
+ | pool: zhome2 | ||
+ | | ||
+ | status: One or more devices could not be opened. | ||
+ | the pool to continue functioning in a degraded state. | ||
+ | action: Attach the missing device and online it using 'zpool online' | ||
+ | see: http:// | ||
+ | scan: resilvered 572G in 1h50m with 0 errors on Mon Aug 1 00:18:18 2016 | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | zhome2 | ||
+ | mirror-0 | ||
+ | 15064995861805685088 | ||
+ | ada1p1 | ||
+ | ada2p1 | ||
+ | ada3p1 | ||
+ | |||
+ | # zpool detach zhome2 15064995861805685088 | ||
+ | # zpool detach zhome2 ada1p1 | ||
+ | # zpool status zhome2 | ||
+ | pool: zhome2 | ||
+ | | ||
+ | scan: none requested | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | zhome2 | ||
+ | mirror-0 | ||
+ | ada2p1 | ||
+ | ada3p1 | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== UNAVAILなデバイスを置き換える ==== | ||
+ | |||
+ | zpool replace ZTANK UNAVAILデバイスのUUID 新しいデバイスのID | ||
+ | < | ||
+ | # zpool status | ||
+ | pool: zdata | ||
+ | | ||
+ | status: One or more devices could not be opened. | ||
+ | the pool to continue functioning in a degraded state. | ||
+ | action: Attach the missing device and online it using 'zpool online' | ||
+ | see: http:// | ||
+ | scan: resilvered 589G in 1h0m with 0 errors on Sun Apr 29 00:02:27 2018 | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | zdata | ||
+ | raidz2-0 | ||
+ | ada0p1 | ||
+ | ada1p1 | ||
+ | 13314283577528650983 | ||
+ | 1814680760048993662 | ||
+ | logs | ||
+ | ada4p5 | ||
+ | cache | ||
+ | ada4p4 | ||
+ | |||
+ | errors: No known data errors | ||
+ | |||
+ | # zpool replace zdata 13314283577528650983 ada2p1 | ||
+ | # zpool replace zdata 1814680760048993662 ada3p1 | ||
+ | # zpool status | ||
+ | pool: zdata | ||
+ | | ||
+ | status: One or more devices is currently being resilvered. | ||
+ | continue to function, possibly in a degraded state. | ||
+ | action: Wait for the resilver to complete. | ||
+ | scan: resilver in progress since Sun Apr 29 09:24:43 2018 | ||
+ | 26.5G scanned out of 1.19T at 343M/s, 0h59m to go | ||
+ | 12.8G resilvered, 2.18% done | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | zdata | ||
+ | raidz2-0 | ||
+ | ada0p1 | ||
+ | ada1p1 | ||
+ | replacing-2 | ||
+ | 13314283577528650983 | ||
+ | ada2p1 | ||
+ | replacing-3 | ||
+ | 1814680760048993662 | ||
+ | ada3p1 | ||
+ | logs | ||
+ | ada4p5 | ||
+ | cache | ||
+ | ada4p4 | ||
+ | |||
+ | errors: No known data errors | ||
+ | </ | ||
+ | |||
+ | ==== 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 add -a 4k -s SIZE -t freebsd-zfs adaX | ||
+ | </ | ||
+ |