Восстановление ext3

IDE, SATA, SCSI, внешние USB-HDD, SSD, USB-Flash накопители

Модератор: Модераторы разделов

pleer
Сообщения: 31
ОС: Gentoo

Восстановление ext3

Сообщение pleer »

Доброго времени суток.
Началось все со сбоев в электроснабжении. Как только волнения стихли проявилась другая проблема. В /home (отдельный раздел - /dev/sdc2) мой домашний каталог неожиданно "превратился" в файл. Другая папка - /home/ftp - осталась в целости, содержимое спокойно читается и на вид все на месте, но df -h показывает, что на винчестере занято всего ~300Мб, а du -hs /home/ftp же показывает 25Гб (ближе к истине). Но это фигня, главная проблема - превратившаяся в файл /home/pleer.
Монтировалось все нормально. Пробовал fsck - утверждает, что все нормально. Находил пару статей по использованию ext3grep - не смог ничего найти. Далее наткнулся на это: http://www.opennet.ru/base/sys/debugfs_ext3.txt.html , выполнил действия по поиску инодов и выяснилось, что структура сохранилась, только вот родительский инод имеет тип regular а не directory как должно быть. Сужу по выводу команды stat из программы debugfs:

Код: Выделить всё

Inode: 12165121   Type: regular    Mode:  0644   Flags: 0x0
Generation: 1829354893    Version: 0x00000000
User:  1000   Group:  1003   Size: 1686
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 8
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x4c21f26f -- Wed Jun 23 17:39:27 2010
atime: 0x4c21f5f8 -- Wed Jun 23 17:54:32 2010
mtime: 0x4c21f26f -- Wed Jun 23 17:39:27 2010
Size of extra inode fields: 4
BLOCKS:
(0):54773001
TOTAL: 1

Собственно вопрос: возможно ли исправить такую ситуацию? Я не слишком разбираюсь в теме. Думаю, что можно попробовать сменить тип инода или удалить его и создать новый с нужным id и типом. Возможно ли такое? Нагуглить пока ничего не удается.
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 5113
ОС: Gentoo

Re: Восстановление ext3

Сообщение /dev/random »

Попробуйте дать для него команду modify_inode. Она меняет различные параметры inode, попутно выводя их текущие значения. Нажатие <Enter> в ответ на запрос означает оставить этот параметр как есть.
Если для параметра mode она выдаст 0100644, то исправьте на 0040750. Остальные оставьте без изменений.

PS: но только если вы уверены, что это именно тот инод.
Спасибо сказали:

pleer
Сообщения: 31
ОС: Gentoo

Re: Восстановление ext3

Сообщение pleer »

Спасибо, это сделало файл папкой. Но, видимо, проблема тут поглубже. В папке ничего не оказалось, даже "." и "..". Как я понял, этот инод ссылался на файл в глубине /home/pleer (содержимое похоже на "мусор" от вайна, забыл упомянуть, ну и размер не 4кб, а 1.5, заметил уже при modify_inode), поменяв значение Direct Block #0 (запомнив старое, естественно) на значение из соседней папки стала отображаться именно та папка. Вывод о том, что инод именно от нужного каталога я сделал на основании вывода

Код: Выделить всё

livecd storage # debugfs -f testi.in /dev/hdb1 > testi.out
livecd storage # grep 'Inode [0-9]* is marked in use' testi.out | grep -E -o '[
0-9]+' > used.inodes
livecd storage # cat used.inodes | sed 's,.*,ls <&>,' > ls.in
livecd storage # debugfs -f ls.in /dev/hdb1 > ls.out
из ссылки выше, т.к. cat ls.out | grep 12165121 вывел содержимое каталогов из /home/pleer/, а у ".." был именно этот id.
Как я понял, инод ссылается не на тот блок, который нужен. Можно ли какнибудь найти его? Или может проще поменять инод-родитель у содержимого /home/pleer/ ? Только как это сделать? И да, код из ссылки показал только папки, id инодов дочерних файлов тоже нужно узнать.
Дамп раздела есть.
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 5113
ОС: Gentoo

Re: Восстановление ext3

Сообщение /dev/random »

Есть шанс (правда, я бы не сказал, что большой), что нужные блоки найдутся где-нибудь в /lost+found. Если нет, то есть лишь способ найти подкаталоги, способа автоматически найти файлы, лежавшие напрямую в ~/, боюсь, нет. Или вручную искать потерянные блоки по разделу, или, опять же вручную, искать потерянные файлы.
Попробуйте вспомнить имя какого-нибудь файла, лежавшего напрямую в ~/, причём такое, которое просто так, в каком-нибудь тексте, вряд ли встретится. И запустите поиск этого имени в блоках.
Спасибо сказали:

