Red Hat Training

A Red Hat training course is available for RHEL 8

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

  1. Certifique-se de que o serviço libvirtd esteja habilitado e funcionando.

    # systemctl enable libvirtd.service
    # systemctl restart libvirtd.service
  2. 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 host dest-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 host dest-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 host source-example, o migra para o host dest-example e o instrui a usar a configuração XML ajustada, fornecida pelo arquivo wanderer3-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 host source-example, e move sua configuração para o host dest-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
  3. 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 para virsh 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 manual virsh.