Вопрос или проблема
У меня есть внешний жесткий диск емкостью 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. “Нет”, каков “следующий шаг”, который я должен предпринять? Потому что использование
ddrescue
только для того, чтобы найти те же ошибки на новом диске, не кажется решением. - должен ли я отформатировать новый диск с использованием определенной файловой системы (например, 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
. Однако убедитесь, что структура файловой системы на старом диске стабильна и доступна для чтения.
Выводы
Ваша ситуация является типичным примером, когда проблема может быть на уровне файловой системы, а не физического диска. Применение вышеуказанных шагов может помочь вам в восстановлении данных. Следует помнить, что самостоятельные попытки восстановления могут быть успешными, но иногда лучше обратиться к профессионалам, чтобы избежать потери ценных данных.