トピック: chkdskで修復しファイルシステムの中で不良セクタにあたったファイルの特定は可能ですか?
お世話になっております。
「PCと解」を参考にさせていただきながら、以下の環境と手順でHDDのデータを復旧しました。
環境:
OS: Windows 10 Pro(64bit)
故障したHDD: Dドライブ(起動ディスクとは別)、MBR、NTFS、2TB
新しいHDD: Fドライブ(ディスク全体では4TBだが、MBRのHDDを書き出すためMBRで初期化し、2TBのパーティションを使用。NTFS)
Cygwin 64bit版
手順:
Dドライブの調子が悪いことに気づく
「代替処理済の不良セクタ数」が閾値を割っていることを確認
Cygwinのddrescueで、Dドライブのパーティションのディスクイメージファイルを作成。errsize, errorsがあったが再読み込みをせず終了
Cygwinのddrescueで、イメージファイルをFドライブ(新しいHDD)に書き込む
Fドライブにアクセスできなくなったが、データ自体はほぼ復旧できていると予想
Powershellから「chkdsk f: /b」を実行
無事Fドライブを認識
ここで、不良セクタにあたっていたファイルは破損した状態になっていると思うのですが、それがどのファイルなのか分からなくなってしまいました。
イベントビューアーからソースが「Chkdsk」になっているイベントを見つけましたが、ログが途中で切れているようで、見方も分かりませんでした。
この状態から、不良セクタにあたっていたファイルを特定することは可能でしょうか。
調べた結果、ddrescueで生成したイメージファイルの不良セクタ部分を特定のASCII文字列で埋めて、その文字列でgrepをかけてヒットするファイルを特定する方法が見つかりました。
しかし、イメージファイルのマウントが出来ず、試すことが出来ませんでした。
参考: どのファイルが不良セクタに当たっていたか調べる
現在、以下のものが残っています。
ddrescueで作成したパーティションのイメージファイル
ddrescue実行時のログファイル
故障したHDD
新しいHDD
また、念のためchkdskのログの一部を引用します。
Chkdsk は読み取り/書き込みモードで実行されました。
N: のファイル システムをチェックしています
ファイル システムの種類は NTFS です。
ボリューム ラベルは ボリューム です。
ステージ 1: 基本のファイル システム構造を検査しています ...
ファイル 0x0 の、同一種類コード 0x80 で、異なるインスタンス タグ
0x9 と 0x0 である属性の VCN 番号が連続ではありません。VCN 番号は
それぞれ 0xdf32 と 0xde44 です。
種類 0x80 およびインスタンス タグが 0x0 の属性レコードは、クラスター 0xcb00cd から始まる、おそらく
0x1 個のクラスターと、クロス リンクされています。
ファイル 0x0 の、種類が 0x80 でインスタンス タグが 0x0 の属性で使わ
れているいくつかのクラスターは既に使われています。
ファイル 0x0 の、種類 0x80 およびインスタンス タグ 0x9 の属性の長さに、0xdf32000 の代わりに 0x250c0000 が割り当てられています。
ファイル 0 内の壊れた属性一覧エントリのうち、
タイプ コードが 80 であるエントリを削除しました。
インスタンス タグが 0x9 およびセグメントの参照が 0x1000000000000 の属性
を見つけることができませんでした。予期された値は 0x80 です。
壊れた属性レコード (0x80、"") を
ファイル レコード セグメント 0x0 から削除します。
インスタンス タグが 0x8 およびセグメントの参照が 0x1000000000000 の属性
を見つけることができませんでした。予期された値は 0xb0 です。
壊れた属性レコード (0xB0、"") を
ファイル レコード セグメント 0x0 から削除します。
インスタンス タグが 0x0 およびセグメントの参照が 0xf00000000000f の属性
を見つけることができませんでした。予期された値は 0x80 です。
壊れた属性レコード (0x80、"") を
無事HDDが復旧できたのも、「PCと解」のおかげです。ありがとうございます。
重ね重ねお世話になってしまう形となりますが、ご教示いただけますと幸いです。