Ошибки файловой системы при восстановлении многих файлов

У меня был внешний жесткий диск, который я монтировал внутри. Он появился в формате NTFS, и я хотел перейти к ext4. Поэтому я скопировал все, что я хотел сохранить на других дисках, создал совершенно новую таблицу разделов (GPT) с одним разделом ext4, и теперь я пытаюсь скопировать все обратно. Я использую rsync -a --info=progress2 для большинства операций копирования.

Моя проблема в том, что после 100 ГБ или около того я, как правило, получаю странные ошибки:

 rsync: сбой записи на «somepath»: файловая система только для чтения (30)
 Ошибка rsync: ошибка в файле IO (код 11) на приемнике.c (389) [приемник = 3.1.0]

Если я попытаюсь перечислить каталог, в котором rsync работал, когда он не удался, я вижу странные результаты:

 drwx ------ 3 pdaddy pdaddy 4096 28.08.2011 subdirectory1
 drwx ------ 3 pdaddy pdaddy 4096 12 марта 2014 подкаталог2
 д ?????????  ?  ?  ?  ?  ?  subdirectory3
 д ?????????  ?  ?  ?  ?  ?  subdirectory4

Пытаясь перечислить каталоги с вопросительными знаками в своих списках и даже некоторые из них без, дает мне:

 ls: чтение каталога подкаталога3: ошибка ввода / вывода
 всего 0

Даже fdisk имеет ошибки:

 ~% fdisk / dev / sde   
 fdisk: невозможно прочитать / dev / sde: Ошибка ввода / вывода

Если я попытаюсь размонтировать диск, команда umount зависает. Я запустил htop и увидел, что umount использует 100% одного ядра процессора. Я предположил, что это журналы или некоторые из них, поэтому я отпустил его всю ночь один раз, но утром он был в том же состоянии. Выпуск sudo reboot или sudo init 6 то время как umount подвешен, приводит к еще одному подвесному терминалу. Я должен держать кнопку питания. Только сейчас я попытался перезагрузить без явного размонтирования, и он повесил черный экран (монитор заснул) и никакого ответа через ssh или клавиатуру не было.

После sudo fsck.ext4 -f /dev/sde1 цикла питания я отключил диск и сделал sudo fsck.ext4 -f /dev/sde1 , и ошибок не было. Я проверил файлы, и они, казалось, все были там, и образец из них был прав.

Я предположил, что ошибки связаны с тем, что журнал слишком велик (возможно, он ограничен максимальным размером?), Поэтому я перемонтировал с -o data=writeback . Я полагал, что это хорошая идея, так или иначе, чтобы временно восстановить этот способ при восстановлении файлов терабайт.

Это помогло незначительно ускорить копирование, но не помогло с ошибками. Еще два раза я попал в одно и то же состояние. Сильный цикл питания – это единственное, что я могу сделать, а потом проверка диска не показывает ошибок, файлы выглядят нормально, и я могу копировать еще 100 ГБ или около того.

Что происходит? Я думаю, что сам диск здоров. У меня не было проблем с этим, прежде чем переформатировать. Должен ли я выполнять сканирование сектора на диске? Это 5 ТБ, поэтому я не решаюсь это сделать.


Я восстановил несколько файлов, наблюдая за журналами ядра, как это предложил Стивен Китт. Прежде чем rsync неудачно, я начал видеть некоторые фанки-ошибки:

 [8807.572286] ata4.00: исключение Emask 0x0 SAct 0x7fffffff SErr 0x0 действие 0x6 заморожено
 [8807.572290] ata4.00: команда failed: WRITE FPDMA QUEUED
 [8807.572293] ata4.00: cmd 61/40: 00: c0: 57: b6 / 05: 00: b7: 00: 00/40 тег 0 ncq 688128 out
 [8807.572293] res 40/00: 00: 00: 4f: c2 / 00: 00: 00: 00: 00/40 Emask 0x4 (тайм-аут)
 [8807.572295] ata4.00: статус: {DRDY}

Последние три сообщения повторяются много раз, затем я получаю:

 [8807.572412] ata4: ссылка для перезагрузки
 [8808.060464] ata4: подключение SATA до 3.0 Гбит / с (SStatus 123 SControl 300)
 [8808.062462] ata4.00: настроен для UDMA / 133
 [8808.076459] ata4.00: устройство сообщило о недействительном секторе CHS 0

Последнее сообщение повторяется 20 раз или около того, а затем я получаю:

 [8808.076526] ata4: EH завершен

Через 47 секунд последовательность повторяется. И снова через 81 секунду после этого, и через 120 секунд после этого, за исключением этого времени, он начинается с:

 [9160.779935] ata4.00: NCQ отключен из-за чрезмерных ошибок

В следующий раз все по-другому. Он начинается так же, но я вижу:

 [9235.819291] ata4: жесткая ссылка на сброс
 [9241.181501] ata4: ссылка медленно реагирует, пожалуйста, будьте терпеливы (готово = 0)
 [9245.839449] ata4: Ошибка COMRESET (errno = -16)

Это повторяется пару раз, а затем:

 [9290.922301] ata4: ограничение скорости передачи SATA до 1,5 Гбит / с
 [9290.922303] ata4: ссылка для перезагрузки
 [9295.948393] ata4: Ошибка COMRESET (errno = -16)
 [9295.948400] ata4: сброс отказался, отказавшись
 [9295.948401] ata4.00: отключено

