smartmontools lee los datos S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) que guardan los propios discos HDD, SSD y NVMe, y permite detectar un disco que se está degradando antes de que falle del todo. Incluye dos programas: smartctl, para consultar un disco y lanzar pruebas a mano, y smartd, un demonio que vigila los discos de forma continua. En este tutorial instalarás smartmontools en Ubuntu 24.04, aprenderás a leer los atributos que importan, lanzarás autotests y configurarás smartd para que programe pruebas y te envíe alertas por correo.
Requisitos previos
- Un servidor físico con Ubuntu 24.04 LTS, por ejemplo un servidor dedicado (bare metal) de CubePath, con discos SATA, SAS o NVMe.
- Un usuario no root con privilegios
sudo. - Para las alertas por correo: un agente de correo que funcione en el servidor (por ejemplo Postfix configurado como relay) y el comando
mail(paquetemailutilsobsd-mailx).
Notaen un VPS los discos son virtuales (VirtIO) y no exponen datos SMART. La salud del almacenamiento físico de un VPS la vigila el proveedor, así que esta guía solo tiene sentido en hardware dedicado.
Paso 1: Instalar smartmontools
smartmontools está en los repositorios oficiales de Ubuntu. Instálalo con --no-install-recommends para que apt no arrastre un servidor de correo que quizá no quieras:
sudo apt update
sudo apt install --no-install-recommends smartmontools
Comprueba la versión instalada:
smartctl --version | head -n 1
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-45-generic] (local build)
El paquete instala y arranca el servicio smartmontools (con el alias smartd). Comprueba que está activo:
systemctl status smartmontools --no-pager
● smartmontools.service - Self Monitoring and Reporting Technology (SMART) Daemon
Loaded: loaded (/usr/lib/systemd/system/smartmontools.service; enabled; preset: enabled)
Active: active (running) since ...
Paso 2: Localizar los discos
Pide a smartctl que busque los dispositivos que puede consultar:
sudo smartctl --scan-open
/dev/sda -d sat # /dev/sda [SAT], ATA device
/dev/sdb -d sat # /dev/sdb [SAT], ATA device
/dev/nvme0 -d nvme # /dev/nvme0, NVMe device
La opción -d indica el tipo de acceso. En discos conectados directamente no hace falta pasarla, pero si un disco está detrás de una controladora RAID hardware tendrás que indicarla (lo verás en la sección de solución de problemas).
Consulta la información básica de un disco para confirmar que SMART está disponible y activado:
sudo smartctl -i /dev/sda
Device Model: Samsung SSD 870 EVO 1TB
Serial Number: S6PUNX0T123456
Firmware Version: SVT02B6Q
User Capacity: 1,000,204,886,016 bytes [1.00 TB]
Rotation Rate: Solid State Device
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Si la última línea dice Disabled, actívalo con sudo smartctl -s on /dev/sda.
Paso 3: Comprobar el estado general y los atributos SMART
La comprobación más rápida es el veredicto global del disco:
sudo smartctl -H /dev/sda
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
PASSED solo significa que ningún atributo ha cruzado todavía el umbral de fallo del fabricante. Un disco puede dar PASSED y estar ya degradándose, así que conviene mirar los atributos:
sudo smartctl -A /dev/sda
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
9 Power_On_Hours 0x0032 097 097 000 Old_age Always - 12873
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
194 Temperature_Celsius 0x0022 067 052 000 Old_age Always - 33
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Always - 0
199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0
Fíjate en la columna RAW_VALUE. Estos son los atributos que mejor predicen un fallo en discos SATA:
| ID | Atributo | Qué indica | Qué hacer |
|---|---|---|---|
| 5 | Reallocated_Sector_Ct | Sectores defectuosos ya sustituidos por sectores de reserva | Cualquier valor mayor que 0 que siga creciendo indica un disco en declive |
| 187 | Reported_Uncorrect | Errores de lectura que el disco no pudo corregir | Planificar la sustitución si aumenta |
| 197 | Current_Pending_Sector | Sectores ilegibles pendientes de reasignar | Valor distinto de 0: comprobar backups y lanzar un test largo |
| 198 | Offline_Uncorrectable | Sectores que fallaron durante el escaneo offline | Valor distinto de 0: sustituir el disco |
| 199 | UDMA_CRC_Error_Count | Errores de transmisión entre disco y controladora | Suele ser el cable o el backplane, no el disco |
| 194 | Temperature_Celsius | Temperatura actual | Por encima de 50-55 °C de forma sostenida, revisar la refrigeración |
Para ver toda la información de golpe (identidad, atributos, registro de errores y de tests) usa sudo smartctl -x /dev/sda. Guardar esa salida de vez en cuando te permite comparar la evolución del disco.
Discos NVMe
Los NVMe no usan la tabla de atributos anterior, sino un registro de salud estándar:
sudo smartctl -a /dev/nvme0
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 38 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 4%
Data Units Written: 41,592,318 [21.2 TB]
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Unsafe Shutdowns: 12
Los valores clave son:
Critical Warning: debe ser0x00. Cualquier otro valor indica un problema (spare bajo, temperatura, modo solo lectura).Available Spare: bloques de reserva restantes. Si se acerca aAvailable Spare Threshold, sustituye la unidad.Percentage Used: desgaste estimado respecto a la resistencia nominal. A partir del 90 % planifica el reemplazo.Media and Data Integrity Errors: debe ser 0.
Paso 4: Lanzar autotests manualmente
Los discos pueden ejecutar pruebas internas sin detener el sistema. El test corto tarda un par de minutos y el largo lee toda la superficie (en un HDD grande puede tardar varias horas). Consulta cuánto dura cada uno en tu disco:
sudo smartctl -c /dev/sda | grep -A1 -i "self-test routine"
Lanza un test corto:
sudo smartctl -t short /dev/sda
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Cuando pase ese tiempo, revisa el registro de tests:
sudo smartctl -l selftest /dev/sda
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 12874 -
Si en Status aparece Completed: read failure con un valor en LBA_of_first_error, el disco tiene sectores ilegibles: comprueba las copias de seguridad y planifica su sustitución. Para un test largo usa -t long, y para cancelar un test en curso sudo smartctl -X /dev/sda. En NVMe los mismos comandos funcionan sobre /dev/nvme0.
Paso 5: Configurar smartd para vigilar los discos
smartd lee /etc/smartd.conf. La configuración por defecto de Ubuntu ya vigila todos los discos, pero no programa autotests ni envía correo a una dirección concreta. Haz una copia de seguridad del archivo original:
sudo cp /etc/smartd.conf /etc/smartd.conf.orig
Abre el archivo:
sudo nano /etc/smartd.conf
Comenta la línea DEVICESCAN existente añadiendo # al principio y añade esta otra al final del archivo, sustituyendo [email protected] por tu dirección:
DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -W 4,45,55 -m [email protected] -M diminishing -M test
Cada opción hace lo siguiente:
DEVICESCAN: vigila todos los discos quesmartddetecte. Cualquier línea situada después deDEVICESCANse ignora, por eso debe ser la única línea activa.-a: activa las comprobaciones habituales: estado global, atributos de fallo, registro de errores, resultado de autotests y aumento de sectores pendientes (197) y no corregibles (198).-o on -S on: activa la recogida offline automática y el guardado automático de atributos en discos ATA.-n standby,q: no despierta a los discos en reposo para comprobarlos.-s (S/../.././02|L/../../6/03): test corto cada día a las 02:00 y test largo los sábados a las 03:00.-W 4,45,55: avisa si la temperatura sube 4 °C entre comprobaciones, anota en el log a partir de 45 °C y envía un correo a partir de 55 °C.-my-M diminishing: envía las alertas a tu correo y espacia los avisos repetidos del mismo problema.-M test: envía un correo de prueba por cada disco al arrancarsmartd. Quítalo cuando confirmes que el correo llega.
Antes de reiniciar el servicio, comprueba que smartd interpreta la configuración y que la planificación es la esperada:
sudo smartd -q showtests
Next scheduled self tests (at most 5 of each type per device):
Device: /dev/sda [SAT], will do test 1 of type S at Thu Sep 25 02:00:00 2026 CEST
Device: /dev/sda [SAT], will do test 1 of type L at Sat Sep 27 03:00:00 2026 CEST
Aplica la configuración:
sudo systemctl restart smartmontools
Revisa el log para ver qué discos está vigilando:
sudo journalctl -u smartmontools -n 20 --no-pager
smartd[2143]: Device: /dev/sda [SAT], opened
smartd[2143]: Device: /dev/sda [SAT], is SMART capable. Adding to "monitor" list.
smartd[2143]: Device: /dev/nvme0, opened
smartd[2143]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list.
smartd[2143]: Monitoring 2 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices
smartd[2143]: Device: /dev/sda [SAT], Test of mail to [email protected]
Paso 6: Verificar las alertas por correo
smartd envía el correo con el comando mail, así que primero confirma que el servidor puede enviar correo:
echo "Prueba de correo desde $(hostname)" | mail -s "Prueba" [email protected]
Si este mensaje llega, al reiniciar smartd con -M test deberías recibir un correo por cada disco con el asunto SMART error (EmailTest) detected on host: .... Es solo una prueba. Cuando lo hayas recibido, quita -M test de /etc/smartd.conf y reinicia el servicio:
sudo systemctl restart smartmontools
Si no llega nada, revisa el log del agente de correo con sudo journalctl -u postfix -n 50 y la cola con mailq.
Solución de problemas
Disco detrás de una controladora RAID. Con controladoras LSI/Broadcom MegaRAID el sistema solo ve el volumen lógico y smartctl -a /dev/sda falla o no muestra atributos. Indica el número de disco físico con -d megaraid,N:
sudo smartctl -a -d megaraid,0 /dev/sda
Para vigilarlo con smartd, sustituye DEVICESCAN por una línea por disco, por ejemplo /dev/sda -d megaraid,0 -a -m [email protected] y /dev/sda -d megaraid,1 -a -m [email protected]. Con controladoras HBA en modo IT los discos se ven directamente y no hace falta.
Read Device Identity failed o Unknown USB bridge. El disco está detrás de un puente USB o una caja externa. Prueba con -d sat: sudo smartctl -a -d sat /dev/sdX.
smartd no arranca tras editar la configuración. Consulta el error exacto con sudo journalctl -u smartmontools -n 30 --no-pager. Suele ser una opción mal escrita o un paréntesis sin cerrar en -s. Restaura la copia con sudo cp /etc/smartd.conf.orig /etc/smartd.conf si necesitas volver a empezar.
Atributo 199 (UDMA_CRC_Error_Count) en aumento. No indica un fallo del disco, sino errores en el enlace. Cambia el cable SATA o el puerto del backplane y comprueba que el valor deja de crecer.
Conclusión
Ya tienes smartd vigilando todos los discos del servidor, con un test corto diario, uno largo semanal y alertas por correo cuando aparecen sectores reasignados, pendientes, errores o temperaturas altas. Recuerda que SMART no detecta todos los fallos: combínalo siempre con copias de seguridad y redundancia. Como siguientes pasos puedes:
- Montar un RAID 1 o RAID 10 con
mdadmpara que un disco averiado no provoque una caída. - Exportar las métricas SMART a Prometheus con
smartctl_exporterpara ver su evolución en gráficas. - Vigilar también las temperaturas del resto del hardware con lm-sensors.
