chkdsk

检查卷的文件系统和文件系统元数据是否存在逻辑和物理错误。 如果不带参数使用, chkdsk 仅显示卷的状态,不会修复任何错误。 如果与 /f/r/x/b 参数一起使用,则会修复卷上的错误。

Important

本地 Administrators 组或等效组的成员身份是运行 chkdsk 所需的最低要求。 若要以管理员身份打开命令提示符窗口,请右键单击“开始”菜单中的“命令提示符”,然后选择“以管理员身份运行”

Important

不建议中断 chkdsk 。 但是,取消或中断 chkdsk 不应使卷比运行 chkdsk 之前更损坏。 再次运行 chkdsk 会检查并修复卷上任何剩余的损坏。

Note

Chkdsk 只能用于本地磁盘。 该命令不能与通过网络重定向的本地驱动器号一起使用。

Syntax

chkdsk [<volume>[[<path>]<filename>]] [/f] [/v] [/r] [/x] [/i] [/c] [/l[:<size>]] [/b] [/scan] [/forceofflinefix] [/perf] [/spotfix] [/sdcleanup] [/offlinescanandfix] [/freeorphanedchains] [/markclean] [/?]

Parameters

Parameter Description
<volume> 指定驱动器号(后跟冒号)、装入点或卷名。
[<path>]<filename> 仅用于文件分配表(FAT)和 FAT32。 指定希望 chkdsk 检查碎片的文件或文件集的位置和名称。 您可以使用通配符 * 指定多个文件。
/f 修复了磁盘上的错误。 磁盘必须锁定。 如果 chkdsk 无法锁定驱动器,则会出现一条消息,询问您下次重新启动计算机时是否要检查驱动器。
/v 选中磁盘时,显示每个目录中每个文件的名称。
/r 查找不良扇区并恢复可读信息。 磁盘必须锁定。 /r 包括 /f 的功能,以及对物理磁盘错误的额外分析。
/x 首先强制该卷卸载(如有必要)。 驱动器的所有打开句柄都失效。 /x 还包括 /f 的功能。
/i 仅用于 NTFS。 对索引条目执行不太严格的检查,从而减少运行 chkdsk 所需的时间。
/c 仅用于 NTFS。 不检查文件夹结构中的周期,从而减少运行 chkdsk 所需的时间。
/l[:<size>] 仅用于 NTFS。 将日志文件大小更改为键入的大小。 如果省略 size 参数,则 /l 显示当前大小。
/b 仅用于 NTFS。 清除卷上错误的群集列表,并针对错误重新扫描所有已分配的和免费的群集。 /b 包括 /r 的功能。 将卷映像化到新的硬盘驱动器后,请使用此参数。
/scan 仅用于 NTFS。 对卷运行联机扫描。
/forceofflinefix 仅与 NTFS 一起使用(必须与 /scan 一起使用)。 绕过所有联机修复;发现的所有缺陷都排队进行脱机修复(例如 chkdsk /spotfix)。
/perf 仅与 NTFS 一起使用(必须与 /scan 一起使用)。 使用更多系统资源尽快完成扫描。 这可能会对系统上运行的其他任务产生负面影响。
/spotfix 仅用于 NTFS。 对卷运行现成修复。
/sdcleanup 仅用于 NTFS。 垃圾收集不需要的安全描述符数据(暗示 /f)。
/offlinescanandfix 对卷运行脱机扫描并修复。
/freeorphanedchains 仅用于 FAT/FAT32/exFAT。 释放任何孤立的群集链,而不是恢复其内容。
/markclean 仅用于 FAT/FAT32/exFAT。 如果未检测到损坏,则将卷标记为干净,即使未指定 /f
/? 在命令提示符下显示帮助。