pleer
Сообщения: 31
ОС: Gentoo

Re: Восстановление ext3

Сообщение pleer »

/dev/random писал(а):
24.06.2010 20:08
И запустите поиск этого имени в блоках.

А как это можно осуществить? Как я понял, Вы понимаете под этим не банальный cat sdc2.dd | grep zhistory, например?
А в lost+founds пусто. Раз уж искать блок, то появилась безумная идея скриптом менять блоки, монтировать и смотреть ls - ом что там. Только вот блоков 83+ млн... Может есть способ сократить число? Для данных о содержимом папки выделяют какую-то область или все также хаотично, как и для других данных? Можно ли узнать номера занятых/свободных блоков?
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 5113
ОС: Gentoo

Re: Восстановление ext3

Сообщение /dev/random »

pleer писал(а):
24.06.2010 20:34
Как я понял, Вы понимаете под этим не банальный cat sdc2.dd | grep zhistory, например?

Почти. Не забудьте про опции -b и -o для grep, чтобы он байтовую позицию в файле выдавал. А потом переведите эти позиции в номера блоков, и посмотрите, что там лежит.

pleer писал(а):
24.06.2010 20:34
Для данных о содержимом папки выделяют какую-то область или все также хаотично, как и для других данных? Можно ли узнать номера занятых/свободных блоков?

По возможности блоки располагаются как можно ближе к соответствующему иноду.
Спасибо сказали:

pleer
Сообщения: 31
ОС: Gentoo

Re: Восстановление ext3

Сообщение pleer »

/dev/random писал(а):
24.06.2010 20:44
Почти. Не забудьте про опции -b и -o для grep, чтобы он байтовую позицию в файле выдавал. А потом переведите эти позиции в номера блоков, и посмотрите, что там лежит.

Пробую пока с именами конфигов, больше не припомню. Но попадается многовато адресов(100-200) в несовсем близких участках. так и надо?

/dev/random писал(а):
24.06.2010 20:44
По возможности блоки располагаются как можно ближе к соответствующему иноду.

Вы про блок, указанный в Direct Block #0 ? Или тут замешан id инода (Inode: 12165121)?
Спасибо сказали:

pleer
Сообщения: 31
ОС: Gentoo

Re: Восстановление ext3

Сообщение pleer »

Опаньки. ls pleer -d в консоли debugfs-а показывает немалый список инодов. Но, часть из них действительно была удалена и имеет delete time, честь указывает правильно, часть по именам совпадает с существующими но видимо была удалена а потом заменена новыми а некоторых там вообще не значится (хотя они были замечены в логе ls.out). Повторяющихся имен нет. Значит адрес блока верный? Что можно сделать с этой информацией?
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 5113
ОС: Gentoo

Re: Восстановление ext3

Сообщение /dev/random »

pleer писал(а):
24.06.2010 23:26
Пробую пока с именами конфигов, больше не припомню. Но попадается многовато адресов(100-200) в несовсем близких участках. так и надо?

Скажем так: "лучше не надо, но приходится".

pleer писал(а):
24.06.2010 23:26
Вы про блок, указанный в Direct Block #0 ? Или тут замешан id инода (Inode: 12165121)?

Я про физическое расположение на диске. Данные файла по возможности располагаются как можно ближе к его иноду.

pleer писал(а):
25.06.2010 03:23
Опаньки. ls pleer -d в консоли debugfs-а показывает немалый список инодов. Но, часть из них действительно была удалена и имеет delete time, честь указывает правильно, часть по именам совпадает с существующими но видимо была удалена а потом заменена новыми а некоторых там вообще не значится (хотя они были замечены в логе ls.out). Повторяющихся имен нет. Значит адрес блока верный? Что можно сделать с этой информацией?

Пытаться спасти то, что ещё возможно. К сожалению, спасти всё не удастся. Лучший вариант - это если вы сможете найти его блоки, я написал, как. Если не удастся, то берите все каталоги, ссылающиеся на этот инод как на "..", угадывайте их названия и прописывайте как подкаталоги в pleer. С файлами в этом случае сделать ничего не удастся.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Восстановление ext3

Сообщение drBatty »

можно сделать образ, и всунуть его в testdisk
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

pleer
Сообщения: 31
ОС: Gentoo

Re: Восстановление ext3

Сообщение pleer »

Хорошо, будем пробовать. Директории есть, а в них было основное. Запустил еще fdisk на удачу, он долго копошился и выплюнул в lost+found кучу всего, значит и на конфиги шанс есть.
Спасибо сказали: