RAIDの再構築に失敗した件についてRAIDアレイの再作成を行った

注意事項、何をやっているのか、よくわからない場合はマネしないように。

/dev/sdbからsdiまでの8台にてRAIDアレイを再作成することになった。

まず、先頭の1GB程度をバックアップする。

dd if=/dev/sdb of=sdb.img bs=1G count=1
dd if=/dev/sdc of=sdc.img bs=1G count=1
dd if=/dev/sdd of=sdd.img bs=1G count=1
dd if=/dev/sde of=sde.img bs=1G count=1
dd if=/dev/sdf of=sdf.img bs=1G count=1
dd if=/dev/sdg of=sdg.img bs=1G count=1
dd if=/dev/sdh of=sdh.img bs=1G count=1
dd if=/dev/sdi of=sdi.img bs=1G count=1

1GBも必要はないのだが、一応やっておく。
1GBの根拠は前回書かなかったが、RAID6の再作成をしたときにデータのオフセットが262144セクタ=134,217,728バイトであることが分かっており、データの先頭部分を含めてバックアップをしたかったため。

ここから先の作業はRAID6の再構築を行ったときのようにloopデバイスを作成して実験したのち、物理デバイスで作業を行っている。

superblockが消えた件について、うっすら、GPT関係が悪影響を及ぼしているのではないのかという懸念があるので、削除をしておく。

# sgdisk -Z /dev/sdb

この作業を行った時点でMBRとGPTが削除される。mdadmのsuperblockが0x00001000(4096バイト地点)に書き込まれていた場合、そのsuperblockも削除されることを確認した。
また、UUIDも削除されてしまうことに後で気づき、焦った。hexdumpでバイナリをバックアップと比較することでドライブの対応をとることができた。

その後、デバイスの順番をRAID構築時の通りに並べて、再作成を行った。

# mdadm -C -l6 -n8 --data-offset=262144s /dev/md0 /dev/sdc /dev/sdc...

mdadmのsuperblockはすべてのドライブから削除されていたので、確認は何も表示されることなく作成がされた。

これにて、再度、ソフトウェアRAIDを利用することができるようになった。

この後superblockがどうなるかわからない怖さがあるので、先頭のバックアップを行った。

dd if=/dev/sdb of=sdb.img bs=1M count=1
dd if=/dev/sdc of=sdc.img bs=1M count=1
dd if=/dev/sdd of=sdd.img bs=1M count=1
dd if=/dev/sde of=sde.img bs=1M count=1
dd if=/dev/sdf of=sdf.img bs=1M count=1
dd if=/dev/sdg of=sdg.img bs=1M count=1
dd if=/dev/sdh of=sdh.img bs=1M count=1
dd if=/dev/sdi of=sdi.img bs=1M count=1

なお、これらのディスクの0x00001000(4096バイト)時点にてmdadmのsuperblockが書き込まれていることは確認している。