Восстановление удаленных 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