главная - Статьи - Виртуализация
Перенос виртуальной машины 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 запустилась, все ок.
Авторизуйтесь для добавления комментариев!