HDの最初からやり直した後のext4パーティションの回復


8

dd外付けディスクの最初の208MB を誤って使用して上書きしました。私が書いたのは、それ自体のパーティション(Debian nestinstaller)なので、現在表示されているのは、古い(現在破損している)ext4パーティションではなく、別の小さなパーティションです。これは私が従うことができるツールとアドバイスを制限します。

私の計画は、ここでtestdisk説明されているように、パーティションテーブルを再作成し、バックアップスーパーブロックですべてを修正することでした。最初の208 MBは失われますが、そこにある他の300 GBのデータと比較すると大丈夫です。次のようなもの:

mke2fs -n /dev/sdb1   # doesn't work because sdb1 is the 208MB new partition
testdisk ...          # used this to create new correct partition table
mke2fs -n /dev/sdb1   # now works fine, get backup superblock positions
e2fsck -b backup_position -y /dev/sdb1 # returns many errors hence the -y

しかし、何も回復できませんでした。私が使用testdisk私が前に持っていたものと一致したことを新しいパーティションテーブルを書き込むこと。次にe2fsckを実行すると、さまざまなエラーが発生します。その後ファイルシステムを取得しましたが、完全に空で、ファイルはありません。

lost + foundディレクトリにはファイルがいっぱいですが(回復したと思います)、ファイルだけでなく、ディレクトリツリーも回復する必要があります。ファイルが何であるかを知るには、ファイル名と以前のディレクトリが必要です(顕微鏡画像、質量分析データなど。名前とディレクトリがなければ、意味がありません)。

まったく同じHDをもう1つ取得し、HD全体のコピーを作成したddので、何も失うことなくリカバリを実験できます。何かアドバイス?


以前にパーティションがいくつあったかわかりますか?
Cougar

@クーガーはい。ディスク全体にわたる単一のext4プライマリパーティションがありました。
carandraug 2012

2
最初に、fdiskまたはその他の低レベルパーティションツールを使用してパーティションを再作成することをお勧めします。ext4を回復する方法を次に示します:リンク
Cougar

@Cougarは、実際にパーティションの回復を試みるためにたどったリンクです。違いはtestdisk、パーティションの再作成に使用したことです。で試してみfdiskます。
carandraug 2012

@Cougarを使用するfdiske2fsck、スーパーブロックのバックアップが見つからないため、使用することさえできませんでした。問題は、CHSを編集できなかったことにあると思います(新しいパーティションは64に設定しましたが、255にする必要があります)
carandraug

回答:


7

ようやくこれを修正することができました。参考までに、ここに私がやった方法があります。私がここで見つけた解決策の一部であり、ファイルシステムの作成に使用された設定を知ることが含まれます(デフォルトを変更しなかったと確信しています)。

基本的に私は最初にパーティションテーブルを修正して、実際にそこにあったものを反映させなければなりませんでした(私testdiskはこれに使用しましたがpartedcfdiskまたはfdisk正常に動作するはずです)。間違ったパーティションを削除して、ディスク全体を正しいCHS値でカバーする単一のext4タイプのパーティションに置き換えました。

残りは主に最初のリンクからです(詳細についてはそれを読んでください)が、基本的にはmke2fs -n /dev/xxxスーパーブロックのバックアップの位置を見つけるために走りました。次に、ディスクの末尾に最も近い最後のバックアップ(ディスクの先頭にあるバックアップのみがddで上書きされていた)を使用してfsckを実行しました。これは多くのエラーを生成しましたが、fsckには-yオプションがあります(とは異なります-a)。

$ sudo e2fsck -a -b backup_block_number /dev/xxx

ファイルがまったく見えなかったのでこれはうまくいかなかったと思いましたが、実際にはすべてlost+foundディレクトリに保存されていました。

したがって、最終的には、ファイル名とディレクトリ構造を維持しながら、ほとんどのファイルをサルベージしました。これが将来他の人に役立つことを願っています。


-1

