Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 9478 В разделе
Sysadmin
от October 27th, 2018,
В подшивках: Охуительные истории, Hetzner, LVM
Иногда просрать инфу можно оч неожиданно, даже если кажется, что не просрётся она обязательно просрётся. Так и случилось у меня на Hetzner, когда захотел переустановить ОС с помощью installimage в resсue режиме. Если кратко, то верьте на слово, что installimage похерит вам все LVM разделы. Да, он сделает это даже не смотря на то, что диск с LVM не будет задействован при переустановке. Да, нужно скопировать данные на простой ext4 раздел без LVM или вообще забэкапить на ftp даже.
На сервере стоит 3 SSD из которых 2 состояло в зеркальном RAID. Задача была разобрать этот RAID, переустановить ОС, сохранив данные на 3м диске. Поскольку я люблю все делать заранее создал на нем PV и соответственно LV, куда слил дамп базы, файлы и т.д. и, разумеется, не сделал бэкап. А нахера? Сто раз переустанавливал там ОС этим скриптом и данные сохранялись на незатронутых разделах. Далее installimage заботливо сообщил, что удалит все LVM разделы. Ну ок, подумал я, вполне обычное предупреждение для дисков куда ставишь ОС. А хуй то там! Hetzner целенаправленно просканил все диски что были на наличие LVM и удалил на 3м диске LV с данными, причем 2й диск без LVM не пострадал никак вообще.
Давайте я вам покажу как выглядит туго сжатая жопная дырка
root@dolboserver ~ # lvmdiskscan /dev/vg0/root [ 442,12 GiB] /dev/sda1 [ 1,00 GiB] /dev/vg0/swap [ 4,00 GiB] /dev/sda2 [ <446,13 GiB] LVM physical volume /dev/sdc1 [ 447,13 GiB] 2 disks 2 partitions 0 LVM physical volume whole disks 1 LVM physical volume
А теперь как я это залечил. Первым делом я скопировал с пострадавшего диска первые 10 Мб, где должны лежать данные о разделах LVM. Этот конфиг необходимо найти и выгрызать любой ценой из этого куска образа. ОБЯЗАТЕЛЬНО нужно свериться с тем, что было, т.к. хранится несколько версий и нужно брать предпоследнюю, т.к. последнюю версию уже сам Hetzner сделал, опустошив PV при переустановке ОС. Примерное содержимое файла можно посмотреть тут. Необходимо выцепить UUID вашего пострадавшего PV, который будет вставлен в команды ниже.
Понеслось колдунство:
# добываю 10 Мб образа root@dolboserver ~ # dd if=/dev/sdc1 of=./mylvm_config.vg bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0,0130273 s, 805 MB/s # Здесь я редактирую файл обычным mcedit чтобы выкосить все бинарное и # оставить только текст конфига предпоследней версии root@dolboserver ~ # mcedit ./mylvm_config.vg # Создаю новый PV с выдраным из конфига UUID root@dolboserver ~ # pvcreate --uuid AoUlR2-iDe4-b59I-YpmQ-COOx-nu8L-1M5QNO --restorefile ./mylvm_config.vg /dev/sdc1 Couldn't find device with uuid AoUlR2-iDe4-b59I-YpmQ-COOx-nu8L-1M5QNO. Physical volume "/dev/sdc1" successfully created. # Далее восстановление, ниче интересного root@dolboserver ~ # vgcfgrestore lvm Restored volume group lvm root@dolboserver ~ # pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 446,12g 0 /dev/sdc1 lvm lvm2 a-- <447,13g 0 root@dolboserver ~ # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert pg_data lvm -wi------- <447,13g root vg0 -wi-ao---- 442,12g swap vg0 -wi-ao---- 4,00g root@dolboserver ~ # vgscan Reading volume groups from cache. Found volume group "lvm" using metadata type lvm2 Found volume group "vg0" using metadata type lvm2 root@dolboserver ~ # vgchange -ay lvm 1 logical volume(s) in volume group "lvm" now active root@dolboserver ~ # mount /dev/lvm/pg_data /mnt
Ну как вам?
Fortune cookie: Today's spam: Want a b.ulky po:le
Leave a Reply