Я получаю ошибки при чтении большого файла, как в

# md5sum file
md5sum: file: Input/output error

Глядя на выходные данные strace, я вижу, что системный вызов read() возвращает EIO, а на соответствующей странице справочника говорится об EIO, что

Это также может произойти при низкоуровневой ошибке ввода-вывода при чтении с диска или ленты.

Как я могу проверить и исправить проблему, кроме, возможно, запуска fsck -c в огромной файловой системе, где находится этот файл?

1 ответ1

1

Есть только два сценария, которые могут выдавать «Ошибка ввода / вывода» в "файле md5sum":

  • Структура файловой системы является дефект (например , ссылки на блок за пределами размера фс). В этом случае fsck -c не является необходимым, простой fsck -f должен таким образом
  • Сам носитель данных неисправен (например, жесткий диск). В этом случае fsck -c не сможет решить проблему, так как она не входит в область действия fs.

Я рекомендую

  • сначала запустите fsck -f чтобы убедиться, что это не первый вариант
  • сначала скопируйте все читаемые файлы на резервный носитель
  • затем используйте ddrescue чтобы просмотреть файлы, которые не читаются при первом проходе
  • если возникнет какая-либо ошибка, уничтожьте и утилизируйте диск

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .