16 de Diciembre, 2005

Monitorizando discos con S.M.A.R.T.

Esta mañana me ha dado un error extraño la máquina al arrancar. No podía cargar un módulo del kernel porque decía que no era un objeto ELF válido, y más tarde sí lo ha cargado. ¿Puede ser debido a que el disco haya fallado?

Comprobar si un disco tiene fallos es muy complicado, y es algo que con lo que un administrador de sistemas seguro se va a encontrar (todos los discos acaban fastidiándose, y más si trabajan 7x24).

Quizás no esté todo perdido :). Si no podemos montar un RAID, siempre podemos usar una características que la mayoría de los discos ATA y SCSI traen de casa: Self-Monitoring, Analysis and Reporting Technology (aka S.M.A.R.T.).

Lo primero es mirar si nuestro disco soporta S.M.A.R.T. (creo que esto aparece en la BIOS), aunque también se puede instalar directamente las smartmontools para que nos den esa información:

# smartctl -i /dev/hda
smartctl version 5.32 Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model:     ST330013A
Serial Number:    3KE08PVC
Firmware Version: 3.33
Device is:        Not in smartctl database \
                  [for details use: -P showall]
ATA Version is:   6
ATA Standard is:  ATA/ATAPI-6 T13 1410D revision 2
Local Time is:    Fri Dec 16 12:16:10 2005 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Tenemos soporte, y además está activado. Si no estuviera activado, con estas herramientas se puede activar.

Lo siguiente sería verificar las características del soporte que implementa nuestro disco:

# smartctl -Hc /dev/hda
smartctl version 5.32 Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
...

La linea resaltada es importante, y el resto de la salida está bastante bien explicada (no la pongo, que es larga :D).

A partir de aquí hay muchas cosas que podemos hacer, como ver el registro de errores:

# smartctl -l error /dev/hda
smartctl version 5.32 Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
No Errors Logged

Esto me deja más tranquilo :). O no... ¿qué test ha hecho hasta ahora?

# smartctl -l selftest /dev/hda
smartctl version 5.32 Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== 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%         0         -

Podríamos realizar ahora más pruebas al disco, pero solo tiene sentido si tenemos muchas sospechas de que hay algún problema y queremos salir de dudas. Más que nada porque tarda un rato y porque, como veremos más adelante, podemos hacer que se monitorice el disco con smartd y que se nos avise en cualquier momento si hay problemas.

# smartctl -t long /dev/hda
smartctl version 5.32 Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 24 minutes for test to complete.
Test will complete after Fri Dec 16 12:55:25 2005

Use smartctl -X to abort test.

La prueba se realiza off-line, así que podremos seguir trabajando normalmente, aunque durante ese tiempo el disco no tendrá una buena respuesta. Podemos ver como va la cosa con:

# smartctl -l selftest /dev/hda
smartctl version 5.32 Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== 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%         0         -
# 2  Extended offline  Self-test routine in progress 80%     12109         -

Una vez acabado el test, he comprobado que no hay errores. Que contento estoy :D.

Para terminar de dejar las cosas en condiciones faltaría configurar smartd para que monitorice nuestro disco.

Ponemos en /etc/smartd.conf algo como:

# -S on para que grabe los atributos auto
# -o on para activar los test offline auto
# -a para monitorizar todos los atributos
# -I 194 para ignorar la temperatura (que cambia con frecuencia)
# -m dirección_de_correo para que nos mande un mail si pasa algo
/dev/hda -S on -o on -a -I 194 -m admin@nuestro.host.dom

Esta linea la he sacado de Monitoring Hard Disks with SMART (recomendable, complementa mucho a este texto), buscando un ejemplo de lo que se suele emplear.

Ahora en Ubuntu Linux he tenido que tocar /etc/default/smartmontools para poner start_smartd=yes, y he hecho un /etc/init.d/smartmontools start, como es habitual. Ojo que el uso de smartd activa el soporte S.M.A.R.T. en los discos monitorizados, pero no sé si se trata de una característica de Ubuntu ;).

Y esto es todo. El paquete está espléndidamente documentado vía páginas man, así que no podemos pedir mucho más. Bueno, sí acaso yo pediría que tarde lo más posible en llegarme un mensaje indicando un fallo en el disco ;).

Anotación por Juan J. Martínez, clasificada en: smart, linux.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: