mdadm+lvm2: 誤ってすべてのスーパーブロックを破壊しました。

mdadm+lvm2: 誤ってすべてのスーパーブロックを破壊しました。

誤ってすべてのRAID1スーパーブロックをガベージで上書きしました。 Ubuntuが私をある種のハードドライブの回復モードに切り替えたときにALT-CTRL-DELを押して起動したので、これが起こったようです。私のモニターが機能していないので、「盲目的に」これを行いました。

私のRAIDパーティションを見ると、次のようになります。

# mdadm --examine /dev/sdc2
/dev/sdc2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 00000000:00000000:00000000:00000000
  Creation Time : Fri Nov  1 18:59:05 2013
     Raid Level : -unknown-
   Raid Devices : 0
  Total Devices : 1
Preferred Minor : 127

    Update Time : Fri Nov  1 18:59:05 2013
          State : active
 Active Devices : 0
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 1
       Checksum : 6b1f0d22 - correct
         Events : 1


      Number   Major   Minor   RaidDevice State
this     0       8       34        0      spare   /dev/sdc2

   0     0       8       34        0      spare   /dev/sdc2

スーパーブロックがゴミで完全に覆われていることは明らかです。両方のディスク(sdb2、sdc2)は同じように見え、情報はゴミであり、uuidはすべて0、raidレベル:不明、raidデバイス:0などです。

最良の選択は次のとおりです。

mdadm --create --assume-clean --metadata=0.90 /dev/md0 --level=1 --raid-devices=2 /dev/sdb2 /dev/sdc2

このようにmdadm --createを使用してRAIDアレイを再作成できますか?

RAIDスタックにはLVM2物理ボリュームがあります。個々のディスクまたはバックアップディスクイメージからLVM2データに何らかの方法でアクセスできますか?

GRUBはディスク上で私のinitrdとカーネルイメージを見つけることができました。 /boot は、LVM2 上部の ext4 ルートパーティションファイルシステムにあり、個別のパーティションではありません。だから私はデータがほとんど破損せず、スーパーブロックが消えたと信じています。

編集:mdadmコマンドラインに--assume-cleanを追加しました。

ベストアンサー1

スーパーブロック形式の場合は、0.90メンバーを直接使用できる必要があります(必要に応じて読み取り専用モードで)。これにより、データにアクセスでき、別のディスクのみを使用して新しいRAID-1を作成し、データをコピーしてからソースディスクをRAIDに追加できます。

他のもの(メタデータなど)の場合は、1.2マウントする前に物理パーティションのオフセットを探す必要があります。たとえば、LVMの場合、次のようなオフセットが得られます。

# grep -a -b --only-matching LEVELONE /dev/disk
1049088:LABELONE

PVの最初のセクタが空であるため、512を減算します。実際に0.90メタデータの1.0場合、grepは512を表示する必要があります。これはの0実際のオフセットを意味します。より大きなものを得ると、RAIDは別のフォーマットを使用しています。

この場合、正しいオフセットを使用してループデバイスを作成できます。

# losetup -f --show --read-only --offset $((1049088-512)) /dev/disk
/dev/loop0
# file -s /dev/loop0
LVM2 ...

これはあなたのPVでなければならず、残りを処理する必要がありますvgscanvgchange -a y


に関してはmdadm --create、あなたが何をしているのかを知っていれば、それを行うことができます。非常に慎重に扱う必要があります。これは最後の手段です。

オフセットが異なる場合は、メタデータを0使用する必要があります0.90(それが使用されていることが確実な場合)。オフセットが異なる場合は、mdadm --create同じオフセットを再利用する必要があります。デフォルト値はmdadm通常時間が経過しても変わりません。そのため、コマンドラインで直接使用して指定してください--data-offset

また、1つのディスクのみで作成してください。他のディスクはそのままにしてくださいmissing--assume-clean最初に作成が成功したこと(デバイスでデータが利用可能かどうか/dev/md?)を確認してから、別のディスクを正しく同期できるので、これはより良いアプローチです。

おすすめ記事