Перенос виртуальной машины между KVM гипервизорами

Как оказалось перенос виртуалки между KVM гипервизорами очень прост и удобен. Этим же методом можно пользоваться и для бекапа если не хочется использовать снапшоты. Итак, для начала определим какую виртуалку переносим и сделаем дамп её конфигураций.
Смотрим список запущеных виртуальных машин

# virsh list
 Id    Name                           State
----------------------------------------------------
 3     win10                          running 

Выключаем её

# virsh shutdown win10
Domain win10 is being shutdown

бекап конфигураций сети и виртуалки

# virsh dumpxml win10 > win10.xml
# virsh net-dumpxml default > netxml.xml

Переносим файл диска, примонтированный образ и конфигурации на новый сервер по SSH

# scp /usr/local/src/win7.qcow2 /usr/local/src/Windows7.iso win10.xml netxml.xml root@new_server_ip:/root/virtual

На новом сервере ставим 2 пакета

# apt-get install qemu-kvm libvirt-bin

Поднимаем сеть по умолчанию

# virsh net-autostart default
Network default marked as autostarted
# virsh net-start default
Network default started
На предыдущем сервере наш виртуальный HDD находился в каталоге /usr/local/src/. Сюда же его и скопируем
Импортируем настройки виртуальной машины
# virsh define /root/virtual/win10.xml
Domain win10 defined from /root/virtual/win10.xml

Меняем настройки виртуалки. В частности устанавливаем IP нового сервера. Я дополнbитльно установил пароль на VNC

# virsh edit win10
<graphics type='vnc' port='-1' autoport='yes' listen='1.2.3.4' keymap='en-us' passwd='1234567'>
  <listen type='address' address='1.2.3.4'>
</graphics>
Domain win10 XML configuration edited.

Запускаем виртуалку и указываем запускать её вместе с хост системой

# virsh start win10
Domain win10 started
# virsh autostart win10
Domain win10 marked as autostarted

С виртуалкой дела закончены. Теперь немного настроим сеть. Первым делом запустим маршрутизацию
добавим в /etc/sysctl.conf строку

net.ipv4.ip_forward = 1

И применим изменения

# sysctl -p
net.ipv4.ip_forward = 1

В качестве гостевой системы у меня используется Windows, что в общем то очевидно из названия ноды.
По этому для возможности работы по RDP пробросим порт 3389. Как изменить этот порт можно почитать в этом материале

iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.122.99
iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT

И после этого можно подключаться по RDP просто указав IP гипервизора.

Добавить комментарий