Saltar a contenido

Caso de uso: biblioteca Plex grande con discos en spin-down

Receta concreta: Plex ve la biblioteca completa, y al reproducir una película solo gira el disco que la contiene (despierta en ~5–15 s). Este caso descarta el robot y se resuelve con la vía MAID: mergerfs+SnapRAID + caché de metadata en SSD + Plex configurado para no escanear/thumbnailear, + spin-down con hd-idle.

Contexto

Pedido del usuario (2026-05-31): "Plex sees the full library, but when a movie is accessed the disk starts to spin." Es el escenario interactivo por excelencia y un caso clásico de la comunidad DataHoarder.

Por qué este caso descarta el robot

Para Plex, la vía MAID/spin-down gana sin discusión sobre el swap robótico:

  • Latencia: un disco dormido despierta en ~5–15 s (power y hot plug) — tolerable para "darle play". El robot suma mover + mate + spin-up (decenas de s) y, peor, los scans de Plex pedirían archivos de muchos discos → el robot thrashearía mecánicamente.
  • Desgaste del conector: los patrones de acceso de Plex (scans, refresh, múltiples títulos) destruirían el conector de ~50 ciclos (restriccion conector sata).
  • Conclusión: discos conectados + spin-down, no robot.

El problema central: Plex despierta TODOS los discos

mergerfs debe consultar todas las branches en un readdir/stat; y Plex agrega scans periódicos, refresh y generación de thumbnails. Resultado naïve: cada scan despierta toda la pila, y los discos nunca duermen.

¿Cada cuánto escanea Plex? (los tres relojes)

Para domar el spin-down hay que entender que Plex toca disco por tres vías independientes:

Mecanismo Cada cuánto Qué despierta
A) Scan periódico ("Update my library periodically" + "Library update interval") Elegible: 15 min, 30 min, 1 h, 2 h, 6 h, 12 h o diario (o custom en segundos, 900–86 400). El reloj cuenta desde que arrancó el server, no en horario fijo. Un scan completo → con mergerfs, todos los discos.
B) Update automático ("Update my library automatically" + "partial scan") No es un timer: se dispara por inotify cuando cambia una carpeta. Con "partial scan", escanea solo la carpeta cambiada. Solo el disco de la carpeta que cambió (ideal).
C) Scheduled Tasks (ventana diaria de mantenimiento) 1×/día en una ventana configurable (típico de madrugada). Refresh de metadata, thumbnails, análisis profundo, optimización DB → despierta discos.

Configuración recomendada para spin-down

  • A) Scan periódico → OFF. No lo necesitas si usas B.
  • B) Update automático → ON + "Run a partial scan when changes are detected" → ON. Así Plex solo escanea cuando agregas algo (o lo hace Radarr/Sonarr), y solo esa carpeta. Si además el contenido nuevo aterriza primero en el SSD/pool de descargas (receta abajo), el scan ni siquiera toca los discos lentos.
  • C) Scheduled Tasks: desactivar las tareas que tocan media (thumbnails, deep analysis) o restringir la ventana; el refresh de metadata online no toca tus discos, pero la generación de thumbnails sí.

Resumen: con scan periódico off y update automático+parcial on, Plex deja de tener un "cada cuánto" fijo — escanea solo cuando cambia algo, y solo esa carpeta. Los discos quedan libres de despertar salvo por reproducción real.

Receta

1. Layout de almacenamiento (consolidar por disco)

  • Cada película (+ sus sidecars: subs, .nfo, artwork) vive ENTERA en un disco — garantizado por mergerfs (sin striping) y una create policy que agrupe (epff / "llenar disco por disco"). Así, reproducir = un solo disco gira. Ver mergerfs snapraid.
  • Pool de dos niveles: SSD/NVMe (caché + descargas) + discos lentos. La pool "cache" lista el SSD primero; policies ff/epff/lfs/eplfs.

2. Metadata y artwork en SSD (que el catálogo no toque los discos)

  • DB y metadata de Plex en SSD (no en los discos lentos). Plex muestra posters, títulos y navegación sin girar nada — exactamente el "índice navegable sin encender discos".
  • Opcional: bcache/lvmcache a nivel de bloque para que lecturas repetidas no peguen al disco lento.

3. Domar a Plex (settings)

  • Desactivar scans periódicos: Settings → Library → quitar "Scan my library periodically" (ScheduledLibraryUpdatesEnabled off).
  • Actualización dirigida: usar inotify ("Update my library automatically" / partial scan) o que Sonarr/Radarr disparen el scan solo de la carpeta nueva — nunca full scan.
  • Desactivar generación de thumbnails: "Video Preview Thumbnails" y "Chapter Thumbnails" → Never (alto I/O, impiden el sleep).
  • Desactivar/limitar análisis profundo, detección de intro/créditos y "Analyze" agendado.
  • (Apuntar tareas pesadas al SSD; en NAS débil, scanner a baja prioridad.)

4. Spin-down efectivo

5. Hardware (sin robot)

Resultado esperado

  • Navegar Plex: instantáneo, 0 discos girando (todo desde SSD).
  • Play de una peli: 1 disco despierta (~5–15 s de "buffering" inicial), el resto sigue dormido.
  • Consumo: cercano al idle de 1 disco + SSD, no de toda la pila (economia energia conectividad).

Variante avanzada: proxies en SSD

Se puede ir más lejos: guardar en el SSD versiones de baja resolución de cada película (no solo metadata), escanear/previsualizar sobre esas, y montar el HDD con el UHD solo al reproducir en calidad. Así ni la navegación ni la reproducción en baja tocan los discos. Es HSM con un tier de proxy reproducible + Plex Multi-Version. Detalle, arquitectura y salvedades en proxy tier ssd.

Relaciones

Citas / evidencia

Abierto / gaps

  • ✅ ¿Jellyfin mejora los escaneos? → jellyfin vs plex escaneos (mejora en control, no en el problema de fondo de mergerfs). Emby sin cubrir.
  • Receta exacta de inotify + Radarr/Sonarr para scans por carpeta.
  • Medir el peor caso: ¿algún cliente/agente de Plex sigue abriendo archivos (probe de codec) y despierta discos pese a todo?