Introducción
En un servidor Linux o NAS, la integridad de los discos duros y unidades SSD es crucial para la seguridad de la información almacenada. La tecnología S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) nos permite monitorizar el estado de estos dispositivos y prevenir fallos inesperados.
¿Qué es SMART?
SMART es una tecnología integrada en el firmware de discos duros y SSD que detecta y reporta posibles fallos antes de que ocurran. Su objetivo es prevenir la pérdida de datos mediante la detección temprana de problemas y la posibilidad de realizar copias de seguridad.
Cómo ver la salud del disco
En la mayoría de distribuciones basadas en Linux tenemos un paquete llamado smartmontools. En algunas ocasiones este paquete se encuentra preinstalado en nuestra distribución, y en otras ocasiones tenemos que instalarlo nosotros mismos. Este paquete dispone de dos programas diferentes:
¿Cómo funciona SMART?
SMART monitoriza diversos parámetros del disco, como:
- Velocidad de los platos
- Sectores defectuosos
- Errores de calibración
- Temperatura
- Velocidad de lectura
- Tiempo de arranque
- Sectores reasignados
- Tiempo de búsqueda
Cada parámetro tiene un rango de valores considerados «normales». Si algún valor se sale de este rango, SMART genera una alerta que notifica al sistema operativo de un posible fallo.
¿Cómo usar SMART en Linux?
Para utilizar SMART en Linux, se necesita el paquete smartmontools. Este paquete incluye dos herramientas:
- smartctl: Permite verificar el estado de los discos bajo demanda o programar pruebas periódicas.
- smartd: Un demonio que monitoriza continuamente los discos y registra errores en el syslog o envía notificaciones por correo electrónico.
Instalación y uso de smartmontools:
1. Instalación
La mayoría de las distribuciones de Linux incluyen smartmontools preinstalado. Si no es así, se puede instalar mediante el gestor de paquetes de tu distribución.
sudo apt install smartmontools
Dependiendo del gestor de paquetes de tu distribución, tendrás que usar un comando u otro, lo importante es que este paquete está disponible para todas las distribuciones basadas en Unix y también en Linux, por lo que también podrías instalarlo en FreeBSD sin problemas.
2. Identificando los discos
Ejecuta el comando df -h
para ver una lista de los discos duros y sus puntos de montaje. También puedes usar sudo fdisk -l
para obtener una lista más detallada, pero recuerda que SMART funciona a nivel de disco (/dev/sdX
), no de partición.
3. Realizando pruebas SMART
Existen dos tipos de pruebas SMART:
- Prueba corta: sudo smartctl -t short /dev/sda (reemplaza /dev/sda por la ruta de tu disco). Esta prueba rápida detecta problemas comunes sin analizar todo el disco. Se recomienda programarla semanalmente, idealmente de madrugada para minimizar el impacto en el rendimiento.
- Prueba larga: sudo smartctl -t long /dev/sda (reemplaza /dev/sda por la ruta de tu disco). Esta prueba exhaustiva analiza todo el disco y puede tardar varias horas. Se recomienda programarla mensualmente, también durante la madrugada.
4. Verificando el estado de SMART
Para comprobar si SMART está activado en tu disco, ejecuta sudo smartctl -i /dev/sda
. Si no lo está, actívalo con sudo smartctl -s on /dev/sda
. Para ver información detallada del fabricante, ejecuta sudo smartctl -a /dev/sda
.
5. Interpretando los resultados
Tras realizar una prueba, ejecuta sudo smartctl -H /dev/sda
para ver los resultados. Presta especial atención a estos valores críticos:
- Reallocated_Sector_Ct: Número de sectores reasignados debido a errores de lectura. Un valor alto indica un disco cerca del final de su vida útil.
- Spin_Retry_Count: Número de intentos fallidos para arrancar el disco. Un valor alto indica un problema grave de hardware.
- Reallocated_Event_Count: Número total de reasignaciones realizadas. Un valor alto indica mala salud del disco.
- Current_Pending_Sector: Número de sectores pendientes de reasignación. Un valor alto indica un posible fallo inminente.
- Offline_Uncorrectable: Número de errores no corregibles al acceder a sectores. Un valor alto indica daños en el disco.
- Multi_Zone_Error_Rate: Número total de errores durante la escritura de un sector. Un valor alto indica problemas de escritura.
6. Programar un test SMART
Edita el archivo /etc/crontab
y agrega una línea como la siguiente:
0 4 * * * smartctl -t long /dev/sda >> /var/log/smart.log
Consideraciones adicionales:
- Asegúrate de que la BIOS o UEFI del servidor tenga SMART habilitado.
- SMART es una herramienta preventiva, pero no garantiza la integridad absoluta de los discos.
- Realiza copias de seguridad periódicas de tus datos importantes.
Conclusión
SMART es una herramienta esencial para monitorizar la salud de los discos en un servidor Linux. Su uso regular puede prevenir la pérdida de datos y garantizar la continuidad del servicio.
Para poder utilizar este programa y comprobar la salud de nuestro disco duro, lo primero que debemos hacer es saber cuántos discos duros tenemos, y cuál es la ruta para examinar esos discos duros o SSD en cuestión. Para poder conocer dónde están los discos, debemos ejecutar el siguiente comando: