两份日志,两份差事
第一份是 $LogFile,NTFS 为自己的元数据准备的预写日志。在 NTFS 改动任何结构性内容之前——文件大小、磁盘上的位置、目录项——它会先把预期变更写进 $LogFile,这样即使操作中途断电,卷仍可挂载且基本完好。它设计上就有上限并原地回绕,几个 MB 到几十 MB;你从来不用管它,任何清理工具也不该碰它。
第二份才是人们真正会遇到的:$UsnJrnl:$J,即 USN(Update Sequence Number)变更日志,一份按时间顺序记录卷上变更的台账——文件被创建、重命名、删除、写入。它的存在,是为了让应用程序不必重新扫描整块磁盘就能知道上次查看之后发生了什么。
- Windows Search 索引器——精确知道该重建哪些索引
- 备份软件——不必遍历整棵目录树就能发现变更文件
- 云同步客户端——只上传真正变动过的内容
- Everything 之类的即时搜索工具——让索引保持最新
- 企业 DLP 与 eDiscovery 代理——审计文件事件
- 某些杀毒软件——在完整扫描之间跟踪文件活动
它为什么变大,何时才要紧
USN 日志随变更流量增长:编译任务、浏览器缓存、被重新整理的照片库——每一次创建、重命名和删除都会追加一条小记录。它的最大尺寸可配置,应用程序也能调大它;同步或备份代理可能特意要求大日志,以免离线期间错过任何变更。日志到达上限后会回绕:最旧的记录被覆盖。换句话说,大日志通常是有意为之的设置,而不是泄漏——而且因为它住在文件管理器看不见的 NTFS 元数据里,它会以“无法解释”的已用空间的形式出现。
它不会做的,是拖慢任何东西。追加的都是微小的顺序写入,而读取方——搜索、备份、同步——没有它的话会在重新扫描磁盘上烧掉多得多的 CPU。日志的代价是空间,不是速度。
该做什么(以及不该做什么)
通常:什么都不做。想看看自己的,以管理员身份运行 fsutil usn queryjournal C:——它会报告日志 ID 和记录统计。如果确实需要空间,也能承受一场重新扫描风暴,fsutil usn deletejournal /D C: 是安全的:它删除的是变更记录而不是文件,日志随后会重建。要有心理准备:搜索和同步工具会立刻做一次全量重扫——一次性的 CPU 和磁盘活动尖峰,而这恰恰有违初衷。
永远不要去做的是猎杀 $LogFile:它是元数据而不是文件,用户态的任何东西都无法在不破坏卷的前提下删除它。如果你的日志已经膨胀得巨大,有价值的问题不是“怎么缩小它”,而是“哪个应用调大了上限”——这个答案会告诉你,是你的备份工具、同步客户端,还是某个你忘了它还在运行的东西。
常见问题与解答
删除 USN 日志安全吗?
安全。fsutil usn deletejournal /D C: 只删除变更记录,不动你的文件。日志会重建,搜索和同步工具会重新扫描——请预期一次性的 CPU 和磁盘活动尖峰。
NTFS 日志会让电脑变慢吗?
不会。写日志只是微小的顺序追加流。你付出的是磁盘空间而不是速度——没有它,搜索、备份和同步将烧掉多得多的 CPU 来重新扫描一切。
继续阅读
联系我们: [email protected]