Постоянная “Ошибка ввода/вывода” после ddrescue

Вопрос или проблема

У меня есть внешний жесткий диск емкостью 2 ТБ (/dev/sda), отформатированный в NTFS. Недавно он начал выдавать ошибку “Ошибка ввода/вывода” при перемещении файлов и странный вывод команды ls, например:

...
??????????? folder_1
?   ?   ?   folder_2
ls: невозможно получить доступ к 'folder_3': Ошибка ввода/вывода
ls: невозможно открыть каталог 'folder_3': Ошибка ввода/вывода
...

У меня был новый жесткий диск на 4 ТБ (/dev/sdb), так что я попытался использовать ddrescue для копирования файлов перед выходом диска из строя с помощью команды:

ddrescue -f -r3 /dev/sda /dev/sdb mapfile

как сообщалось здесь и здесь.

Команда завершилась примерно за 6 часов и не сообщила об ошибках, но ошибки “Ошибка ввода/вывода” все еще присутствуют на новом диске, т.е. когда я пытаюсь выполнить ls на новом диске, он по-прежнему выводит то же самое, что и раньше.

Я попробовал открыть новый диск из Windows, которая предупреждает меня о чем-то, что нужно “исправить” на внешнем диске (хотя то же самое было и со старым диском), и я попытался дать ему шанс. После “исправления” нового диска в Windows больше не было сообщений “Ошибка ввода/вывода”, но папки пропали, а именно на новом диске нет folder_1, folder_2 и folder_3.

Вот вывод smartctl -a /dev/sda:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       2107
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       320
  5 Reallocated_Sector_Ct   0x0033   100   100   050    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       103
 10 Spin_Retry_Count        0x0033   106   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       189
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       19
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       105
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       1166
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       15 (Min/Max 13/46)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   253   000    Old_age   Always       -       0
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       0
222 Loaded_Hours            0x0032   100   100   000    Old_age   Always       -       53
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       181
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0

Который, согласно этой таблице, выглядит “нормально” (я полагаю).

Итак, мои вопросы:

  1. существует ли способ восстановить “все” данные со старого диска?
  2. в случае, если ответ на 1. “Нет”, каков “следующий шаг”, который я должен предпринять? Потому что использование ddrescue только для того, чтобы найти те же ошибки на новом диске, не кажется решением.
  3. должен ли я отформатировать новый диск с использованием определенной файловой системы (например, exFAT) и просто скопировать все файлы (например, с помощью rsync) со старого диска на новый?

Судя по собранным вами подсказкам, проблема, похоже, не на физическом уровне диска, а на уровне структуры файловой системы. Некоторые структуры данных (вероятно, каталоги) были повреждены. Я могу предположить, что ошибки ввода/вывода возникают из-за блуждающих указателей в структуре каталогов, которые инструктируют файловую систему ядра получать доступ к диску в невозможных местах или что-то в этом роде.

Я бы сделал то же самое, что и вы (ddrescue на отдельный диск) для начала. Я бы сохранил одну из двух копий как резервную с возможностью только чтения, пока вы экспериментируете с восстановлением с другой.

Затем я бы скопировал доступные файлы на новый раздел (будь то ntfs или любой другой, это не имеет значения).

Затем я бы попробовал восстановить остальное с помощью некоторых низкоуровневых инструментов. Я не знаю о каких-либо инструментах, специфичных для ntfs, но я готов поспорить, что они существуют. Если данные имеют большую ценность, вы можете попробовать профессиональную службу: они, скорее всего, смогут восстановить все, что можно восстановить.

Если вы хотите попробовать сами, recoverjpeg и recovermov могут спасти ваши файлы .jpeg и .mov, даже если каталог, содержащий эти файлы, был поврежден, при условии, что файлы данных не повреждены сами по себе и они являются смежными на диске.

Для восстановления других файлов данных требуется черная магия. Это включает в себя поиск каких-либо инструментов, специфичных для ntfs, или редактора двоичных файлов для поиска сигнатур файлов (те, которые используются командой file) и просмотра данных, чтобы распознать их и найти начало и конец файлов (при условии, что они смежны на диске).

Ответ или решение

Постоянная ошибка «Input/Output» после использования ddrescue

Уже несколько лет внешние жесткие диски используются для хранения данных, и их надежность со временем становится критически важной. Если вы сталкиваетесь с проблемой «Input/output error», это может указывать на повреждения на уровне файловой системы или, в худшем случае, на физическим уровень жесткого диска. В вашем случае, обратив внимание на информацию и команды, которые вы использовали, а также на вывод от утилиты smartctl, давайте рассмотрим возможные пути решения.

1. Восстановление данных с поврежденного жесткого диска

Ваш внешний жесткий диск (/dev/sda) начал демонстрировать ошибки ввода-вывода при перемещении файлов. Вы правильно предприняли меры, запустив ddrescue для создания копии данных на новый диск (/dev/sdb). Однако, если после копирования ошибок по-прежнему остаются и данные недоступны, значит, проблема может заключаться в структуре файловой системы.

Для начала вы можете попробовать сделать следующее:

  • Использовать файловые системы для восстановления данных: Инструменты, такие как testdisk и photorec, могут помочь восстановить данные, которые потеряны из-за поврежденных файловых структур. testdisk позволяет восстановить утраченные разделы, а photorec — извлечение файлов, основываясь на их сигнатурах.

  • Проверка и восстановление файловой системы: Используйте ntfsfix, если ваш диск отформатирован в NTFS. Это может помочь исправить некоторые ошибки, связанные с файловой системой NTFS.

2. Переход к следующему шагу

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

Если вы хотите продолжать самостоятельно:

  • Копирование доступных данных: Переместите все файлы и папки, которые вы можете открыть и доступ к которым не вызывает ошибок ввода-вывода, на новый диск.

  • Использование инструментов восстановления файлов: Есть специализированные программы, которые могут помочь в восстановлении конкретных типов файлов, например, фотографий (JPEG) или видео (MOV), как было упомянуто в предыдущем обсуждении.

3. Форматирование нового диска

Если вы решите отформатировать новый диск (/dev/sdb), вы можете использовать любое файловую систему, которая вам нужна (например, exFAT, NTFS и т.д.). Однако, перед этим важно отметить, что форматирование удалит все данные на диске. После форматирования вы можете перекинуть файлы с поврежденного диска, используя команды, такие как rsync. Однако убедитесь, что структура файловой системы на старом диске стабильна и доступна для чтения.

Выводы

Ваша ситуация является типичным примером, когда проблема может быть на уровне файловой системы, а не физического диска. Применение вышеуказанных шагов может помочь вам в восстановлении данных. Следует помнить, что самостоятельные попытки восстановления могут быть успешными, но иногда лучше обратиться к профессионалам, чтобы избежать потери ценных данных.

Оцените материал
Добавить комментарий

Капча загружается...