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
Asegúrese de que el servicio
libvirtd
está activado y en funcionamiento.# systemctl enable libvirtd.service # systemctl restart libvirtd.service
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 hostdest-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 dedest-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 hostsource-example
, la migra al hostdest-example
y le indica que utilice la configuración XML ajustada, proporcionada por el archivowanderer3-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 hostsource-example
, y mueve su configuración al hostdest-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
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
paravirsh 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 manualvirsh
.