0

在我的备份应用程序中,我使用 USN 日志来检查卷的更改。在微软网站上,它提到像 USN 有一个最大大小,并且文件得到完整记录被删除

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

那么当日志满了的时候会发生什么呢?所有记录都会被删除吗?还是只有它会删除最旧的记录并为新记录创建一个条目?我如何处理美国期刊大小的完整案例?

4

1 回答 1

2

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

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

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

如果 USN 实际上溢出 MaxUsn,我不确定实际发生了什么。似乎极不可能 - 值得知道什么会带来这种情况。似乎我已经阅读了关于实际发生的事情的相互矛盾的描述——要么是日志停止——要么是 NTFS 只是将日志重置为冷态。

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

于 2014-12-24T17:16:31.223 回答