9.5. Migração de uma máquina virtual usando a interface de linha de comando
Se o host atual de uma máquina virtual (VM) tornar-se inadequado ou não puder mais ser usado, ou se você quiser redistribuir a carga de trabalho do host, você pode migrar a VM para outro host KVM. Esta seção fornece instruções e exemplos para vários cenários de tais migrações.
Pré-requisitos
- Tanto o hospedeiro de origem quanto o hospedeiro de destino utilizam o hipervisor KVM.
-
O anfitrião de origem e o anfitrião de destino são capazes de alcançar um ao outro através da rede. Use o utilitário
ping
para verificar isso. - Para que a migração seja suportada pela Red Hat, o host de origem e o host de destino devem estar usando sistemas operacionais e tipos de máquinas específicos. Para garantir que este seja o caso, consulte a tabela de compatibilidade da migração da VM.
A Red Hat recomenda que as imagens em disco das VMs que serão migradas sejam localizadas em um local de rede separado acessível tanto ao host de origem quanto ao host de destino. Isto é opcional para a migração offline, mas necessário para a migração de uma VM em funcionamento.
Para instruções de como configurar esse armazenamento de VM compartilhado, veja Seção 9.4, “Compartilhar imagens de disco de máquinas virtuais com outros anfitriões”.
- Ao migrar uma VM existente em uma rede pública de torneira de ponte, os hosts de origem e destino devem estar localizados na mesma rede. Caso contrário, a rede da VM não operará após a migração.
Procedimento
Certifique-se de que o serviço
libvirtd
esteja habilitado e funcionando.# systemctl enable libvirtd.service # systemctl restart libvirtd.service
Use o comando
virsh migrate
com opções apropriadas para suas necessidades de migração.O seguinte migra o
wanderer1
VM de seu host local para a sessão do sistema do hostdest-example
. O VM permanecerá em funcionamento durante a migração.# virsh migrate --persistent --live wanderer1 qemu ssh://dest-example/system
O seguinte permite que você faça ajustes manuais na configuração da VM
wanderer2
rodando em seu host local, e depois migre a VM para o hostdest-example
. A VM migrada utilizará automaticamente a configuração atualizada.# virsh dumpxml --migratable wanderer2 >wanderer2.xml # vi wanderer2.xml # virsh migrate --live --persistent --xml wanderer2.xml wanderer2 qemu+ssh://dest-example/system
Este procedimento pode ser útil, por exemplo, quando o host de destino precisa usar um caminho diferente para acessar o armazenamento compartilhado da VM ou ao configurar um recurso específico para o host de destino.
O seguinte suspende o
wanderer3
VM do hostsource-example
, o migra para o hostdest-example
e o instrui a usar a configuração XML ajustada, fornecida pelo arquivowanderer3-alt.xml
. Quando a migração for concluída,libvirt
retomará a VM no host de destino.# virsh migrate wanderer3 qemu ssh://source-example/system qemu ssh://dest-example/system --xml wanderer3-alt.xml
Após a migração, a VM permanece no estado suspenso no host de origem, e a cópia migrada é apagada após ser desligada.
O seguinte elimina o desligamento
wanderer4
VM do hostsource-example
, e move sua configuração para o hostdest-example
.# virsh migrate --offline --persistent --undefinesource wanderer4 qemu ssh://source-example/system qemu ssh://dest-example/system
Note que este tipo de migração não requer mover a imagem do disco da VM para o armazenamento compartilhado. Entretanto, para que a VM possa ser utilizada no host de destino, é necessário migrar a imagem de disco da VM. Por exemplo, a imagem de disco da VM:
# scp root@source-example:/var/lib/libvirt/images/wanderer4.qcow2 root@dest-example:/var/lib/libvirt/images/wanderer4.qcow2
Esperar que a migração seja concluída. O processo pode levar algum tempo, dependendo da largura de banda da rede, da carga do sistema e do tamanho da VM. Se a opção
--verbose
não for utilizada paravirsh migrate
, a CLI não exibirá nenhum indicador de progresso, exceto erros.Quando a migração estiver em andamento, você pode usar o utilitário
virsh domjobinfo
para exibir as estatísticas de migração.
Verificação
No host de destino, liste as VMs disponíveis para verificar se a VM foi migrada:
# virsh list Id Name State ---------------------------------- 10 wanderer1 running
Note que se a migração ainda estiver em execução, este comando listará o estado da VM como
paused
.
Solução de problemas
-
Em alguns casos, o host alvo não será compatível com certos valores da configuração XML da VM migrada, tais como o nome da rede ou tipo de CPU. Como resultado, a VM não inicializará no host de destino. Para corrigir estes problemas, você pode atualizar os valores problemáticos usando o comando
virsh edit
. Se uma migração ao vivo está demorando muito tempo para ser concluída, isto pode ser porque o VM está sob carga pesada e muitas páginas de memória estão mudando para que a migração ao vivo seja possível. Para resolver este problema, mude a migração para uma não viva, suspendendo a VM.
# virsh suspend wanderer1
Recursos adicionais
-
Para outras opções e exemplos de migração de máquinas virtuais, use
virsh migrate --help
ou consulte a página de manualvirsh
.