1

我只是在对 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,但是我不确定稀疏集群是否实际上是在第二个集群运行之前直接分配,使其成为一个连续的块,如果它们实际上可以分配到任何地方。

我希望这是有道理的,任何信息或建议将不胜感激!

4

1 回答 1

1

不,这意味着 $UsnJrnl 在磁盘上占用了 2576 个簇。稀疏集群不占用磁盘上的任何空间,如果您尝试读取稀疏集群,例如您的示例中的集群 10,NTFS 只会返回零。

通常,您无法确定文件的开始和结束集群,因为文件可能会被碎片化 - 您的示例说前 1408 个集群根本没有分配在磁盘上,然后该文件的 128 个集群占用磁盘集群 510119 - 510247,然后2448个文件簇占用磁盘簇256-2704;所以在这种情况下,你不能说文件从集群 X(在磁盘上)开始,到集群 Y(在磁盘上)结束——只有当文件没有碎片时(当它只使用一个集群运行时)才有可能。

于 2013-07-26T14:11:56.433 回答