Red Hat Training

A Red Hat training course is available for RHEL 8

9.5. Migración de una máquina virtual mediante la interfaz de línea de comandos

Si el host actual de una máquina virtual (VM) se vuelve inadecuado o ya no se puede utilizar, o si desea redistribuir la carga de trabajo de alojamiento, puede migrar la VM a otro host KVM. Esta sección proporciona instrucciones y ejemplos para varios escenarios de tales migraciones.

Requisitos previos

  • Tanto el host de origen como el de destino utilizan el hipervisor KVM.
  • El host de origen y el host de destino pueden comunicarse entre sí a través de la red. Utilice la utilidad ping para comprobarlo.
  • Para que la migración sea compatible con Red Hat, el host de origen y el host de destino deben utilizar sistemas operativos y tipos de máquinas específicos. Para asegurarse de que este es el caso, consulte la tabla de compatibilidad de la migración de VM.
  • Red Hat recomienda que las imágenes de disco de las VMs que serán migradas estén ubicadas en una localización de red separada y accesible tanto para el host de origen como para el host de destino. Esto es opcional para la migración fuera de línea, pero se requiere para la migración de una VM en ejecución.

    Para obtener instrucciones para configurar dicho almacenamiento compartido de VM, consulte Sección 9.4, “Compartir imágenes de disco de máquinas virtuales con otros hosts”.

  • Cuando se migra una VM existente en una red de grifo de puente público, los hosts de origen y destino deben estar ubicados en la misma red. De lo contrario, la red de la VM no funcionará después de la migración.

Procedimiento

  1. Asegúrese de que el servicio libvirtd está activado y en funcionamiento.

    # systemctl enable libvirtd.service
    # systemctl restart libvirtd.service
  2. Utilice el comando virsh migrate con las opciones adecuadas a sus necesidades de migración.

    • A continuación se migra la VM wanderer1 desde su host local a la sesión del sistema del host dest-example. La VM seguirá funcionando durante la migración.

      # virsh migrate --persistent --live wanderer1 qemu ssh://dest-example/system
    • Lo siguiente le permite realizar ajustes manuales en la configuración de la VM de wanderer2 que se ejecuta en su host local, y luego migra la VM al host de dest-example. La VM migrada utilizará automáticamente la configuración actualizada.

      # virsh dumpxml --migratable wanderer2 >wanderer2.xml
      # vi wanderer2.xml
      # virsh migrate --live --persistent --xml wanderer2.xml wanderer2 qemu+ssh://dest-example/system

      Este procedimiento puede ser útil, por ejemplo, cuando el host de destino necesita utilizar una ruta diferente para acceder al almacenamiento compartido de la VM o cuando se configura una función específica del host de destino.

    • Lo siguiente suspende la VM wanderer3 del host source-example, la migra al host dest-example y le indica que utilice la configuración XML ajustada, proporcionada por el archivo wanderer3-alt.xml. Cuando se completa la migración, libvirt reanuda la VM en el host de destino.

      # virsh migrate wanderer3 qemu ssh://source-example/system qemu ssh://dest-example/system --xml wanderer3-alt.xml

      Después de la migración, la VM permanece en el estado suspendido en el host de origen, y la copia migrada se elimina después de que se apague.

    • Lo siguiente elimina la VM wanderer4 apagada del host source-example, y mueve su configuración al host dest-example.

      # virsh migrate --offline --persistent --undefinesource wanderer4 qemu ssh://source-example/system qemu ssh://dest-example/system

      Tenga en cuenta que este tipo de migración no requiere mover la imagen de disco de la VM al almacenamiento compartido. Sin embargo, para que la VM sea utilizable en el host de destino, es necesario migrar la imagen de disco de la VM. Por ejemplo:

      # scp root@source-example:/var/lib/libvirt/images/wanderer4.qcow2 root@dest-example:/var/lib/libvirt/images/wanderer4.qcow2
  3. Espere a que se complete la migración. El proceso puede tardar algún tiempo dependiendo del ancho de banda de la red, la carga del sistema y el tamaño de la VM. Si no se utiliza la opción --verbose para virsh migrate, la CLI no muestra ningún indicador de progreso excepto los errores.

    Cuando la migración está en curso, puede utilizar la utilidad virsh domjobinfo para mostrar las estadísticas de migración.

Verificación

  • En el host de destino, liste las VMs disponibles para verificar si la VM ha sido migrada:

    # virsh list
    Id Name                 State
    ----------------------------------
    10 wanderer1              running

    Tenga en cuenta que si la migración aún está en marcha, este comando mostrará el estado de la máquina virtual como paused.

Solución de problemas

  • En algunos casos, el host de destino no será compatible con ciertos valores de la configuración XML de la VM migrada, como el nombre de la red o el tipo de CPU. Como resultado, la VM no podrá arrancar en el host de destino. Para solucionar estos problemas, puede actualizar los valores problemáticos mediante el comando virsh edit.
  • Si una migración en vivo está tardando mucho en completarse, esto puede deberse a que la VM está bajo una gran carga y demasiadas páginas de memoria están cambiando para que la migración en vivo sea posible. Para solucionar este problema, cambie la migración a una no viva suspendiendo la VM.

    # virsh suspend wanderer1

Recursos adicionales

  • Para más opciones y ejemplos de migración de máquinas virtuales, utilice virsh migrate --help o consulte la página de manual virsh.