S.M.A.R.T y las horas de un disco duro

Autor: Armonth | El martes 16 de octubre del 2007 @ 20:00.

Una discusión: equipo fallando, yo digo que es el disco duro y el colega que la placa base (si tan seguro está ¿por qué me consulta? }:P). El caso es que ya tengo tema que desarrollar.

Un disco duro tiene una vida útil estimada por el fabricante, al igual que el resto de componentes (incluso algunas memorias RAM tienen garantía "de por vida").

El caso es que tanto en ventiladores como en discos duros es fácil saberlo, los primeros empiezan a hacer más ruido y atascarse por lo que si no se soluciona con una limpieza a fondo ya están en las últimas. En cambio los discos duros pueden ser más puñeteros.

Una forma sencilla de hacerse una idea sin llegar a tener que buscar sectores defectuosos en todo el disco y que además nos permite prevenir y no tener que cambiar piezas cuando ya está fallando es el uso de S.M.A.R.T.

S.M.A.R.T (Self Monitoring Analysis And Reporting Technology) es una tecnología expresamente hecha para la detección de problemas en los discos duros.

[...] La detección de los fallos con la suficiente anticipación permite al usuario el poder realizar una copia de su contenido, o reemplazar el disco, antes de que se produzca una pérdida de datos irrecuperable.

Este tipo de tecnología tiene que ser compatible con la BIOS del equipo, estar activada y además que el propio disco duro la soporte.

En realidad S.M.A.R.T es bastante viejo. Es de esas cosas que llevan ahí años pero si no eres técnico rara vez usas (los usuarios avanzados tampoco creo que lo usemos mucho: muchos terminan cambiando los discos duros por nuevos antes de que empiecen a fallar o siquiera a hacerse viejos).

Teniendo S.M.A.R.T activado en la BIOS y un disco duro que lo soporte, podemos tirar en GNU/Linux de las smart monitoring tools. Tanto en Ubuntu como en Debian están bajo el mismo paquete: smartmontools.

The smartmontools package contains two utility programs (smartctl and smartd) to control and monitor storage systems using the Self-Monitoring, Analysis and Reporting Technology System (S.M.A.R.T.) built into most modern ATA and SCSI hard disks. It is derived from the smartsuite package, and includes support for ATA/ATAPI-5 disks. It should run on any modern Linux system.

La verdad es que yo nunca he usado el smartd pero sí el smartctl. Aunque toda la información la tenéis en el "man" lo único realmente necesario son dos cosas: lanzar el test y visualizarlo.

 :::text
 smartctl -t short /dev/hda

 ... (mucho texto irrelevante).

 Testing has begun.   
 Please wait 1 minutes for test to complete.   
 Test will complete after Tue Oct 16 07:43:06 2007

Ok, el test ha empezado en la unidad /dev/hda. Tardará 1 minuto en terminar pero de mientras podemos seguir trabajando como siempre. Ahora vamos a pedirle la información obtenida:

smartctl -l selftest -i /dev/hda

smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.7 and 7200.7 Plus family
Device Model:     ST340014A
Serial Number:    5JX09GR2
Firmware Version: 3.04
User Capacity:    40,020,664,320 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   6
ATA Standard is:  ATA/ATAPI-6 T13 1410D revision 2
Local Time is:    Tue Oct 16 07:42:26 2007 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     12210         -

Mucha información aquí:

  • "Familia" del disco duro (Seagate Barracuda 7200).
  • Modelo especifico, serial y firmware.
  • Capacidad del mismo (40GB).
  • Versión del ATA usado.
  • Soporta SMART... y además lo tiene activado.

Y el primer punto interesante: el LifeTime o horas que el disco duro ha estado encendido junto a posibles errores.

El disco duro tiene 12210 horas de marcha o lo que es lo mismo 508 días / 1 año y 4 meses. Curiosamente es casi tanto tiempo como lleva SigT en pie sólo que el blog las lleva "seguidas" y mi PC a lo largo de cuatro años más o menos (tendría que revisar facturas para estar seguro).

Luego podemos añadirle -H antes de -i /dev/hda el cual nos dice si "a ojos de SMART" el disco "está sano":

  • -H, --health: Check: Ask the device to report its SMART health status or pending TapeAlert messages.
     :::text
     smartctl -l selftest -i -H /dev/hda
    
     ... (misma información de antes)...
    
     SMART overall-health self-assessment test result: PASSED
    

Hay mucha más información, que puede ser útil o simplemente "curiosa", dependiendo de lo que a uno le interese, por ejemplo los atributos (-A). Dos ejemplos al vuelo de lo que se puede extraer:

  • 12 Power_Cycle_Count. RAW_Value: 1255. O en cristiano: este disco duro se ha encendido 1255 veces.
  • 192 Temperature Celsius. RAW_Value: 27. Es decir, 27 grados de temperatura en el disco lo cual no es nada alto.

O también según la propia Wikipedia:

Los parámetros más característicos a controlar son los siguientes:

  • Temperatura del disco
  • Velocidad de lectura
  • Tiempo de partida spin-up
  • Contador de sectores reasignados
  • Velocidad de búsqueda Seek time
  • Tasa de errores de búsqueda Seek

Los valores de los atributos S.M.A.R.T van del número 1 al 253, siendo 1 el peor valor. Los valores normales son entre 100 y 200. Estos valores son guardados en un espacio reservado del disco duro.

Eso significa que en los atributos debemos tener en cuenta el campo VALUE, en el ejemplo de arriba el VALUE obtenido para el campo "Temperature Celsius" (los 27 grados) es de 100 por lo que está bien (entre 100 y 200).

Sin embargo el valor para el número de encendidos (1255) es de 99 por lo que ya está por debajo de los 100-200 que es "lo normal": nada grave pero a tener en cuenta.

Lo que sí que es más preocupante en mi caso son los Raw_Read_Error_Rate que ya andan por menos de 70 (Pre-Fail: no creo que tarde mucho en empezar a fallar).

PD: ¿Recordáis el sujeto mencionado al principio? Tenía la mitad de los atributos a menos de 40, la temperatura a 35ºC, 30 y pico mil horas y errores a mansalva.

Comentarios