Резервное копирование · 2 min read · Feb 14, 2026
Резервное копирование гостя LVM XEN, содержащего LV
Резервное копирование гостя LVM XEN, содержащего LV
В моей повседневной работе все наши Linux-системы (кроме 3) являются виртуальными машинами Xen. Я хотел найти способ сделать резервную копию этих систем без риска изменения файлов. По соображениям производительности я запускаю все из них на логических томах.
Внутри этих виртуальных машин операционная система DomU снова использует LVM по различным причинам. Это создает некоторые проблемы при создании резервной копии.
Основная идея заключается в следующем:
- Создать снимок логического тома
- Позволить Dom0 видеть логические тома внутри логического тома (фу).
- Смонтировать вновь обнаруженные логические тома.
- Сделать резервную копию
- Убрать лишнее
Есть несколько предположений, которые я сделал. Я предположил, что вы использовали пользовательские имена для групп томов в Dom0 (хосте) или DomU (госте). Лично я всегда использую файл kickstart для создания своих DomU, поэтому у меня основная VG установлена на XenVG00. Все мои DomU находятся в VG на Dom0 под названием vg_xen - это не обязательно.
Второе предположение заключается в том, что у вас есть немного свободного места в группе томов, содержащей образы DomU. Это не должно быть много, так как мы удалим том снимка, когда закончим с ним.
Сначала нам нужно создать наш снимок:
[root@dom0 ~]# lvcreate -L 1G -s -n lv_snapshot /dev/vg_xen/lv_xen_snaptestЛогический том "lv_snapshot" созданЭто создает снимок тома под названием lv_snapshot для DomU, который использует логический том Dom0 под названием lv_xen_snaptest. Это полезно само по себе, так как теперь вы можете сделать образ этого LV. Я делаю именно это для восстановления после катастроф (dd if=/dev/vg_xen/lv_snapshot | bzip2 | dd of=/path/to/dr_image.bz2). В худшем случае этот образ можно будет записать обратно в новый логический том на новой системе для новой инстанции Xen.
Тем не менее, что мы хотим сделать, так это получить доступ к файлам в этом снимке. Поскольку DomU использует LVM, это, к сожалению, не тривиально. Сначала нам нужно использовать kpartx для извлечения данных LV:
[root@dom0 ~]# kpartx -av /dev/vg_xen/lv_snapshotдобавить карту lv_snapshot1 : 0 208782 линейный /dev/vg_xen/lv_snapshot 63
добавить карту lv_snapshot2 : 0 20755980 линейный /dev/vg_xen/lv_snapshot 208845Вы можете видеть, что было найдено 2 LV. Поскольку lv_snapshot1 меньше, мы знаем, что это файл подкачки, а lv_snapshot2 - это файловая система /. Теперь нам нужно заставить LVM видеть эти LV и активировать их.
[root@dom0 ~]# vgscanЧтение всех физических томов. Это может занять некоторое время…
Найдена группа томов "vg_xen" с использованием типа метаданных lvm2
Найдена группа томов "XenVG00" с использованием типа метаданных lvm2
Найдена группа томов "VolGroup00" с использованием типа метаданных lvm2[root@dom0 ~]# vgchange -ay XenVG002 логических тома в группе томов "XenVG00" теперь активныТеперь, когда LVs активны, мы можем смонтировать их так, как если бы это были любые другие диски.
[root@dom0 ~]# mount /dev/XenVG00/LVroot /mnt/И выполнять любые команды, которые нам нравятся
[root@dom0 ~]# rsync -avhp /mnt/ /backup/xen_test/Очевидно, что теперь нам нужно убрать за собой:
[root@dom0 ~]# umount /mnt
[root@dom0 ~]# vgchange -an XenVG000 логических томов в группе томов "XenVG00" теперь активны[root@dom0 ~]# kpartx -d /dev/vg_xen/lv_snapshot
[root@dom0 ~]# lvremove /dev/vg_xen/lv_snapshotВы действительно хотите удалить активный логический том "lv_snapshot"? [y/n]: y
Логический том "lv_snapshot" успешно удаленВажный момент здесь в том, что мы ни разу не приостанавливали нашу виртуальную машину, но смогли сделать полную резервную копию.
Размер тома снимка - это сложная часть. Я использовал 1G снимок LV. Чтобы дать представление о том, насколько большим он должен быть: к тому времени, когда образ DR моего вики был сделан, сжат и отправлен по SSH на другой сервер для хранения, использование снимка достигло почти 7%.
Get new posts in your inbox
No spam. Unsubscribe anytime.