Remarks

  • /i/c 开关通过跳过某些音量检查来减少运行 chkdsk 所需的时间。

  • 如果希望 chkdsk 纠正磁盘错误,则驱动器上不能打开文件。 如果文件已打开,将显示以下错误消息:

    Chkdsk cannot run because the volume is in use by another process. Would you like to schedule this volume to be checked the next time the system restarts? (Y/N)
    
  • 如果选择在下次重新启动计算机时检查驱动器,则 chkdsk 会检查驱动器并在您重新启动计算机时自动更正错误。 如果驱动器分区是引导分区,则 chkdsk 在检查驱动器后会自动重新启动计算机。

  • 还可以使用 chkntfs /c 命令来计划下次重启计算机时要检查的卷。 使用该 fsutil dirty set 命令设置卷的脏位(指示损坏),以便 Windows 在重新启动计算机时运行 chkdsk

  • 您应该偶尔在 FAT 和 NTFS 文件系统上使用 chkdsk 来检查磁盘错误。 Chkdsk 检查磁盘空间和磁盘使用情况,并提供特定于每个文件系统的状态报告。 状态报告显示文件系统中发现的错误。 如果在活动分区上运行 chkdsk 而不使用 /f 参数,它可能会报告虚假错误,因为它无法锁定驱动器。

  • 仅当指定 /f 参数时,Chkdsk 才会更正逻辑磁盘错误。 Chkdsk 必须能够锁定驱动器以纠正错误。

    由于 FAT 文件系统上的修复通常会更改磁盘的文件分配表,有时会导致数据丢失,因此 chkdsk 可能会显示类似于以下内容的确认消息:

    10 lost allocation units found in 3 chains.
    Convert lost chains to files?
    
    • 如果按 Y,Windows 会将根目录中的每个丢失链保存为文件,其名称格式 File<nnnn>.chk为 。 chkdsk 完成后,您可以检查这些文件以查看它们是否包含您需要的任何数据。

    • 如果按 N,Windows 将修复磁盘,但不会保存丢失的分配单元的内容。

  • 如果不使用 /f 参数, chkdsk 会显示一条消息,指出文件需要修复,但不会修复任何错误。

  • 如果在 chkdsk /f* 大型磁盘或具有大量文件的磁盘上使用(例如,数百万个文件), chkdsk /f 可能需要很长时间才能完成。

  • 使用 /r 参数查找文件系统中的物理磁盘错误,并尝试从任何受影响的磁盘扇区中恢复数据。

  • 如果指定 /f 参数,则如果磁盘上有打开的文件,则 chkdsk 会显示错误消息。 如果未指定 /f 参数并且存在打开的文件,则 chkdsk 可能会报告磁盘上丢失的分配单元。 如果尚未在文件分配表中记录打开的文件,可能会发生这种情况。 如果 chkdsk 报告丢失了大量分配单元,请考虑修复磁盘。

  • 由于启用了共享文件夹卷影副本时无法锁定共享文件夹卷卷的 卷影副本 ,因此针对源卷运行 chkdsk 可能会报告错误或导致 chkdsk 意外退出。 但是,可以通过在只读模式(不带参数)下运行 chkdsk 来检查共享文件夹存储卷的卷影副本来检查卷影副本是否存在错误。

  • 具有不同参数的 chkdsk 命令可从恢复控制台获得。

  • 在不经常重新启动的服务器上,您可能希望使用 chkntfs 或命令 fsutil dirty query 来确定在运行 chkdsk 之前是否已设置卷的脏位。

chkdsk 在不同媒体上的表现

  • 物理性质: HDD 使用旋转磁盘。 扇区和块从拼盘中物理读取。

  • chkdsk 运行时:

    • 物理磁头必须移动到每个被检查的数据位置,由于机械移动,速度 较慢
    • 检查 坏扇区 (使用 /r)需要更长的时间,因为检查每个扇区的物理完整性,并在可能的情况下替换坏扇区。
    • 对于大型驱动器来说,长时间运行时间并不少见。

通常,在大容量 HDD 上, /r 或者在 /b 读取每个扇区时花费相当长的时间。 即使没有错误且大部分为空的驱动器,物理读取速度也会使该过程成为瓶颈。

在某些情况下,在大容量 HDD 上,可能会 chkdsk 太快地完成其进程。 如果发生这种情况,可能是:

  • 卷作系统(OS)或其他进程装载为脏或锁定。
  • chkdsk 作实际上并没有扫描驱动器上的每个扇区。
  • HDD 可能有读取头失败或其他硬件问题,导致 chkdsk 行为不可预知。
  • chkdsk 作仅对文件系统结构执行联机扫描,在启动到 OS 之前未显式运行脱机扫描。

chkdsk查看日志可能会指向扫描过程中的潜在问题。 若要了解详细信息,请参阅 查看 chkdsk 日志

了解退出代码

下表列出了 chkdsk 在完成后报告的退出代码。

Exit code Description
0 未找到任何错误。
1 找到并修复了错误。
2 执行磁盘清理(例如垃圾回收)或未执行清理,因为未指定 /f
3 无法检查磁盘,无法修复错误,或者由于未指定 /f 而未修复错误。

Examples

若要检查驱动器 D 中的磁盘并出现 Windows 修复错误,请键入:

chkdsk d: /f

如果遇到错误, chkdsk 会暂停并显示消息。 Chkdsk 通过显示列出磁盘状态的报告来结束。 在完成之前 chkdsk ,无法打开指定驱动器上的任何文件。

若要检查当前目录中 FAT 磁盘上的所有文件是否存在非连续块,请键入:

chkdsk *.*

Chkdsk 显示状态报告,然后列出与具有不连续块的文件规范匹配的文件。

查看 chkdsk 日志

有两种方法可用于使用事件查看器和 PowerShell 在 Windows 中检索 chkdsk 日志文件。

若要使用事件查看器查看日志,请执行以下步骤:

  1. 启动 >控制面板>管理工具事件>查看器

    或者,按 Win + R 键调出运行对话框,键入 eventvwr.msc,然后选择 确定

  2. 展开 Windows 日志,>右键单击应用程序>,选择过滤当前日志

  3. “筛选器当前日志 ”窗口中,导航到 “事件源 ”下拉菜单,选择 ChkdskWininit

  4. 选择“ 确定 ”以完成对这两个源的筛选。