web-dev-qa-db-ja.com

部分的にフォーマットされたext4パーティションを回復する方法(testdiskは役に立ちませんでした)

2TBの「単一のext4フォーマットのパーティション」HDDがあります。最近、同じマシンのWindows 7で作業しているときに、前述のパーティションが破損しました。起こったことは、外部USBドライブを回復しようとしているときに、標準のWindowsディスク管理ツールを開いて、disk1を「アクティブ」にするかどうかを尋ねられたことです。その瞬間、「disk1」が自分のUSBディスクではなく、ext4内部ディスクであることを知りませんでした。 [OK]をクリックした後、Windowsはディスク上に100MBの「システム予約パーティション」を作成し、残りはそのままにしました。

Linuxに再度ログインしたときに、パーティションがマウントされていませんでした。 Windows 100MB NTFS「システム予約パーティション」で作成されたものを削除し、Testdiskを実行しようとしました。 Testdiskは私の古いext4パーティションを認識しますが、最後に「パーティションを復元できません」などのメッセージが表示されます。

パーティションとディレクトリ構造+データを取り戻すことは可能ですか?問題は、すべてのプログラム(C/C++)と作業ディレクトリ、およびいくつかの実験データ、つまりjpgやpdfなどの特定のヘッダーを持たないファイルがあったことです。このデータを回復する方法はありますか?たとえば、パーティションの一部を復元できますか。100MBを超えるものは何でしょうか。

追伸「バックアップを行う必要があります」のようなコメントを避けましょう。 )。

1
Abraham
  1. 復旧には、ディスクの「dd」コピーのみを使用していました。

    Sudo dd if=/dev/sdb of=/dev/sdd
    

(「sdb」は破損したディスクで、「sdd」はテストに使用したディスクです)

  1. 最初に、「gdisk」を使用して新しい空のGUIDパーティションテーブルを作成しました(オプション-o)。

    $ Sudo gdisk /dev/sdd
    Command (? for help):   
    $ o
    This option deletes all partitions and creates a new protective MBR.
    Proceed? (Y/N): 
    $ y
    $ w
    
  2. Sudo e2fsck /dev/sddを試しました-失敗しました(最初のスーパーブロックが破損しました)

    $ Sudo e2fsck /dev/sdd
    e2fsck 1.41.12 (17-May-2010)
    e2fsck: Superblock invalid, trying backup blocks...
    e2fsck: Bad magic number in super-block while trying to open /dev/sdd
    
    The superblock could not be read or does not describe a correct ext2
    filesystem.  If the device is valid and it really contains an ext2
    filesystem (and not swap or ufs or something else), then the superblock
    is corrupt, and you might try running e2fsck with an alternate superblock:
        e2fsck -b 8193 <device>
    
  3. その後、Sudo mke2fs -n /dev/sddを実行して、スーパーブロックをリストしました

    $ Sudo mke2fs -n /dev/sdd1
    mke2fs 1.41.12 (17-May-2010)
    /dev/sdd is entire device, not just one partition!
    Proceed anyway? (y,n) 
    $ y
    
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    122101760 inodes, 488378646 blocks
    24418932 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=0
    14905 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
    
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
            4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
            102400000, 214990848
    
  4. その後-Sudo e2fsck -b 214990848 /dev/sddいくつかの修正を適用した後、パーティションが部分的に回復しました!実際、それほど簡単ではありませんでした。いくつかのスーパーブロックと異なるe2fsckオプションを試しました。とにかく、これは一般的なレシピでした。

補遺:回復中、私は次のようなすべての質問に「いいえ」と答えました。

One or more block group descriptor checksums are invalid. Fix(y)?
$ no
/lost+found not found.  Create(y)?
$ no
Free blocks count wrong for group # (32768, counted=0). Fix(y)?
$ no
Free inodes count wrong (122101749, counted=1606). Fix(y)?
$ no
1
Abraham

この問題 に遭遇したかもしれませんが、それは本当に明確ではありません。もしそうなら、あなたが聞いたその種の最初のケースであり、あなたはGNU別れた開発者に2年以上もの間修正に座ってくれたことに感謝することができます。

