このエントリーをはてなブックマークに追加
スポンサーリンク

ソフトRAIDの修復

ソフトRAIDの欠点

ソフトRAIDでのRAID1(ミラーリング)では、ハードRAIDと違い、バグや誤操作によるデーターの全滅の可能性が低いというメリットがあります。なぜなら、バグなどで片側を破損した時点でOSが落ちてしまうため、もう片方を書き換えられずに助かったというケースがあるためです。

しかしながら、ソフトRAIDの欠点としてブートローダーが片側にしか入らないという事があります。つまり、いくらデーターがミラーになっていても、肝心のブート領域がミラーにできないため、データーは生きているのに肝心のサーバーが起動しないという悲しい結果になってしまう場合があります。

もし1台目(シリアルならata1、パラレルならプライマリーマスタ)が破損したのであれば、新しいハードディスクを取り付けてmdadmコマンドで修復をすればすぐに使えるようになります。しかし、運悪く2台目が破損してしまうと、ブートローダーを入れなおさないとサーバーが起動しなくなってしまいます。

以後、/boot領域として/dev/sda1を100メガバイト確保しているとして記述しますが、mdやsdのあとの数字はインストールする毎に
異なる場合もあります。また、シリアルataではなくパラレルataならば、hdaになると思います。本文中にある/dev/md3や/dev/sda1は、自身で読み替えてください。

ブートローダーを入れる

ここでは運悪くブートローダーのある方が破損したとします。運良くブートローダーのない側が破損した場合は、次の章まで飛ばしで大丈夫です。

破損しているハードディスクを外します。そして、生き残ってる側を、シリアルならata1、パラレルならプライマリーマスターに取り付けます。そして、Linuxをレスキューモードでブートします。

boot: linux rescue
CentOS6では起動メニューで[TAB]キーを押します。
grub>vmlinuz initrd=initrd.img linux rescue

grubをインストールします。
chroot /mnt/sysimage
/sbin/grub-install /dev/sda

ここを参考にしました。
http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/5/html/Installation_Guide/s1-rescuemode-boot.html

また、fstabにはおそらく/bootというラベルのパーティションを、/bootとしてマウントするように指定されているでしょう。もし1台目が破損してしまった場合、もうラベル指定ではブート領域の指定はできませんので、vi /etc/fstabとして、
LABEL=/boot /boot ext3 defaults 1 2
このような行を見つけて、
/dev/sda1 /boot ext3 defaults 1 2
として、ラベルではなく装置名で指定して、/bootにマウントするようにします。

ハードディスクの交換

レスキュー用Linuxはshutdown します。

シリアルならata2、パラレルならプライマリースレーブに新しいハードディスクを取り付け、ハードディスクでブートします。1台目を交換した場合はおそらくCentOS起動時にメニューの背景CGは出なくなると思います(真っ黒になる)が、気にせずそのまま待ちます。

RAIDの再構築

無事サーバーが起動したらrootでログインして、ソフトRAIDを修復します。

fdisk /dev/sdb
(ここで1台目と同じ構成のパーティションを作成します)

レイドに追加します。
mdadm --manage /dev/md0 --add /dev/sdb3

修復状況を確認します。
cat /proc/mdstat
100%まで修復できれば修復完了です。
スポンサーリンク