FreeBSD vinum RAID5 ボリュームの rebuild
のやりかたメモ
以下の手順ではファイルシステムをマウントしたままではおかしくなることが
判明しました。(umount していても恐らく同じ?)
また時間を見つけて
再度手順を確認したいと思います。
自宅サーバで vinum による RAID5
の運用をしている。その障害回復作業
の際、何度か試行錯誤を経て確認した手順をここにまとめる。なお、他の環境では
この手順を適用することが不可能な可能性もあるので注意が必要。
- 環境
- 主な注意点
- rebuildparityコマンドを使ってはいけない。
同様に setstate も使わないこと。
- subdisk が stale になっていてドライブが up
の場合は単に Plex を start させるだけで
rebuild
される。(ただし、実際にはエラーを起こしたことがあるので、
すぐに degrade する可能性が高い。)
- FirewireなどHot-plug
可能な方式でつないでいる時は、OSを止めずに
故障ディスクを外して、新しいディスクをつなぐと認識するが、
スライス作成作業のために、sysinstall や fdisk
を実行すると刺さることが
あるので、一旦shutdownする方が安全。これは、PAOの時代でも一度ディスク
を認識させて、抜くとそのデバイスの削除が完全でなくて刺さった経験が
あるので、それと似ているか?
- 一度 vinum
で使ったディスクはMBRやラベルなどを dd
で書き潰さない とvinum
は以前の情報を取り出してしまう。書き潰した後はfdisk/
disklabelからやり直すこと。(この辺はあちこちに書かれている)
- 復旧手順
- vinum list
でクラッシュしたドライブを確認する
この時、対象のPlexの状態が degraded
になっている。
対応する subdisk は staleかcrashed
になっている
(stale
だと交換しなくても再接続することで復帰可能かも?)
クラッシュしたドライブは up/down/referenced/unknown
のいずれかに なっている(up/down
の場合は交換せずに復帰できる場合もある)。
-
問題のドライブを外し、交換ドライブを接続する
この時、FirewireならOS稼働状態でも交換できるが注意点に書いたような
こともあり得るので、shutdownするのが安全。
- 交換ドライブに fdisk
(またはsysinstall)で
FreeBSDスライスを作成する
- 交換ドライブに disklabel で vinum
パーティションを作成する
サイズを元のドライブと同じ、つまり他の稼働中ドライブと同じにする
- vinum create で unknown/referenced
になっているドライブに交換ドライブを割り当てる
- 当該 Plex を指定した vinum start
コマンドで 再構築を指示する
- vinum list で当該 subdisk が R xx%
となり再構築状況が見える
- 当該 subdisk と Plex
が「up」になれば完了
(Crusoe
600MHzのマシンでFirewire400Mbps、300GBx3
の場合、丸1日程度かかる?)
- TIPS
-
故障ドライブを物理的に確認するにはそのRAIDボリュームを
アクセスしてみて、アクセスランプを見れば良い。
(当たり前ですが)
By Tetsuo Sakaguchi
$Date: 2005/01/31 05:24:08 $