我只是在做一些研究到NTFS和Windows的过程中,我有点困惑,我应该如何处理NTFS稀疏文件。 我目前正在查看用于更新事务日志的$ UsnJrnl。
我的理解是,稀疏文件就像文件系统中的任何其他文件一样,但是文件将包含很大的零部分,而不是向磁盘写入零和本质上浪费空间,只有簇的数量包含零被存储。
举例来说,我的testing系统上运行的$ 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个是稀疏的,所以它们实际上并不存在于磁盘上。
Linux:大型int数组:mmap vs查找文件?
检测unix中的目录更改
java.io.File当path不以driveletter开头时,mkdirs()方法在Windows上抛出NullPointerException
Windows文件系统如何工作?
那么这是否意味着1408个零填充簇紧接在510119开始的128个簇之前?
基本上我想要做的是能够确定磁盘上的文件确切的开始和结束偏移量,例如它从群集x运行到群集512822,但我不确定是否稀疏群集实际上直接在第二次群集运行之前分配,使其成为一个连续的块,如果它们实际上可以分配到任何地方。
我希望这是有道理的,任何信息或build议将不胜感激!
Windows相当于Linux命名空间(每进程文件系统挂载)?
读取从/ dev / block / mmcblk0和/ dev / block / mmcblk0p1之间的区别
NTFS文件系统时间
不,这意味着$ UsnJrnl在磁盘上占用2576个集群。 稀疏集群不占用磁盘上的任何空间,如果您尝试读取稀疏集群(例如您的示例中的集群10),则NTFS只返回零。
一般来说,你不能确定文件的开始和结束集群,因为文件可以被分割 – 你的例子说,根本没有在磁盘上分配第一个1408个集群,然后该文件的128个集群占用磁盘集群510119-510247,然后文件的2448个簇占用磁盘簇256-2704; 所以在这种情况下,不能说这个文件是以簇X(在磁盘上)开始,并以簇Y(在磁盘上)结束 – 只有在文件没有被分段(只使用一个簇运行时)的情况下才有可能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。