
かなりよく知られている問題を抱えていますが、残念ながら私には少し知識が不足しており、ここでより良い洞察が得られることを期待しています。
ということで、FAT32 ファイルシステムの壊れた USB スティックがあります。 でクローンを作成しddrescue
、 を実行しましたtestdisk
。パーティションが見つかったので (よかった!)、 でループデバイスを作成しlosetup -f -P USB_clone.img
、マウントしました。ここまでは順調でしたが、ここで問題が発生しました。 ですべてのファイルが見つかり、サイズも正しいようです ( ls -al
)。しかし、ファイルをコピーしようとすると I/O エラーが発生しました。そこで、パーティションを再度マウント解除し、 を実行しましたdosfsck -l -r -v /dev/loop1p1
。一部のファイルは回復できましたが、ほとんどのファイルは非常に興味深い方法で修復されました。
File size is 27589006 bytes, cluster chain length is 32768 bytes.
Truncating file to 32768 bytes.
この結果、ファイルが切り捨てられてしまいます。これは明らかに私が望んでいることではありません...
そこで、いくつかの疑問が生じます。
ここで何が起こっているのでしょうか? ファイル サイズは正しく検出できるようですが、何かが完全に間違っています。うーん、何でしょうか? パーティション テーブルでしょうか?
dosfsck
ファイル名とファイル サイズは正しく検出できるのに、なぜこれを修正できないのでしょうか?そしてもちろん、もっと重要なのは、これらのファイルを回復する方法があるかどうかです。
さらに詳しい情報が必要な場合は、リクエストしてください。
どうもありがとう!
答え1
FATファイルシステムの断片化については、次のサイトで詳しく説明されています。Quora: オペレーティング システムは、FAT32 形式の断片化されたセクターをどのように処理して、完全なデータを回復するのでしょうか?アーネ・バーナード著。
各セクターの背面 (または前面、詳細設計は異なりますが、セクター内のどこか) には、「位置 X の次のセクター」を示す部分があります。これは、FAT32 を含むすべての FAT ベースのファイル システムの設計に含まれています。また、これは、断片化によって FAT でのファイル アクセスが遅くなる理由でもあります。
仕組みは次のとおりです:
- ユーザー (または実行中のプログラム) がオペレーティング システムにファイルを開く要求を送信します。
- OS は要求をファイル システムに渡します。
- FS (FAT) はパス + ファイル名をチェックし、指定されたパスの最初のフォルダーを見つけます。
- 次に、ルート フォルダ テーブル (つまり、ドライブのフォルダ階層の先頭) を読み取ります。これにより、パスの最初のフォルダのセクター番号が与えられます。
- 次に、そのフォルダーのテーブルを読み取り続け、指定されたパス内の次のフォルダーと照合します。パス内の最後のファイル名/フォルダー名が見つかるまで繰り返します。
- これにより、ファイルが始まるセクターとファイルのサイズがわかるので、すべてのセクターが見つかったかどうかがわかります (セクター サイズの単純な追加)。
- 最初のセクターを読み取り、そのメタデータ (つまり、次のセクターへのポインタ) をチェックします。
- それも読み取り、セクターのデータ サイズをすでに読み取ったカウントに追加します。それでもファイル サイズより小さい場合は、メタデータの次のセクターに進み、繰り返します。
肝心なのは、切り捨てられるファイルはおそらく断片化されているということです。回復プログラムがブロックを調べて次の断片を見つけようとするとき、次のブロックがあると思われる場所を信頼しないことに決めました。
dosfsck
比較して切り捨てるタイミングを決定するために使用するルールと問題は次のとおりです。参考:そもそもディスクがどのようなダメージを受けたのかを知らなければ、なぜ切り捨てられているのかを知ることは困難です。FATが消去された場合、クラスタチェーンにリストされているクラスタのいずれも使用されていないと判断され、ルールに違反している可能性があります。File contains bad or free clusters. The file is truncated.
dosfsck
は回復ツールではありません。これは、ディスクが基本的に「正常」であることを前提とした修復ツールです。
適切な回復ツールの実行を検討する必要があるかもしれません。photorec
写真だけでなく、さらに多くのものを復元できますまたはtestdisk
それができるパーティションをコピーする以上のもの。