在 Windows XP 中,每次断电后,Windows 都会运行 chkdsk 来检查硬盘。但是,在 Windows 7 中,即使断电后,我也没有看到这种模式。这是否意味着它不需要 chkdsk,还是我需要手动运行它?
答案1
在 Windows XP 的整个生命周期中,NTFS 似乎已经变得更加像一个“日志式”文件系统,并且采用了许多功能,使得 chkdsk 不再必要。这些技术结合在一起意味着运行 chkdsk 基本上是不必要的,因为文件系统的状态更容易、更快速地确定(例如,可以在启动期间快速完成)并恢复到“已知良好”状态。
Windows Vista 引入了事务性 NTFS,其原理与日志文件系统类似,其中特定的磁盘检查类型事件很少发生或没有必要。本质上,当文件系统安装时,驱动程序很容易找出电源故障前发生的情况,并非常快速地确定是回滚、前滚还是简单地放弃更改。
(我相信主要的变化出现在 Vista 中,因为自从从 XP 转移以来我还没有看到 chkdsk 在启动时运行)
正如评论中提到的,在某些情况下,这些系统无法保护你,你的系统完全有可能损坏到 chkdsk是必要的,特别是在使用不支持这些高级功能的文件系统时,例如FAT 文件系统用于闪存棒。这些功能可以减少启动过程中需要 chkdsk 的频率,从而更容易在意外断电之前确定文件系统状态。
顺便提一下,我甚至开始使用磁盘管理控制台调整磁盘大小,后来意识到我必须在调整过程中关闭机器,因为这需要很长时间。我以为这是数据丢失的必然结果,但当我重新启动时,我发现一切都完好无损,恢复到以前的样子,没有损坏或丢失。我不建议在家尝试这个,因为你可能会失去一切,但“太好了”,微软保护了我,让我免受自己的愚蠢行为的伤害。
来自维基百科:
NTFS 是一个日志文件系统,使用 NTFS 日志($LogFile)来记录卷的元数据变化。
它是 NTFS 的一项关键功能(FAT/FAT32 不提供的功能),用于确保其内部复杂数据结构(特别是卷分配位图或碎片整理 API 执行的数据移动、对 MFT 记录的修改,例如存储在 MFT 记录和属性列表中的一些可变长度属性的移动)和索引(用于目录和安全描述符)在系统崩溃时保持一致,并允许在重新安装卷时轻松回滚对这些关键数据结构的未提交的更改。
和
从 Windows Vista 开始,应用程序可以使用事务性 NTFS 将文件更改组合到一个事务中。该事务将保证所有更改都发生,或者都不发生,并且它将保证事务之外的应用程序在更改提交之前不会看到这些更改。
它使用与卷影副本(即写时复制)类似的技术来确保可以安全地回滚被覆盖的数据,并使用 CLFS 日志来标记尚未提交的事务,或者已提交但仍未完全应用的事务(以防在其中一个参与者提交期间系统崩溃)。