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.

Instalar drivers del SheevaPlug JTAG

Al utilizar un “plug computer” como el SheevaPlug o el DreamPlug, tenemos que utilizar el adaptador JTAG para conectarnos a la consola del equipo. Este JTAG tiene incorporado un convertidor de USB a Serial que requiere un controlador. Si descargamos los controladores de este dispositivo desde la página del fabricante no se pueden utilizar directamente, es necesario ajustarlos un poco.

DreamPlug con JTAG

DreamPlug con JTAG

1. Descargar los controladores de puerto virtual FTDI desde la pagina oficial: http://www.ftdichip.com/Drivers/VCP.htm

2. Ejecutar el instalador sólo hasta el punto donde extrae los archivos. Cuando inicia el asistente de instalación, damos Cancel.

3. Abrimos el Command Prompt y nos cambiamos al directorio temporal donde el instalador extrajo los archivos y los copiamos a otra ubicación:

C:\Users\username>cd %TEMP%\FTDI-Driver
C:\Users\username\AppData\Local\Temp\FTDI-Driver>mkdir C:\Drivers\F2232D
C:\Users\username\AppData\Local\Temp\FTDI-Driver>xcopy /s . C:\Drivers\F2232D

4. Ahora tenemos que editar los archivos INF y agregar las siguientes líneas en las secciones indicadas:

ftdibus.inf

[FtdiHw.NTamd64]
%USB\VID_9E88&PID_9E8F.DeviceDesc%=FtdiBus.NT,USB\VID_9E88&PID_9E8F
%USB\VID_9E88&PID_9E8F&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_9E88&PID_9E8F&MI_00
%USB\VID_9E88&PID_9E8F&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_9E88&PID_9E8F&MI_01

[Strings]
USB\VID_9E88&PID_9E8F.DeviceDesc="USB Serial Converter"
USB\VID_9E88&PID_9E8F&MI_00.DeviceDesc="USB Serial Converter A"
USB\VID_9E88&PID_9E8F&MI_01.DeviceDesc="USB Serial Converter B"

ftdiport.inf

[FtdiHw.NTamd64]
%VID_9E88&PID_9E8F.DeviceDesc%=FtdiPort2232.NT,FTDIBUS\COMPORT&VID_9E88&PID_9E8F

[Strings]
VID_9E88&PID_9E8F.DeviceDesc="USB Serial Port"

5. Eliminar cualquier controlador anterior (ver artículo relacionado)

6. Conectar el adaptador JTAG a un puerto USB. Aparecen los siguientes dispositivos en el Device Manager:

Image

 

7. Seleccionar el primero y dar clic derecho en Update Driver Software…

Image

8. Dar la ubicación que creamos en el paso #3

Image

9. Aparece una advertencia. Instalar el software de todas maneras.

Image

10. La instalación termina exitosamente.

Image

11. Ahora el segundo dispositivo aparece así:

Image

11. Repetir el mismo proceso con el “USB Serial Port”. Al finalizar, nos indicará que no se instaló correctamente (es normal) y aparecerá un puerto COM que no funciona.

12. Seleccionar el puerto y darle Update Driver Software…

13. Seleccionar Browse my computer for driver software.
14. Ahora seleccionar Let me pick from a list of device drivers in my computer.
15. Dejar seleccionado Show All Devices y dar clic en Next.
16. Dehabilitar la opcion Show compatible hardware
17. Seleccionar del fabricante FTDI el modelo USB Serial Port:

Image

18. Aparecerá una advertencia. Dar clic en Yes:

Image

19. El dispositivo ahora se instala correctamente:

Image

20. Ya tenemos nuestro convertidor puertos del JTAG configurado correctamente.

Eliminar drivers de puertos COM

Con la desaparición de los puertos RS-232 en la mayoría de las computadoras actuales nos vemos en la necesidad de utilizar convertidores de USB a puertos serie. A veces los drivers no funcionan bien o colisionan nos con otros, haciendo necesario la desinstalación completa de los mismos.

Este procedimiento nos ayuda a limpiar por completo cualquier driver que tengamos instalado, no solo para los convertidores de puertos, sino para cualquier otro uso.

1. Abrir el Command Prompt, ajustar la variable de ambiente devmgr_show_nonprsent_devices y abrir el Device Manager:

set devmgr_show_nonpresent_devices=1
devmgmt.msc

2.Desde el Device Manager habilitar la opción View > Show Hidden Devices.

3. Eliminar los dispositivos que ya no queremos

Ahora, debemos eliminar los paquetes de los controladores para que no se instalen automáticamente al volver a conectar el dispositivo:

1. Abrir el Command Prompt

2. Identificar los archivos INF de los controladores que nos interesa eliminar, mediante el comando pnputil:

C:\Users\Administrator>pnputil -e
Published name :            oem54.inf
Driver package provider :   FG
Class :                     Network adapters
Driver date and version :   07/14/2009 2009.7.14
Signer name :               Microsoft Windows Hardware Compatibility Publisher

Published name :            oem63.inf
Driver package provider :   FTDI
Class :                     Universal Serial Bus controllers
Driver date and version :   08/26/2014 2.12.00
Signer name :

Published name :            oem19.inf
Driver package provider :   Sierra Wireless Incorporated
Class :                     Network adapters
Driver date and version :   04/12/2012 12.4.1011.27
Signer name :               Microsoft Windows Hardware Compatibility Publisher

En este caso, el driver que quiero borrar es el FTDI, por lo tanto al archivo que me interesa es oem63.inf.

3. Eliminar el paquete de controladores:

pnputil -d oem63.inf

Con esto eliminamos por completo ese controalador y podemos hacer una instalación “limpia” de nuevo.

Instalar VMware ESXi 5.1 desde una memoria flash USB

Requisitos

  • SYSLINUX 3.86 (la versiones mas nuevas no funcionarán)
  • Archivo ISO para instalar VMware

Procedimiento

1. Insertar la memoria flash USB y darle formato con el sistema de archivos FAT-32

  1. FORMAT X: /Q /FS:FAT32

2. Instalar SYSLinux en la memoria flash USB

SYSLINUX X:

3. Montar el archivo ISO y copiar su contenido a la memoria flash.

4. En la memoria flash, renombrar el archivo ISOLINUX.CFG a SYSLINUX.CFG

5. Editar el archivo SYSLINUX.CFG y alterar la línea APPEND para que quede así:

APPEND -c boot.cfg -p 1

6. Conectar la memoria flash al servidor donde se instalará VMware e iniciar desde el dispositivo USB.