若手が(ry・・・シリーズ。次から他の人にやってほしいのでw 共有用のメモを残してしておきます。
Linuxのサーバで、ソフトウェアRAID(ストライピング)を組んでいたときに、片方のデバイスが不調で外れてしまったんだけど、デバイス内のデータは無事で、復旧(RAID0再構成)させたい場合のオペレーション。
ちなみに、たまたまなんだけど、ちょうど8年くらい前に似たようなエントリを書いていた。参考までに。
RAIDデバイスの確認と試行錯誤
外れてしまったデバイスは、問題なさそうってのは確認済み(本エントリでは割愛)で、あとは正常なRAIDデバイスに戻したいフェーズ、ってのが前提。
(自分が作ったサーバではないので、アレやコレやと確認しながら手探りになってしまっていますがw)
# cat /proc/mdstat
Personalities : [raid0]
md0 : inactive fiob[1] fioa[0]
1249999872 blocks super 1.2
unused devices: <none>mdstat見ると、inactiveになってますねー。
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Jun 28 14:38:32 2012
Raid Level : raid0
Raid Devices : 4
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Jun 28 14:38:32 2012
State : active, FAILED, Not Started
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 256K
Name : servername:0 (local to host servername)
UUID : d1b36e91:11335546:3afa068c:35bcb74b
Events : 0
Number Major Minor RaidDevice State
0 252 0 0 active sync /dev/fioa
1 252 16 1 active sync /dev/fiob
2 0 0 2 removed
3 0 0 3 removed詳細を確認。デバイス4本でRAID0だったところ、2本のデバイスが切り離された状態となっている。
# mdadm --manage /dev/md0 --add /dev/fioc mdadm: /dev/fioc reports being an active member for /dev/md0, but a --re-add fails. mdadm: not performing --add as that would convert /dev/fioc in to a spare. mdadm: To make this a spare, use "mdadm --zero-superblock /dev/fioc" first.
カジュアルにaddしようとしてもダメと。中身というかSuperblockが残っていますからね。そりゃそうです。
# mdadm --manage /dev/md0 --re-add /dev/fioc mdadm: --re-add for /dev/fioc to /dev/md0 is not possible
一応やってみた、、、けど、ダメですw
# mdadm --examine /dev/fioa
/dev/fioa:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : d1b36e91:11335546:3afa068c:35bcb74b
Name : servername:0 (local to host servername)
Creation Time : Thu Jun 28 14:38:32 2012
Raid Level : raid0
Raid Devices : 4
Avail Dev Size : 1249999872 (596.05 GiB 640.00 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 6c5bac62:4ceb9b5a:93dae9f9:9ff609c6
Update Time : Thu Jun 28 14:38:32 2012
Checksum : c44265b4 - correct
Events : 0
Chunk Size : 256K
Device Role : Active device 0
Array State : AAAA ('A' == active, '.' == missing)
# mdadm --examine /dev/fiob
/dev/fiob:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : d1b36e91:11335546:3afa068c:35bcb74b
Name : servername:0 (local to host servername)
Creation Time : Thu Jun 28 14:38:32 2012
Raid Level : raid0
Raid Devices : 4
Avail Dev Size : 1249999872 (596.05 GiB 640.00 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : clean
Device UUID : e4947155:9ae45038:1c7135cb:a73e1e72
Update Time : Thu Jun 28 14:38:32 2012
Checksum : 121c770c - correct
Events : 0
Chunk Size : 256K
Device Role : Active device 1
Array State : AAAA ('A' == active, '.' == missing)
# mdadm --examine /dev/fioc
/dev/fioc:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : d1b36e91:11335546:3afa068c:35bcb74b
Name : servername:0 (local to host servername)
Creation Time : Thu Jun 28 14:38:32 2012
Raid Level : raid0
Raid Devices : 4
Avail Dev Size : 1249999872 (596.05 GiB 640.00 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 664047e7:12cab443:9bec3b71:a205ce72
Update Time : Thu Jun 28 14:38:32 2012
Checksum : 560c4a81 - correct
Events : 0
Chunk Size : 256K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing)
# mdadm --examine /dev/fiod
/dev/fiod:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : d1b36e91:11335546:3afa068c:35bcb74b
Name : servername:0 (local to host servername)
Creation Time : Thu Jun 28 14:38:32 2012
Raid Level : raid0
Raid Devices : 4
Avail Dev Size : 1249999872 (596.05 GiB 640.00 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : clean
Device UUID : f77e67b2:6ef79bea:3b8471ea:da73403b
Update Time : Thu Jun 28 14:38:32 2012
Checksum : 9bbbc48 - correct
Events : 0
Chunk Size : 256K
Device Role : Active device 3
Array State : AAAA ('A' == active, '.' == missing)"--examine"オプションは、デバイスのスーパーブロックを確認するオプション。
4本とも各デバイスのsuperblockの状態を確認したところ、特に問題なさそうなので、、、
# mdadm --assemble --scan /dev/md0 mdadm: /dev/md0 is already in use. # mdadm --misc --detail /dev/md0 mdadm: cannot open /dev/md0: No such file or directory # mdadm --assemble --scan /dev/md0 mdadm: /dev/md0 has been started with 4 drives.
結果論ではあるけど、こういう感じで修復した。
"/etc/mdadm.conf"からMDアレイを再構成しなおそうとしたんだけど、おそらく1〜2個目のコマンドで、/dev/md0 がstopしてしまったような挙動に思える。多分。confに構成を吐いてる分、素直にstopでもよかったかもしれない。
"mdadm --assemble --scan"を再実行したところ、正しい構成でRAIDデバイスが再構成された。
# echo "DEVICE /dev/fio*" > /etc/mdadm.conf' # mdadm --detail --scan >> /etc/mdadm.conf'
一応、"/etc/mdadm.conf" は、こういう感じで作られていたっぽいことを補足。
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Jun 28 14:38:32 2012
Raid Level : raid0
Array Size : 2499999744 (2384.19 GiB 2560.00 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu Jun 28 14:38:32 2012
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Chunk Size : 256K
Name : servername:0 (local to host servername)
UUID : d1b36e91:11335546:3afa068c:35bcb74b
Events : 0
Number Major Minor RaidDevice State
0 252 0 0 active sync /dev/fioa
1 252 16 1 active sync /dev/fiob
2 252 32 2 active sync /dev/fioc
3 252 48 3 active sync /dev/fiod問題なく復旧! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́
あわせて読みたい
- ソフトウェアRAIDのデグレード(縮退)モードからの復旧 - 元RX-7乗りの適当な日々
- LinuxでディスクのRAIDメタデータを削除する - 元RX-7乗りの適当な日々
- mdadm(8): manage MD devices aka Software RAID - Linux man page

Red Hat(r) Certified Technician & Engineer
- 作者: Asghar Ghori
- 出版社/メーカー: Endeavor Technologies
- 発売日: 2009/08/10
- メディア: ペーパーバック
- クリック: 1回
- この商品を含むブログを見る