Chkdsk 功能

Bar*_*rim 7 hard-drive corruption chkdsk

我已经使用了几种不同的工具来修复磁盘,并且一直想知道是否有一份 CHKDSK 可以修复的确切内容列表?MFT?引导扇区?备份引导扇区?集群?哪些常见的问题不能修复它?

Ada*_*and 8

CHKDSK(autochk.exe 和 chkdsk.exe,共享 dll)分几个阶段运行(以下针对 NTFS 卷,稍微简化了一些):

阶段 1 - “验证文件”。在这个阶段,它检查主文件表(MFT)。MFT在文件记录段 (FRS) 中存储有关每个文件和目录的文件属性,例如文件名、创建日期、时间戳等。CHKDSK 查看 FRS 的内部一致性,并构建两个位图(一个显示 FRS,另一个显示实际簇),并将其与存储在 MFT 中的位图进行比较。

第 2 阶段 - “验证索引”。在此阶段,它查看 NTFS 卷上的索引(目录)。它检查每个目录的内部一致性,并确保 FRS 中的每个文件和目录都包含在一个目录中。如果文件不在目录中,则将其视为“孤立的”,CHKDSK 会尝试将其放入 FRS 为该文件指定的文件夹中,或者将其放入“找到​​的”目录中。它还验证目录中的每个文件/目录是否都有相应的 FRS 条目。如果目录引用了不存在的文件或目录,则会删除该条目。

第 3 阶段 - “验证安全描述符”。安全描述符(包含 ACL 和审计信息等安全信息)存储在实际的文件结构中,在这个阶段 CHKDSK 会查看其中的每一个以确保它们是正确的结构并且它们在内部是一致的。

第 4 阶段 - “验证文件数据”。此阶段仅在使用 /R 命令(或从 GUI 选中该框)时发生。在此阶段,CHKDSK 尝试读取磁盘上的每个扇区。如果指定了 /R,它实际上已经为早期阶段的元数据和文件数据扇区执行了一次此阶段。如果找到坏扇区,则将扇区所在的簇添加到坏簇列表中,并尝试将数据移动到好的扇区(如果找不到,则用 0xFF 填充新簇)。

阶段 5 - “验证可用空间”。这也仅在使用 /R 时发生。在此阶段,CHKDSK 尝试从空闲扇区读取并将坏簇添加到坏簇列表中。

希望以上回答你的问题。此知识库、本白皮书和本指南中提供了更多信息。

还应该注意的是,NTFS 具有 NTFS 事务日志形式的内置元数据恢复功能。这是一个独立于 CHKDSK 的过程。如果系统意外关闭或崩溃,当 Windows 启动备份时,它将使用 NTFS 日志文件中的信息执行 NTFS 恢复操作。上面“NTFS 事务日志可恢复性”部分中提到的白皮书中详细介绍了此过程。