Рубрики
KVM

kvm migrate / clone / миграция / клонирование

Подготовка:

0. Проверяем доступность между серверами kvm (iptables -L -n -v, ipset list kvm)

1. Проверяем соответствие конфигурации live и config по части сети и дисков
virsh dumpxml VM_NAME
cat /etc/libvirt/qemu/VM_NAME.xml
virsh net-dumpxml default

2. Проверяем конфиг VM_NAME
virsh dumpxml --inactive --security-info VM_NAME > /tmp/VM_NAME.xml
vim /tmp/VM_NAME.xml
В случае различия в процессорах можно их выровнять по младшему процессору, отключив некоторые фичи (потребуется перезагрузка):
  
    
    
    
  

3. 
Проверяем лимит скорости при миграции
virsh migrate-getspeed VM_NAME
 
Ограничиваем скорость, если требуется
virsh migrate-setspeed  VM_NAME Speed-in-B
virsh migrate-setspeed  VM_NAME 20000000

Увеличиваем простой ВМ после миграции (фриз на время копирования памяти, дефолт: 500)
virsh migrate-setmaxdowntime  VM_NAME milliseconds

​Миграция без удаления (виртуальная машина не удаляется после перемещения):

 
!!! Рекомендуется к применению
virsh migrate --live --copy-storage-all --persistent --abort-on-error --verbose VM_NAME qemu+ssh://TO_KVM_SERVER/system
 
 дополнительно можно указать --xml filename.xml для таргета
  дополнительно можно указать --compressed для уменьшения передаваемых при миграции данных
  
  ** Не забываем, что после миграции создаётся файл текущей конфигурации, а не указанной в --xml, поэтому надо применять конфиг отдельно.

Миграция с удалением и созданием в новом KVM:

!!! Внимание лучше использовать вариант без удаления
!!! мигрировать надо с двумя важными опциями 
!!! --undefinesource - удалить ВМ из того гипервизора откуда мигрируем(логично, да?)
!!! --persistent - добавить ВМ в список ВМ на новом месте

Миграция:
virsh migrate VM_NAME qemu_ssh://KVM_NAME/system --undefinesource --persistent

Проверка:
virsh dominfo VM_NAME | grep persistent

Пример переноса ВМ:

На хосте с которого копируем ВМ:
0) Копируем диск на новый хост (файл myserver.qcow2)
1) Выгружаем настройки ВМ
virsh dumpxml myserver > /mnt/data-1/myserver.xml - сохранить настройки ВМ

На хосте на котором разворачиваем бэкап:
0) Восстанавливаем ВМ
virsh define /home/user/myserver.xml
1) При необходимости правим (указываем месторасположение образа жесткого диска):
virsh edit myserver

virt-clone:

!!! Перед клонирование ВМ необходимо выключить или поставить на паузу.
!!! virsh shutdown
!!! vursh suspend

Первый вариант:
virt-clone --original {Domain-Vm-Name-Here} --auto-clone

Второй вариант:
virt-clone --original {Domain-Vm-Name-Here} --name {New-Domain-Vm-Name-Here} --auto-clone

Третий вариант:
virt-clone --original {Domain-Vm-Name-Here} --name {New-Domain-Vm-Name-Here} --file {/var/lib/libvirt/images/File.Name.here}


Пример:
virsh suspend Name_VM_1
virt-clone --original Name_VM_1 --name Name_VM_2 --file /var/lib/libvirt/images/Name_VM_2.qcow2
virsh resume Name_VM_1
virt-sysprep -d Name_VM_2 --hostname Name_VM_2 --enable user-account,ssh-hostkeys,net-hostname,net-hwaddr,machine-id --keep-user-accounts vivek --keep-user-accounts root --run 'sed -i "s/192.168.122.16/192.168.122.25/" /etc/network/interfaces'

ссылки: