Сервер в кармане, или просто о сложном!

главная - Статьи - Виртуализация

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

Теги: Виртуальные машины Linux kvm

Метод: самый простой, связанный с простоем vm: остановка vm, копирование файлов диска и конфига на новый хост и запуск vm на новом хосте.

Подсмотрено тут. Забегая вперед: все вышло ок, это проверенный руками материал. Переносим vm4 с хоста1 на хост2. Хосты: CentOS 7, но суть все равно едина для всех.

На хосте1:

# virsh shutdown vm4
Domain vm4 is being shutdown

Ждем выключения:

# virsh list --all | grep vm4
 6     vm4                            running
# virsh list --all | grep vm4
 -     vm4                            shut off

На хосте1 vm4 запускать автоматически не планирую:

# virsh autostart vm4 --disable
Domain vm4 unmarked as autostarted

Сохраняем конфиг:

# virsh dumpxml vm4 > /root/vm4-export-config.xml

В моем случае vm4 в бридже br0, на хосте1 и хосте2 он настроен, его настройки дампить не надо. На целевом хосте2 бридж, конечно же, уже настроен.

Копирую файлы на новый хост:

# scp -P 22 /root/vm4-export-config.xml /vms/vm4.iso root@192.168.2.5:/data/vms-tmp/

На старом хосте диски vm находятся в директории /vms, если примонтируются образы iso, то из /vms-iso, сеть для VMs типа bridge (br0).
Новый хост я готовил аналогично.

На хосте2:

# mv /data/vms-tmp/vm4.iso /vms
# chown qemu:qemu /vms/vm4.iso
# chmod 600 /vms/vm4.iso

У меня SELinux включен, поэтому:

# restorecon -R -v /vms
restorecon reset /vms/vm4.iso context unconfined_u:object_r:unlabeled_t:s0->unconfined_u:object_r:virt_image_t:s0
# ls -aZ /vms
# virsh define /data/vms-tmp/vm4-export-config.xml
Domain vm4 defined from /data/vms-tmp/vm4-export-config.xml

При экспорте конфига на хосте1 пароль VNC не сохранился, поэтому для доступа к vm4 по VNC на хосте2 надо править конфиг:

# virsh edit vm4

<graphics type='vnc' port='-1' autoport='yes'>
    <listen type='address'/>
</graphics>

изменяю на:

<graphics type='vnc' port='-1' autoport='yes' passwd='12345d'>
    <listen type='address'/>
</graphics>

# virsh start vm4
# virsh autostart vm4

vm4 запустилась, все ок.

Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?