ZFS (raidz2)でのデグレード→リビルド確認
さて、RAIDアレイを組んだらとりあえずやっておかないといけないこと、それは障害時にちゃんとリビルドできるかという確認。これをやっておかないと、いざというときに泣きを見ます。
とりあえず、現状は、
# zpool status
pool: zpool0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zpool0 ONLINE 0 0 0
raidz2 ONLINE 0 0 0
ad4 ONLINE 0 0 0
ad6 ONLINE 0 0 0
ad8 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0
ad14 ONLINE 0 0 0
errors: No known data errors
と、6台のHDDでRAID6(raidz2)を組んでいます。
ここで、ad14に障害が起きたと仮定して、えいやっとad14を引っこ抜きます(ちょっと乱暴だけど…)。すると、
# zpool status
pool: zpool0
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://www.sun.com/msg/ZFS-8000-D3
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zpool0 DEGRADED 0 0 0
raidz2 DEGRADED 0 0 0
ad4 ONLINE 0 0 0
ad6 ONLINE 0 0 0
ad8 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0
ad14 UNAVAIL 0 0 0 cannot open
errors: No known data errors
となり、見事にad14が壊れたっぽくなりました。
ここで一旦電源を落として(電源を入れたままでもよかったんだろうけど)、ad14を差し直して、再度立ち上げます。で、状態を確認すると、
# zpool status
pool: zpool0
state: ONLINE
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://www.sun.com/msg/ZFS-8000-4J
scrub: resilver completed with 0 errors on Mon Jun 23 22:31:55 2008
config:
NAME STATE READ WRITE CKSUM
zpool0 ONLINE 0 0 0
raidz2 ONLINE 0 0 0
ad4 ONLINE 0 0 0
ad6 ONLINE 0 0 0
ad8 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0
ad14 UNAVAIL 0 0 0 corrupted data
errors: No known data errors
ちょっと状態が変わりました。メッセージにもあるとおり、zpool replaceコマンドを実行して、HDDを交換したよということをZFSに教えてあげる必要があるので、
# zpool replace zpool0 ad14
とコマンドを打ってあげます。そうしたら、HDDが頑張って働き始めて、なんかやってるっぽい感じがします。
# zpool status
pool: zpool0
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.
scrub: resilver in progress, 0.00% done, 510h5m to go
config:
NAME STATE READ WRITE CKSUM
zpool0 DEGRADED 0 0 0
raidz2 DEGRADED 0 0 0
ad4 ONLINE 0 0 0
ad6 ONLINE 0 0 0
ad8 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0
replacing DEGRADED 0 0 0
ad14/old UNAVAIL 0 0 0 cannot open
ad14 ONLINE 0 0 0
errors: No known data errors
実際、ad14をリビルドしていることが分かります(ZFSでは、rebuildではなくresilverというらしい)。で、しばらく放置すると元通り。
# zpool status
pool: zpool0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zpool0 ONLINE 0 0 0
raidz2 ONLINE 0 0 0
ad4 ONLINE 0 0 0
ad6 ONLINE 0 0 0
ad8 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0
ad14 ONLINE 0 0 0
errors: No known data errors
以上、無事リビルド完了です。本当にZFSは簡単です。
参考資料:
- http://www.seichan.org/: FreeBSD-ZFS
- Sun Microsystems Documentation: Solaris ZFS 管理ガイド
- http://wiki.milkcup.jp/: gmirrorを使用したミラー環境の構築
- FreeBSD Wiki: ZFS
ちなみに、zpool replace zpool0 ad14と打った直後には、上記の通り510h5m to goなんて出ていますが、しばらく経つと次のようにまともな時間を出してくれます。
# zpool status
pool: zpool0
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.
scrub: resilver in progress, 39.22% done, 1h17m to go
config:
NAME STATE READ WRITE CKSUM
zpool0 DEGRADED 0 0 0
raidz2 DEGRADED 0 0 0
ad4 ONLINE 0 0 0
ad6 ONLINE 0 0 0
ad8 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0
replacing DEGRADED 0 0 0
ad14/old UNAVAIL 0 0 0 cannot open
ad14 ONLINE 0 0 0
errors: No known data errors
| 固定リンク
この記事へのコメントは終了しました。
コメント