Monitorización de estado de discos RAID mediante herramientas de línea de comandos

En servidores dedicados, la disponibilidad y la integridad del almacenamiento son críticos. Monitorizar el estado de los discos que forman un RAID permite detectar degradaciones, predecir fallos y automatizar respuestas antes de que un incidente provoque pérdida de servicio. Esta guía práctica, orientada a administradores y responsables de infraestructura, repasa las herramientas de línea de comandos más fiables (mdadm, smartctl y utilidades de fabricantes), muestra ejemplos reales y propone una configuración de alertas y buenas prácticas.

Por qué monitorizar RAID desde la línea de comandos

Las soluciones de monitorización integradas o basadas en agentes aportan visibilidad, pero la línea de comandos es imprescindible por varias razones:

  • Permite diagnósticos rápidos y reproducibles en entornos sin interfaz gráfica.
  • Facilita la automatización mediante scripts y systemd/cron.
  • Acceso a información detallada no siempre expuesta por interfaces web.
  • Es indispensable para debugging cuando la red o servicios de monitorización están caídos.

Conceptos básicos

Antes de ejecutar comandos conviene recordar dos capas distintas:

  • Capa de software RAID (p. ej. mdadm en Linux): gestiona arrays a nivel de kernel.
  • Capa física / hardware RAID: controladoras que exponen arrays a nivel de firmware o mediante utilidades propietarias.

Para una explicación técnica del concepto RAID, consulta la entrada en Wikipedia.

Herramientas para RAID software (mdadm)

En Linux, mdadm es la herramienta estándar para crear, gestionar y monitorizar arrays software. Algunas operaciones y comprobaciones útiles:

  • Ver el estado del array: mdadm --detail /dev/md0
  • Listar arrays activos: cat /proc/mdstat
  • Monitor en tiempo real (daemon): configurar mdadm --monitor para enviar emails o ejecutar scripts ante eventos.

Ejemplo: comprobar /dev/md0 y extraer disco degradado

# Ver estado
mdadm --detail /dev/md0

# Si detectas un disco fallado, marcarlo faulty y remover
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md0 --remove /dev/sdb1

# Añadir reemplazo y reconstruir
mdadm --manage /dev/md0 --add /dev/sdb1

Automatizar notificaciones con mdadm: en /etc/mdadm/mdadm.conf puedes definir MAILADDR para recibir avisos y lanzar el daemon mdadm --monitor --scan --daemonise --syslog.

Comprobación S.M.A.R.T. con smartctl

S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) es la fuente principal de telemetría de salud de discos. smartctl (del paquete smartmontools) permite leer valores, lanzar tests y obtener registros:

  • Estado rápido: smartctl -H /dev/sda
  • Atributos SMART: smartctl -A /dev/sda
  • Logs de errores: smartctl -l error /dev/sda
  • Test corto y verificación: smartctl -t short /dev/sda y luego smartctl -a /dev/sda

Ejemplo de script básico que devuelve fallo si alguno de los discos tiene un umbral crítico:

#!/bin/bash
for d in /dev/sd[a-z]; do
  if smartctl -H "$d" | grep -q 'FAILED'; then
    echo "SMART FAIL on $d" 1>&2
    exit 1
  fi
done
exit 0

Atención: en arrays hardware la interfaz a los discos físicos puede no estar directamente expuesta como /dev/sdX; en esos casos hay que usar las utilidades del fabricante o consultar cómo exponer S.M.A.R.T. desde la controladora.

Herramientas para hardware RAID

Controladoras populares (LSI/Avago/Broadcom, HPE, Adaptec, Dell PERC) ofrecen utilidades en línea de comandos con información sobre baterías, cachés y estado de discos. Ejemplos frecuentes:

  • LSI/Avago: storcli, megacli (o su reemplazo storcli64)
  • HPE: hpacucli / hpssacli
  • Adaptec: arcconf
  • Dell: omreport / omconfig (OpenManage) en sistemas Dell

Comandos típicos (ejemplos genéricos):

