Analiza la salud del disco duro y SSD de tu servidor Linux y NAS

Cuando tenemos un servidor con Linux o un servidor NAS (que también tiene un sistema operativo basado en Linux) con mucha información en su interior, tanto el propio sistema operativo como archivos y carpetas personales o de nuestro trabajo, es fundamental controlar que los discos duros y las unidades SSD tienen una buena salud y no se van a romper próximamente sin previo aviso. Por este motivo, es muy importante monitorizar de forma contínua el disco duro o SSD de nuestro servidor, para evitar tener pérdida de datos debido a que se rompa. Hoy en RedesZone os vamos a enseñar todo lo que debes controlar en tu servidor con Linux para verificar la salud de tus discos.

Qué es el SMART de los discos

Todos los discos duros y unidades SSD disponen de una tecnología llamada SMART, o también conocida como S.M.A.R.T que significa «Self Monitoring Analysis and Reporting Technology». Esta tecnología incorporada en el firmware de los discos duros y SSD consiste en detectar posibles fallos en el disco duro, con el objetivo de anticiparse a errores físicos en el disco duro o fallos inesperados en las unidades SSD debido a la escritura en la memoria flash interna. El objetivo de SMART es avisar a los usuarios para que puedan realizar una copia de seguridad y reemplazar el disco sin tener ninguna pérdida de datos. Si no hacemos caso al SMART, llegará un momento en el que el disco duro se romperá y tendremos pérdida de datos, por lo que es fundamental hacer caso siempre a los datos SMART de los discos.

Para poder utilizar SMART, es totalmente necesario que la BIOS o UEFI del servidor sea compatible con esta tecnología y que esté activada, además, también es totalmente necesario que los discos lo incorporen. Hoy en día todos los servidores, sistemas operativos y discos utilizan esta tecnología para detectar problemas en el disco duro, podríamos decir que es «universal» y que siempre se utiliza.

Esta tecnología se encarga de monitorizar diferentes parámetros del disco duro, como la velocidad de los platos del disco, sectores defectuosos, errores de calibración, comprobación de redundancia cíclica (los típicos errores CRC), temperatura del disco, velocidad de lectura de datos, tiempo de partida (spin-up), contador de sectores reasignados, velocidad de búsqueda (seek time) y otros parámetros muy avanzados que permiten saber lo importante: si el disco duro va a fallar próximamente.

Internamente SMART dispone de un rango de valores que podemos considerar «normal», y cuando un parámetro se sale de estos valores, entonces es cuando salta la alarma, la BIOS/UEFI lo detectará y avisará al sistema operativo de que hay un fallo en el disco y que puede ser grave. En sistemas operativos Linux tenemos la posibilidad de realizar tests de SMART para comprobar si el funcionamiento del disco es el correcto, además, tenemos la posibilidad de programar estos tests para minimizar el impacto en el rendimiento.

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:

  • smartctl: es el programa por línea de comandos que nos permite verificar los discos duros y unidades SSD bajo demanda, o podemos programar su funcionamiento a través del típico cron en el sistema operativo.
  • smartd: es un demonio o proceso que verifica que los discos duros o SSD en un intervalo específico no ha tenido ningún fallo. Es capaz de registrar cualquier tipo de aviso o error de los discos al syslog principal del servidor, también permite enviar estos mismos avisos y errores por email al administrador para que compruebe que todo está correcto.

El paquete smartmontools se encarga de monitorizar los discos duros y unidades SSD, independientemente de si utilizan interfaces SATA, SCSI, SAS o NVME, es compatible con cualquier tipo de interfaz de datos. Por supuesto, este programa es completamente gratuito.

Instalación

La instalación de este programa, si es que no está instalado de manera predeterminada en tu distribución de Linux, es utilizando el gestor de paquetes de tu distribución. Por ejemplo, en sistemas operativos Debian con apt sería de la siguiente forma:

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.

Utilización de smartctl

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:

df -h

También podríamos hacer uso de fdisk para sacar el listado de discos que tenemos en nuestro servidor:

sudo fdisk -l

Estos comandos nos mostrará un listado de las unidades y también de las particiones. Este programa tenemos que utilizarlo a nivel de disco duro o SSD, no a nivel de partición. Generalmente en sistemas Linux encontraremos los discos en la ruta /dev/sdX.

Una vez que sepamos qué unidad vamos a analizar para comprobar su salud a través de SMART, debemos saber que existen un total de dos pruebas diferentes que podemos realizar:

  • Prueba corta: esta prueba es la más utilizada para detectar problemas en el disco. Al realizar esta prueba nos mostrará los errores y avisos más importantes, sin necesidad de analizar todo el disco en detalle. Podemos programar esta prueba corta a través de cron para que sea semanal, de esta forma, una vez cada semana realizará este análisis y nos avisará si ha detectado algún error. Es recomendable hacer esta prueba en un horario donde haya poco o ningún uso, no es recomendable hacerlo en horario de trabajo, mejor de madrugada.
  • Prueba larga: esta prueba puede durar bastante tiempo, dependiendo del disco y su capacidad. Al realizar esta prueba tan completa, nos mostrará todos los avisos o errores que encuentre en todo el disco. Podemos programar esta prueba larga con cron para que se haga mensual, es decir, una vez cada mes realizaremos esta prueba para comprobar la salud del disco. Es recomendable hacer esta prueba en un horario donde apenas haya uso del disco, por ejemplo, de madrugada, porque de lo contrario el rendimiento en lectura y escritura así como en latencia de acceso a los datos aumentarán considerablemente.

