Восстановление удаленных lvm

Опубликовано:

Если случайно был удален том lvm (или специально, но потом понадобилось восстановление) — механизм резервного копирования метаданных vloume group может спасти ситуацию.
Настройка архивирования находится в /etc/lvm/lvm.conf в секции backup.
По умолчанию (в debian) архивирование включено, папка для архивов — /etc/lvm/archive и содержит архивы изменения vg за 30 дней.
Посмотреть чего менялось можно командой vgcfgrestore -l VG

#vgcfgrestore -l VG..... skipped .....
  File:         /etc/lvm/archive/VG_00390.vg
  VG name:      VG
  Description:  Created*before* executing 'lvremove /dev/VG/lv_name_1'
  BackupTime:  MonOct1516:22:502012

  File:         /etc/lvm/archive/VG_00391.vg
  VG name:      VG
  Description:  Created*before* executing 'lvremove /dev/VG/lv_name_2'
  BackupTime:  MonOct1516:22:552012

  File:         /etc/lvm/archive/VG_00392.vg
  VG name:      VG
  Description:  Created*before* executing 'lvremove /dev/VG/lv_name_3'
  BackupTime:  MonOct1516:23:182012

  File:         /etc/lvm/archive/VG_00393.vg
  VG name:      VG
  Description:  Created*before* executing 'lvremove /dev/VG/lv_name_4'
  BackupTime:  MonOct1516:23:202012
  File:         /etc/lvm/archive/VG_00394.vg
  VG name:      VG
  Description:  Created*before* executing 'lvcreate -L20g -nsome_new_lv VG'
  BackupTime:  TueOct1600:32:402012

Здесь видно имя файла архива и команда, перед (или иногда после) которой архивирование метаданных VG было выполнено.
В данном случае были удалены некоторые LV и после них создан новый.
Чтобы узнать, попал новый LV поверх старых (тогда естественно данные будут перезаписаны, зависит от количества записей в новый LV) надо посмотреть в архиве до удаления параметры extent_count и stripes нужного LV. stripes это номер начала блока на PV, extent_count — количество.
LV может состоять из нескольких сегментов, в каждом будет свой набор extent_count и stripes.
Потом посмотреть эти же параметры нового LV, но в архиве поcле создания нового LV.
Если эти регионы не пересеклись — значит новый LV создался в другом месте, чем удаленные LV.
Восстановить метаданные просто —

vgcfgrestore -f /etc/lvm/backup/VG_00390.vg VG

это откатит все изменения с текущего момента до нужного архива, предшествующего указанной в vgcfgrestore -l команде.
Дальше остается только активировать восстановленные LV командой

lvchange -a y /dev/VG/lv_name

Понравилась статья, расскажи о ней друзьям, нажми кнопку!