web-dev-qa-db-ja.com

破損したドライブ(IOエラー)に対する高度なNTFSパーティションファイルリカバリテクニック?

最近、ESXiホストのハードドライブに非常に小さいが非常に重要な量の損傷が発生し、いくつかのVMに影響を及ぼしました。復元したいファイルがありますが、もちろん、通常のバックアップからは除外されていました。最新のコピーは6か月前のものです。私はそれが必要であることが判明しました...おっと。

詳細:

1)Parted MagicブータブルISO内でddrescue(AWESOMEツール)を使用して、問題のVMのドライブの99.98%を回復しました。残念ながら、エラーはほぼ完全に最近のファイル書き込みによるもののようです...したがって、もちろん、それらはまさに私が最も回復する必要のあるセクターです。

2)ドライブは不良セクタの読み取りでIOエラーを出しますが、以前の不良セクタの読み取りに成功することがあります!したがって、回復は可能です。それよりも少し頻繁に、ある種のメジャーが発生します。誤動作し、ドライブをスピンダウンしてバックアップします。そして、これらのスピンダウンの約1/4は回復しません(ハードパワーサイクルが必要で、シャットダウンは機能しません)。素敵なカチッという音。

3)重要なVMディスクはNTFS形式です。

4)(通常)破損したNTFSボリュームを読み取り専用でマウントでき、(少し少ない頻度で)必要なファイルが含まれているフォルダーに移動できます。ただし、問題のファイルは、フォルダの「ls」を実行すると常にIOエラーが発生するようです。フォルダ内の他のファイルは、IOエラー。

5)ntfsinfo/etcを使用してみました...これはまさに必要なもののように聞こえます...しかし、パーティションがまったく開かれません。 (「マウント」は通常そうなるので、イライラします)

6)ファイルはExcel 2003時代のXLSファイルであるため、生のディスクイメージを検索するための文字列を思いつくかどうかはわかりません。 (おそらく6か月前のバージョンの一部ですか?)

Debugfsの機能のようなものを本当に使いたいです。ただし、マニュアルページからは、パーティションを開くことができれば、ntfsツールで作業を実行できるようです。特に、IOエラーが純粋にファイルのメタデータ内にあるのか、ファイルの内容をコピーするのに十分なディレクトリレコードを復元できるのかどうか疑問に思っています。最後の手段として、取得できるファイルの部分的なコンテンツが何であれ、すばらしいと思います。

以前は(比較的単純な)カーネルモジュールを作成したことがあるので、より多くのデバッグ情報を有効(または追加)にして特別なNTFSモジュールをコンパイルできます。 (ファイルは、回復を試みるために少なくとも数日いじくり回す価値があります...さらに、私はその過程でクールなことを学んでいます)

ポインタはありますか?

編集:

その他のドライブエラー情報:

/ var/log/messagesにはもちろん多くのNTFS-fsエラーが表示されています...しかし、最終的に、通常取得する未処理のセンスコードメッセージ(センスキー0x3、ASC = 0x11、ASCQ = 0x4)を翻訳する必要がありました。 (これは、UNRECOVERED READ ERROR-AUTO REALLOCATE FAILEDに変換されるようです)。

ドライブがスピンダウンすると、「scsi0:*BusLogicBT-958Initialized」というメッセージが表示されます。 Linux SCSIドライバーなのか、ESXiドライバーなのか、ドライブ自体をスピンダウンするのかを決定するのはドライブ自体なのか、私にはわかりません。 Linuxドライバーの場合は、スピンダウンを回避するためにドライバーを変更できる可能性があります。この全体のddrescueは、これらのパワーサイクルが必要なスピンダウンによって、はるかに痛みを伴います。

EDIT2:

問題のファイルを含むディレクトリを「ls」した直後に「end_request:I/O error、dev sda、sector 7238859」ログメッセージを使用して、ddrescue操作をそのセクターに向けました。私は現在、チャンスをつかんで、これが成功した場合、そのセクターをライブディスクに書き戻す予定です。おそらく、この方法で問題のファイルへの道をゆっくりと再構築できます。それでも、ほとんどの回復可能な不良セクターは20回未満の再試行で回復します...これはこれまでに150回を超えています... *ため息*

EDIT3:

私が必要とするファイルの「ls」からのセクターエラーは完全に非協力的です(1000+は夜通し試行し、運がありません)。あなたが「ls」をするとき、それが単なるメタデータであることを望んでいますか? :)

私はほとんどのddrescueコピーを持っていますが、それはマウントされません(またはファイルなしでマウントされます)。損傷したドライブはほとんどの場合正しくマウントされます...多分IO損傷したドライブのエラー「マウント」が機能するミラーにフォールバックしますか?

**編集4:**

さらなる提案を待つ間、私は今のところあきらめました。ドライブを取り外して、ボックスを再構築しました。何かが起こった場合に備えて、ドライブを維持します。

8
darron

私の経験からのいくつかのメモ:

  1. (原因) hdアクセスの試行中に異常な音が聞こえ、(多かれ少なかれ)ランダムなディスクの場所だけで問題が発生しない場合、根本的な原因はおそらくディスクの表面にあります(電子機器ではありません)-残念ながら、それは悲しいシナリオです。それが「単なる」電子機器である場合は、ほとんどまたはすべてのデータを回復する機会があった可能性があります。
  2. (badセクタ)まだ行っていない場合は、ディスクの製造元の起動可能な診断/回復ツールをWebで検索し、ダウンロードして起動し、ディープテストを実行して、不良セクタの再マッピングを試みてください。無料の方法の中で最高。 不良セクターは成長する傾向があることに注意してください。そのため、2314回目の読み取り試行後にファイルの1つのチャンクをキャッチできたとしても、それらの試行が近くの不良セクターを作成した可能性があります。 、ファイルの他の部分を回復する可能性を効果的に減らします。
  3. (NTFSの回復) NTFSファイルシステムとMSWindowsネイティブツールを修正できるものはありません。 NTFSイメージがマウントできない場合(ディスク全体ではなく、パーティションをマウントしようとしていることも確認してください!)、Linuxではtestdiskのようなものを試すことができますが、失敗した場合はWindowsのchkdiskが役立ちます。仮想マシンの下にWindowsがインストールされている場合、ddrescueから取得した未加工イメージをその仮想マシンでサポートされている形式(VDIVMDKなど)に変換できます。これをVMに追加し、ファイルシステムを修正するためにコマンドラインモードでWindowsを起動します。VirtualBoxを使用する場合、そのようなイメージを変換するコマンドはVBoxManage convertfromraw <filename> <outputfile>オプションで--format VDI|VMDK|VHD指定された出力形式を取得します。
4
rozcietrzewiacz

これはあなたのケースに当てはまるかもしれないし、当てはまらないかもしれませんが、最後の手段の1つは「フリーザートリック」です。この方法の説明については、 破損したハードドライブからのデータの回復:「フリーザートリック」 を参照してください。

0
landroni