ISPSystem
14.03.2023 Tiempo de lectura: 18 minutos

Migración de VMware a VMmanager

¿Cómo migrar máquinas virtuales de VMware ESXi a la plataforma de virtualización VMmanager? En este artículo revisaremos los métodos de migración más comunes en Internet, proporcionaremos una secuencia de pasos específicos para varios escenarios típicos y mostraremos métodos para configurar dispositivos de E/S para QEMU-KVM.

Características de la migración desde VMware

Para una mejor comprensión de los siguientes pasos, nos gustaría comenzar este artículo describiendo algunas de las peculiaridades de la migración con las que tenemos que lidiar.

Para cualquier migración de máquina virtual, el enfoque estándar es convertir el disco de un formato a otro. El formato de disco de VMware es .vmdk. Para QEMU-KVM, que utiliza VMmanager, el formato del disco es .qcow2 o raw.

Existe una utilidad, qemu-img, desarrollada por el equipo del proyecto QEMU. Ya está instalada en tu sistema si usas el conjunto QEMU-KVM-libvirt. Qemu-img permite convertir discos de máquinas virtuales entre diferentes formatos. En particular, puedes convertir de .vmdk a .qcow2 o de .qcow2 a raw. Puedes leer más sobre la utilidad en la documentación oficial en el enlace.

Puede parecer que basta con convertir los discos y todo funcionará, pero desafortunadamente las cosas son un poco más complicadas. Esta conversión para una máquina virtual sería similar a la situación que enfrenta un sistema operativo de portátil cuando mueves un disco de una computadora a otra.

La primera característica a considerar es el tipo de cargador utilizado: BIOS o UEFI. Tiene un requisito clave: el entorno de virtualización al que se realiza la migración debe usar el mismo cargador que el entorno de virtualización de origen.

En VMware, el tipo de cargador se puede ver en la configuración de la máquina virtual. El ejemplo siguiente usa BIOS, pero la configuración predeterminada de VMware es UEFI.

Configuración de VM de VMware
Configuración de VM de VMware

El segundo bloque de características son los dispositivos de E/S y los controladores para gestionarlos. Los entornos de origen y destino de la migración pueden tener diferentes dispositivos.

Por ejemplo, VMware suele usar SCSI para discos y E1000E para el adaptador de red, que emula una NIC Intel. La información sobre los dispositivos también está disponible en la configuración de la máquina virtual.

Configuración de VM de VMware
Configuración de VM de VMware

QEMU-KVM tiene un gran dispositivo llamado virtio que se puede usar para conectar discos, adaptadores de red y mucho más. Virtio no emula un dispositivo físico conocido por el sistema operativo, como la tarjeta de red E1000, sino que aparece como un dispositivo virtual especializado. La ventaja de virtio es un mayor rendimiento en comparación con la emulación.

No todos los sistemas operativos admiten virtio, pero la mayoría de los sistemas operativos actuales sí. Al migrar, se recomienda migrar tus máquinas virtuales para que funcionen exactamente con virtio en términos de red y subsistema de disco. Esto te permitirá tener un alto rendimiento para los subsistemas correspondientes de la máquina virtual.

Desafortunadamente, muchos sistemas operativos que se ejecutan en VMware no incluyen controladores virtio "listos para usar". Esto crea la segunda y más compleja característica de la migración.

Tercero, nos gustaría destacar el problema de la infraestructura necesaria para la migración. En general, el proceso de migración implica copiar un disco .vmdk, convertirlo y agregarlo a una máquina virtual en el nuevo entorno de virtualización.

Cada uno de estos procedimientos requiere capacidad de disco, ancho de banda de red y recursos informáticos. Y si los discos de la máquina virtual son grandes, necesitarás mucho espacio. La capacidad requerida se puede estimar como x2 del tamaño del disco de la máquina virtual. Y no debes olvidar el tiempo de conversión para discos grandes. Tampoco será pequeño. No hay posibilidad de migración en línea. Cualquier migración de este tipo implicará un apagado de la máquina virtual.

Enfoques para la migración

Teniendo en cuenta la peculiaridad indicada en el párrafo anterior con los dispositivos de E/S, podemos distinguir dos enfoques:

  1. Migración con qemu-img e instalación posterior de controladores.
  2. Migración usando la utilidad virt-v2v con instalación automática de controladores.

El esquema del primer enfoque ya se ha esbozado en el capítulo anterior. Se puede resumir en el siguiente plan de acción:

  1. Copiar y convertir discos .vmdk a discos .qcow2.
  2. Crear una máquina virtual en VMmanager con discos de no menor tamaño.
  3. Copiar los discos convertidos en lugar de los discos de la máquina virtual.
  4. Ajustar el archivo xml de configuración de la máquina virtual, cambiando el tipo de dispositivos de entrada/salida.
  5. Instalar los controladores necesarios en la máquina virtual.
  6. Ajustar el archivo xml de configuración a su estado original.