# LSI storcli: mostrar controladora y estado de los discos
storcli /c0 show
storcli /c0 /eall /sall show

# Megacli (antiguo): estado de adaptador
megacli -AdpAllInfo -aALL

Cada herramienta tiene su salida y códigos; automatiza parsing con scripts o usa herramientas de integración con sistemas de monitoring (Nagios, Zabbix, Prometheus exporters).

Alertas, automatización y pruebas

La monitorización eficaz no es solo comprobar manualmente: hay que automatizar alertas y simular fallos para validar procedimientos.

Tipos de alertas recomendadas

  • SMART: atributos críticos (Reallocated_Sector_Ct, Current_Pending_Sector, UDMA_CRC_Error_Count)
  • Estado RAID: disco marcado como failed, array en degraded, reconstrucción incompleta
  • Controladora: batería del cache baja, pérdida de batería, temperatura elevada

Integración con sistemas de monitorización

Integrar scripts en Nagios/Zabbix/Prometheus ofrece centralización. Un enfoque sencillo es:

  • Script de chequeo que retorne código de estado y mensaje legible.
  • Comprobaciones periódicas desde el servidor o un agente central.
  • Escalar a alertas por email/SMS/Slack cuando el estado sea crítico.

Para gestión de logs y retención, sigínate buenas prácticas de gestión de logs recomendadas por NIST en su guía sobre gestión de logs: NIST SP 800-92.

Pruebas y validación

  • Simula la remoción de un disco en un entorno de ensayo y valida que las alertas y la reconstrución funcionan.
  • Programa tests S.M.A.R.T. cortos semanalmente y tests largos mensuales en horarios de baja carga.
  • Documenta pasos y plazos de RTO/RPO para reemplazo de discos en producción.

Buenas prácticas operativas

  • Monitorea tanto la capa RAID como la salud SMART de cada disco; ambas aportan señales distintas.
  • Evita dependencias únicas: replicas, backups regulares y pruebas de restauración.
  • Controla temperatura y ventilación: la termal es un factor clave en fallo de discos.
  • Registra todos los eventos de mantenimiento y cambios de discos en un CMDB o ticketing.
  • Usa scripts idempotentes y versionados en Git; documenta alertas y umbrales.

Ejemplo práctico: script combinado

Un script simple que combina smartctl y mdadm puede ejecutarse por cron y devolver código 2 si hay fallo crítico:

#!/bin/bash
# check-raid.sh
# 1) Revisar mdadm
if mdadm --detail --scan | grep -q 'degraded'; then
  echo 'RAID DEGRADED' && exit 2
fi

# 2) Revisar SMART
for d in /dev/sd[a-z]; do
  if smartctl -H "$d" | grep -q FAILED; then
    echo "SMART FAIL on $d" && exit 2
  fi
done

echo 'OK' && exit 0

Añádelo en cron o como service con systemd. En caso de fallo, envía notificación por mail o webhook a tu sistema de incidentes.

Consideraciones finales

La monitorización de discos RAID desde la línea de comandos es una práctica imprescindible en servidores dedicados: ofrece control fino, permite actuar rápidamente y se integra fácilmente con sistemas de monitorización y automatización. Combina mdadm para software RAID, smartctl para telemetría S.M.A.R.T. y las utilidades del fabricante para controladoras hardware. Automatiza alertas, prueba procedimientos y documenta todo el proceso de gestión de fallos.

Conclusión

Implementar una estrategia sólida de monitorización RAID reduce el riesgo de incidentes y mejora los tiempos de recuperación. Empieza por auditar las herramientas disponibles en tu infraestructura, configura checks regulares (SMART + RAID), automatiza notificaciones y realiza pruebas periódicas de sustitución. Con estos pasos minimizarás la probabilidad de pérdida de datos y asegurarás una alta disponibilidad en tus servidores dedicados.

Lecturas recomendadas: documentación técnica sobre RAID en Wikipedia y la guía de gestión de logs de NIST SP 800-92 para integrar registros y alertas de forma segura y auditable.