处理USN期刊大小的完整案例

时间:2014-11-28 14:40:31

标签: c# ntfs usn

在我的备份应用程序中,我使用USN日志检查卷的更改。在microsoft website中,它提到了USN的最大大小,文件已满records gets deleted

  

MaximumSize是更改日记帐的目标最大大小   字节。变更日志可以增长到大于此值,但是在NTFS   文件系统检查点NTFS文件系统检查日志和   当它的大小超过MaximumSize的值加上值时修剪它   AllocationDelta。 (在NTFS文件系统检查点,操作   系统将记录写入允许的NTFS文件系统日志文件   NTFS文件系统,用于确定恢复所需的处理   从失败中。)

那么当期刊满员时会发生什么?是否删除了所有记录?或者只是它会删除最旧的记录并为新的记录输入?我如何处理usn期刊大小的完整案例?

1 个答案:

答案 0 :(得分:1)

USN日志是一个稀疏文件,USNumbers本身就是这个文件的索引......实际的偏移量。但是,诀窍是,在稀疏内存映射文件中,当它超过其大小阈值时,它会删除最早的条目。这是稀疏文件的神奇之处。由于早期记录被砍掉,所以抵消不必改变。 NTFS保留有关归零范围的元数据,并透明地向读取文件的客户端输出零。它是滚动日志。

归零的工作单位是AllocationDelta。每次发生这种归零时,NTFS就会设置一个新的LowestValidUsn值。

因此,当你进行备份时,你会想要记录NextUsn ...这是一个指向下一个USN将被写入的位置的指针。然后,当您进行后续备份,并且保存的NextUsn大于LowestValidUsn时,自上次备份以来的所有更改都仍然存在,您可以依靠USN来优化备份过程。

如果USN实际上溢出了MaxUsn,我不确定实际发生了什么。似乎不太可能 - 并且值得知道什么可以带来这一点。好像我已经阅读了有关实际发生情况的相互矛盾的说法 - 日记停止 - 或者NTFS只是重置期刊感冒。

如果日记被管理员重置或自动重新创建,NTFS会为日记分配一个新ID。在这种情况下,备份程序必须从整个卷的新读取开始。