Bart Silverstrim Asked: 2009-07-21 07:18:39 +0800 CST2009-07-21 07:18:39 +0800 CST 2009-07-21 07:18:39 +0800 CST Chkdsk 功能 772 我使用了几种不同的工具来修复磁盘,并且一直想知道是否有一个 CHKDSK 可以修复的列表?MFT?引导扇区?备份引导扇区?集群?有哪些常见问题无法解决? hard-drive corruption chkdsk 3 个回答 Voted Best Answer Adam Brand 2009-07-21T08:38:16+08:002009-07-21T08:38:16+08:00 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 事务日志可恢复性”部分的白皮书中有详细说明。 Evan Anderson 2009-07-21T07:34:16+08:002009-07-21T07:34:16+08:00 CHKDSK 基本上是一个并行的 NTFS 实现(对 NTFS.SYS),它关注于对 MFT 的“健全性检查”,并在必要时进行修复。我不知道关于 CHKDSK 在 NTFS 或 FAT 卷上执行的所有检查和“修复”的任何全面的已发布规范。我猜想唯一全面的规范将是 CHKDSK 本身的源代码。您可能可以从 Microsoft 文档中收集一些内容,但我怀疑您是否会找到每个测试的技术描述,甚至是所有测试的列表。 关于引导扇区和备份引导扇区(如果适用于被检查的文件系统类型),我认为任何版本的 CHKDSK 都不会对引导扇区进行任何类型的“修复”。例如,如果您破坏了引导扇区并丢失了 MFT 的偏移量,那么 CHKDSK 将无法解决该问题。 我可以肯定地说,CHKDSK 无法解决的唯一“损坏”类型是文件本身的数据范围内的损坏。CHKDSK 不对非元数据信息做任何事情。 JS. 2009-07-21T08:12:42+08:002009-07-21T08:12:42+08:00 有一份关于 CHKDSK 的旧 Microsoft 白皮书可用。 Windows 2000 Chkdsk 管理
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 事务日志可恢复性”部分的白皮书中有详细说明。
CHKDSK 基本上是一个并行的 NTFS 实现(对 NTFS.SYS),它关注于对 MFT 的“健全性检查”,并在必要时进行修复。我不知道关于 CHKDSK 在 NTFS 或 FAT 卷上执行的所有检查和“修复”的任何全面的已发布规范。我猜想唯一全面的规范将是 CHKDSK 本身的源代码。您可能可以从 Microsoft 文档中收集一些内容,但我怀疑您是否会找到每个测试的技术描述,甚至是所有测试的列表。
关于引导扇区和备份引导扇区(如果适用于被检查的文件系统类型),我认为任何版本的 CHKDSK 都不会对引导扇区进行任何类型的“修复”。例如,如果您破坏了引导扇区并丢失了 MFT 的偏移量,那么 CHKDSK 将无法解决该问题。
我可以肯定地说,CHKDSK 无法解决的唯一“损坏”类型是文件本身的数据范围内的损坏。CHKDSK 不对非元数据信息做任何事情。
有一份关于 CHKDSK 的旧 Microsoft 白皮书可用。
Windows 2000 Chkdsk 管理