誤ってすべての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でなければならず、残りを処理する必要がありますvgscan
。vgchange -a y
に関してはmdadm --create
、あなたが何をしているのかを知っていれば、それを行うことができます。非常に慎重に扱う必要があります。これは最後の手段です。
オフセットが異なる場合は、メタデータを0
使用する必要があります0.90
(それが使用されていることが確実な場合)。オフセットが異なる場合は、mdadm --create
同じオフセットを再利用する必要があります。デフォルト値はmdadm
通常時間が経過しても変わりません。そのため、コマンドラインで直接使用して指定してください--data-offset
。
また、1つのディスクのみで作成してください。他のディスクはそのままにしてくださいmissing
。--assume-clean
最初に作成が成功したこと(デバイスでデータが利用可能かどうか/dev/md?
)を確認してから、別のディスクを正しく同期できるので、これはより良いアプローチです。