Problema
Los entusiastas de la infraestructura casera suelen combinar servidores antiguos, tarjetas aceleradoras y discos de alta velocidad para ejecutar cargas de trabajo de IA, contenedores y servicios de respaldo. Cuando la arquitectura incluye varios tipos de CPU (EPYC, Xeon, Power8), GPUs de consumo (RTX 3090) y GPUs de centro de datos (Tesla P100, A2), además de almacenamiento NVMe, SAS y cintas LTO, la complejidad de la gestión crece rápidamente. Los síntomas típicos son:
- Saturación intermitente de los enlaces de 10 GbE, aunque el ancho de banda nominal parece suficiente.
- Inestabilidad de los nodos GPU bajo carga prolongada (reinicios, throttling).
- Dificultad para exponer volúmenes NVMe a máquinas virtuales sin perder rendimiento.
- Confusión al asignar recursos de RAM y CPU entre Proxmox, contenedores y máquinas virtuales.
En esencia, el problema es cómo diseñar una arquitectura homelab que mantenga rendimiento, estabilidad y facilidad de gestión pese a la heterogeneidad del hardware.
Causa
-
Red sin segmentación adecuada
Con varios enlaces de 10 GbE y 2.5 GbE compartidos entre almacenamiento NFS, tráfico de IA y gestión, el tráfico de control compite con el de datos. La falta de VLANs o QoS provoca colisiones y pérdida de paquetes. -
Distribución de energía y refrigeración insuficiente
GPUs de alta potencia (RTX 3090, Tesla P100) generan más de 300 W cada una. Si el rack no tiene una distribución de carga eléctrica balanceada, los breakers se disparan o la fuente de alimentación entra en modo de protección térmica. -
Asignación estática de recursos en Proxmox
Cuando se crean VM o LXC con valores fijos de vCPU y RAM, cualquier cambio en la carga (por ejemplo, iniciar un nuevo experimento LLM) obliga a re‑planificar manualmente, lo que lleva a sobre‑commit o a sub‑utilización. -
Acceso directo a dispositivos NVMe sin pasar por un pool de almacenamiento
Conectar discos NVMe directamente a VM puede romper la consistencia de ZFS o de LVM, y dificulta la migración de máquinas entre hosts. -
Falta de monitorización centralizada
Sin un stack de métricas (Prometheus + Grafana, por ejemplo), los cuellos de botella aparecen solo cuando el servicio ya está degradado.
Solución
Una arquitectura modular basada en tres capas simplifica la gestión:
1. Red de datos segmentada
- VLANs: crea al menos tres VLANs –
10GbE-Storage(NFS, iSCSI),10GbE-Compute(tráfico GPU, RDMA) yMgmt(SSH, API). - QoS: asigna prioridad alta a la VLAN de almacenamiento; la de gestión puede usar DSCP EF.
- LACP: agrupa los dos puertos de 10 GbE en un LAG activo‑activo para balanceo de carga y redundancia.
2. Distribución eléctrica y refrigeración
- Balanceo de fases: conecta cada rack a una fase distinta del panel eléctrico para evitar picos.
- UPS dimensionado: calcula la carga total (potencia GPU × n + CPU × n + discos) y añade un margen del 20 %.
- Ventilación dirigida: usa ventiladores de extracción en la parte superior del rack y de suministro en la base; coloca los servidores GPU en la zona más fresca.
3. Proxmox con pools de recursos
- CPU pinning: asigna rangos de cores físicos a grupos de VM (
hostpci0para GPU,hostpci1para NVMe). - Memory pools: define
memoryyballoonen la plantilla de VM para que Proxmox ajuste dinámicamente la RAM según la carga. - GPU passthrough con vfio-pci: usa
vfio-pcipara exponer cada GPU a una VM dedicada; mantén unGPU‑poolpara balancear la carga cuando una VM no necesita aceleración.
4. Almacenamiento unificado
- ZFS on Linux: crea un pool
tankcon los SSD SAS y los NVMe como vdevs híbridos (mirror+cache). - iSCSI target: exporta LUNs a Proxmox usando
targetcli. Las VM acceden a bloques sin conocer la topología física. - Snapshots y replicación: habilita
zfs send/recva la biblioteca LTO para backups offline.
5. Monitorización y alertas
- Node Exporter en cada host para métricas de CPU, RAM, temperatura y consumo eléctrico.
- GPU Exporter (nvidia‑smi) para exposición de uso de memoria y potencia.
- Grafana dashboards preconfigurados para visualizar cuellos de botella de red y de almacenamiento.
- Alertmanager con notificaciones por Telegram o correo cuando la temperatura supera 80 °C o el uso de enlace supera el 85 %.
Cuándo aplicar esta solución
- Síntomas de saturación de red: latencia alta en NFS, caídas de contenedores al iniciar trabajos de IA.
- Reinicios inesperados de GPUs: logs de
nvidia-smiindican throttling térmico. - Migraciones frecuentes de VM: cuando se necesita mover cargas entre nodos sin perder acceso a discos NVMe.
- Escalado de workloads AI: cuando se añaden más tarjetas GPU y la carga de entrenamiento supera la capacidad actual.
No es necesario aplicar todo el stack si el homelab solo ejecuta servicios ligeros (p. ej., solo contenedores Docker). En entornos con una única GPU y almacenamiento local, la segmentación de red y la monitorización básica pueden ser suficientes.
Código
# Configuración básica de LACP en un switch Cisco
interface Port-channel1
description LAG-10GbE-Compute
switchport mode trunk
switchport trunk allowed vlan 10,20,30
spanning-tree portfast trunk
lacp system-priority 32768
exit
# Proxmox: crear un pool de memoria y asignar a una VM
pvesh create /pools -poolid gpu-pool -comment "GPU‑bound VMs"
pvesh set /nodes/node1/qemu/101/config -memory 32768 -balloon 16384 -cpuunits 2048
pvesh set /pools/gpu-pool/vms/101
Verificación
- Ping intra‑VLAN: desde un host en
10GbE-Computeverifica que la latencia a la IP del NFS sea < 1 ms. - GPU health: ejecuta
nvidia-smi -q -d POWERy comprueba que la potencia media esté por debajo del 80 % de la TDP. - ZFS health:
zpool status -v tankdebe mostrarONLINEy sin errores de checksum. - Alertas: dispara una alerta artificial (por ejemplo, aumenta la carga de CPU al 100 %) y confirma que Grafana envía la notificación configurada.
Notas adicionales
- Cuando uses tarjetas Tesla con NVLink, habilita
nvidia-persistencedpara evitar la pérdida de contexto al reiniciar la VM. - Si el rack está en un sótano con alta humedad, añade deshumidificadores; la condensación es una causa frecuente de fallos intermitentes en discos SAS.
- Documenta siempre la asignación de PCI IDs en
/etc/modprobe.d/vfio.conf; un error tipográfico puede impedir que el GPU pase al modovfio-pci. - Considera usar Proxmox Backup Server para snapshots de VM en la biblioteca LTO; la velocidad de restauración es mucho mayor que la de cinta tradicional.