Problema
Muchas organizaciones escolares y medianas están dejando Hyper‑V para adoptar Proxmox VE por su modelo de código abierto y la flexibilidad de LXC/KVM. El reto no es solo “instalar Proxmox”, sino trasladar cientos de VMs, cambiar controladores de disco, migrar servicios críticos (AD, DNS, DHCP) a Linux y mantener la disponibilidad de almacenamiento iSCSI y la red de clúster. Cuando la infraestructura incluye varios hosts, enlaces LACP y backup externo, los errores aparecen en la conversión de discos, en la sincronización de AD con Samba y en la configuración de corosync sobre VLAN compartida. El objetivo es una migración ordenada que evite caídas de servicios y pérdida de datos.
Causa
- Conversión de discos – Hyper‑V usa VHDX con controladores virtIO‑SCSI. Proxmox requiere qcow2 o raw y necesita que los drivers virtIO estén presentes antes del primer arranque. Si el driver no está instalado, Windows arranca en modo “BSOD” o con rendimiento degradado.
- AD en Samba 4 – Samba puede actuar como DC, pero la replicación con controladores Windows exige que el esquema esté alineado y que el reloj del clúster sea preciso. Un desfase de segundos rompe la sincronización y genera errores de Kerberos.
- iSCSI desde QNAP – Proxmox accede a LUNs a través del initiator open‑iscsi. En RAID5 SSD la latencia es baja, pero la configuración de multipath y el uso de LACP pueden generar “path flaps” si la VLAN no está aislada correctamente.
- Corosync sobre LACP – Compartir la misma interfaz física con tráfico de VM y de clúster es posible, pero la congestión o la pérdida de paquetes en la unión LACP pueden provocar split‑brain.
- Backup PBS vs Veeam – PBS usa snapshots de QEMU y depende de VSS para Windows. Si el agente VSS no está instalado o la política de snapshot no está afinada, los backups no son consistentes.
- Hardware legado (Xeon E5‑2640, Gen 8) – El soporte de KVM está presente, pero algunos microcódigos de BIOS antiguos limitan VT‑d o la capacidad de pasar dispositivos PCIe a VMs.
Solución
1. Preparar los hosts y la red
- Actualizar BIOS a la última versión disponible y habilitar VT‑x/VT‑d.
- Crear dos puentes de Linux:
vmbr0(trunk de VM) yvmbr1(corosync + iSCSI). Asignar la LACP abond0y marcar la VLAN de corosync como “priority‑tagged”. - En el switch Juniper, confirmar que el LACP está en modo “active” y que el número de puertos coincide con los de los hosts.
2. Convertir VHDX → qcow2 con drivers VirtIO
- Instalar los drivers en la VM Hyper‑V
- Montar el ISO “virtio-win‑latest.iso”.
- En el Administrador de dispositivos, actualizar “SCSI controller” y “Network adapter” a los controladores “Red Hat VirtIO”.
- Exportar el VHDX
- Detener la VM y copiar el archivo VHDX a un storage accesible desde el nodo Proxmox.
- Ejecutar qemu‑img
qemu-img convert -f vhdx -O qcow2 /mnt/hyperv/vm01.vhdx /var/lib/vz/images/101/vm01.qcow2
- Crear la VM en Proxmox
- Usar
qm create 101 --name vm01 --memory 8192 --net0 virtio,bridge=vmbr0. - Añadir el disco con
qm set 101 --scsi0 local:101/vm01.qcow2. - Configurar el disco de arranque
bootdisk=scsi0.
- Usar
3. Implementar Samba 4 como DC
- Instalar
samba-ad-dcen Ubuntu 24.04 y ejecutarsamba-tool domain provision --use-rfc2307 --realm=EXAMPLE.COM --domain=EXAMPLE. - Unir los controladores Windows existentes con
samba-tool domain join. - Configurar
krb5.confynsswitch.confpara que los clientes Linux usen el nuevo DC. - Habilitar
dns forwarder = 8.8.8.8ensmb.confpara resolver internet. - Verificar replicación con
samba-tool drs showrepl.
4. iSCSI y multipath en Proxmox
- Instalar
open-iscsiymultipath-tools. - Añadir el target en
/etc/iscsi/initiatorname.iscsiy ejecutariscsiadm -m discovery -t sendtargets -p 10.0.0.10. - Activar multipath con
multipath -F && multipath. - En Proxmox, crear un “LVM over iSCSI” storage y asignar los LUNs a los nodos del clúster.
5. Corosync sobre LACP
- En
/etc/pve/corosync.confusar la interfazvmbr1y especificarbindnetaddr: 10.0.10.0. - Añadir
transport: knety definir los “link‑number” para cada NIC del bond. - Probar la latencia con
corosync-cfgtool -s.
6. PBS vs Veeam
- Instalar
proxmox-backup-serveren una VM dedicada. - En cada nodo Proxmox, registrar el datastore PBS (
pveam update && pveam available). - Para Windows, instalar el agente
vssvcdesde el paqueteproxmox-backup-client. - Crear una tarea de backup con
snapshotyprune-schedulepara retener 7 diarios, 4 semanales y 12 mensuales.
7. Orden de migración
- Linux VMs – Mover primero los servicios de monitoreo, UniFi, Home Assistant. Son los menos críticos y prueban la conectividad iSCSI y la red.
- Samba DC – Levantar el primer DC en Ubuntu, validar replicación, luego despromover uno de los controladores Windows.
- Windows VMs con drivers VirtIO – Migrar los que no dependen de VSS (por ejemplo, POS) antes de los que sí (FileMaker, Veeam).
- Servicios críticos con VSS – Configurar el agente VSS y ejecutar una prueba de backup antes de moverlos.
- Servicios legacy (Avaya, etc.) – Mantener en Hyper‑V hasta que la sustitución esté lista.
Cuándo aplicar esta solución
- Entornos mixtos con al menos 10 VMs Windows y varios Linux.
- Almacenamiento iSCSI gestionado por QNAP o similar y necesidad de alta disponibilidad.
- Requerimiento de AD sin depender exclusivamente de Windows Server.
- Hardware de generación Sandy Bridge donde la virtualización ya está soportada pero necesita ajustes de BIOS.
No es adecuada si:
- Solo se usan VMs Linux y no hay dependencia de AD.
- El storage es NFS o Ceph; la sección iSCSI no aplicaría.
- Se planea migrar a una nube pública en vez de mantener on‑premise.
Código
# 1. Convertir VHDX a qcow2
qemu-img convert -f vhdx -O qcow2 /mnt/hyperv/vm01.vhdx /var/lib/vz/images/101/vm01.qcow2
# 2. Descubrir iSCSI targets y habilitar multipath
iscsiadm -m discovery -t sendtargets -p 10.0.0.10
systemctl restart iscsid
multipath -F && multipath
# 3. Añadir nodo al clúster Proxmox
pvecm add 10.0.1.5 --force
# 4. Crear tarea PBS para Windows VM 101
proxmox-backup-client backup VM101 --repository proxmox:backup --snapshot --compress zstd
Verificación
- Arranque de VM – Verificar que Windows arranca sin BSOD y que el adaptador de red muestra “VirtIO”.
- Replicación Samba – Ejecutar
samba-tool drs showreply confirmar que todos los DC aparecen con “OK”. - Latencia iSCSI – Medir IOPS con
fio --name=randread --ioengine=libaio --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting. - Corosync health –
corosync-cfgtool -sdebe listar todos los nodos sin “offline”. - Backup PBS – Restaurar una VM de prueba y comprobar que los archivos están consistentes (especialmente bases de datos de FileMaker).
Notas adicionales
- En entornos con terremotos, considera habilitar
write cache=write backen los SSD y usarmdadmcon RAID10 en vez de RAID5 para mayor tolerancia a fallos. - Si el switch Juniper tiene “storm control” activado, desactívalo en los puertos de LACP; de lo contrario, el tráfico de VM puede ser limitado y afectar la migración en vivo.
- Para evitar “split‑brain” en corosync, configura
quorum.devicecon un “qdevice” externo (por ejemplo, un nodo de gestión) cuando el número de nodos sea impar. - Cuando uses PBS con VSS, revisa que la política de “snapshot‑mode” sea
snapshoty no `