linuxのソフトウェアraidでハードディスク障害時のraid1の修復

数日前にmdadm monitoringからraidの異常を知らせるメールがroot宛に届きました。
ハードディスクが一つ止まってしまっている様です。
# cat /proc/mdstat
md0 : active raid1 sda1[0]
204736 blocks super 1.0 [2/1] [U_]
md2 : active raid1 sda3[0]
4192192 blocks super 1.1 [2/1] [U_]
md1 : active raid1 sda2[0]
75577216 blocks super 1.1 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices:
# mdadm –detail /dev/md0
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
2 8 17 1 removed
sdb スレーブ側のハードディスクに障害が出た様子で、早速電源を落とし交換。
sda マスター側のハードディスクの容量と同等かそれ以上の容量の物を使います。


まず、正常に動作しているsdaのパーティーションの区切りを調べます。
# fdisk -l /dev/sda
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 26 204800 fd Linux raid 自動検出
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2 26 9443 75642880 fd Linux raid 自動検出
/dev/sda3 9443 9965 4194304 fd Linux raid 自動検出
sdbハードディスクのパーティーションをsdaと同じ容量で作成します。
# fdisk /dev/sdb
Command (m for help): n
Command action
 e extended
 p primary partition(1-4)
p
Partition number(1-4): 1
First Cylinder (1-10450, default 1): 1
Last Cylinder or +size or +sizeM or +sizeK (1-1566, default 1566): 26
Partition number(1-4): 2
First Cylinder (1-10450, default 27):27
Last Cylinder or +size or +sizeM or +sizeK (1-1566, default 1566): 9444
Partition number(1-4): 3
First Cylinder (1-10450, default 9445):9445
Last Cylinder or +size or +sizeM or +sizeK (1-1566, default 1566): 9967
パーティーションIDをLinux raid 自動検出に設定します。(Partition number1から3まで)
Command (m for help): t
Partition number(1-4): 1
Hex code (type L to list codes): fd
Changed System type of partition 1 to fd (Linux raid autodetect)
Partition number1にbootフラグを付けます。
Command (m for help): a
Partition number(1-4): 1
:wコマンドで変更をハードディスクに書き込んだ後quit。
確認してみます。
#ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3
パーティーションが全て読めない場合はPCを再起動してみます。
それでもダメな場合はパーティーションの作成を再度実行してみます。
全てのパーティーションが認識できたらsdbハードディスクをraid1に参加させます。
# mdadm /dev/md0 –add /dev/sdb1
# mdadm /dev/md1 –add /dev/sdb2
# mdadm /dev/md2 –add /dev/sdb3
容量が大きいとだいぶ時間がかかります。
raid1の状態を確認します。
# mdadm –detail /dev/md0
spare rebuildingの表示の場合リビルド途中です。
最後にgrubを両方のドライブに書き込んで起動できるようにしておきます。
# grub
 grub> root (hd0,0)
 grub> setup (hd0)
 grub> root (hd1,0)
 grub> setup (hd1)
 grub> quit