Спасите файлы из файловой системы ext3 с физическими ошибками

Спасите файлы из файловой системы ext3 с физическими ошибками

У меня есть диск с разбитого ноутбука Linux с файлами, которые несчастный владелец хотел бы вернуть, если это вообще возможно (без резервных решений, пожалуйста). Я раньше не имел с ним дела. Диск распознается как OS X, так и Ubuntu 11.10:

root@ubuntu1110:~# fdisk -l /dev/sdc

Disk /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x80d549b4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *          63   953602334   476801136   83  Linux
/dev/sdc2       953602335   976768064    11582865    5  Extended
/dev/sdc5       953602398   976768064    11582833+  82  Linux swap / Solaris

Это похоже на стандартную установку дистрибутива Linux с разделом подкачки.

К сожалению, после того, как Ubuntu сообщает, что не может смонтировать раздел sdc1, в dmesg появляются довольно неприятные сообщения:

[  181.228092] sd 6:0:0:0: [sdc] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[  181.232176] sd 6:0:0:0: [sdc] Write Protect is off
[  181.232181] sd 6:0:0:0: [sdc] Mode Sense: 21 00 00 00
[  181.236359] sd 6:0:0:0: [sdc] No Caching mode page present
[  181.236364] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[  181.246696] sd 6:0:0:0: [sdc] No Caching mode page present
[  181.246707] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[  182.835915]  sdc: sdc1 sdc2 < sdc5 >
[  182.854199] sd 6:0:0:0: [sdc] No Caching mode page present
[  182.854204] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[  182.854208] sd 6:0:0:0: [sdc] Attached SCSI disk
[  218.250174] sd 6:0:0:0: [sdc] Unhandled sense code
[  218.250179] sd 6:0:0:0: [sdc]  Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[  218.250182] sd 6:0:0:0: [sdc]  Sense Key : Hardware Error [current] 
[  218.250187] Info fld=0x0
[  218.250188] sd 6:0:0:0: [sdc]  Add. Sense: No additional sense information
[  218.250193] sd 6:0:0:0: [sdc] CDB: Read(10): 28 00 00 00 01 08 00 00 08 00
[  218.250200] end_request: I/O error, dev sdc, sector 264
[  218.250206] Buffer I/O error on device sdc, logical block 33
[  255.398994] sd 6:0:0:0: [sdc] Unhandled sense code
[  255.399029] sd 6:0:0:0: [sdc]  Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[  255.399032] sd 6:0:0:0: [sdc]  Sense Key : Hardware Error [current] 
[  255.399037] Info fld=0x0
[  255.399038] sd 6:0:0:0: [sdc]  Add. Sense: No additional sense information
[  255.399053] sd 6:0:0:0: [sdc] CDB: Read(10): 28 00 00 00 01 08 00 00 08 00
[  255.399061] end_request: I/O error, dev sdc, sector 264
[  255.399066] Buffer I/O error on device sdc, logical block 33
[  281.340599] sd 6:0:0:0: [sdc] Unhandled sense code
[  281.340609] sd 6:0:0:0: [sdc]  Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[  281.340618] sd 6:0:0:0: [sdc]  Sense Key : Hardware Error [current] 
[  281.340653] Info fld=0x0
[  281.340655] sd 6:0:0:0: [sdc]  Add. Sense: No additional sense information
[  281.340659] sd 6:0:0:0: [sdc] CDB: Read(10): 28 00 00 00 00 67 00 00 08 00
[  281.340667] end_request: I/O error, dev sdc, sector 103
[  281.340739] EXT3-fs (sdc1): error: can't read group descriptor 4

Моя текущая теория заключается в том, что на жестком диске закончились запасные блоки, поэтому теперь был введен настоящий плохой блок, и он находится в области, используемой при монтировании раздела. Это подтверждается dd:

root@ubuntu1110:~# dd if=/dev/sdc1 of=/dev/null bs=10240 conv=noerror
dd: reading `/dev/sdc1': Input/output error
2+0 records in
2+0 records out
20480 bytes (20 kB) copied, 44.7084 s, 0.5 kB/s
dd: reading `/dev/sdc1': Input/output error
9+1 records in
9+1 records out
96256 bytes (96 kB) copied, 162.933 s, 0.6 kB/s
dd: reading `/dev/sdc1': Input/output error
9+1 records in
9+1 records out
96256 bytes (96 kB) copied, 180.083 s, 0.5 kB/s

Плохие блоки появляются рано, а скорость передачи данных очень низкая даже на поздних этапах процесса (не показано)

Моя проблема теперь в том, как подойти отсюда. Мне нужно что-то, что может читать из сломанной файловой системы ext2/ext3, чтобы мы могли скопировать те файлы, которые все еще там, с диска, и я не занимался администрированием систем Linux в течение последних 15 лет, поэтому я не знаю правильных терминов для поиска.

Я, вероятно, мог бы скопировать образ диска за ночь, но тогда информация «этот блок плохой» будет потеряна.

Какая программа была бы полезна в этой ситуации?

решение1

Первое правило восстановления диска:Прекратите использовать диск. Если есть проблемы с оборудованием (например, сбой головки), любое использование может привести к дальнейшему повреждению; если файловая система повреждена, любое mountили fsckимеет потенциал ухудшить ситуацию. (Даже в roрежиме! Обратите внимание, чтоmount -t ext3 -o ro воляпопробуйте воспроизвести журнал и записать на диск!)

Использоватьdd_rescueилиddrescueчтобы скопировать как можно большую часть образа диска на другую систему, отложите диск и сделайте копии образа. Выполните все попытки восстановления с одной из копий.

Теперь я дал несколько советов по восстановлению данных extздесь. Суммируя,

  • Ваша схема разделов, похоже, все еще действительна. Если бы это было не так, вы могли бы использоватьТестДискилигчастьчтобы попытаться восстановить таблицу разделов.
  • e2fsckможет быть в состоянии вернуть файловую систему в монтируемое состояние. Он поместит висячие иноды в /lost+foundи сообщит об ошибках.
  • ext4magicпытается восстановить данные из журналируемых метаданных. Восстановятся ли файлы из журнала, зависит от удачи и случая, но возможно, что там есть что-то.
  • Набор детективаможет анализировать и выводить большинство структур файловой системы. Если вы достаточно хорошо знаете внутреннюю структуру файловой системы и у вас есть шестнадцатеричный редактор под рукой (чтобы делать что-то вроде «суперблок поврежден, а резервная копия суперблока устарела, но я могу извлечь достаточно данных, чтобы восстановить его самостоятельно»), на мой взгляд, это абсолютно самый полезный инструмент для восстановления большинства данных.
  • ФотоРекпопытается найти последовательности байтов, которые выглядят как файлы. Он только угадывает начало/конец файла, не будет знать ничего о структуре файловой системы, такой как каталоги и имена файлов, и не найдет фрагментированные файлы.

решение2

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

Вот что бы я сделал.

  • Попробуйте сделать ночной образ dd и отложите диск в сторону
  • используйте Testdisk для файла образаhttp://www.cgsecurity.org/wiki/TestDisk

Если у меня стабильно получается 0,5 кБ/с на dd, то, вероятно, вам не стоит тратить время на эту попытку.

Тымогзапустить Testdisk на диске. Онмощьработа. Если стоимость/риск не диктуют других вариантов, то... это ваш выбор. Это может сработать.

В общем, серьезно, эти проблемы — политическое минное поле. Пользователь либо слишком смущен, чтобы попросить коллег повторно отправить файлы, либо не хочет встречаться со своим руководством и признавать, что не делал регулярных резервных копий, и теперь ему нужно потратить тысячи на восстановление данных. Они надеются, что, может быть, вы сможете исправить это для них и заставить все их проблемы исчезнуть... и если диск самоуничтожится в процессе. ОНИ БРОСЯТ ВАС ПОД АВТОБУС, чтобы спасти свою шкуру.

Связанный контент