Una vez que ya sabemos los dos tipos de exámenes que podemos usar, lo primero que debemos saber es si el disco duro o SSD tiene activado SMART:

sudo smartctl -i /dev/sda

En el caso de que el disco soporte SMART pero no esté activado, lo podemos activar ejecutando la siguiente orden:

sudo smartctl -s on /dev/sda

Para ver todos los atributos de SMART del fabricante del disco en cuestión, podemos ejecutar la siguiente orden:

sudo smartctl -a /dev/sda

Para realizar un test corto ejecutamos lo siguiente:

sudo smartctl -t short /dev/sda

Para realizar un test largo ejecutamos lo siguiente:

sudo smartctl -t long /dev/sda

Una vez que hayamos realizado el test corto o largo, podemos ejecutar la siguiente orden para ver todos los resultados:

sudo smartctl -H /dev/sda

Os recomendamos leer las páginas man de smartctl donde encontraréis todos los comandos que vamos a poder ejecutar para usar las posibilidades de SMART, no obstante, los principales comandos son los que os hemos explicado.

¿En qué valores debo fijarme?

Cuando hacemos un test de SMART, nos va a aparecer una gran cantidad de atributos de nuestro disco duro o SSD. Algunos de estos valores es crítico que nos fijemos muy bien, porque podrían darnos «pistas» de que el disco va a fallar muy pronto:

  • Reallocated_Sector_Ct: es el número de sectores que se han reasignados a otras zonas del disco porque ha habido errores de lecturas. Este error es muy típico cuando un disco tiene mucho tiempo y está cerca de terminar su vida útil.
  • Spin_Retry_Count: es el número de intentos que han sido necesarios para arrancar el disco, esto indica que hay un grave problema de hardware en el disco, y podría no arrancar la próxima vez.
  • Reallocated_Event_Count: número de reasignaciones que se han realizado, ya sea con éxito o sin éxito. Cuanto mayor es el número, peor es la salud del disco duro.
  • Current_Pending_Sector: número de sectores que están pendientes de reasignar próximamente.
  • Offline_Uncorrectable: número de errores no corregibles al acceder, ya sea en lectura o en escritura a diferentes sectores del disco.
  • Multi_Zone_Error_Rate: número total de errores durante la escritura de un sector.

En la siguiente imagen podéis ver el estado de un disco duro WD Red 4TB de nuestro NAS con el sistema operativo XigmaNAS:

En la anterior captura podéis ver una gran cantidad de información, pero nosotros debemos saber si es un fallo aislado o puede fallar nuestro disco próximamente.

Estado de los discos en NAS de QNAP

Sit ienes un servidor NAS de QNAP, Synology o ASUSTOR, también vas a poder ver el estado SMART de tus discos duros y unidades SSD a través del sistema operativo con acceso vía web, no es necesario meternos vía SSH o Telnet y ejecutar ningún comando. En el ejemplo siguiente hemos utilizado un servidor NAS de QNAP, pero el proceso con los otros fabricantes sería muy similar.

Lo primero que tenemos que hacer es irnos a la sección de «Almacenamiento e instantáneas«, una vez aquí, pinchamos en «Almacenamiento /Discos» y veremos algo como esto:

Si pinchamos en «Condición del disco«, tendremos que elegir qué disco de todos queremos mirar. Podemos seleccionar tanto discos duros HDD como también unidades SSD, no importa de qué tipo sean porque también tienen información interna de SMART para ver si hay un error en el disco.

En el menú de «Resumen» podemos ver el estado general del disco, si hay algún tipo de error o aviso grave, también podemos ver la salud general de manera fácil y rápida, sin necesidad de realizar un análisis en detalle de los valores del SMART. Por supuesto, también podemos ver el historial de acceso al disco y si ha existido algún problema.

Aunque QNAP nos proporciona información muy fácil de entender, en el caso de que queramos ver todos los valores en bruto, también lo vamos a poder hacer sin problemas. Además, tendremos una columna adicional que nos indica «Estado» y si es bueno o malo.

Vamos a poder hacer pruebas rápidas o completas a través de aquí, simplemente tenemos que elegir el método de la prueba y posteriormente pinchar en el botón de «Prueba».

Finalmente, también podemos programar estas pruebas de manera muy fácil, simplemente tenemos que elegir activar prueba rápida o completa, y elegir la frecuencia: diaria, semanal o mensual, además, podemos definir la hora de inicio de esta prueba.

Tal y como podéis ver, comprobar y verificar el estado de salud de los discos duros y SSD en un servidor es algo realmente importante para evitar la pérdida de datos. Cuando ocurre algún tipo de error, es muy importante comprar un nuevo disco y realizar una copia de seguridad para evitar la pérdida de datos. Además, también deberíamos verificar el estado del RAID porque podríamos ocasionar la pérdida de todo el conjunto de almacenamiento, sobre todo si tenemos configurado un RAID 0 o Stripe de ZFS.

¡Sé el primero en comentar!