OK、これは、MegaRAIDアレイで誤って初期化されたドライブから回復するために機能します。私のRAIDコントローラーは、RAID6アレイのドライブだけでなく、RAIDのすべてのドライブを初期化しました。痛い!少なくとも、私は遅い初期化ではなく、迅速な初期化を行いました-遅い初期化はドライブをゼロにワイプします。

Quick initは、ドライブの最初と最後で10Mを消去します。したがって、ドライブ全体(Linuxの場合)にext4パーティションがあり、1つのドライブ(RAID0)を使用している場合は、ある程度の可能性がありました。ドライブが6TBのドライブで、その上に5TB近くあるので、私は汗をかいていた-それは私が改革しているRAID6アレイの私のバックアップでした!

ちなみに、私はスリップしませんでした-LSI MegaRAIDは他のドライブグループのドライブを初期化するべきではありませんでした-が、そうしました。メモとして、私がしなければならなかったのは、エンクロージャからドライブを削除して、新しく配置したRAID6ドライブグループが作成された後に再インポートすることです。愚かな私。本当にばかげた……

わかりました。幸いなことに、LSI MegaRaidはRAID0ドライブを使用して何も奇妙なことをしません(1つある場合、複数のドライブについて確信が持てないでしょう)。これは私がそれを修正するためにしたことです。OS = Fedora F22。ドライブ= 1つの大きなext4パーティション、partedで実行。最初に、いくつかのスペアベイスロットを備えたスペアサーバーで、まったく同じモデルのドライブにドライブをスナップショットしました:: 10時間後に完了しました......

$ dd if=/dev/sdb of=/dev/sdc bs=64M conv=notrunc
89424+1 records in
89424+1 records out
6001175126016 bytes (6.0 TB) copied, 35130.2 s, 171 MB/s

それは私の黄金のバックアップでした。

注-私のドライブは/dev/sdb-回復しようとしているドライブに設定する必要があります。ドライブを台無しにしないでください。さもないと、さらに混乱します...

その後、次のことを行いました。

(1)マシンからスナップショットを削除します(愚かなことではありませんが、ローカルERに自分自身をチェックしている間に失敗した場合、ディスク復旧病院に行くことを保証します)。

(2)ドライブでFC22マシンを再起動します。partedを実行し、パーティションをやり直します(私の場合、破損したパーティションを削除し、新しい0%から100%のext4パーティションに書き込みます)。元のパーティションの場所とその正確なタイプを正確に把握する必要があります-次のステップはこれに依存します-そうでなければ、ここで停止します。あなたはそれを作ることはありません。使用testdiskおよびphotorecまたは類似の、またはそれは本当に重要ビッグドライブのために、それを出荷します。

(3)実行 mke2fs -n /dev/sdb1(を忘れないでください-n、またはもう一度歩くだけです...)

私にとって結果は次のようになりました:

$ mke2fs -n /dev/sdb1
$ mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 1464843008 4k blocks and 183107584 inodes
Filesystem UUID: 1ac318a6-7953-42d5-8d7b-0597c54e1935
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

そこに、すべてのスペアスーパーブロックがあります。最初と最後がゴミ箱であることはわかっていますが、真ん中のものは大丈夫です。(注意してください、mkfs.ext4 -n /dev/sdb1非常に注意して同じ結果を得ることができます )。

(4)を実行しますe2fsck -y -b 102400000 /dev/sdb1。あなたは必要となる-yディスクの不足しているフロントエンドで作成された混乱を修正....ミドルあなたのようで任意のスーパーブロックを選択するために必要な「はい」がたくさんあるだろうとして、...と、約30分後に私の場合、無音(別の端末と「トップ」を使用して進行状況を確認するか、ディスクのライトが点滅します)、マウント可能なパーティション、および/lost+foundディレクトリ内のほとんどすべてがそのままです。

とにかくこれがお役に立てば幸いです-これを注意深く読んでいるのであれば、幸運を祈ります。そして、上記を書いている人たちに感謝します。あなたは本当にうんざりする終わりから私を救いました...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.