当 defrag 尝试读取或写入时会发生什么?它会出错并停止吗?它会警告用户有坏文件吗?它会尝试修复任何问题吗?它会继续运行吗?
我知道,如果我怀疑我的硬盘有问题,我应该在进行碎片整理之前运行 chkdsk。我还知道 Windows 10 会安排自己的碎片整理(“磁盘优化”),我不需要做任何事情。我很好奇在这种情况下会发生什么
答案1
正如您所指出的,Windows 10 碎片整理是自动的,无需手动运行它。
其次,如果您确实怀疑您的硬盘,请运行 CHKDSK 来确定问题的严重程度。
然后,如果 Windows 真的尝试自行运行碎片整理程序,它就无法移动磁盘上的损坏区域。因此它很可能会就此停止,因为它无法继续。
我没有看到这种情况发生,但读/写通常不能在受损区域进行(我已经看到这种情况发生),所以碎片整理会以相同的方式工作。
如果您需要确定碎片整理何时运行,请转到管理工具、优化和碎片整理,然后使用底部的更改设置来查看或更改计划。
答案2
碎片整理程序不会做任何特别的事情。处理坏扇区的代码与在任何其他情况下(例如,文件正在被读取或复制)处理坏扇区的代码相同。
假设您询问的是典型块设备上的 NTFS,这个过程很复杂。如果存在冗余(例如,如果是 RAID 阵列),那么冗余逻辑会处理这种情况。如果是新分配的空间单元或对现有空间的写入操作,则该空间将被标记为坏空间并分配一个新的空间。如果是读取,则可以重试读取,如果成功,则分配新空间,移动数据,并将坏空间标记为坏空间。
最有趣的情况是,如果所有读取尝试都失败,并且空间正在使用中。在这种情况下,数据可能会丢失。上次我检查时(大约二十年前),数据被移动到新分配的存储单元,但文件数据丢失,被零替换。
在最坏的情况下,目录信息或空间分配信息等元数据可能会丢失。在这种情况下,将报告需要修复文件系统的事件,并且可能会丢失大量数据。