仅检查文件系统中看似损坏的文件所在的区域

仅检查文件系统中看似损坏的文件所在的区域

我在读取大文件时遇到错误,例如

# md5sum file
md5sum: file: Input/output error

查看 strace 的输出,我发现 read() 系统调用返回 EIO,在相应的手册页中,关于 EIO,它说

当从磁盘或磁带读取时出现低级 I/O 错误时也可能会发生这种情况。

除了可能fsck -c在该文件所在的巨大文件系统上运行之外,我还能如何检查并修复该问题?

答案1

只有两种情况可能会导致“md5sum 文件”出现“输入/输出错误”:

  • 文件系统结构是缺陷(例如引用超出 fs 大小的块)。在这种情况下fsck -c没有必要,一个简单的fsck -f技巧应该如此
  • 存储介质本身有缺陷(例如 HDD)。在这种情况下,fsck -c将无法修复该问题,因为它不在 fs 的范围内

我的建议是

  • 首次运行fsck -f以确保它不是第一个选项
  • 首先将所有可读文件复制到备份介质
  • 然后使用ddrescue它来处理第一次无法读取的文件
  • 如果这是任何错误,销毁并处置驱动器

相关内容