jueves, 28 de julio de 2022

Preparar un disco de Citrix para Azure

Ahora que todas las empresas están moviendo elementos a la nube, evaluando costos y rendimiento, se dará el caso de querer mover VMs antiguas, instaladas, y en sistemas como Citrix, a entornos como Azure.
Tenemos la ventaja que el formato de discos de los XenCenter será un .vhd, igual que el que maneja Azure. Pero aun así si intentamos la subida, obtendremos un error:



The upload size in bytes 17989773824 - 512 bytes for the VHD footer (17989773312 in this case) must be a multiple of MiB.". Esto es debido a que debemos adaptar el tamaño de los bloques de disco a 1 MiB. Para ello, debemos lanzar una serie de comandos de powershell para verificar el tamaño del bloque. Estos comandos son los siguientes:

$vhd = Get-VHD -Path C:\test\MyNewVM.vhd
$vhd.Size % 1MB
Aquí normalmente dará un valor de "0"
$vhd.FileSize - $vhd.Size
Normalmente da un valo entre 512 y algo como 82720062976

También en el caso de que el disco sea un .vhdx, y para arreglarlo, utilizamos el siguiente comando:

Convert-VHD -Path C:\test\MyVM.vhdx -DestinationPath C:\test\MyNewVM.vhd -VHDType Fixed

Tambien puedes utilizarlo siendo un vhd, para pasarlo a vhd, con el sufijo "fixed"

Pero para realizar todo esto, tenemos un problema adicional: no se encontrarán los comandos necesarios en PowerShell:



Para solventarlo, debemos instalar el servicio de Hyper-V en el equipo que lanzará el comando. Vale con los servicios indicados en la captura:



No sirve instalar solamente el modulo de PowerShell, deben instalarse los componentes de Hyper-V indicados, prácticamente todos, menos el hypervisor, que no es necesario. Una vez esté instalado, podremos ejecutar los comandos descritos anteriormente, que ahora si, funcionarán correctamente:



Tras esto, solo queda subir el disco a Azure de la manera que cada uno decida. Tenemos la subida desde consola de PowerShell, la subida desde el navegador, y el uso de Azure Storage Explorer. Pero eso ya es historia para otro post.

Antes de subir el disco, hay que tener en cuenta que debe prepararse también el sistema operativo de forma adecuada, no solo el formato del disco, como hemos visto aquí. Es decir, asegurarse de eliminar las Citrix Tools, deshabilitar firewall, habilitar RDP, eliminar tarjetas de red, hacer un sysprep, etc...

IMPORTANTE: aunque el formato de salida de Citrix es vhd, igual que el que puede utilizar Hyper-V, los discos pueden no funcionar, en base a la BIOS elegida. De manera que aunque el proceso es correcto en base a la documentación y consultas a Microsoft, y el disco sube a Azure, la VM creada con este disco y en base a la eleccion de BIOS, puede no funcionar. 
Para que el proceso funcione, hay que tener en cuenta si en Citrix la VM funciona con BIOS o UEFI. En Caso de ser BIOS, a la hora de montar la VM en azure, deberemos seleccionar una nueva VM Gen1. En cambio, si fuese UEFI, debemos seleccionar Gen2. Adicionalmente y antes de subirla, se puede probar a ejecutar el vhd en Hyper-V, que ya que tenemos instalado el servicio...Si funciona, lo hará igualmente en Azure.

Si te ha gustado el articulo, puedes invitarme a un café ;)