Smartmontools. Herramientas de monitoreo SMART para dispositivos de almacenamiento
Smartmontools «Herramientas de monitoreo SMART» , siglas de «Self Monitoring Analysis and Reporting Technologyes» es un paquete de programas (smartctl y smartd) con los que podemos probar discos duros, internos y extraibles o memorias USB, y leer las estadísticas SMART de nuestro hardware.
Tabla de Contenidos
- Consideraciones previas
- Instalación de smartmontools
- Comprobación de la capacidad SMART de una unidad
- Habilitamos SMART
- Ejecutamos la prueba de una unidad
- Resultados
- Realizar análisis de los resultados obtenidos
- Ejecutar Smartmontools como un demonio «smartd»
- Aplicación gráfica GSmartControl
Consideraciones previas
Podemos monitorear los sistemas de almacenamiento de nuestro equipo utilizando el sistema de tecnología de autocontrol, análisis e informes «SMART» integrado en la mayoría de los dispositivos (P)ATA, Serial ATA, Discos duros SCSI/SAS y NVMe.
Smartmontools nos ofrece señales de advertencia tempranas de problemas en el disco duro detectados por S.M.A.R.T., notificándonos fallos inminentes que nos permitirán realizar copias de seguridad y salvar los datos almacenados en el dispositivo.
Desde finales de 2010, la configuración del control de recuperación de errores de ATA ha sido compatible con Smartmontools, lo que nos permite configurar muchos discos duros de escritorio y portátiles para su uso en una matriz RAID y viceversa.
Nota: Es posible que los datos SMART no predigan con precisión los fallos futuros de la unidad; no obstante, los informes de error anormales serán una indicación a tener en cuenta de un posible fallo del hardware o inconsistencia de los datos.
Necesitaremos que el disco tenga la capacidad S.M.A.R.T
Todas las pruebas se ejecutan en segundo plano, por lo que no hay forma de que podamos realizar un seguimiento del progreso en pantalla. Tendremos que ejecutar comandos para ver la salida. Si encontramos algún error al realizar cualquiera de las pruebas, significa que necesitamos hacer una copia de seguridad del contenido del disco cuanto antes. Es posible que el disco duro falle en un futuro próximo.
Instalación de smartmontools
La mayoría de las distribuciones de GNU/Linux proporcionan el paquete smartmontools ya instalado o disponible en los repositorios oficiales.
En el caso de usar distribuciones derivadas de Red Hat, como por ejemplo Fedora o CentOS lo podemos instalar ejecutando
sudo yum install smarmontools
Y en el caso de ser usuario de Archlinux o alguna distro que derive de esta, como Manjaro, hay que escribir el siguiente comando en la terminal
sudo pacman -S smartmontools
Nos centraremos en la instalación para Debian y derivados como Ubuntu o Linux Mint. Podemos instalar el paquete smartmontools desde Synaptic Package Manager o ejecutando el siguiente comando en la terminal
sudo apt-get update #Actualizamos la lista de paquetes de los repositorios sudo apt-get install smartmontools

Comprobación de la capacidad SMART de una unidad
Para verificar que nuestra unidad es compatible con SMART, ejecutamos
sudo smartctl -i /dev/sda

Una vez ejecutado el comando, veremos que en la terminal nos aparece una serie de información básica de nuestro disco duro, como por ejemplo: el modelo del disco duro, su número de serie, la versión de su firmware, su capacidad, la versión de Sata, etcétera. Además, en la captura de pantalla podemos ver que en las dos últimas líneas menciona que nuestro disco duro tiene soporte para SMART y que el soporte está habilitado
SMART support is: Available - device has SMART capability. SMART support is: Enabled
Habilitamos SMART
En el caso que el soporte esté deshabilitado, aparecerá la frase SMART support is Unavailable. Para solucionar este problema y activar el soporte Smart, en este caso en nuestro disco sda, tenemos teclear el siguiente comando en la terminal
sudo smartctl -s on /dev/sda

Ejecutamos la prueba de una unidad
Lo primero que tenemos que realizar es averiguar el nombre con el que se reconoce el disco duro o dispositivo de almacenamiento que queremos analizar. Para ello abrimos una terminal y tecleamos el siguiente comando
sudo smartctl --scan

Podemos ejecutar cualquier tipo de prueba mientras la unidad está montada, aunque puede haber una disminución en el rendimiento. Hay tres tipos de pruebas que se pueden realizar en una unidad
Rápido o Corto
El análisis rápido básicamente consiste en 3 partes
- 1) Test de las propiedades eléctricas: Se realizará un test de las propiedades eléctricas de nuestro disco duro, como por ejemplo, si las placas electrónicas están en buen estado, si la totalidad de buffers del disco duro se encuentra en óptimas condiciones, etcétera. Obviamente, para cada modelo de disco duro, el test que se realizará será diferente, ya que el comportamiento eléctrico depende del modelo y marca del dispositivo que tenemos.
- 2) Test de las propiedades mecánicas: Se realizará un análisis para determinar si el posicionamiento del cabezal del disco encima del plato se realiza de forma correcta, si la velocidad de los platos del disco es correcta, etcétera. En definitiva, se realizarán todo tipo de comprobaciones para verificar que el funcionamiento mecánico del disco es adecuado.
- 3) Test de lectura del disco: La última comprobación consiste en leer partes de la información almacenada en el disco duro y verificar que la lectura es correcta. Este proceso no abarca toda la superficie del disco: esta prueba está limitada en tiempo y solo analiza ciertas partes de la superficie del disco. Las partes del disco duro analizadas van en función del modelo de nuestro disco duro.
Extendido (largo)
Este tipo de análisis es el más adecuado para garantizar que los resultados que obtenemos son plenamente fiables. El tipo de comprobaciones que realizará el análisis completo son las mismas que el análisis rápido. Por lo tanto, se realizará un test de las propiedades eléctricas, otro de las propiedades mecánicas, y finalmente se realizará un test de lectura de la totalidad de superficie del disco duro. La diferencia entre el análisis rápido y el completo será que el completo realizará un análisis mucho más exhaustivo de cada uno de los puntos analizados. Así por ejemplo, si en el análisis rápido se hacía la comprobación de ciertas partes de la superficie del disco duro, en el análisis completo se realizará la comprobación de la totalidad de la la superficie.
Transporte
A veces es posible que, durante el transporte o el uso del ordenador, puedan ocurrir ciertos accidentes, como por ejemplo caídas que generan aceleraciones y desaceleraciones importantes en el disco duro. Nos sirve para evaluar el número de veces que nuestro disco duro ha recibido impactos superiores al límite establecido por el fabricante.
Los comandos para ejecutar alguna de las tres pruebas son
sudo smartctl -l long /dev/sda #para test largo sudo smartctl -t short /dev/sda #para test corto sudo smartctl -conveyance /dev/sda #para conveyance self-test (trasnporte)
Para tener una estimación del tiempo que nos llevará realizar cada prueba, ejecutamos
sudo smartctl -c /dev/sda

La prueba más útil y recomendable es la prueba extendida (larga). La iniciaremos con el siguiente comando
sudo smartctl -t long /dev/sda

Al repetir la ejecución de este comando «sudo smartctl -c /dev/sda», durante la realización de la prueba, si consultamos la información del campo «Self-test execution status», nos dirá el % del test que aún está pendiente para realizar

Vemos que aun falta un 80% para terminar el test.
En la utilidad «Discos» del sistema podemos comprobar que se está ejecutando la comprobación.

Resultados
Para obtener los resultados de la prueba ejecutada, lanzamos el siguiente comando
sudo smartctl -l selftest /dev/sda

En la captura anterior vemos los resultados de la prueba
Revisar el log de errores
Para revisar que durante la comprobación no se ha producido ningún error podemos usar el siguiente comando en la terminal
sudo smartctl -l error /dev/sda

Si nos es preciso tener más información sobre el resultado de la prueba podemos consultar el manual
man 8 smartctl

Si se trata de una unidad IDE, para mostrar información SMART detallada, ejecutamos
sudo smartctl -a /dev/sda
Y si es una unidad SATA, para mostrar información SMART detallada, ejecutamos
sudo smartctl -a -d ata /dev/sda

También podemos verificar el estado de nuestro disco duro ejecutando
sudo smartctl -H /dev/sda
Realizar análisis de los resultados obtenidos
Lo primero que haremos para obtener los resultados de nuestros test es volcar la totalidad de los mismos en un fichero de texto. Para realizar esto, abrimos una terminal y tecleamos el siguiente comando
sudo smartctl --xall /dev/sda > resultados

Después de teclear este comando, en nuestra /home se generará un fichero de texto en el que podremos consultar multitud de datos para comprobar si el estado de nuestro disco duro es el correcto. Si abrimos el fichero el contenido que vamos a encontrar es el siguiente

Veamos algunos parámetros a tener en cuenta.
SMART overall-health self-assessment test
Estado global del disco duro. Sabremos que este es óptimo si muestra asociada la palabra PASSED, mientras que si aparece la palabra FAILED, se aconseja realizar una copia de seguridad de los datos del disco lo antes posible.
Power_On_Hours
Horas de funcionamiento del disco duro. Para saber si el valor arrojado es mucho o poco, habría que consultar las especificaciones técnicas del fabricante (concretamente, la tasa media entre fallos), y aplicar la siguiente fórmula:
Probabilidad de fallo = 100 * (horas de funcionamiento)/(tasa media entre fallos)
El valor arrojado será un porcentaje, y cuanto más bajo sea, mejor señal de esperanza de vida tendremos: por ejemplo, si obtenemos un 3%, significará que, para el número de horas que ha trabajado nuestro disco duro, sólo en 3 de cada 100 casos se habría roto.
Nota: Si queremos saber las horas de funcionamiento de nuestro disco duro podemos ejecutar en la terminal.
sudo smartctl -a /dev/sda | grep Power_On_Hours

Power_Cycle_Count
Número de veces que se ha encendido el disco duro. Normalmente los discos duros están diseñados para aguantar un determinado número de ciclos de encendido y apagado. El valor asociado a la columna RAW_VALUE nos mostrará el número de veces que se ha encendido y apagado, pero el valor que interesa es el asociado a VALUE: si este está entre 100 y 253, la salud del disco duro en lo referente a encendidos y apagados será óptima aún.
Lifetime Min/Max Temperature
Temperaturas del disco duro. Si nuestro disco duro trabaja en valores extremos de temperatura, su vida se reducirá drásticamente. Si se consultan las especificaciones del disco duro, se podrá encontrar información acerca del rango de temperatura en el que se aconseja que trabaje.
Under/Over Temperature Limit Count
Indica el número de veces que se ha superado el rango de temperatura, tanto superior como inferiormente. Si aparece un 0 (cero) en ambos valores, entonces no tendremos que preocuparnos por este aspecto.
G-Sense_Error_Rate
Impactos sufridos por el disco. Cada vez que nuestro disco duro registre un impacto o aceleración/desaceleración, superior a los valores que tiene preestablecidos el fabricante, se generará un error. El número de veces que hemos superado el valor límite establecido nos lo indica este parámetro, asociado a la columna RAW_RATE. No obstante, el número que nos interesa es el de VALUE: si es superior a 100, todo estará correcto.
Raw_Read_Error_Rate
Errores de lectura que ha sufrido el disco. Con VALUE igual a 100, todo perfecto.
Reallocated_Sector_Ct
Sectores defectuosos en el disco duro. Viene indicado por la columna RAW_VALUE, y si es 0, no habrá ningún problema en absoluto. La columna VALUE nos indica la salud al respecto, y si tiene un valor de 253, también nos encontraremos con una buena noticia. Por contra, si tenemos un número significativo de sectores defectuosos, es un indicativo que nuestro disco duro está en sus últimas horas de vida.
Offline_Uncorrectable
Sectores defectuosos imposibles de corregir en el disco duro. Con RAW_VALUE igual a 0, no existen sectores que no puedan corregirse. Con valores distintos de cero, es muy posible que la superficie mecánica del disco duro o alguna parte mecánica esté dañada.
Spin_Retry_Count
Intentos fallidos de arranque del disco duro. Con RAW_VALUE igual a 0, nunca habrán existido intentos fallidos de arranque. El nivel de salud de este parámetro lo indica VALUE, y si es 253, todo estará perfecto.
Command_timeout
Evaluación del tiempo de respuesta. RAW_VALUE indica el número de errores debidos al agotamiento del tiempo máximo de respuesta, pero es la columna VALUE la que indica su salud. Con un valor cercano, al menos, a 100, todo será óptimo.

