chkdsk

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

重要

必须至少具有本地“管理员”组中的成员身份或同等身份才能运行 chkdsk。 若要以管理员身份打开命令提示符窗口,请在“开始”菜单中右键单击“命令提示符”,然后单击“以管理员身份运行”。

重要

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

注意

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

语法

chkdsk [<volume>[[<path>]<filename>]] [/f] [/v] [/r] [/x] [/i] [/c] [/l[:<size>]] [/b]

参数

参数 说明
<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 也是如此。
/? 在命令提示符下显示帮助。

备注

  • /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.chk<nnnn> 格式的文件。 chkdsk 完成后,可以检查这些文件以查看它们是否包含所需的任何数据。

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

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

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

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

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

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

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

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

了解退出代码

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

退出代码 说明
0 找不到错误。
1 找到并修复了错误。
2 已执行磁盘清理(如垃圾回收)或由于未指定/f 而未执行清理。
3 无法检查磁盘,无法修复错误,或由于未指定 /f 而无法修复错误。

示例

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

chkdsk d: /f

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

要检查当前目录中 FAT 磁盘上所有文件是否有不连续的块,请键入以下内容:

chkdsk *.*

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

查看 chkdsk 日志

有两种方法可用于在 Windows 中检索 chkdsk 日志文件。 查看下面所述的方法:

若要查看包含事件查看器的日志,请导航到以下内容:

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

    或者,按 Win + R 键打开运行对话框,键入“eventvwr.msc”,然后选择“确定”。

  2. 展开“Windows 日志”,右键单击“应用程序”,选择“筛选当前日志”。>

  3. 在“筛选当前日志”窗口中,导航到“事件源”下拉菜单,选择“Chkdsk”和“Wininit”。

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