Pero la utilidad virt-v2v no se menciona arriba. Virt-v2v es una herramienta que está desarrollando RadHat. La utilidad convierte máquinas virtuales para que se ejecuten en el hipervisor QEMU-KVM a partir de máquinas virtuales que se ejecutan en otros hipervisores. Puedes leer el artículo introductorio de RedHat para más detalles.

La ventaja clave de virt-v2v sobre qemu-img es que virt-v2v no solo convierte discos, sino que también agrega los controladores necesarios al sistema operativo invitado y ofrece un archivo xml de configuración para la máquina virtual. La desventaja es que la utilidad admite un conjunto limitado de sistemas operativos y, si se usa, reduce la transparencia de lo que sucede durante la conversión.

En este caso, el plan puede consistir en los siguientes pasos:

  1. Copiar y convertir discos .vmdk a disco .qcow2
  2. Crear una máquina virtual en VMmanager con discos de no menor tamaño.
  3. Copiar los discos convertidos en lugar de los discos de la máquina virtual.

Y si virt-v2v pudo instalar los controladores virtio, la máquina virtual se iniciará con éxito.

Configuración del entorno de migración

Ahora podemos pasar de consideraciones generales sobre la migración a pasos específicos.

Primero, un par de palabras sobre los parámetros del entorno y las versiones del software utilizado:

  • VMware ESXi 7.0.3, 20328353 ejecutándose bajo vCenter Server 7.0.3.00700.
  • Servidor de plataforma VMmanager 11365 (11.3.5) con nodo de virtualización agregado basado en Alma Linux 8.7, Qemu 6.2.0 y Libvirt 8.0.0.

El nodo se usó como servidor de conversión.

Se utilizaron Windows Server 2016 y Alma Linux 8.7 como sistemas operativos invitados para pruebas. El cargador es BIOS, se conectaron dos discos en cada máquina virtual, se agregó una interfaz de red.

Migración con qemu-img

El primer paso "predeterminado" es hacer una copia de seguridad de todo lo que se va a migrar. No importa cuán segura sea la operación, las copias de seguridad protegerán contra riesgos no detectados.

