ホストシステムのHDDがこわれた場合にそなえて、ゲストのFreeBSDで練習。
zpool status
pool: zroot
state: ONLINE
scan: none requested
config:
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gptid/b95e641d-bb87-11e4-ac2f-080027fc258b ONLINE 0 0 0
gptid/b9a2d715-bb87-11e4-ac2f-080027fc258b ONLINE 0 0 0
errors: No known data errors
この状態からada0を外してみる。このディスクの実際のデバイス名は
glabel status | grep b95e641d-
とかでわかる。この場合ada0p3だった。 けど、VirtualBoxなので気にせずすこっと、ada0に相当するHDDを「除去」。
zpool status
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
715453585861069460 UNAVAIL 0 0 0 was /dev/gptid/b95e641d-bb87-11e4-ac2f-080027fc258b
gptid/b9a2d715-bb87-11e4-ac2f-080027fc258b ONLINE 0 0 0
errors: No known data errors
エラーが出た。was …… のほうを外す。
zpool offline zroot 715453585861069460
もう一度 zpool status すると UNAVAIL が OFFLINE に変わる。
新しいディスクを、もう一方と同じGPTにする。 まず生き残ってる方のHDD(ada1)を見る。
gpart show ada1
=> 34 8388541 ada1 GPT (4.0G)
34 1024 1 freebsd-boot (512K)
1058 4194304 2 freebsd-swap (2.0G)
4195362 4193213 3 freebsd-zfs (2.0G)
ada0にこれと同じ状態を作る。
gpart create -s gpt ada0
gpart add -t freebsd-boot -s 512k ada0 ada0p1 added gpart add -t freebsd-swap -s 2g ada0 ada0p2 added gpart add -t freebsd-zfs ada0 ada0p3 added
gpart show ada0
=> 34 8388541 ada0 GPT (4.0G)
34 1024 1 freebsd-boot (512K)
1058 4194304 2 freebsd-swap (2.0G)
4195362 4193213 3 freebsd-zfs (2.0G)
gpart bootcode -b /boot/pmbr ada0 bootcode written to ada0 gpart bootcode -p /boot/gptzfsboot -i 1 ada0
これで同じ状態になったかな。zpoolの構成ディスクを置き換え。
zpool replace zroot 715453585861069460 ada0p3
(沈黙.....)
Make sure to wait until resilver is done before rebooting.
If you boot from pool 'zroot', you may need to update
boot code on newly attached disk 'ada0p3'.
Assuming you use GPT partitioning and 'da0' is your new boot disk
you may use the following command:
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
resilver終わるまでrebootすんなって。確認。
zpool status pool: zroot state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Mon Feb 23 18:56:55 2015 1.27G scanned out of 1.72G at 18.0M/s, 0h0m to go 1.27G resilvered, 73.84% done config: NAME STATE READ WRITE CKSUM zroot DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 replacing-0 OFFLINE 0 0 0 715453585861069460 OFFLINE 0 0 0 was /dev/gptid/b95e641d-bb87-11e4-ac2f-080027fc258b ada0p3 ONLINE 0 0 0 (resilvering) gptid/b9a2d715-bb87-11e4-ac2f-080027fc258b ONLINE 0 0 0
しばらく待って同期完了。
zpool status
pool: zroot
state: ONLINE
scan: resilvered 1.72G in 0h1m with 0 errors on Mon Feb 23 18:58:27 2015
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0p3 ONLINE 0 0 0
gptid/b9a2d715-bb87-11e4-ac2f-080027fc258b ONLINE 0 0 0
リブートして確認。大丈夫。さて、さらにもともと生き残りという想定の ada1を外してみよう。VirtualBoxでada1相当を「除去」してみる。 起動できた。
ちなみにもういっこ練習。調子悪くて外れたHDDを再度組み入れて再構築。 勝手に再構築始まってばっちり復活。gpartの使い方に慣れればなんとかなる感じ。 ファイルサーバは徐々にzfsにしてくかー。