Появились некоторые новые ошибки:

 [9295.948522] sd 3: 0: 0: 0: [sdf] FAILED Результат: hostbyte = DID_BAD_TARGET driverbyte = DRIVER_OK
 [9295.948524] sd 3: 0: 0: 0: [sdf] CDB: 
 [9295.948525] Запись (16): 8a 00 00 00 00 00 b9 0c fd 00 00 00 40 00 00 00
 [9295.948538] blk_update_request: ошибка ввода-вывода, dev sdf, сектор 3104636160
 [9295.948542] Предупреждение EXT4-fs (устройство sdf1): ext4_end_bio: 317: ошибка ввода-вывода -5 запись в индекс 49807774 (смещение 155189248 размер 4194304 стартовый блок 388079688)
 [9295.948543] Ошибка буфера ввода-вывода на устройстве sdf1, логический блок 388079264

(Обратите внимание, что я перепутал некоторые диски с тех пор, как начал этот пост, и этот диск теперь sdf вместо sde.)

Эта последняя ошибка повторяется несколько раз с разными логическими блоками, а затем я получаю это равное количество раз:

 [9295.948585] Предупреждение EXT4-fs (устройство sdf1): ext4_end_bio: 317: ошибка ввода-вывода -5 запись в inode 49807774 (смещение 155189248 размер 4194304 стартовый блок 388079856)

Там больше того же, и все время копия продолжается, не жалуясь. Наконец, я получаю:

 [9295.950321] Отмена журнала на устройстве sdf1-8.
 [9295.950345] Ошибка буфера ввода-вывода на dev sdf1, логический блок 610304000, потерянная страница синхронизации
 [9295.950361] EXT4-fs (sdf1): Отложенное выделение блоков не выполнено для inode 49807775 при логическом смещении 0 с максимальными блоками 1024 с ошибкой 30
 [9295.950362] Ошибка буфера ввода-вывода на dev sdf1, логический блок 0, потерянная страница синхронизации
 [9295.950365] EXT4-fs (sdf1): Этого не должно быть!  Данные будут потеряны
 [9295.950365] 
 [9295.950366] Ошибка EXT4-fs (устройство sdf1) в ext4_writepages: 2421: журнал прерван
 [9295.950368] Ошибка EXT4-fs (устройство sdf1): ext4_journal_check_start: 56: обнаруженный прерывистый журнал
 [9295.950370] JBD2: Ошибка -5 обнаружена при обновлении суперблока журнала для sdf1-8.
 [9295.950371] EXT4-fs (sdf1): восстановление файловой системы только для чтения
 [9295.950372] EXT4-fs (sdf1): предыдущая ошибка ввода-вывода для обнаружения суперблока
 [9295.950379] Ошибка буфера ввода-вывода на dev sdf1, логический блок 0, потерянная страница синхронизации
 [9295.950394] Ошибка буфера ввода-вывода на dev sdf1, логический блок 0, потерянная страница синхронизации
 [9326.009002] scsi_io_completion: 10 обратных вызовов подавлены
 [9326.009007] sd 3: 0: 0: 0: [sdf] FAILED Результат: hostbyte = DID_BAD_TARGET driverbyte = DRIVER_OK
 [9326.009009] sd 3: 0: 0: 0: [sdf] CDB: 
 [9326.009011] Запись (16): 8a 00 00 00 00 00 00 00 0f b8 00 00 00 08 00 00
 [9326.009018] blk_update_request: 10 обратных вызовов подавлены
 [9326.009020] blk_update_request: ошибка ввода-вывода, dev sdf, сектор 4024
 [9326.009023] Ошибка буфера ввода-вывода в dev sdf1, логический блок 247, потеряна асинхронная страница write

(Обратите внимание, что на этот раз я не размонтировал и не перезагрузился с помощью data = writeback, поэтому он выполнял журналирование по умолчанию.)

После этого rsync не удалось, предположительно, потому что файловая система была перемонтирована только для чтения.

Прошу прощения за свалку. Я попытался смириться с этим, но, боюсь, я недостаточно знаком с тем, что здесь происходит, чтобы разобраться с этим.

One Solution collect form web for “Ошибки файловой системы при восстановлении многих файлов”

Это похоже на проблему с оборудованием, а не на ошибку ядра. Вы можете попробовать следующее:

  • переустановите кабель SATA
  • использовать другой кабель SATA
  • запустить SMART-диагностику (самотестирование, см. smartmontools )
  • запустить сканирование badblocks

Если у вас есть запасной диск или компьютер, вы также можете попробовать переключиться (используйте другой диск на том же компьютере, используйте неисправный диск на другом компьютере), чтобы проверить, не повреждена ли материнская плата. Поскольку на диске, похоже, возникают проблемы при загрузке, достаточно простого dd if=/dev/zero of=... с соответствующими параметрами размера может быть достаточно для воспроизведения ошибок.

Я не уверен, будет ли гарантия вашего диска применяться, поскольку он первоначально был внешним накопителем …

  • Как скопировать строки из нескольких файлов в один новый файл и сохранить имя файла?
  • Найти каталог и скопировать другой каталог в найденный каталог?
  • SSH легко копирует файл в локальную систему
  • Загрузить файл по команде ssh и выполнить команду на удаленной машине
  • Что происходит, когда вы rsync без адресата?
  • Разрешения «проблема» с использованием SCP для копирования в корневую папку из локального
  • Как скопировать и добавить префикс к именам файлов за один шаг?
  • Перенос файла по нестабильному соединению SSH
  • Как проверить, какие файлы будут скопированы с помощью команды cp?
  • ZeroCopy с использованием командной строки
  • Права на наследование файлов каталога, на которые он скопирован?
  • Linux и Unix - лучшая ОС в мире.