Коллеги, помогите.
Добавил в корневой лвм кеш из оперативной памяти и после перезагрузки получил кирпич. Бекапы конфигурации лвм остались на том же мертвом разделе, загрузился лайв флешкой - в процессе ковыряния через пару часов флешка отвалилась и пришлось перезагружаться - в итоге
вся информация о разметке лвм потеряна.
В процессе восстановления перепробовал вручную сканирование через dd | strings, extundelete, и тд. Наощупь пробовал восстановить PV, VG и LV по размеру. Но видимо не угодал с размером.
По dd видно что ext4 жива, но как поймать начало\конец и как восстановить?
dd if=/dev/sda5 bs=1M count=60000 skip=59999 | strings -n 16|less
................................
type = "striped"
stripe_count = 1 # linear
# Generated by LVM2 version 2.02.105(2)-RHEL7 (2014-03-26): Sun Sep 18 22:36:30 2016
contents = "Text Format Volume Group"
description = ""
creation_host = "localhost" # Linux localhost 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64
creation_time = 1474230990 # Sun Sep 18 22:36:30 2016
system_u:object_r:root_t:s0
system_u:object_r:lost_found_t:s0
system_u:object_r:bin_t:s0
system_u:object_r:lib_t:s0
system_u:object_r:lib_t:s0
................................
[root@localhost liveuser]# tune2fs -o^has_journal /dev/mapper/tpad-root
tune2fs 1.42.9 (28-Dec-2013)
tune2fs: Bad magic number in super-block while trying to open /dev/mapper/tpad-root
Couldn't find valid filesystem superblock.
[root@localhost liveuser]# extundelete /dev/mapper/tpad-root --restore-all
extundelete: Bad magic number in super-block when trying to open filesystem /dev/mapper/tpad-root
За дельную помщь разумеется донат!
возьми живую фс как пример.dd if=/dev/sda2 bs=512 count=4 of=/file
первые два сектора - чистые нули, только потом начинается суперблок фс.
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_LayoutТам же есть структура суперблока, Magic в ней по смещению 0x38. Соответственно, можно определить варианты, что искать.
Примерно так:
dd if=/dev/sda bs=512 |hexdump -C |more
дальше запускаешь в ней поиск по "53 ef",
получишь примерно такую строку:
00008430 3f ed e8 56 02 00 14 00 53 ef 01 00 01 00 00 00 |?..V....S.......|
Дальше можно через loopdevice (man losetup, опции offset, sizelimit) создать доп устройство и на нем пытаться монтироваться.
Можно так: Находишь смещение, делаешь dd в отдельный файл и его пытаешься монтировать, (оно опять же через loopdevice будет работать).
Можно также через DM (device mapper) монтировать по смещению, но я готовых рецептов не
подскажу, как это делается.Если у тебя было чистое распределение места нужного LVM-раздела, без последующего добавления доп пространства, то шансы на восстановление повыше.
Etckeeper + push в центральное хранилище - рулит.
Картина не радужная.Что-то похожее на на метаданные найти не сложно, но получить файловую систему- не удается.dd if=/dev/loop5 bs=512 |hexdump -C |grep '53 ef'
00720d10 53 ef 3a 57 00 00 00 00 e8 03 01 00 08 00 00 00 |S.:W............|
00760f70 00 00 00 00 00 00 00 00 00 00 00 00 53 ef 00 00 |............S...|
007ac010 53 ef 3a 57 00 00 00 00 e8 03 01 00 00 00 00 00 |S.:W............|
008a5860 00 00 00 00 53 ef 23 80 00 00 00 00 00 00 00 00 |....S.#.........|
[root@localhost liveuser]# echo $((16#00720d10))
7474448
[root@localhost liveuser]# echo $((16#00760f70))
7737200
losetup -o 7737200 --read-only --size 60G /dev/loop11 /dev/sda5
losetup -o 7474448 --read-only --size 60G /dev/loop12 /dev/sda5В обоих случаях:
# mount /dev/loop12 /mnt
mount: /dev/loop12 is write-protected, mounting read-only
mount: unknown filesystem type '(null)'Это личный ноут, бекапы лежали на нем же, какраз через неделю должна придти харды для бекапов домашнего хозяйства.
>[оверквотинг удален]
> файловую систему- не удается.
> dd if=/dev/loop5 bs=512 |hexdump -C |grep '53 ef'
> 00720d10 53 ef 3a 57 00 00 00 00 e8
> 03 01 00 08 00 00 00 |S.:W............|
> 00760f70 00 00 00 00 00 00 00 00 00
> 00 00 00 53 ef 00 00 |............S...|
> 007ac010 53 ef 3a 57 00 00 00 00 e8
> 03 01 00 00 00 00 00 |S.:W............|
> 008a5860 00 00 00 00 53 ef 23 80 00
> 00 00 00 00 00 00 00 |....S.#.........|Я так понимаю что это не то, что нужно.
Смещение обязательно должно быть 30, т.е. так:00008430 3f ed e8 56 02 00 14 00 53 ef 01 00 01 00 00 00 |?..V....S.......|
00008440 3f ed e8 56 00 4e ed 00 00 00 00 00 01 00 00 00 |?..V.N..........|при этом, обрати внимание, что "3f ed e8 56" повторяется в обеих строках.
Это потому что это unixtime. Совсем одинаковое потому что это незамонтированная ФС.На замонтированной там так:
00000430 02 41 d6 53 0f 00 18 00 53 ef 01 00 01 00 00 00 |.A.S....S.......|
00000440 b5 3b d6 53 00 4e ed 00 00 00 00 00 01 00 00 00 |.;.S.N..........|совпадают/похожи (0x433,0x434) и (0x443,0x444) т.к. время относительно близкое.
Т.к у тебя смещение не то, я думаю что нашел ты не суперблоки.
.> [root@localhost liveuser]# echo $((16#00720d10))
> 7474448
> [root@localhost liveuser]# echo $((16#00760f70))
> 7737200.
> losetup -o 7737200 --read-only --size 60G /dev/loop11 /dev/sda5
> losetup -o 7474448 --read-only --size 60G /dev/loop12 /dev/sda5Кроме того, как я уже говорил, суперблок смещен на 2 сектора от начала раздела, т.е. надо задавать смещение на 1024 меньше.
А вообще я хз как с этим жить. Если начало ФС перезатерто, то ты найдешь не первый суперблок, а какой-то из резервных. По идее надо смещение выставлять на предполагаемое начало раздела/ расположение первого суперблока, а живой задавать опцией монтирования sb.
Поищи файлы описания сегментов LVM, вдруг найдутся. Строки для поиска:
Generated by LVM2 version
Text Format Volume Group
format = "lvm2"и так далее
Примерно так:dd if=/dev/md0 bs=64k |grep -a -B 50 -A 1000 physical_volumes |more
Если есть время - дай координаты для связи.