ZFS RAID-Z で家庭用の NAS を構築するため、しばらく手探りであれこれ設定してきましたが、ようやく安定して運用できるようになってきました。おかげで随分勉強にもなりました。今回は万が一のためにディスクが故障した場合の対処法を予習しておきます。
現在の状態:
# zpool status tank pool: tank state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gpt/disk1 ONLINE 0 0 0 gpt/disk2 ONLINE 0 0 0 gpt/disk3 ONLINE 0 0 0 gpt/disk4 ONLINE 0 0 0 gpt/disk5 ONLINE 0 0 0 gpt/disk6 ONLINE 0 0 0 errors: No known data errors
このうち一つ (gpt/disk1) をオフラインにしてみます。
# zpool offline tank gpt/disk1
すると、次のように state が “DEGRADED” (劣化) に変化します。
# zpool status pool: tank state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scan: none requested config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 raidz1-0 DEGRADED 0 0 0 185077048340227906 OFFLINE 0 0 0 was /dev/gpt/disk1 gpt/disk2 ONLINE 0 0 0 gpt/disk3 ONLINE 0 0 0 gpt/disk4 ONLINE 0 0 0 gpt/disk5 ONLINE 0 0 0 gpt/disk6 ONLINE 0 0 0 errors: No known data errors
この状態でもストレージプール自体は使用できますが、あと一つディクスが破損するとデータの回復ができません。
新しいディスクを用意して replace
コマンドで交換するようです。
# zpool replace tank gpt/disk1 gpt/newdisk
今回はテストなので、このまま元に戻しておきます。
# zpool online tank gpt/disk1
もう一度ステータスを (今度はオプション -x
をつけて) 確認してみます。
# zpool status -x all pools are healthy