24
января
0

Временное клонирование виртуальной машины в KVM



Бывают ситуации, когда необходимо провести тестирование изменения конфигурации, которое может повлиять на работоспособность всей системы. Например, изменение размера разделов и т.д. Такие действия обычно выполняются на тестовых системах. Но каждый раз настраивать тестовую среду трудозатратно. Рассмотрим один из способов, как этого можно избежать.

Предположим, что у нас есть созданная виртуальная машина в KVM на основе LVM. Для создания временной резервной копии нам необходимо выполнить следующие действия:
— остановить виртуальную машину
— сделать снепшот lvm
— сделать xml-дамп виртуальной машины
— отредактировать конфигурацию для новой виртуальной машины
— запустить машину со снепшота

Весь этот процесс занимает считанные минуты, виртуальная машина будет рабочей до тех пор, пока будет валидным наш снепшот. После выполнения тестирования или когда нам надо пересоздать нашу тестовую среду мы удаляем снепшот, делаем новый и запускаем машину. Последовательность команд можно поместить в скрипт и создания временного тестового сервера будет занимать пару минут. Также возможно создание cнепшотов виртуальных машин в самом KVM (virsh snapshot-create), но тогда для восстановления начальной конфигурации надо будет делать откат, что может занимать больше времени, чем пересоздания снепшота LVM.

Администрировать виртуальные машины можно с помощью gui интерфейса, который запускается командой virt-manager.

Для просмотра всех виртуальных машин в консоле необходимо выполнить команду:

[root@test ~]# virsh list --all

Выключаем виртуальный сервер:

[root@test-vas ~]# virsh shutdown Test_RHEL6.5
Domain Test_RHEL6.5 is being shutdown

Создаем снепшот виртуальной машины LVM:

[root@test ~]# lvcreate -s -n snap_test_rhel6 -L 10G /dev/vg_kvm/test_rhel6
Logical volume "snap_test_rhel6" created
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
snap_test_rhel6 vg_kvm swi-a-s--- 10.00g test_rhel6 0.00

Создаем xml-дамп конфигурации виртуальной машины:

[root@test ~]# virsh dumpxml Test_RHEL6.5 > snap_Test_RHEL6.5.xml

Меняем параметры <name>, <source dev> и <uuid> для новой машины на <snap_Test_RHEL6.5>, </dev/vg_kvm/snap_test_rhel6> и <новый uuid> соответственно:

[root@test ~]# vim snap_Test_RHEL6.5.xml

Добавляем xml файл в virsh, после этого xml-конфигурация будет скопирована в /etc/libvirt/qemu/ и доступна внутри virsh:

[root@test ~]# virsh define snap_Test_RHEL6.5.xml

Запускаем машину:

[root@test ~]# virsh start snap_Test_RHEL6.5
Domain snap_Test_RHEL6.5 started

Теперь мы можем зайти на виртуальный серв по ssh или через virt-manager.

Удалить виртуальную машину и снепшот можно следующим способом:

[root@test ~]# virsh shutdown snap_Test_RHEL6.5
Domain snap_Test_RHEL6.5 is being shutdown

[root@test ~]# virsh undefine snap_Test_RHEL6.5
Domain snap_Test_RHEL6.5 has been undefined

[root@test ~]# lvremove /dev/vg_kvm/snap_test_rhel6
Do you really want to remove active logical volume snap_test_rhel6? [y/n]: y
Logical volume "snap_test_rhel6" successfully removed
Понравилась статья?
Подписаться на RSS feed
Оставить комментарий