概要
mdadm
で raid-5 (ディスク3つ) のアレイを運用していたが、ディスクが壊れたり壊れそうになったりして再構築を経験したので、その手順の備忘メモ。ポイントは
- 死にかけているディスクの交換
- 完全に死んでしまったディスクの交換
で手順が違うこと。(特に後者はなかなか情報がなくて困ったのでこれが役に立てば幸いです。)
以下、アレイ /dev/md0
が /home
にマウントされているとして、 アレイを構成するディスクのうち /dev/sdc1
を交換する対象とします。
状況確認
以下のコマンドあたりで状況を把握しましょう。
# cat /proc/mdstat
# mdadm --detail /dev/md0
# mdadm --examine /dev/sdc1
まだ生きているディスクの交換
- step 0: 念のためアンマウント
# umount /home
- step 1: ダメなディスクにこいつダメですの烙印押印
# mdadm --manage /dev/md0 --fail /dev/sdc1
どうぜ外しちゃうんだから不要な気もしますが、いちおうこうしておくのが正しい手順らしいです。
- step 2: ダメなディスクをアレイから除去
# mdadm --manage /dev/md0 --remove /dev/sdc1
これで /dev/md0
はdegraded modeになるので冗長構成ではなくなります。危ない状態なので一刻も早く本来の構成に戻してあげましょう。まずは poweroff
して /dev/sdc
のディスクを交換します。ぼくの場合、同一容量の別メーカのディスクにしましたが問題ありませんでした。聞くところによると大きい方なら容量が違ってても交換可能とのことです。(試したことはありません。)
- step 3: 新しいディスクの初期化
新しいディスクを取り付けて起動し、シングルユーザモードでログインします。やはり怖いので念のため umount /home
しておきます。そしたらgdisk
などで /dev/sdc1
パーティションを作成します。パーティションIDは 0xfd00 (linux RAID)にしました。
- step 4: RAIDに新しいディスクを追加
# mdadm --manage /dev/md0 --add /dev/sdc1
はいこれで終了です。cat /proc/mdstat
等で確認すると再構築が始まっているのが確認できます。その気になればすぐにマウントして使い始めてもいいのでしょうが、時間に余裕があるなら再構築が完了するまで待ってから再起動しましょう。
完全に死んでしまったディスクの交換
どちらかというとこちらの方がよくあるケースなんじゃないかと思いますが、突然 /dev/sdc
を認識しなくなってしまったような場合です。
- step 1:
/dev/md0
をディアクティベート
# mdadm --stop /dev/md0
- step 2: 何とかdegrated として認識
# mdadm --assemble --scan
これで認識してくれたら一安心。あとは poweroff
して前節の step 3 から手順を踏めば ok です。たぶん。