USBマスストレージまたはSCSIの生の読み取り

USBマスストレージまたはSCSIの生の読み取り

妻の USB HDD には、フォルダが開かないというちょっとした問題があります (NTFS ファイルシステム)。Linux でドライブのイメージを作成できましたが、1 つのセクター (セクターは 4096 バイト) しかできませんでした。そのセクターの読み取りに失敗しました。

sudo dd if=/dev/sdb of=ブロック skip=21647245 bs=4096 count=1
dd: '/dev/sdb' の読み取りエラー: 入出力エラー
0+0件のレコード
0+0 レコードが出力されました
0 バイト (0 B) がコピーされました、22.9317 秒、0.0 kB/秒

このセクターをヌルバイトに置き換えると、Windows と同じ症状が発生するため、このセクターは問題のあるディレクトリに関連しているようです。

上記のセクターにアクセスすると、dmesg の出力は次のようになります。

[20381.842495] sd 7:0:0:0: [sdb] 未処理のセンスコード
[20381.842506] sd 7:0:0:0: [sdb]  
[20381.842510] 結果: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[20381.842514] sd 7:0:0:0: [sdb]  
[20381.842517] センスキー: ハードウェアエラー [現在]
[20381.842531] sd 7:0:0:0: [sdb]  
[20381.842535] 追加。意味: 追加の意味情報なし
[20381.842539] sd 7:0:0:0: [sdb] CDB:
[20381.842542] 読み取り(10): 28 00 01 4a 4f 8d 00 00 01 00
[20381.842557] end_request: I/O エラー、デバイス sdb、セクター 173177960
[20381.842572] デバイス sdb、論理ブロック 21647245 のバッファ I/O エラー

CRC チェックなどを行わずに、このセクターを生のまま読み取り、破損したデータの一部を実際に回復する方法はありますか?

エンクロージャを開けると、HDD はネイティブ USB であり、USB から SATA への変換はありません。

編集: ddrescue を試しましたが、不良セクタを回復できませんでした。不良セクタの周囲の 2GB を読み取ると、シーク後にヘッドが安定します。

sudo ddrescue -s 2Gi -o 0 -i 87593373696 /dev/sdbブロック
GNU ddrescue 1.19
中断するにはCtrl+Cを押してください
復旧: 2147 MB​​、エラーサイズ: 4096 B、現在のレート: 0 B/s
   ipos: 88667 MB、エラー: 1、平均レート: 8488 kB/s
   opos: 1073 MB、実行時間: 4.21 分、読み取り成功: 1.06 分前
終了した

逆方向の読み取り (-R フラグ) も失敗しました。

編集2:2 番目のステップとして計画したのは、フォレンジックを使用して失われたファイルを取得することでした。最初は手作業で MFT を調べ始めましたが、これはすぐに非常に面倒になりました。そこで、次のツールをリストに含めました。

  1. スルースキット
  2. ntfs-3g
  3. メス
  4. スクローンジ-ntfs

Sleuthkit は何も役に立つことはせず、メタデータ構造のエラーについて文句を言ってすぐに終了しました。

Ntfs-3g (現在は Tuxera) を使用すると、デバッグ出力付きのイメージをマウントできます。

sudo マウント -o loop,ro,オフセット=258048,デバッグイメージ2 ./mnt -t ntfs-3g

問題のあるディレクトリに入ろうとすると、エラーが発生します。

ディレクトリ inode 101874 のインデックス バッファ (VCN 0x0) のサイズ (24) が、ディレクトリ指定サイズ (4096) と異なります。

DuckduckGo でそのエラーを探すと、次の投稿にたどり着きました。 http://www.tuxera.com/forum/viewtopic.php?f=3&t=27054 実は、Tuxera / ntfs-3gの人々は、NTFSエラーを回復するためにMicrosoftのCHKDSKの使用を推奨しているようです。

ディスク上でchkdskを実行することは、3番目で最後の計画されたステップでしたが、ディスクイメージ上で実行できる例えばOSFMount(http://www.osforensics.com/tools/mount-disk-images.html)。

マウントされたディスク イメージで chkdsk /f を実行すると、失われたファイルとディレクトリのほとんど (すべてではない) が回復されました。100 を超えるエラー (そのほとんどは孤立したファイル) が修正されました。

編集3:私は psusi さんの回答を受け入れます。不可能とは証明されていませんが、不良セクタを読み取ろうとすることは、軽度の損傷を受けた HDD からデータを回復するための最も不確実で困難な方法です。

答え1

いいえ、それは不可能です。これを行うための SCSI コマンドはありますが、それでもゴミしか得られません。また、コンシューマー レベルのドライブ、特に USB ではサポートされていません。そのセクターにあったものはすべて消えてしまいます。

関連情報