破損したドライブ (IO エラー) に対する高度な NTFS パーティション ファイル回復テクニックはありますか?

破損したドライブ (IO エラー) に対する高度な NTFS パーティション ファイル回復テクニックはありますか?

最近、ESXi ホストのハード ドライブに、数台の VM に影響を与える、非常に小さいながらも非常に重大な損傷が発生しました。どうしても回復したいファイルがあるのですが、当然ながら、定期的なバックアップから何らかの理由で抜けていました。最新のコピーは 6 か月前のものです。結局、そのコピーが必要なようです... やばい。

詳細:

1) Parted Magic の起動可能な ISO 内で ddrescue (素晴らしいツール) を使用して、問題の 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:*BusLogic BT-958 が初期化されました」というメッセージが表示されました。ドライブのスピンダウンを決定したのは、Linux SCSI ドライバー、ESXi ドライバー、またはドライブ自体のどれなのかはわかりません。Linux ドライバーの場合、スピンダウンを回避するようにドライバーを変更できる可能性があります。この ddrescue 全体の問題は、これらの電源サイクルを必要とするスピンダウンによって、非常に困難になっています。

編集2:

問題のファイルを含むディレクトリを 'ls' した直後に "end_request: I/O error, dev sda, sector 7238859" というログ メッセージが表示されるので、ddrescue 操作をそのセクターにターゲットしました。これが成功したら、運を天に任せてそのセクターをライブ ディスクに書き戻すつもりです。おそらく、この方法でゆっくりと問題のファイルまで再構築できるでしょう。それでも、回復可能な不良セクターのほとんどは 20 回未満の再試行で回復します... これは今のところ 150 回以上です... *ため息*

編集3:

必要なファイルの 'ls' からのセクター エラーはまったく役に立ちません (一晩で 1000 回以上試しましたが、うまくいきませんでした)。'ls' を実行したときに、それが単なるメタデータであることを願っています ? :)

ddrescue コピーの大部分は持っていますが、マウントされません (またはファイルなしでマウントされます)。破損したドライブはほとんどの場合正しくマウントされます... 破損したドライブの IO エラーにより、正常に動作するミラーにフォールバックするように強制的に「マウント」される可能性がありますか?

** 編集4:**

今のところは諦めて、さらなる提案を待ちます。ドライブを取り外してボックスを再構築しました。何か問題が発生した場合に備えて、ドライブは保管しておきます。

答え1

私の経験からいくつかメモしておきます:

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

答え2

これはあなたのケースに当てはまるかどうかはわかりませんが、最後の手段として「冷凍庫トリック」があります。破損したハードドライブからデータを回復する:「冷凍庫トリック」方法についての議論。

関連情報