computerの日記

Cisco,SHELL,C,Qt,C++,Linux,ネットワーク,Windows Scriptなどの発言です

SOFTWARE RAID 1 の復旧方法

RAID1 のテストをしていたのですが、一度、ハードディスクを外して、またつけても、
何もしないと、ちゃんと認識されないようです。

今、RAID1 にしていて、2つのハードディスクを使用しているとしましょう。
そこで、試しに、1つのハードディスクを外して、また付けたとしましょう。
ここで、ちゃんと認識されるかというと、そうはいきません。

確認してみます。
----------------------------
# cat /proc/mdstat
(表示例)
Personalities : [raid1]
md0 : active raid1 sda1[1] ★<---- 1台しか見えていない
1023936 blocks super 1.0 [2/1] [_U] ★<---- 同上

md1 : active raid1 sda2[1]
32512896 blocks super 1.1 [2/1] [_U] ★<---- 1台しか見えていない
bitmap: 1/1 pages [4KB], 65536KB chunk ★<---- 同上

unused devices: <none>

物理的には 2台接続した(し直した)つもりでも、ソフトウェア上は、認識していない、と言えます。
mdadm コマンドでも確認してみましょう。
---------------------------
# mdadm -D /dev/md0
(表示例)

...(snip)...
Raid Devices : 2
Total Devices : 1 ★<---- 1となっている
...(snip)...
Active Devices : 1 ★<---- 1となっている
Working Devices : 1 ★<---- 1となっている
Failed Devices : 0
Spare Devices : 0

Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda1
1 0 0 1 removed ★<---- removed となっている。
---------------------------
# mdadm -D /dev/md1
(表示例)

...(snip)...
Raid Devices : 2
Total Devices : 1 ★<---- 1となっている
...(snip)...
Active Devices : 1 ★<---- 1となっている
Working Devices : 1 ★<---- 1となっている
Failed Devices : 0
Spare Devices : 0

Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 0 0 1 removed ★<---- removed となっている。
---------------------------
となっていて、外されたままの状態となっています。

本来ならば、以下の様にならないといけません。
---------------------------
# mdadm -D /dev/md0
(表示例)

...(snip)...
Raid Devices : 2
Total Devices : 2
...(snip)...
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
---------------------------
# mdadm -D /dev/md1
(表示例)

...(snip)...
Raid Devices : 2
Total Devices : 2
...(snip)...
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2
---------------------------
これを直すには、mdadm コマンドにより、ディスクを再度追加する必要があります。

ここでは、逆に、/dev/sdb1 や /dev/sdb2 しか表示されていなかったとしましょう。
以下のコマンドを実行します。

# mdadm --manage /dev/md0 -a /dev/sda1
(表示例)
mdadm: added /dev/sda1

# mdadm --manage /dev/md1 -a /dev/sda2
(表示例)
mdadm: re-added /dev/sda2

これで、mdadm -D /dev/md0 および、mdadm -D /dev/md1 を実行して、ディスクが追加されたことを確認しましょう。
-----------------------------
以下のコマンドを実行します。

# cat /proc/mdstat
(表示例)
Personalities : [raid1]
md0 : active raid1 sda1[2] sdb1[1]
1023936 blocks super 1.0 [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
32512896 blocks super 1.1 [2/1] [_U]
[====>...............] recovery = 16.2% (5276416/32512896) finish~2.4min
speed=188443K/sec
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

上記のように、逐次回復動作が実行されているのが確認できます。
最終的には、以下の様に完了すればよいです。
---------------------
# cat /proc/mdstat
(表示例)
Personalities : [raid1]
md0 : active raid1 sda1[2] sdb1[1]
1023936 blocks super 1.0 [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
32512896 blocks super 1.1 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>
-----------------------------

実際は、一度再起動するまでは、

bitmap: 0/1 pages [0KB]... となっていたので、一度再起動した方がいいかもしれません。

 ソフトウェア RAID はおすすめですよ。