Chkdskfunction

我已经使用了几种不同的工具修复磁盘,并想知道是否有一个CHKDSK可以修复的清单? MFT? 引导扇区? 备份引导扇区? 集群? 哪些常见问题无法解决?

CHKDSK(autochk.exe和chkdsk.exe,共享dll的)运行几个阶段(下面是NTFS卷,并简化了一下):

阶段1 – “validation文件”。 在这个阶段它检查主文件表 (MFT)。 MFT在文件logging段(File Record Segments,FRS)中存储有关每个文件和目录的文件属性 ,如文件名,创builddate,时间戳等。 CHKDSK查看FRS的内部一致性,还构build了两个位图(一个显示FRS,一个显示实际的集群),它与存储在MFT内的位图相比较。

阶段2 – “validation索引”。 在这个阶段,它会查看NTFS卷上的索引(目录)。 它会检查每个目录的内部一致性,并确保FRS中的每个文件和目录都包含在一个目录中。 如果文件不在目录中,则认为它是“孤立的”,并且CHKDSK会尝试将其放入FRS为该文件指示的文件夹中,或者将其放入“find​​”目录中。 它还validation目录中的每个文件/目录都有相应的FRS条目。 如果目录引用的文件或目录不在那里,则删除该条目。

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

阶段4 – “validation文件数据”。 只有在使用/ R命令(或者从GUI检查盒子)的情况下才会出现此阶段。 在这个阶段,CHKDSK尝试读取磁盘上的每个扇区。 如果指定了/ R,那么对于早期阶段的元数据和文件数据扇区实际上已经做了这个阶段。 如果发现坏扇区,则将该扇区所在的簇添加到坏簇列表中,并尝试将数据移到好扇区(如果不能,则用0xFF填充新簇)。

第五阶段 – “validation可用空间”。 这仅在使用/ R时才会发生。 在这个阶段,CHKDSK尝试从空闲扇区读取数据,并将坏簇添加到坏簇列表中。

希望以上回答你的问题。 有关更多信息,请参阅本KB ,本白皮书和本指南 。

还应该注意的是,NTFS具有内置的NTFS事务日志forms的元数据恢复function。 这是一个从CHKDSK独立的过程。 如果系统意外closures或崩溃,当Windows启动时,它将使用NTFS日志文件中的信息执行NTFS恢复操作。 此过程在“NTFS事务日志可恢复性”部分的上述白皮书中详细介绍。

CHKDSK基本上是一个并行的NTFS实现(对于NTFS.SYS),它关注的是对MFT进行“理智检查”,并在必要时进行修复。 我不知道CHKDSK在NTFS或FAT卷上执行的所有检查和“修复”的全面发布规范。 我猜想唯一全面的规范将是CHKDSK本身的源代码。 你可以从微软的文档中find一些东西,但是我怀疑你会find每个testing的技术描述,甚至是所有testing的列表。

对于引导扇区和备份引导扇区(如果适用于正在检查的文件types),我不相信任何版本的CHKDSK对引导扇区进行任何types的“修复”。 如果你粉碎你的启动扇区并丢失MFT的偏移量,例如,CHKDSK不会解决这个问题。

我可以肯定地说,CHKDSK不能做的唯一一种“腐败”就是文件本身数据范围内的腐败。 CHKDSK不会对非元数据信息做任何事情。

有一个关于CHKDSK的旧版微软白皮书。

Windows 2000 Chkdskpipe理