A continuación se detallan los pasos del proceso de migración.


  1. Verifica si las herramientas de invitado de VMware están instaladas y desinstálalas si es así

    Las herramientas de invitado pueden evitar que la máquina virtual se ejecute en el nuevo hipervisor.

    Puedes ejecutar el comando rpm -qa | grep open-vm para verificarlo en Alma Linux. Si se encuentran paquetes instalados, significa que hay herramientas y deben desinstalarse.

    Ejecuta el comando "rpm -e <nombre del paquete encontrado>" para desinstalar. En mi caso - "rpm -e open-vm-tools-12.0.5-2.el8.x86_64".

    Puedes leer más sobre la desinstalación de la herramienta VMware en sistemas similares a RedHat aquí.

    Para desinstalar las herramientas de invitado en Windows, puedes usar el elemento "Programas y características" del panel de control. Allí también puedes verificar si las herramientas de invitado están instaladas revisando la lista de programas instalados.


  2. Transfiere los archivos de la máquina virtual de VMware al servidor donde se realizará la migración

    Para la herramienta qemu-img, los archivos .vmdk serán suficientes, pero para la herramienta virt-v2v, también se requieren los archivos de configuración .vmx.

    En el ejemplo, se copiará toda la carpeta con los archivos de la máquina virtual. Ten en cuenta que el archivo <nombre de la máquina virtual>.vmdk generalmente contiene información de configuración (puedes verlo como un archivo de texto plano con el comando: cat <nombre del archivo.vmdk>). El archivo con el disco en sí tiene el sufijo flat en su nombre. Por ejemplo, mi archivo de disco se llama: migration_test-flat.vmdk.

    La herramienta scp es adecuada para copiar. El comando para copiar desde ESXi tiene el siguiente formato:

    scp -r root@<dirección ip de esxi>:/vmfs/volumes/<nombre del almacén de datos>/<nombre del directorio de la VM>/ <directorio de destino>

    En mi caso:

    scp -r root@172.31.4.204:/vmfs/volumes/5e53a708/migration_test/ /migration

  3. Puedes convertir el disco .vmdk al formato .qcow2 con qemu-img

    Formato general del comando:

    qemu-img convert -p -O qcow2 <ruta al .vmdk> <nombre del disco qcow2 a crear>

    Si la máquina virtual tiene varios discos, debes convertir cada uno de ellos. En mi caso, los comandos se veían así.

    qemu-img convert -p -O qcow2 ./migration_test-flat.vmdk ./migration_test-flat.qcow2
    qemu-img convert -p -O qcow2 ./migration_test_1-flat.vmdk ./migration_test_1-flat.qcow2

  4. Crea una máquina virtual en la interfaz de VMmanager

    Al crear una máquina virtual, debes especificar el mismo número de discos que tenía la máquina virtual original. Selecciona un tamaño de disco no menor que el tamaño del disco original.


  5. Mueve los discos convertidos para reemplazar los discos creados de la máquina virtual

    Reemplaza los discos de la máquina virtual con los discos .qcow2 convertidos. Por defecto, los discos de la máquina virtual en VMmanager se encuentran en los nodos en el directorio /vm y se identifican por el nombre de la máquina virtual. Al mover el disco convertido, se debe conservar el nombre original del disco creado de la máquina virtual.

    Puedes usar la configuración xml de la máquina virtual para evitar confusiones con los discos, así como para identificar el nombre del disco y el directorio donde se encuentra el disco. La configuración está disponible en el nodo con la máquina virtual usando el comando:

    virsh dumpxml <nombre de la máquina virtual>

  6. Ajusta la configuración de E/S en la configuración de la máquina virtual

    Si ejecutas máquinas virtuales en este punto, puedes encontrarte con un problema durante el arranque. Alma Linux arranca en modo de emergencia, mientras que Windows también arranca en modo de recuperación.

    Modo de emergencia de Linux
    Modo de emergencia de Linux
    Modo de recuperación de Windows
    Modo de recuperación de Windows

    La razón de este comportamiento es la falta de controladores virtio.

    Para poder arrancar el sistema operativo invitado, debes ajustar la configuración xml cambiando el tipo de dispositivos utilizados para discos e interfaces. Puedes usar el comando para lograrlo:

    virsh edit <nombre de la VM>

    La configuración generada automáticamente del subsistema de disco e interfaces de red en mi ejemplo se ve así:

    <disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/vm/7_Mig_test_alma_qemuimg'/><target dev='vda' bus='virtio'/><boot order='1'/><address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/></disk><disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/vm/8_Mig_test_alma_qemuimg_2'/><target dev='vdb' bus='virtio'/><boot order='2'/><address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/></disk><interface type='bridge'><mac address='52:54:00:56:30:d8'/><source bridge='VLAN1129'/><target dev='vm9_net0'/><model type='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></interface>

    Como puedes ver en las configuraciones, el tipo de dispositivo virtio se utiliza en todas partes.

    Puedes cambiar estos dispositivos para arrancar el sistema operativo. Selecciona un dispositivo IDE para el subsistema de disco y un adaptador E1000 para la red. No olvides guardar la configuración original, todavía es útil.

    Como se descubrió más adelante, los controladores virtio para Alma Linux están contenidos en el sistema operativo, pero no están incluidos en initramfs, por lo que cambiar los dispositivos para el sistema de disco es suficiente para ejecutar Alma Linux. Para Windows, por otro lado, tanto el sistema de disco como el dispositivo de red deben reemplazarse.

    Los bloques ajustados del archivo de configuración en mi ejemplo son los siguientes:

    <disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/vm/7_Mig_test_alma_qemuimg'/><target dev='sda' bus='ide'/><boot order='1'/></disk><disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/vm/8_Mig_test_alma_qemuimg_2'/><target dev='sdb' bus='ide'/><boot order='2'/></disk><interface type='bridge'><mac address='52:54:00:56:30:d8'/><source bridge='VLAN1129'/><target dev='vm9_net0'/><model type='e1000'/><address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></interface>

    También puedes cambiar la configuración del disco en los ajustes de VMmanager en la interfaz web. Esto está disponible en la configuración de la máquina virtual → Discos virtuales → Editar disco → Tipo de conexión.


  7. Inicia las máquinas virtuales en la interfaz de VMmanager

    Los ajustes realizados permiten iniciar las máquinas virtuales y arrancar el sistema operativo.


  8. Ajusta la configuración de las interfaces de red

    Ten en cuenta que después del arranque, los nuevos dispositivos de red se presentarán al sistema operativo como nuevas interfaces y será necesario reconfigurarlas.


  9. Instala los controladores necesarios para los sistemas operativos

    El siguiente paso es instalar los controladores virtio. Para WIndows, puedes hacer esto descargando los controladores actuales de fedoraproject.org y realizando ajustes en el sistema operativo.

    Para Alma Linux, como se mencionó anteriormente, la situación es más interesante porque los controladores están realmente contenidos en el sistema operativo, pero no en initramfs, que se carga antes de que el kernel se inicie. Esto se puede ver ejecutando el comando:

    lsinitrd /boot/initramfs-4.18.0-425.3.1.el8.x86_64.img | grep virtio

    Si su salida está vacía, significa que no hay controladores en initramfs.

    Puedes verificar si los controladores virtio están disponibles en tu sistema con el comando:

    find /lib/modules/$(uname -r)/kernel/drivers/ -iname "virtio

    Por lo tanto, Alma Linux no requiere que se instalen controladores: solo agrega los controladores necesarios a initramfs. El procedimiento se describe en el artículo correspondiente en el sitio web de RedHat.

    Todo se reduce a crear un archivo /etc/dracut.conf.d/virtio.conf con el contenido:

    add_drivers+=" virtio_scsi virtio_blk virtio_net "

    - y luego ejecutar la construcción de initramfs con el comando dracut -f.


  10. Restaura la configuración xml de la máquina virtual a su estado original

    Después de estas manipulaciones, puedes detener las máquinas virtuales y restaurar la configuración xml original en términos de dispositivos de E/S.

    Con los cambios realizados, las máquinas virtuales deberían arrancar con éxito con los dispositivos de E/S virtio.


  11. Instala las nuevas herramientas de invitado

    Al final del procedimiento de migración, debes instalar las herramientas de invitado para trabajar con QEMU-KVM, es decir, instalar QEMU Guest agent. Puedes encontrar instrucciones fácilmente en Internet o usar la funcionalidad incorporada de instalación del agente invitado de VMmanager.


