Monitoreo de la Salud del Disco con smartctl y smartd
Introducción
smartctl es una utilidad de consola del paquete smartmontools, diseñada para trabajar con la tecnología S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) implementada en las unidades de almacenamiento modernas.
Casos de uso:
- servidores de empresas de hosting;
- nodos VPS/VDS;
- servidores dedicados;
- servidores de archivos;
- sistemas de respaldo;
- infraestructuras corporativas.
Qué tareas resuelve:
- detección temprana de degradación del disco;
- predicción de fallos en las unidades;
- reducción del riesgo de pérdida de datos;
- automatización del monitoreo de salud de HDD, SSD, NVMe;
- análisis de problemas físicos en el subsistema de discos.
El monitoreo proactivo de SMART permite identificar un problema antes de que ocurra una falla real del disco, lo cual es críticamente importante para entornos de producción.
Requisitos y prerrequisitos
Sistemas operativos y versiones compatibles:
Linux:
- Debian 10+
- Ubuntu 18.04+
- RHEL / AlmaLinux / Rocky Linux 8+
- CentOS 7 (compatible, pero obsoleto)
- FreeBSD 12+
Windows (a través de smartmontools, uso limitado)
Los ejemplos a continuación se proporcionan para Linux.
Software y paquetes requeridos:
- paquete smartmontools
- acceso a /dev/sdX, /dev/nvmeX
- sistema instalado systemd (para smartd)
Derechos de acceso:
- se requieren privilegios de root
- o acceso a través de sudo
Comprobaciones preliminares
Visualización de la lista de discos en el sistema:
lsblk -d -o NAME,MODEL
Visión general y conceptos básicos
Términos clave
- SMART – sistema de autodiagnóstico integrado del disco
- Atributos – atributos de estado (Reallocated_Sector_Ct, Pending_Sectors, etc.)
- Autoprueba – pruebas integradas de la unidad
- smartctl – utilidad CLI para la gestión de SMART
- smartd – demonio de monitoreo automático
Cómo funciona
- El disco recopila estadísticas de forma independiente
- smartctl lee estos datos
- smartd analiza los valores umbral y los eventos
- Se envían notificaciones cuando ocurren problemas
Lógica del flujo de trabajo
Disco > Atributos SMART > smartctl > smartd > registro / correo electrónico / monitoreo
Configuración básica y uso de smartctl
Instalación de la utilidad smartmontools
Trabajar con SMART es imposible sin el paquete smartmontools instalado, que incluye las utilidades smartctl (trabajo manual con discos) y smartd (demonio de monitoreo en segundo plano).
La instalación se realiza utilizando las herramientas estándar del gestor de paquetes de la distribución.
Debian / Ubuntu
sudo apt update
sudo apt install smartmontools
RHEL / AlmaLinux / Rocky Linux
sudo dnf install smartmontools
Después de la instalación, las utilidades están disponibles en el sistema y listas para su uso sin inicialización adicional.
Verificación de la versión y disponibilidad de smartctl
Como primer paso, se recomienda verificar que la utilidad esté correctamente instalada y disponible en el sistema:
smartctl --version
El comando muestra la versión del paquete y una lista de tecnologías compatibles.
Esto permite:
- asegurarse de que se está utilizando una versión actualizada;
- verificar la compatibilidad con NVMe, RAID y otros tipos de dispositivos.
Verificación de la compatibilidad de SMART en un disco específico
A continuación, es necesario verificar si la unidad en sí admite la tecnología SMART y si está habilitada a nivel del dispositivo.
sudo smartctl -i /dev/sda
Ejemplo de salida correcta:
SMART support is: Available - device has SMART capability. SMART support is: Enabled
Available – el disco admite físicamente SMART;
Enabled – la recopilación de datos SMART está activada y disponible para lectura.
Si SMART es compatible pero está deshabilitado, esto se ve a menudo en discos nuevos o previamente no utilizados. En tal caso, debe habilitarse manualmente:
sudo smartctl -s on /dev/sda
Después de esto, se recomienda volver a ejecutar el comando smartctl -i para asegurarse de que SMART esté activado.
Visualización de atributos SMART y evaluación inicial de salud
El valor práctico principal de SMART radica en sus atributos: valores numéricos que reflejan el estado de la superficie, mecánica y electrónica del disco.
Para ver los atributos, use el comando:
sudo smartctl -A /dev/sda
La salida contiene una tabla de atributos con sus valores actuales e historial. En primer lugar, se debe prestar atención a los siguientes indicadores:
Campos clave en la salida:
- VALUE (Valor Actual): El valor normalizado del atributo (generalmente de 1 a 100, siendo 100 ideal). El disco se considera defectuoso si VALUE ≤ THRESH.
- WORST (Peor Valor): El peor valor que se ha alcanzado durante el funcionamiento del disco.
- THRESH (Umbral): El valor mínimo permitido para VALUE. Superar el umbral (VALUE ≤ THRESH) es un signo de una condición crítica.
- RAW_VALUE: El valor "crudo", no normalizado del atributo. Esto es lo que se debe analizar para evaluar el desgaste y contar eventos.
Atributos clave para HDD (discos duros tradicionales):
- Reallocated_Sector_Ct: Un aumento indica degradación de la superficie física.
- Current_Pending_Sector (Sectores pendientes de reasignación): Sectores inestables. Incluso un solo valor distinto de cero es una señal de advertencia.
- Offline_Uncorrectable (Errores no corregibles): Sectores que no se pudieron leer.
- Power_On_Hours: El tiempo total de funcionamiento del disco.
Atributos clave para SSDs:
- Retired_Block_Count: El equivalente de Reallocated_Sector_Ct para HDDs. Muestra el número de bloques fuera de servicio. Incluso un valor bajo con VALUE=100 puede ser normal.
- Reallocated_Event_Count: El número de eventos de reasignación.
- SSD_Life_Left o Percentage Used/Media Wearout Indicator: El porcentaje de vida útil restante (o desgaste). Un valor bajo (por ejemplo, <10%) es un signo de falla inminente.
- Wear_Range_Delta: Un indicador de la uniformidad del desgaste en las celdas de memoria.
- Power_On_Hours_and_Msec: El tiempo total de funcionamiento.
- Lifetime_Writes_GiB / Lifetime_Reads_GiB (Atributos 241, 242): El volumen total de datos escritos/leídos.
Atributos clave para NVMe (a través de smartctl -a /dev/nvme0):
- Percentage Used: El porcentaje de la resistencia de escritura consumida. El indicador principal de desgaste.
- Media and Data Integrity Errors: Errores de integridad de datos.
- Critical Warning: Banderas de advertencia crítica.
- Temperature: Temperatura actual.
En esta etapa, el administrador obtiene una comprensión general del estado del disco y puede identificar signos evidentes de problemas.
Configuración avanzada y escenarios prácticos
SMART admite autopruebas integradas, que son realizadas por la unidad misma sin la intervención del sistema operativo.
La prueba corta está diseñada para una verificación rápida de los componentes clave:
sudo smartctl -t short /dev/sda
La prueba larga realiza un escaneo completo de la superficie y toma significativamente más tiempo:
sudo smartctl -t long /dev/sda
Después de completar la prueba, se deben verificar los resultados:
sudo smartctl -l selftest /dev/sda
La salida indica:
- el tipo de prueba;
- el estado de finalización;
- la presencia o ausencia de errores.
Una prueba fallida es una razón directa para prepararse para el reemplazo del disco.
Trabajando con controladores RAID
Los controladores RAID de hardware a menudo ocultan los datos SMART del sistema. En tales casos, se debe especificar explícitamente el tipo de dispositivo.
Ejemplo para un controlador LSI:
smartctl -a -d megaraid,0 /dev/sda
Dónde:
- -a – clave para mostrar toda la información SMART disponible (atributos, registros, errores, evaluación general de salud).
- -d – clave para especificar el tipo de dispositivo.
- megaraid – indica al controlador SMART que el disco está detrás de un controlador LSI/Broadcom (comúnmente utilizado en servidores).
- 0 – el número de disco físico (PD, Physical Drive) en el arreglo RAID. Esto no es sda, sino un ID único asignado por el controlador. Se puede encontrar utilizando la utilidad de gestión del controlador (por ejemplo, storcli o MegaCLI).
- /dev/sda – en este contexto, este no es el disco real, sino un pseudo-dispositivo que representa al controlador RAID en sí en el sistema. Normalmente, esto es /dev/sgX (SCSI Generic) o simplemente /dev/sda si el controlador ha creado un disco virtual.
Error típico cuando no se especifica el tipo de dispositivo:
SMART support is: Unavailable
Esto no significa que SMART no esté disponible, solo que smartctl no pudo determinar automáticamente la ruta al disco físico. La solución es especificar correctamente el parámetro -d.
Diagnóstico y resolución de problemas
Signos de posibles fallos:
- aumento en el valor de Reallocated_Sector_Ct;
- Current_Pending_Sector distinto de cero;
- errores de programación/borrado (Program_Fail_Count, Erase_Fail_Count);
- errores de autoprueba;
- aumento en la latencia de I/O;
- mensajes de error en los registros del sistema.
Análisis de registros:
journalctl -u smartd
dmesg | grep -i error
Explicación:
Pending Sectors > 0 – alto riesgo de falla;
Reallocated Sectors están aumentando – degradación progresiva;
Autoprueba FALLIDA – el disco debe ser reemplazado.
Identificación de fuentes de problemas
Para descartar falsos positivos, es importante correlacionar los datos SMART con la carga real.
iostat -x 1
iotop
Verificación de dónde está montado el disco:
lsblk -o NAME,SERIAL,MOUNTPOINT
Identificación de controladores:
lspci | grep -i raid
Métricas adicionales:
- temperatura por encima de 50 °C;
- aumento en errores CRC;
- valores SMART inestables.
Configuración de notificaciones al administrador cuando las métricas SMART se acercan a valores umbral
La mera presencia de datos SMART no garantiza la seguridad de la infraestructura. Un elemento clave del monitoreo es la notificación oportuna al administrador en el momento en que el estado del disco comienza a deteriorarse, pero aún no ha ocurrido una falla.
El mecanismo de notificación permite:
- detectar la degradación de la unidad en una etapa temprana;
- planificar el reemplazo del disco con anticipación;
- evitar tiempos de inactividad de emergencia y pérdida de datos;
- operar dentro de ventanas de mantenimiento programadas.
En smartmontools, el demonio smartd es responsable de enviar notificaciones. Rastrea automáticamente los cambios en los atributos SMART y responde a las desviaciones de la norma.
Principio de funcionamiento de las notificaciones de smartd
El demonio smartd funciona como un servicio en segundo plano y realiza las siguientes tareas:
- Sondea periódicamente los atributos SMART del disco.
- Compara los valores actuales con: umbrales de fábrica, valores anteriores (dinámica de cambio).
- Detecta: crecimiento de atributos críticos, aparición de nuevos errores, fallos en autopruebas.
- Genera una notificación y la envía al administrador.
Requisitos para que las notificaciones funcionen
Antes de la configuración, es necesario asegurarse de lo siguiente:
- un MTA (Postfix, Exim, Sendmail, ssmtp) está instalado y configurado correctamente en el sistema;
- el servidor es capaz de enviar correo saliente;
- la dirección de correo electrónico del administrador para recibir notificaciones está definida.
Ejemplo de configuración de ssmtp – un MTA ligero y simple para enviar correo desde el sistema.
Instalación:
Debian/Ubuntu:
sudo apt update && sudo apt install ssmtp mailutils -y
RHEL:
sudo dnf install ssmtp mailx
Crear el archivo de configuración:
sudo nano /etc/ssmtp/ssmtp.conf
y editar el contenido:
# Dirección de remitente predeterminada [email protected] # Servidor SMTP y puerto de su proveedor de correo electrónico mailhub=smtp.your-domain.com:587 # Ejemplo alternativo: # mailhub=smtp.gmail.com:587 # Para Gmail # Credenciales de autenticación [email protected] AuthPass=your-password # Configuración de cifrado UseSTARTTLS=YES # Usar STARTTLS UseTLS=YES # Usar TLS FromLineOverride=YES # Permitir sobrescribir la dirección del remitente # Nombre del host (especifique el nombre de su servidor) hostname=server1.your-domain.com # puede usar hostname=localhost o especificar el nombre real del sistema
Guarde el archivo y configure los permisos de acceso:
sudo chmod 640 /etc/ssmtp/ssmtp.conf
sudo chown root:mail /etc/ssmtp/ssmtp.conf
Configurar remitentes (revaliases):
sudo nano /etc/ssmtp/revaliases
root:[email protected]:smtp.your-domain.com:587 www-data:[email protected]:smtp.your-domain.com:587
Para el envío exitoso de mensajes, los siguientes puertos deben estar abiertos en el servidor: 587 (principal para el envío con cifrado STARTTLS), o 25 (SMTP estándar), 465 (SMTP seguro con SSL), si están proporcionados por la configuración.
Prueba básica de envío de correo:
echo "Mensaje de prueba SMART" | mail -s "Prueba de notificación SMART" [email protected]
Puede especificar explícitamente el remitente:
echo "Mensaje de prueba SMART" | mail -s "Prueba de notificación SMART" -a "From: [email protected]" [email protected]
O a través de ssmtp directamente:
echo "Mensaje de prueba SMART" | ssmtp [email protected]
[email protected] – la dirección del destinatario a la que se enviará el mensaje.
Si el correo electrónico no se entrega, la configuración adicional de smartd es inútil hasta que se resuelvan los problemas de entrega de correo.
La configuración de notificaciones SMART se realiza en el archivo:
/etc/smartd.conf
Ejemplo de una configuración simple y funcional:
/dev/sda -a -o on -S on -m [email protected]
Parámetros:
- /dev/sda – el disco que se está monitoreando;
- -a – conjunto completo de comprobaciones;
- -S on – el guardado de atributos entre reinicios está habilitado;
- -o on – la recopilación automática de datos fuera de línea está activada;
- -m – las notificaciones se envían al correo electrónico especificado.
A partir de este punto, smartd comenzará a monitorear el estado del disco en segundo plano.
Notificaciones al acercarse a valores umbral
Una característica clave de smartd es que monitorea los cambios en los valores de los atributos, no solo su superación crítica.
En la práctica, esto significa que se puede enviar una notificación:
- al aparecer por primera vez Current_Pending_Sector;
- al aumentar Reallocated_Sector_Ct, incluso si aún no se ha alcanzado el umbral;
- al detectar errores en autopruebas;
- al degradarse los parámetros NVMe.
Los atributos más significativos de fallos tempranos:
- Reallocated_Sector_Ct
- Current_Pending_Sector
- Offline_Uncorrectable
- Media and Data Integrity Errors (NVMe)
- Percentage Used (SSD/NVMe)
Incluso cambios mínimos en estos parámetros deben considerarse una razón para prestar atención.
Uso de autopruebas como fuente de notificaciones
Para aumentar la informatividad, se recomienda combinar el monitoreo de atributos con autopruebas regulares.
Ejemplo de configuración con un horario:
/dev/sda -a -o on -S on \ -s (S/../.././02|L/../../6/03) \ -m [email protected]
Lógica de operación:
- se realiza una prueba corta diariamente;
- se realiza una prueba completa una vez a la semana;
- ante cualquier fallo en la prueba, el administrador recibe una notificación.
Gestión de la frecuencia y volumen de notificaciones
Para evitar alertas excesivas, se utiliza el parámetro -M once:
/dev/sda -a -m [email protected] -M once
En este modo:
- se envía una notificación al detectar por primera vez un problema;
- los mensajes posteriores no se duplican hasta que se resuelva la causa.
Para probar el sistema de notificaciones, puede usar -M test. Esto le permite verificar que smartd es capaz de enviar mensajes sin esperar un error real.
Conclusión
Dentro del alcance de este manual, se ha revisado sistemáticamente el ciclo completo de implementación y operación de smartctl y el demonio smartd como herramienta para el monitoreo proactivo de la salud de los discos. Se han cubierto los principios básicos de funcionamiento de SMART, métodos prácticos para el análisis de atributos, lanzamiento e interpretación de autopruebas, especificidades de trabajar con unidades NVMe y controladores RAID, así como métodos de diagnóstico y técnicas para identificar las causas raíz de los problemas. Se ha prestado especial atención a la configuración de notificaciones, que permiten detectar la degradación de la unidad en etapas tempranas, incluso antes de que ocurra una falla crítica.
El monitoreo SMART correctamente configurado es una parte integral de una infraestructura de servidor confiable y debe considerarse un estándar operativo obligatorio. El uso de smartctl y smartd permite al administrador del sistema pasar de la resolución reactiva de incidentes a un mantenimiento consciente y gestionable del subsistema de discos, reduciendo los riesgos de tiempo de inactividad, pérdida de datos e incidentes no planificados, al tiempo que crea una base sólida para una mayor automatización e integración con sistemas de monitoreo centralizados.