実際問題として、回復の最善策は次のとおりです。

  1. (オプション、ただしstronglyを推奨します。)損傷したディスクの低レベルバックアップを実行します。たとえば、Sudo dd if=/dev/sdc of=/path/to/backup.img/dev/sdc(破損したディスクの場合)を/path/to/backup.imgにバックアップします(必要に応じて、このターゲットディレクトリまたはファイル名を変更できます)。バックアップを保持するには、/path/toに十分な空き領域が必要です。つまり、新しいバックアップディスクを購入して準備し、/pathまたは/path/toにマウントする必要がある場合があります。この手順はスキップできますが、問題が悪化した場合、回復が難しくなります。おそらく回復できなくなるまでです。
  2. fdisk(ディスクがMBRを使用した場合)またはgdisk(ディスクがGPTを使用した場合)を使用して、元のパーティションを再作成します。あなたはディスク上に単一のパーティションを持っていると言うので、チャンスはそれがセクター2048で始まり、ディスクの終わりまで拡張したことです。したがって、現在のパーティションを削除し、そのパーティションを再作成すると機能する場合があります。 ディスク上に新しいファイルシステムを作成しないでください; emptyパーティションを作成するだけです。 (GPartedは新しいファイルシステムを作成するのが好きなので、避けるべきです。空のパーティションを作成することは可能ですが、なぜリスクを取るのですか?)
  3. リブート。 (これにより、新しいパーティションテーブルを確実に使用することができます。これを行う方法はそれほどありませんが、これは簡単に説明できます。)
  4. 作成したパーティションでe2fsckを実行します。非常に幸運であれば、おそらくいくつかのファイルの欠落やその他の問題がありますが、ディスクをライブに戻すのに十分なext4fsデータ構造を見つけることができます。 fsck.ext4を使用して、ext4ファイルシステムであることを適切に認識するようにすることができます。 e2fsckオプション(-bなど)をいじると、データを復元する確率が向上しますが、これらのオプションは非常に高度です。詳細については、e2fsck manページを参照してください。
  5. これが失敗する場合、ディスクで PhotoRec を実行します。これにより、個々のファイルのリカバリが可能になりますが、ファイル名や組織の種類がおそらく不足している可能性があるため、それらをすべて調べて、それらがすべて何であるかを把握する必要があります。
1
Rod Smith

GNU ddrescueを試してください。

GNU ddrescueはデータ復旧ツールです。 1つのファイルまたはブロックデバイス(ハードディスク、cdromなど)から別のデバイスにデータをコピーし、読み取りエラーが発生した場合にデータをレスキューしようとします。

Ddrescueの基本操作は完全に自動化されています。つまり、エラーを待機したり、プログラムを停止したり、ログを読み取ったり、リバースモードで実行したりする必要はありません。

詳細およびddrescueのダウンロードについては、 website をご覧ください。

buntu Rescue Remixは、CDまたはUSBフラッシュデバイスから実行されるGNU/Linuxライブシステムです。これは、データ復旧のスペシャリストに、利用可能な最高のフリーライブラリ、オープンソースのデータ復旧およびフォレンジックツールを備えたコマンドラインインターフェイス環境を提供します。

素晴らしい製品もありますが、無料ではありません。 R-STUDIO for Linux Data Recovery など。

R-Studio を試すこともできます。

R-Studioは、強力で費用対効果の高い削除取り消しおよびデータ回復ソフトウェアのファミリーです。新しい独自のデータリカバリテクノロジーを活用したNTFS、NTFS5、ReFS、FAT12/16/32、exFAT、HFS/HFS +(Macintosh)、リトルおよびビッグエンディアンのUFS1/UFS2(FreeBSD/OpenBSD/NetBSD/Solaris)およびExt2/Ext3/Ext4 FS(Linux)パーティション。また、ひどく破損したファイルシステムや不明なファイルシステムに対して、RAWファイルリカバリ(既知のファイルタイプのスキャン)を使用します。そのようなパーティションがフォーマット、破損、または削除された場合でも、ローカルおよびネットワークディスクで機能します。柔軟なパラメータ設定により、データ回復を完全に制御できます。

ソース: GNUR-Studio

0
Mitch