RAIDをやめようと思ってスーパーブロックを削除しちゃった話(解決済み)

よく分かっていないまま記事を書いているところがあるので、間違っている部分があるかもしれません!その場合はどうぞご指摘下さい。

症状

2TBのHDD2台でRAID1を組んでいたが、書き込み速度が遅いのが気になってRAID解除しようとした。どっかのサイトに乗っていたのに従って、

sudo umount /dev/md0
sudo mdadm --misc --stop /dev/md0

をコマンドラインで実行。続いてあろうことかスーパーブロックの削除を行ってしまった。

※これをやるとHDDがマウントできなくなる
sudo mdadm --misc --zero-superblock /dev/sda1 /dev/sdb1

よく知らないままやったのが最大の間違い。このコマンドでHDDのパーティション区切り等の情報を保存している領域を0で上書きしてしまう。しかも両方のHDDに適用してしまった。

試行錯誤

スーパーブロックが壊れたり消してしまった場合でも、HDD内にバックアップが残っているらしいのでそこから復元を試みた。

#スーパーブロックが保存されている場所を表示
sudo mkfs.ext3 -n /dev/hda5
#スーパーブロックの場所を指定して読み込み出来るかチェック
sudo fsck.ext3 -b 32768 -B 4096 /dev/hda5

参考ページ https://www.atmarkit.co.jp/flinux/rensai/linuxtips/728fixpartition.html

結果、バックアップの場所は表示されるものの、どのバックアップを使っても復元は出来なかった。

解決

打つ手がないので数万円払ってデータリカバリサービスに頼もうかと思ってた頃、あっさりと解決した。

失われたデータを復元するのではなく、同じRAID構成でもう一度作ってしまおうという発想だ。

まず、動作中のRAIDデバイス(HDDが壊れてもRAIDデバイスが動かないながらも残っていることがある。)があれば停止。

sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

続いて、動いていた頃と全く同じようにRAIDを作ってみる。おそらくRAIDデバイスを作るときにスーパーブロックが作成される。全く同じ条件で作ればスーパーブロックも同じ?…にはならなくとも使えるようにはなると思い、一か八かやってみた。

mdadm –createオプションで作る。作るデバイス名は/dev/md0で良いのかもしれないけど、わかりやすさのために一応別の名前にしている。

壊れたHDDを2台とも繋いだまま再作成してもいいけど、また失敗してデータを失わないように、一番最初に壊れた時点のHDDは取っておいて他の1台だけで作業した。HDD1台でRAIDを作るときは、欠けているデバイスの部分は「missing」を入れると存在しなくても作ってくれる。すごい。

sudo mdadm --create /dev/md1 --verbose --level=1 --raid-devices=2 /dev/sda missing
mdadm: /dev/sda appears to be part of a raid array:
       level=raid0 devices=0 ctime=Thu Jan  1 09:00:00 1970
mdadm: partition table exists on /dev/sda but will be lost or
       meaningless after creating array
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 1953383488K
mdadm: automatically enabling write-intent bitmap on large array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

僕の場合は作成した時点で/dev/md1が勝手にマウントされた。手動マウントするなら、

sudo mount /dev/md1 /mnt

もし何も反応がない場合はダメ押しの再起動を試してみる。

sudo reboot

これで何とかなった。

コメントを残す

メールアドレスが公開されることはありません。