Problema

En muchos homelabs compactos el chasis, la disposición de los discos y la falta de ventilación provocan temperaturas críticas en la CPU y en los SSDs. Cuando el rack se coloca “sideways” bajo una repisa, el flujo de aire natural se corta y los ventiladores de los servidores no pueden expulsar el calor de manera eficiente. El síntoma típico es que la CPU se acerca a los 90 °C bajo carga, los discos emiten ruidos de alta velocidad y el sistema dispara throttling o apagados de emergencia. El problema no es exclusivo de un modelo de caja; ocurre siempre que el espacio disponible es limitado y la ventilación no se diseña pensando en la orientación horizontal.

Causa

  1. Obstrucción del flujo de aire

    • La posición horizontal bloquea la entrada de aire frío en la parte frontal y la salida caliente en la parte trasera.
    • Los cables y los discos montados en bahías laterales crean turbulencias que reducen la eficiencia del ventilador del CPU.
  2. Ventiladores subdimensionados

    • Fans de 120 mm a 30 % de PWM no mueven suficiente aire para disipar el calor generado por CPUs de 6‑12 núcleos y varios SSDs NVMe.
    • La curva de velocidad‑flujo no se ajusta a la carga térmica real.
  3. Distribución de calor en el chasis

    • Los discos de 3,5 " y los SSDs NVMe suelen estar alineados en la misma zona que el disipador del CPU, creando “puntos calientes”.
    • La falta de separadores térmicos entre bahías intensifica el problema.
  4. Redundancia de componentes

    • Añadir más HDDs sin ampliar la ventilación aumenta la densidad térmica. Cada 1 TB adicional de HDD genera ~2 W de calor estático.

Solución

1. Rediseñar la ruta de aire

  • Entrada frontal: Instala un filtro de malla de 120 mm en la cara frontal del rack. Conecta un ventilador de alta presión (≥ 70 CFM) a 12 V y controla su PWM al 50‑70 % para evitar ruido excesivo.
  • Salida trasera: Coloca un ventilador de extracción del mismo tamaño justo detrás del disipador de la CPU. Si el rack está bajo una repisa, deja al menos 2 cm de espacio libre para que el aire caliente escape.
  • Canal lateral: Usa tiras de 38 mm (como las que el autor del post menciona) en los laterales del chasis para crear un flujo cruzado que arrastre el aire caliente de los discos hacia la salida trasera.

2. Control dinámico de velocidad

Implementa un controlador PWM basado en sensores de temperatura (lm-sensors o ipmi). Un script sencillo lee la temperatura de la CPU y ajusta el duty cycle del ventilador principal.

#!/usr/bin/env bash
# Ajuste automático de ventilador según temperatura de la CPU
while true; do
  temp=$(sensors | awk '/Package id 0/ {print int($4)}')
  if (( temp > 80 )); then
    echo 255 > /sys/class/hwmon/hwmon0/pwm1   # 100 % velocidad
  elif (( temp > 70 )); then
    echo 180 > /sys/class/hwmon/hwmon0/pwm1   # 70 %
  elif (( temp > 60 )); then
    echo 120 > /sys/class/hwmon/hwmon0/pwm1   # 45 %
  else
    echo 80 > /sys/class/hwmon/hwmon0/pwm1    # 30 %
  fi
  sleep 10
done

Guarda el script como /usr/local/bin/fanctl.sh, hazlo ejecutable y añádelo a crontab con @reboot.

3. Reorganizar los discos

  • Separar SSDs y HDDs: Monta los SSD NVMe en la bahía superior del chasis, lejos del disipador. Coloca los HDDs en la zona inferior, donde el aire ya está caliente y no afecta al procesador.
  • Usar separadores térmicos: Inserta láminas de aluminio delgadas entre las bahías de 3,5 “. Esto refleja el calor y evita que los discos lo transmitan al resto del chasis.

4. Mejorar la gestión del cableado

  • Rutas limpias: Agrupa los cables de alimentación y datos con bridas y pásalos por la parte trasera del rack. Evita que cuelguen dentro del flujo de aire.
  • Etiquetado: Identifica cada cable para facilitar futuros cambios sin desarmar todo el rack.

5. Monitoreo continuo

Integra sensores de temperatura en Grafana/Prometheus (ya que el autor los usa). Añade alertas cuando la CPU supere 75 °C o cualquier disco supere 50 °C. Esto permite actuar antes de que el throttling cause interrupciones.

Cuándo aplicar esta solución

  • Síntomas: Temperaturas de CPU > 80 °C bajo carga, ruido de ventiladores al máximo, throttling reportado por el hypervisor.
  • Entorno: Rack DIY colocado horizontalmente, sin ventilación forzada, con más de 2 TB de HDD y al menos un NVMe activo.
  • No aplica: Servidores en racks estándar con flujo de aire vertical y refrigeración por aire acondicionado; o cuando el chasis ya incluye ventiladores de alta presión y control PWM integrado.

Verificación

  1. Comprobar velocidad del ventilador

    cat /sys/class/hwmon/hwmon0/pwm1
    

    El valor debe variar entre 80 y 255 según la carga térmica.

  2. Monitorizar temperaturas

    • En Proxmox, abre la consola de node y ejecuta sensors.
    • En Grafana, verifica que la métrica node_cpu_temperature_celsius se mantenga bajo 70 °C en picos de carga.
  3. Auditar ruido

    • Cierra la puerta del closet y escucha. Si el ruido es imperceptible, la velocidad del ventilador está dentro del rango aceptable.
  4. Revisar estabilidad

    • Ejecuta una carga de prueba (por ejemplo, stress-ng --cpu 8 --timeout 300s). Si el sistema no entra en throttling y los logs de Proxmox no muestran eventos de sobrecalentamiento, la solución está funcionando.

Notas adicionales

  • Filtros de polvo: Cambia la malla cada 3‑4 meses; el polvo reduce el CFM en hasta un 30 %.
  • Ventiladores de 38 mm: Son útiles en espacios estrechos, pero verifica que el controlador PWM los soporte; algunos requieren alimentación de 5 V.
  • Backup de hardware: Cuando se añaden discos, actualiza la política de backup (por ejemplo, usa Proxmox Backup Server) para evitar pérdida de datos por fallos de disco por calor.
  • Redundancia de red: Mantén la arquitectura 10 G SFP+ separada del rack de almacenamiento; un switch dedicado en la repisa reduce la carga térmica del chasis principal.

Con estos ajustes, cualquier homelab compacto puede operar bajo una repisa sin sacrificar rendimiento ni fiabilidad. La clave está en crear un flujo de aire controlado, ajustar dinámicamente la velocidad de los ventiladores y organizar los componentes para que el calor no se acumule en zonas críticas.