NTFS と Windows について調査を行っているところですが、NTFS スパース ファイルをどのように処理すればよいかについて少し混乱しています。私は現在、更新トランザクションのジャーナリングに使用される $UsnJrnl を見ています。
スパース ファイルはファイル システム内の他のファイルとまったく同じですが、ファイルにはゼロの大きなセクションが含まれ、ディスクにゼロを書き込んで実質的にスペースを浪費するのではなく、クラスター数のカウントのみを行うことを理解しています。ゼロが格納されます。
例として、私のテスト システムでの $UsnJrnl の実行データは次のとおりです: ( Winhexを使用して取得)
Cluster start: 0
Number of clusters: 1408
(Sparse)
Cluster start: 510119
Number of clusters: 128
Cluster start: 256
Number of clusters: 2448
これは、$UsnJrnl ファイルがディスク上で合計 3984 個のクラスターを占有していることを意味しますが、そのうちの 1408 個はまばらであるため、実際にはディスク上に存在しません。
これは、1408 個のゼロで埋められたクラスターが、510119 で始まる 128 個のクラスターの直前にあるということですか?
基本的に私がやろうとしているのは、ディスク上のファイルの正確な開始オフセットと終了オフセットを特定できるようにすることです。たとえば、クラスター x からクラスター 512822 まで実行されますが、まばらなクラスターが実際に2 番目のクラスターが実行される直前に割り当てられ、1 つの連続したブロックになります。実際にどこにでも割り当てられるかどうかです。
それが理にかなっていることを願っています。情報やアドバイスをいただければ幸いです。