У меня есть гость KVM, которую мне нужно перенести с одного хоста на другой. Миграцию не нужно выполнять в горячем режиме. Его хранилище в настоящее время поддерживается блочными устройствами LVM с мостовым сетевым адаптером. На обоих серверах одинаковое ядро, версия libvirt, qemu и т. Д. Как проще всего это сделать?
Я предполагаю, что это:
dd the block devices from server A to server B
export the xml VM definition on A, copy it to B
edit the xml to refer to the new physical device names
create the machine referencing that xml file
Ты прав. Я делал это несколько раз. я использовал netcat для создания образа дисков по сети. Это метод, который я использовал:
nc -l 1234 | dd of=/dev/<vgname>/<lvname>
на целевом хосте. Это говорит netcat для прослушивания сетевого порта и передачи всего на логический том.dd if=/dev/<vgname>/<lvname> | nc <targetip> 1234
на исходном хосте. Это говорит netcat чтобы передать все по сети на целевой хост./etc/libvirt/qemu/
от источника к цели./etc/init.d/libvirt-bin reload
должен сработать (или systemctl restart libvirtd
для дистрибутивов, использующих systemd)KVM (начиная с qemu 1.3) теперь включает функцию миграции хранилища, поэтому больше нет необходимости выполнять какие-либо хакерские действия, показанные в старых ответах. Просто перенесите виртуальную машину, как обычно, например virsh migrate "Guest Name" qemu+ssh://dest-hypervisor/system
или нажмите приятные кнопки в любом графическом интерфейсе пользователя.
Я придерживался в чем-то похожего подхода с различиями в деталях, поскольку мне нужно было направить машину через небезопасное соединение и использовать virsh:
ssh-copy id root@newserver
с "старого сервера"dd if=/dev/<vgname>/<lvname> | ssh root@targethost 'dd of=/dev/<vgname>/<lvname>'
virsh dumpxml <machinename> dump.xml
scp dump.xml root@targethost:/root/
virsh define dump.xml
затем машина создается из xml. Не используй virsh create machine
, то после перезагрузки необходимо переопределить машину. virsh start machinename
Если на новой машине нет подключения к Интернету с NAT, убедитесь, что IP-переадресация включена.
На Ubuntu nano /etc/sysctl.conf
раскомментировать net.ipv4.ip_forward=1