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 (paquete mailutils o bsd-mailx).

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:

IDAtributoQué indicaQué hacer
5Reallocated_Sector_CtSectores defectuosos ya sustituidos por sectores de reservaCualquier valor mayor que 0 que siga creciendo indica un disco en declive
187Reported_UncorrectErrores de lectura que el disco no pudo corregirPlanificar la sustitución si aumenta
197Current_Pending_SectorSectores ilegibles pendientes de reasignarValor distinto de 0: comprobar backups y lanzar un test largo
198Offline_UncorrectableSectores que fallaron durante el escaneo offlineValor distinto de 0: sustituir el disco
199UDMA_CRC_Error_CountErrores de transmisión entre disco y controladoraSuele ser el cable o el backplane, no el disco
194Temperature_CelsiusTemperatura actualPor 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 ser 0x00. Cualquier otro valor indica un problema (spare bajo, temperatura, modo solo lectura).
  • Available Spare: bloques de reserva restantes. Si se acerca a Available 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 que smartd detecte. Cualquier línea situada después de DEVICESCAN se 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.
  • -m y -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 arrancar smartd. 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 mdadm para que un disco averiado no provoque una caída.
  • Exportar las métricas SMART a Prometheus con smartctl_exporter para ver su evolución en gráficas.
  • Vigilar también las temperaturas del resto del hardware con lm-sensors.