Nota: Esto también funciona para unidades IDE en nuevos kernels que se ejecutan a través de la pila SCSI y se muestran como /dev/sdX.
Ejecutar smartmontools como un demonio «smartd»
También podemos ejecutar smartmontools como un demonio que nos evitará tener que ejecutar todos los comandos anteriores y tener el sistema de almacenamiento monitoreado. Para ello editamos el fichero de configuración
sudo nano /etc/default/smartmontools
Encontramos la opción de establecer una lista de dispositivos que deseamos habilitar explícitamente S.M.A.R.T. Aunque no es necesario (y no se recomienda) si el dispositivo es monitoreado por smartd
# List of devices you want to explicitly enable S.M.A.R.T. for # Not needed (and not recommended) if the device is monitored by smartd #enable_smart="/dev/hda /dev/hdb"
Tenemos que descomentar, para pasar opciones adicionales a smartd en el inicio, la linea
smartd_opts="--interval=1800"
Esto hará que se ejecute un script que encontramos en /etc/init.d/smartmontools

La forma en que smartd escaneará los discos y lo que hará en caso de errores se controla mediante el fichero de configuración del demonio, /etc/smartd.conf. Lo editamos
sudo nano /etc/smartd.conf
En este fichero descomentamos la linea
DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner

smartd hará lo siguiente
- buscar todos los dispositivos ATA / SCSI (DEVICESCAN). El resto del archivo se ignorará; Si DEVICESCAN no funciona en nuestro sistema, podemos usar /dev/sda o el nombre del disco duro en lugar de DEVICESCAN.
- enviar un informe a la cuenta ‘root’ en caso de problemas (opción -m);
- en lugar del comando de correo, ejecutará /usr/share/smartmontools/smartd-runner y le enviará el informe (opción -M).
El fichero smartd-runner realiza una gran cantidad de funciones, incluido el envío de correo a root, pero puede tener sus propias especificaciones de tiempo. Si deseas agregar tus propias especificaciones, también puedes hacerlo, aquí hay un ejemplo de cómo hacerlo
DEVICESCAN -a -H -l error -l selftest -f -s(S/../.././20|L/../../5/16) -m root -M exec /usr/share/smartmontools/smartd-runner
Veamos lo que le hemos dicho
- (-a) habilita algunas opciones comunes. Es casi seguro que quieras usarlo.
- (-H) comprueba el estado de salud SMART.
- (-l) para informar aumentos en ambos registros de errores SMART.
- (-f) para comprobar el fallo de cualquier atributo de uso.
- «-s (S /../.././20 | L /../../5/16)» Esto programa las pruebas que queremos. En este ejemplo, se ejecutará una prueba corta todos los días a las 8:00 p.m. y una prueba larga todos los viernes a las 4:00 p.m.
También podemos reemplazar DEVICESCAN con la ruta del dispositivo que queremos monitorear (por ejemplo, /dev/sda), y el demonio solo monitoreará esta unidad. Necesitaremos una de estas líneas para cada dispositivo.
Aplicación gráfica GSmartControl
En caso de encontrar tedioso el uso de una terminal, se puede usar un entorno gráfico para mayor comodidad, simplemente instalando, adicionalmente, el paquete gsmartcontrol.
GSmartControl es una elegante interfaz gráfica para smartctl que nos muestra todos los valores SMART y resalta aquellos que indican obsolescencia o fallo inminente. Además podemos ejecutar las pruebas que queramos.
Lo encontramos en los repositorios, por tanto lo podemos instalar desde Synaptic o ejecutando
sudo apt-get update #Actualizamos la lista de paquetes de los repositorios sudo apt-get install gsmartcontrol

Y ya lo encontramos entre nuestras aplicaciones.

Puedes encontrar más información en la página de Documentación Ubuntu
Y en Github
Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.
Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.
Y para suscribirte y recibir las novedades publicadas, tienes un enlace en el pie de la página o desde aquí mismo.
Muy currado, Javier.
Un saludo
Gracias Ico.