Migrar de VMware Workstation a Hyper-V con discos RAID-1

Después de de aplicar la última actualización VMware Workstation en mi laboratorio casero y darme cuenta que fué retirado el soporte a las máquinas compartidas decidí migrar a un hypervisor tipo-1 (baremetal).

Una característica indispensable que estaba buscando es mantener la capacidad de RAID-1 por software para mi arreglo de 2 discos Seagate de 2 TB.

VMware ESXi es un hypervisor con el que he trabajado profesionalmente desde hace mas de 10 años, y en realidad me agrada mucho, pero tenía dos problemas:

  • No soporta software RAID-1
  • No soporta la tarjeta Realtek de mi motherboard (ASUS Prime B365M-A) de manera nativa*

Después de investigar un poco, decidí probar Microsoft Hyper-V Server 2019, el cual tiene estas ventajas:

  • Soporta software RAID-1
  • Soporta la tarjeta Realtek sin tener que instalar parches adicionales
  • Es gratuito
  • No requiere instalar Windows Server 2019

Es importante recalcar que estoy hablando de la versión Hyper-V Server 2019, no de Windows Server 2019 con el rol de Hyper-V, que son cosas diferentes.

Ambiente antes de migración

El ambiente actual esta formado de una máquina armada:

  • Motherboard ASUS Prime B365M-A
  • Procesador Intel i5-9400
  • 2 módulos  de 16 GB – Kingston HyperX Fury PC4-21300 CL16 (HX426C16FB3/16)
  • 1 modulo NVMe – Kingston A400 SSD 960 GB (SA400S37/960G)
  • 2 discos Western Digital SSD WD Green – 120GB, SATA III, 2.5″ (WDS120G2G0A)

La máquina corre Debian Linux 10.3, y funciona como nuestro servidor de archivos (con Samba). Además es un host de dos máquinas virtuales con VMware Workstation 15.

El sistema operativo arranca desde el disco NVMe, y todos los archivos y las VMs viven en un volumen espejeado en dos discos:

Ambiente al final

Al final de la migración debe quedar de la siguiete manera:

La máquina ahora correrá Microsoft Hyper-V Server 2019, y lo que teníamos en el servidor de archivos server ahora será otra máquina virtual con Debian Linux 10.

Migración de datos

El primer problema es migrar los datos, que actualmente están en un volúmen RAID-1 formateado con ext4. El plan es el siguiente:

  1. Romper el arreglo RAID-1 para formatear uno de los discos en NTFS y dejar ahi los discos virtuales
  2. Transformar los VMDK a VHDX y copiarlos el NTFS
  3. Una vez que estemos corriendo Hyper-V volver a crear el arreglo RAID-1

Esto lo hacemos de la siguiente manera:

  • Desde el host actual con Linux, romper el arreglo RAID-1 y remover el disco /dev/sda del arreglo:
mdadm --fail /dev/mda /dev/sda
mdadm --remove /dev/md0 /dev/sda
  • Instalar Hyper-V en el disco NVMe
  • En Hyper-V los discos se ven asi:
    • Disk 0: Disco Seagete #1 — Este disco se va a formatear con NTFS
    • Disk 1: Disco Seagate #2 — Este disco se deja con ext4 (tiene los datos)
    • Disk 2: Disco NVMe
  • Preparar disco 1 para uso de Hyper-V
DISKPART
SELECT DISK 0
CLEAN
CONVERT DYNAMIC
CREATE VOLUME SIMPLE
ASSIGN LETTER=E
FORMAT FS=NTFS QUICK
  • Compartir disco para tener acceso desde la estacion de trabajo:
NET SHARE DATASTORE=E:\ /GRANT:Administrator,CHANGE
  • En el servidor Hyper-V preparar el disco 1 para montarse directamente en la VM “server”
SELECT DISK 1
OFFLINE DISK
  • Crear nueva VM con Debian llamada “server” y asignarle dos discos:
    • Disco 1: Archivo VHDX que vive en el disco NVMe
    • Disco 2: Acceso físico al disco #1 (que será montado en /mnt)
  • Desde la nueva VM se copian los datos del disco#2 al disco #1
cp -r /mnt/home/public /home/public
  • En la VM “server” se habilita una carpeta compartida “vmware” con Samba donde se comparten los VMDKs del VMware Workstation.
  • Los discos de VMware estan en formato ESXi (tipo 4) que no es soportado por Microsoft Virtual Machine Converter, de manera que hay que convertirlos de formato con vmware-vdiskmanager y dejarlos en C:\TEMP en la estación de trabajo:
vmware-vdiskmanager -r "\\server\vmware\nvr\nvr-0.vmdk" -t 6 c:\temp\nvr-0.vmdk"
vmware-vdiskmanager -r "\\server\vmware\unifi\unifi-0.vmdk" -t 6 c:\temp\nvr-0.vmdk"
  • Ahora falta copiar y convertir los discos virtuales de las VM “nvr” y “unifi”. Vamos a utilizar la herramienta Microsoft Virtual Machine Converter:
Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "C:\temp\nvr-0.vmkd" -DestinationLiteralPath "\\hyperv\datastore\VirtualDisks\nvr-0.vhdx" -VhdType DynamicHardDisk -VhdFormat vhdx -Verbose
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "C:\temp\unifi-0.vmkd" -DestinationLiteralPath "\\hyperv\datastore\VirtualDisks\unifi-0.vhdx" -VhdType DynamicHardDisk -VhdFormat vhdx -Verbose

Activación de RAID-1 en Hyper-V

Una vez migrados todos los datos y convertidos los archivos VMDK a VHDX, podemos desmontar el disco 0 de la VM “server” y quitarlo de la configuración.

Finalmente se agrega el disco al volumen dinámico en Hyper-V:

DISKPART
SELECT VOLUME E:
ADD DISK=0

Validamos la configuración del volumen:

Conclusiones

Hemos logrado los objetivos:

  • El hypervisor paso de ser un tipo 2 a un tipo 1.
  • El Linux (que era mi hypervisor tipo 2) quedó virtualizado
  • Las otras dos máquinas fueron transformadas de VMware a Hyper-V
  • Los discos trabajan en un arreglo RAID-1 controlado a nivel hypervisor.