INT 21h

Hi, I am Vladimir Smagin, SysAdmin. Telegram Email GPG

Сага о проёбаном LVM на Hetzner

№ 9478 В разделе "Администрирование" от October 27th, 2018,

Иногда просрать инфу можно оч неожиданно, даже если кажется, что не просрётся она обязательно просрётся. Так и случилось у меня на 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

sdc1 пустой, ахуенна, да?

А теперь как я это залечил. Первым делом я скопировал с пострадавшего диска первые 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

Ну как вам?

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Микроблог перейти

# 2018-11-14 12:01:24

Hetzner тихо и незаметно обновили свой terraform провайдер для поддержки volumes, который до сих пор в бете, не дает создавать более 100 гигов и работает только в определенных регионах, но по факту он не дает создать более 10 гигов потому, что лимиты аккаунты надо поднять, которые нельзя поднять потому, что volumes сука в бете!

# 2018-11-07 23:17:33

Столько работал над плейбуками, что чувствую себя инженером по прочистке ансибла


© Vladimir Smagin, 2005-2018. Копирование материалов без разрешения запрещено. GPG 0x29AE91B1A37721C3
Яндекс.Метрика

Fortune cookie: Hear about... the ambitious secretary who walked into her boss's office and demanded a salary on next week's advance?