Migración con virt-v2v

El método anterior parece engorroso, pero da una idea de lo que sucede en el proceso de migración. Una forma más conveniente de lograr un resultado similar es convertir usando la utilidad virt-v2v. Las operaciones que se realizaron manualmente en el párrafo anterior son asumidas por la utilidad.

Materiales importantes sobre el funcionamiento de la utilidad:

Pero antes de poder usar la utilidad, debe instalarse:


dnf install virt-v2v

  1. Preparándose para usar la utilidad

    El primer paso es realizar tareas preparatorias. Al igual que en la sección anterior, desinstale las herramientas de invitado de VMware y cargue los archivos de la máquina virtual en el servidor de conversión.

    La utilidad virt-v2v le permite conectarse a un vCenter Server y descargar automáticamente los archivos de la máquina virtual durante el proceso de conversión, pero para los propósitos de este artículo, los archivos se descargarán localmente.

    En el caso de la conversión de Windows, debe verificar si la máquina virtual que realiza la conversión tiene los controladores virtio para el sistema Windows. Para ello, puede comprobar si el directorio virtio-win está disponible en la ruta: /usr/share/virtio-win. Si falta el directorio virtio-win, no hay controladores y necesita descargarlos.

    El proceso se describe en detalle en el artículo. La más fácil de las opciones es agregar un repositorio y ejecutar el comando dnf install virtio-win.


  2. Realizar la conversión de la máquina virtual

    Para convertir, ejecute la utilidad virt-v2v, especificando la ruta al archivo .vmx de la máquina virtual. Tenga en cuenta que se especifica la ruta al archivo .vmx, no a los archivos .vmdk. El resto de archivos de la máquina virtual deben estar en el mismo directorio que el archivo vmx.

    virt-v2v -i <path to .vmx file> -o local -of qcow2 -os <directory with files after conversion>

    En mi caso, el equipo se veía así:

    virt-v2v -i vmx ./win_mig_test.vmx -o local -of qcow2 -os /mig

    El resultado de virt-v2v se muestra en la consola:

    El resultado de virt-v2v se muestra en la consola

    Durante la conversión, pueden ocurrir errores de permisos de acceso al archivo .vmdk. Se utilizó el comando para cambiar la propiedad de los archivos .vmdk a qemu para solucionarlos:


    chown qemu:qemu <path to .vmdk files>

  3. Crear una máquina virtual y reemplazar los archivos de disco de la máquina virtual

    Repita los pasos 4 y 5 de la sección anterior. Después de eso, la máquina virtual puede iniciarse. En nuestro laboratorio, las máquinas virtuales con Windows 2016 y Alma Linux 8.7 se iniciaron con éxito.

    Después de iniciar la máquina virtual, necesitará reconfigurar las interfaces de red y no olvide instalar las herramientas de invitado QEMU Guest agent.

    Como parte de nuestro laboratorio para Windows 2016, el segundo disco terminó fuera de línea, lo cual también es fácil de solucionar en el menú Administración de discos.

    Administración de discos de Windows
    Administración de discos de Windows

Conclusión

De lo anterior, podemos concluir que migrar máquinas virtuales es una tarea de proyecto que requiere un enfoque basado en proyectos. Una "migración rápida" probablemente no funcionará o puede causar problemas en el futuro.

Para una migración exitosa, necesita determinar cómo migrar cada máquina virtual y probar versiones específicas de sistemas operativos y controladores. La buena noticia es que en la mayoría de los casos los problemas pueden superarse y realizar la migración.


Probar VMmanager
Añadir una reacción
fire 0
love 0
wow 0
laugh 0
angry 0
confuse 0