若手が(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回
- この商品を含むブログを見る