Как оказалось перенос виртуалки между 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 гипервизора.