最近、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:**
さらなる提案を待つ間、私は今のところあきらめました。ドライブを取り外して、ボックスを再構築しました。何かが起こった場合に備えて、ドライブを維持します。
私の経験からのいくつかのメモ:
testdisk
のようなものを試すことができますが、失敗した場合はWindowsのchkdisk
が役立ちます。仮想マシンの下にWindowsがインストールされている場合、ddrescue
から取得した未加工イメージをその仮想マシンでサポートされている形式(VDI
やVMDK
など)に変換できます。これをVMに追加し、ファイルシステムを修正するためにコマンドラインモードでWindowsを起動します。VirtualBoxを使用する場合、そのようなイメージを変換するコマンドはVBoxManage convertfromraw <filename> <outputfile>
オプションで--format VDI|VMDK|VHD
指定された出力形式を取得します。これはあなたのケースに当てはまるかもしれないし、当てはまらないかもしれませんが、最後の手段の1つは「フリーザートリック」です。この方法の説明については、 破損したハードドライブからのデータの回復:「フリーザートリック」 を参照してください。