O KVM / libvirt suporta a migração ao vivo da VM com migração de armazenamento (uma configuração de nada compartilhado), embora com algumas limitações. Seu principal problema é que os pools de armazenamento têm configurações diferentes, portanto, não tenho certeza de que libvirt
migrará a imagem da VM sem problemas.
O comando para fazer uma migração ao vivo + cópia de armazenamento é:
virsh migrate --live --copy-storage-all --persistent qemu+ssh://root@/system
Este comando presume que você tenha uma conexão válida baseada em libvirt para o host remoto.
Se você tiver problemas para migrar seus discos virtuais, poderá tentar criar arquivos de disco virtual de destino de stub com a execução (no host de destino) algo semelhante a fallocate /dev/vg-datastore/lv-vm-1138 -l 80G
e /dev/vg-datastore-sata/lv-vm-1138-2 -l 1T
.
De qualquer forma, devido a diferenças entre os anfitriões, isso pode ser uma estrada esburacada.
Uma maneira mais simples de migrar suas imagens de VM é usar uma abordagem de cópia de disco incremental, usando blocksync
. Resumindo:
- quando a VM estiver em execução, faça uma primeira cópia dos discos virtuais no host de destino. Esta primeira cópia será incoerente e não confiável, mas funcionará como uma "semente" para a próxima cópia;
- no momento apropriado, desligue a VM e execute uma segunda cópia dos discos virtuais. Esta segunda cópia transferirá apenas os blocos alterados e será muito mais rápida que a primeira;
- quando terminar, defina o domínio virtual e inicie a VM no host de destino.
Observe que o programa blocksync
vinculado é uma versão com bifurcação pessoal com base no script original (que, por a propósito, é uma versão melhorada de este script ). Obviamente, assumo NO RESPONSABILITY como código e sugiro que você teste completamente antes de usá-lo em máquinas virtuais de produção / arquivos de disco. Como sempre, você DEVE ter um backup confirmado antes de fazer qualquer coisa.
EDITAR: como sugerido no comentário abaixo, outro ótimo software para sincronizar um dispositivo de bloco / arquivo de imagem virtual é bdsync
. A abordagem é basicamente a mesma: obter uma primeira cópia "primária" do arquivo de disco enquanto a VM está em execução, interromper a VM e fazer outra cópia final. No passado, até perguntei a bdsync
developer sobre uma questão semelhante; veja aqui para mais informações .