解决“文件或目录损坏且无法读取”

⚠ 警告:这是一篇专业知识文章,如果没有相关知识技巧请不要执行额外的操作。

错误 0x80070570: 文件或目录损坏且无法读取。

这篇知识文章适用于包括但不限于下列场景:

  • 执行 SFC 操作时出现卡死(读取到某个进度时便不会再进行,包括 100%)。
  • 执行 DISM 操作时提示“文件或目录损坏且无法读取。“
  • 试图打开某个盘符时提示“无法访问:文件或目录损坏且无法读取。”

解决方法

使用命令提示符(管理员)完成下列操作:

chkdsk C: /f

注意:
1、此处需要将 C 换成所需要修复的盘符。如果是 SFC 或 DISM 无法正常工作,请修改为系统安装盘(一般为 C)。
2、CHKDSK 需要保证该卷未被占用,因此可能需要卸载指定卷。若卷被卸载,该卷所有打开的句柄都将无效。若选用了系统安装盘,你需要将 CHKDSK 挂起到下次重新启动计算机时执行。

有关 CHKDSK 的额外说明

CHKDSK 的全称为 checkdisk,即磁盘检查,检查磁盘并显示状态报告,用于验证文件系统的逻辑完整性。

语法

CHKDSK [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]] [/B] [/scan] [/spotfix]

volume 指定驱动器号(后面跟一个冒号)、装入点或卷名。

filename 仅 FAT/FAT32: 指定要检查碎片的文件。

/F 修复磁盘上的错误。

/V 在 FAT/FAT32 上: 显示磁盘上每个文件的完整路径和名称。
在 NTFS 上: 显示清理消息(如果有)。

/R 查找坏扇区并恢复可读信息 (未指定 /scan 时,隐含 /F)。

/L:size 仅 NTFS: 将日志文件大小更改为指定的 KB 数。如果未指定大小,则显示当前大小。

/X 如果必要,则先强制卸除卷。该卷的所有打开的句柄都将无效 (隐含 /F)。

/I 仅 NTFS: 对索引项进行强度较小的检查。

/C 仅 NTFS: 跳过文件夹结构内的循环检查。

/B 仅 NTFS: 重新评估该卷上的坏簇(隐含 /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 将检查卷上的所有元数据),另外还有一个可选的第四阶段。

元数据是“有关数据的数据”。元数据是文件系统的“系统开销”,它跟踪有关所有在卷上存储的文件的信息。元数据包括有关以下方面的信息:给定文件的数据由哪些分配单元组成、哪些分配单元是可用的以及哪些分配单元包含坏扇区等。另一方面,文件包含的数据称为“用户数据”。NTFS 通过使用事务日志来保护它的元数据。用户数据没有以这种方式进行保护。

阶段 1:检查文件在第一个阶段,CHKDSK 会显示一条消息,通知您 CHKDSK 正在验证文件,同时还显示已完成的验证任务的百分比(范围为从 0% 到 100%)。在此阶段中,CHKDSK 将检查卷的主文件表 (MFT) 中的各个文件记录段。

MFT 中的特定文件记录段唯一地标识 NTFS 卷上的各个文件和目录。CHKDSK 在此阶段显示的“已完成百分比”是 CHKDSK 已验证的 MFT 的百分比。在此阶段中,CHKDSK 将检查各个文件记录段的内部一致性,并生成两个位图,一个表示正在使用的文件记录段,另一个表示卷上正在使用的簇。

在此阶段结束时,CHKDSK 将会识别 MFT 内部和整个卷上的已用空间和可用空间。NTFS 在其自身的位图中跟踪这些信息,该位图存储在磁盘上。CHKDSK 将它的结果与 NTFS 保持的位图进行比较。如果存在差异,将在 CHKDSK 输出中记录这些差异。例如,如果发现正在使用的文件记录段损坏,则在 CHKDSK 位图中,与该文件记录段相关联的磁盘簇将被标记为“可用”,但在 NTFS 位图中,它将被标记为“使用中”。

阶段 2:检查索引在第二个阶段,CHKDSK 会显示一条消息,通知您 CHKDSK 正在验证索引,同时还显示已完成的验证任务的百分比(范围为从 0% 到 100%)。在此阶段中,CHKDSK 将检查卷上的各个索引。

索引实际上就是 NTFS 目录。在此阶段中,CHKDSK 显示的“已完成百分比”是已检查的卷目录总数的百分比。在此阶段中,CHKDSK 将检查卷上的各个目录,检查内部一致性,并验证 MFT 中的文件记录段所代表的每个文件和目录都至少由一个目录引用。CHKDSK 确认目录中引用的每个文件或子目录都实际作为有效的文件记录段存在于 MFT 中,并且还检查是否存在循环目录引用。最后,CHKDSK 将确认在文件的目录项中,这些文件的时间戳和文件大小信息都是最新的。

在此阶段结束时,CHKDSK 将确保没有“孤立”的文件,并且所有目录项都用于合法的文件。孤立文件是指存在该文件的合法文件记录段,但该文件却没有列在任何目录中。如果相应的目录仍存在,则孤立文件通常可以恢复到正确的目录中。如果正确的目录已不存在,CHKDSK 将在根目录中创建一个目录,并将文件放入该目录中。如果 CHKDSK 发现不再使用的文件记录段的目录项,或者虽然仍在使用但并不与目录中列出的文件相对应的文件记录段的目录项,CHKDSK 将直接删除该文件记录段的目录项。

阶段 3:检查安全描述符在第三个阶段,CHKDSK 会显示一条消息,通知您 CHKDSK 正在验证安全描述符,同时还显示已完成的验证任务的百分比(范围为从 0% 到 100%)。在此阶段中,CHKDSK 将检查与卷上的文件或目录相关联的每个安全描述符。

安全描述符包含有关下列方面的信息:文件或目录的所有权、文件或目录的 NTFS 权限以及文件或目录的审核。在此阶段中,CHKDSK 显示的“已完成百分比”是卷上已检查的文件和目录的百分比。CHKDSK 将验证各个安全描述符的结构是否正常,并验证该结构的内部一致性。CHKDSK 并不验证列出的用户或组实际上是否存在,也不验证所赋予的权限是否适当。

段 4:检查扇区如果 /R 开关生效,CHKDSK 将运行第四个阶段,以便在卷的可用空间中查找坏扇区。CHKDSK 将尝试读取卷上的每个扇区,以确认该扇区是否可用。即使不使用 /R 开关,CHKDSK 也总是读取与元数据相关联的扇区。如果指定了 /R 开关,将在 CHKDSK 的较早阶段读取与用户数据关联的扇区。

当 CHKDSK 找到不可读的扇区时,NTFS 会将包含该扇区的簇加入它的坏簇列表中。如果坏扇区正在使用,CHKDSK 将分配一个新的簇,以完成该坏簇的工作。如果您使用的是容错磁盘,NTFS 将恢复坏簇的数据,并将这些数据写入新分配的簇中。否则,新的簇中将填充某种模式的 0xFF 字节。

如果 NTFS 在正常运行过程中遇到不可读的扇区,NTFS 将以与运行 CHKDSK 时相同的方式重新映射这些扇区。因此,通常无须使用 /R 开关。但是,如果怀疑磁盘可能有坏扇区,则使用 /R 开关就是一个扫描整个卷的简便办法。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注