我在读取大文件时遇到错误,例如
# 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
它来处理第一次无法读取的文件 - 如果这是任何错误,销毁并处置驱动器