восстановление раздела ext4 после перезапуска HD

8

Я случайно использовал ddи записал поверх первых 208 МБ моего внешнего диска. Я переписал отдельный раздел (Debian Nestinstaller), так что теперь я вижу не мой старый (теперь поврежденный) раздел ext4, а другой меньший раздел. Это ограничивает инструменты и советы, которыми я мог бы следовать.

Я планировал воссоздать таблицу разделов с помощью, testdiskа затем исправить все с помощью резервных суперблоков, как описано здесь . Я бы потерял первые 208 МБ, но это нормально по сравнению с остальными 300 ГБ данных. Что-то вроде следующего:

mke2fs -n /dev/sdb1   # doesn't work because sdb1 is the 208MB new partition
testdisk ...          # used this to create new correct partition table
mke2fs -n /dev/sdb1   # now works fine, get backup superblock positions
e2fsck -b backup_position -y /dev/sdb1 # returns many errors hence the -y

Тем не менее, я не смог ничего восстановить. Раньше я testdiskписал новую таблицу разделов, которая соответствовала тому, что у меня было раньше. Когда я запускаю e2fsck, я получаю много разных ошибок. После этого я получаю файловую систему, но она полностью пуста, файлов нет.

В каталоге lost + found находятся файлы (я думаю, что они были восстановлены), но мне нужно восстановить дерево каталогов, а не только файлы. Мне нужно имя файла и предыдущие каталоги, чтобы знать, что это за файлы (изображения с микроскопа, данные массовых спецификаций и т. Д. Без названий и каталогов, где они были, они ничего не значат).

Я получил другой HD точно такой же и сделал копию всего HD, ddчтобы я мог экспериментировать с восстановлением, не теряя ничего. Любой совет?

carandraug
источник
Ты хоть представляешь, сколько разделов у тебя было раньше?
Пума
@ Кугар да. У меня был один основной раздел ext4, охватывающий весь диск.
carandraug
2
Сначала я бы предложил воссоздать раздел с помощью fdisk или любого другого низкоуровневого инструмента для создания разделов. Как восстановить ваш ext4 после этого показано здесь: ссылка
Cougar
@Cougar - это ссылка, по которой я перешел, чтобы попытаться восстановить раздел. Разница в том, что я использовал testdiskдля воссоздания раздела. Я попробую с fdisk.
carandraug
Использование @Cougar fdiskя даже не мог использовать, так e2fsckкак он не нашел бы резервных копий суперблока. Я думаю, что проблема была в том, что я не мог редактировать CHS (новый раздел установил его на 64, но должен быть 255)
carandraug

Ответы:

7

Мне наконец удалось это исправить. Просто для протокола вот как я это сделал. Часть решения, которое я нашел здесь, включает знание настроек, используемых для создания файловой системы (я был почти уверен, что не изменил значения по умолчанию).

В основном я первым должен был исправить таблицу разделов , чтобы отразить то , что я на самом деле был там (я использовал testdiskдля этого , но parted, cfdiskили fdiskдолжен работать нормально, а). Я просто удалил неправильные разделы и заменил один раздел типа ext4, охватывающий весь диск с правильными значениями CHS.

Остальное в основном по ссылке в начале (подробности читайте в ней), но в основном я побежал mke2fs -n /dev/xxxискать позиции для резервной копии суперблоков. Затем использовал последнюю резервную копию, ближайшую к концу диска (только те, что были в начале диска были перезаписаны с помощью dd) для запуска fsck. Это породило много ошибок, но у fsck есть -yопция (не такая, как -a).

$ sudo e2fsck -a -b backup_block_number /dev/xxx

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

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

carandraug
источник
-1

Хорошо, это работает для восстановления со случайно подключенного диска в массиве MegaRAID. Мой RAID-контроллер включил ВСЕ диски в RAID, а не только те, для массива RAID6, который я переделывал. Ой! По крайней мере, я сделал быструю инициализацию, а не медленную инициацию - медленная инициализация стирает диск с нулями.

Quick init стирает 10M в начале и в конце дисков. Итак, у меня с разделом ext4 на весь диск (под Linux) и одним диском, RAID0, был шанс. С накопителем объемом 6 ТБ и почти 5 ТБ я потел - это была моя резервная копия массива RAID6, которую я преобразовывал!

Между прочим, я не ошибся - LSI MegaRAID НЕ должен был включать диски в моей другой группе дисков - но это произошло. Как примечание, я должен был УДАЛИТЬ ЭТО ДРАЙВЕР ИЗ ПРИЛОЖЕНИЯ и повторно импортировать его ПОСЛЕ того, как у меня была недавно организованная группа дисков RAID6. Дурак я. ДЕЙСТВИТЕЛЬНО глупый я ....

Хорошо, к счастью, LSI MegaRaid ничего не делает с дисками RAID0 (если они есть, я не уверен насчет нескольких). Вот что я сделал, чтобы это исправить. ОС = Fedora F22. Диск = один большой раздел ext4, сделанный с parted. Сначала я сделал снимок диска на совершенно новый диск той же модели на запасном сервере с парой слотов для отсеков. Через десять часов он закончил ......

$ dd if=/dev/sdb of=/dev/sdc bs=64M conv=notrunc
89424+1 records in
89424+1 records out
6001175126016 bytes (6.0 TB) copied, 35130.2 s, 171 MB/s

Это была моя золотая опора.

ПРИМЕЧАНИЕ. - Мой диск был /dev/sdb- вам нужно установить диск на тот диск, который вы пытаетесь восстановить. Не облажайся, иначе у тебя будет еще больше проблем ...

Затем, сделав это, я сделал следующее.

(1) удалить снимок с машины (опять же, не глупо, я могу заверить вас, что в случае неудачи вы попадете в больницу по восстановлению дисков, пока я проверю себя в локальной ER!).

(2) перезагрузите машину FC22 с помощью привода. Запустите parted, переделайте раздел (в моем случае удалите поврежденный, запишите новый раздел от 0% до 100% ext4). Вы должны точно знать, где были оригинальные разделы, и их точный тип - следующий шаг зависит от этого - если нет, то ОСТАНОВИТЕСЬ ЗДЕСЬ. Вы не сделаете это. использовать testdiskи / photorecили подобное, или для большого диска, где это действительно важно, отправьте его.

(3) беги mke2fs -n /dev/sdb1(не забывай -n, или опять можешь просто уйти ...)

Для меня результат выглядел так:

$ mke2fs -n /dev/sdb1
$ mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 1464843008 4k blocks and 183107584 inodes
Filesystem UUID: 1ac318a6-7953-42d5-8d7b-0597c54e1935
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Вот, пожалуйста, вот где все запасные суперблоки ... Мы знаем, что первый и последний - мусор, но в середине все должно быть в порядке. (Обратите внимание, вы можете mkfs.ext4 -n /dev/sdb1быть очень осторожными и получить тот же результат).

(4) Беги e2fsck -y -b 102400000 /dev/sdb1. Вам понадобится -y, так как будет много «да», необходимого для исправления беспорядка, созданного отсутствующим внешним концом диска .... и выбора любого суперблока в середине, который вам нравится ... и примерно через 30 минут о тишине (используйте другой терминал и «верх», чтобы наблюдать за ходом процесса или мигающим индикатором диска) в моем случае, presto, монтируемый раздел и почти все в целости в /lost+foundкаталоге.

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

flyx
источник