AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 43029
Accepted
Bart Silverstrim
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 3 个回答
  • 1044 Views

3 个回答

  • Voted
  1. 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 事务日志可恢复性”部分的白皮书中有详细说明。

    • 8
  2. 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 不对非元数据信息做任何事情。

    • 2
  3. JS.
    2009-07-21T08:12:42+08:002009-07-21T08:12:42+08:00

    有一份关于 CHKDSK 的旧 Microsoft 白皮书可用。

    Windows 2000 Chkdsk 管理

    • 1

相关问题

  • 网络磁带恢复比磁盘到磁盘复制更快

  • Linux:“发现重复的 PV XXXXYYYYY:用户 /dev/sdb1 而不是 /dev/sda1”

  • Windows C:驱动器大小

  • 了解磁盘队列长度

  • md5sum 重复为同一台机器上的同一文件提供不同的校验和

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve