Prevenir errores de disco duro gracias a SMART

Tecnología S.M.A.R.T.

Disco duroTodos los discos duros que se usan hoy en día poseen la tecnología denominada S.M.A.R.T. (Self Monitoring Analysis and Reporting Technology). Ésta tecnología permite detectar por anticipado posibles errores físicos del disco duro (la velocidad de los platos del disco, sectores defectuosos, errores de calibración, CRC, distancias medias entre el cabezal y el plato, temperatura del disco) antes que sea demasiado tarde y el disco duro quede totalmente inutilizado.

Existen dos tipos de categorías de errores, los impredecibles (fallos de voltaje, temperaturas elevadas, errores en algún circuito integrado…) y los predecibles que son fallos mecánicos que se van desarrollando paulatinamente a medida que el uso del disco va siendo mayor (también depende de la calidad del dispositivo).

Para poder estar tranquilos con nuestros discos duros, sobretodo si los tenemos usando 24 horas al día o incluso si los tenemos en nuestro pc de sobremesa o ordenador personal, podemos monitorizar nuestros discos duros usando esta tecnología. Los parámetros que hay que tener controlados para monitorizar el disco son los siguientes:

  • Temperatura del disco: Un aumento de temperatura excesivo del disco puede hacer que funcione mal los elementos electrónicos.
  • Tasa de transferencia: Si van aumentando los errores en la tasa de transferencia es síntoma de que puede haber algún error.
  • Velocidad de lectura: Muy similar al punto anterior, y la tasa de error puede provenir por síntomas muy similares.
  • Tiempo de partida (spin-up): Puede ser un reflejo de algún tipo de error de motor del disco.
  • Contador de sectores reasignados: Cuando son reasignados muchos valores, significa que no pueden ser grabados donde se intenta hacerlo, con lo cual deben ser asignados a otros sectores. Esto es una referencia inequívoca del deterioro del disco y de su fallo probablemente inmediato.
  • Altura de Vuelo del Cabezal: La tendencia a la baja en altura de vuelo a menudo presagian un accidente del cabezal, esto significa que puede haber uno de los peores errores de un disco duro. Que el cabezal dañe la superficie física del disco duro y lo deje totalmente inutilizable.
  • Uso de ECC y Conteo de errores: Es un dato importante a tener en cuenta, el número de errores detectados por la unidad, aunque se corrijan internamente, a menudo señala problemas con su desarrollo. La tendencia es, en algunos casos, más importante que el conteo real.

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.

Solución para Linux, BSD, Darwin (Mac OsX), Solaris: SmartMonTools.

Antes de explicar en que consiste SmartMonTools, debéis saber que existe un sistema que permite mantener dos discos a la vez siendo uno espejo del otro, de modo que si uno tiene un fallo físico, siempre queda el otro disco. Éste sistema se denomina R.A.I.D. (Redundant Array of Inexpensive Disks), que aunque como su nombre indica es un sistema redundante «barato» de conjunto de discos, sigue siendo el doble de caro que tener un solo disco, pues en caso que uno quiera configurarlo en modo redundante (existen varios modos de configuración y no todos son redundantes).

Si no queremos gastar dinero en tener dos discos (y con el consumo eléctrico que ello significa), podemos instalar en nuestro sistema la solución SmartMonTools que voy a explicar a continuación. Aún así también se pueden combinar las dos tecnologías, mantener el sistema R.A.I.D. e instalar SmartMonTools, con lo que se conseguiría una tolerancia a fallos mucho más que satisfactoria.

Lo primero que se debe realizar es una mera formalidad, hay que ver si nuestro disco duro soporta S.M.A.R.T., para ello debemos ejecutar el comando smartctl -i /dev/dispositivo, como vemos en el siguiente ejemplo:

# smartctl -i /dev/sda
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.10 family
Device Model:     ST3500630AS
Serial Number:    9QG3FG12
Firmware Version: 3.AAK
User Capacity:    500,107,862,016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Sun Jul  6 18:33:39 2008 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Como se observa, las dos ultimas lineas son las que nos confirman si el disco tiene soporte S.M.A.R.T., en donde tal y como se muestra lo tenemos activado, pues el valor «SMART support is: Enabled».

El siguiente punto a realizar, es realizar una prueba para ver exactamente cuales son las características que nuestro dispositivo soporta mediante smartctl -Hc /dev/dispositivo:

# smartctl -Hc /dev/sda
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF READ SMART DATA SECTION ===
...
SMART overall-health self-assessment test result: PASSED
...

Para empezar, podríamos realizar una prueba exhaustiva. Aunque no tengamos sospechas de que nuestro disco duro tenga algún problema nunca está de más realizar esta prueba para comprobar realmente que nuestro dispositivo funciona correctamente.

#smartctl -t long /dev/dispositivo
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 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 163 minutes for test to complete.
Test will complete after Mon Jul  7 13:18:21 2008
Use smartctl -X to abort test.

Tal y como se puede ver en el resultado del comando, se ejecuta un test extendido y con una previsión de finalización de 163 minutos. Como el test lo realiza en modo off-line, podemos seguir trabajando con nuestra consola, pudiendo abortar el test con el comando «smartctl -X». Hay que tener en cuenta que mientras el disco está realizando la prueba, puede que no esté funcionando correctamente.

Una vez terminado el test vamos a ver el resultado:

# smartctl -l selftest /dev/dispositivo
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 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% 4451 -
...
#21 Extended offline Completed without error 00% 4452 -

Otro modo de ver los datos S.M.A.R.T. de nuestro disco duro en modo extendido, es ejecutando el comando smartctl -A /dev/dispositivo:

# smartctl -A /dev/dispositivo
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate       0x000f 116 100 006 Pre-fail Always - 103472814
3 Spin_Up_Time              0x0003 093 092 000 Pre-fail Always - 0
4 Start_Stop_Count          0x0032 100 100 020 Old_age Always  - 178
5 Reallocated_Sector_Ct     0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate           0x000f 070 060 030 Pre-fail Always - 10844595
9 Power_On_Hours            0x0032 095 095 000 Old_age Always  - 4452
10 Spin_Retry_Count         0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count        0x0032 100 100 020 Old_age Always  - 178
187 Reported_Uncorrect      0x0032 100 100 000 Old_age Always  - 0
189 High_Fly_Writes         0x003a 100 100 000 Old_age Always  - 0
190 Airflow_Temperature_Cel 0x0022 059 057 045 Old_age Always  - 41 (Lifetime Min/Max 31/41)
194 Temperature_Celsius    0x0022 041 043 000 Old_age Always   - 41 (0 19 0 0)
195 Hardware_ECC_Recovered 0x001a 068 063 000 Old_age Always   - 185065209
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always   - 0
198 Offline_Uncorrectable  0x0010 100 100 000 Old_age Offline  - 0
199 UDMA_CRC_Error_Count   0x003e 200 200 000 Old_age Always   - 0
200 Multi_Zone_Error_Rate  0x0000 100 253 000 Old_age Offline  - 0
202 TA_Increase_Count      0x0032 100 253 000 Old_age Always   - 0

Una vez hemos comprobado que no tenemos errores destacables en nuestro dispositivo, ya es momento de configurar el demonio para que lo vaya monitorizando regularmente. Para ello debemos editar el fichero /etc/smartd.conf

/dev/dispositivo -S on -o on -a -I 194 -m cuenta@dominio.tld

Esto permitirá monitorizar nuestro dispositivo de modo automático (-S), ignorando variaciones de temperatura (-I 194), monitorizando todos los atributos (-a), activando todos los tests off-line (-o) y enviando un email en caso que haya errores a la cuenta@dominio.tld (-m cuenta@dominio.tld). También es importante recalcar, que si nuestro dispositivo es un disco Serial ATA o SCSI, se debe indicar en todos los comandos smartctl y en smartd.conf añadiendo -d sat.

Otra característica de este programa es que aporta una documentación muy extendida, con lo que para configuraciones más avanzadas podremos consultar casi cualquier duda con el comando man.

¿Qué hacer cuando aún teniendo opciones de prevención el disco duro se estropea y necesitamos recuperar esos datos?

Puede pasar una desgracia de esta índole. Puede pasar que no tengamos la buena costumbre de no usar un S.A.I. (Servicio de Alimentación Ininterrumpida, conocido en inglés como U.P.S.) y debido a una brusca variación de corriente eléctrica y nos deje nuestro dispositivo totalmente inutilizable. También puede que tengamos el disco duro en un portátil o un dispositivo U.S.B. y éste se nos caiga al suelo rompiéndolo físicamente, se nos moje, etc.

Todos estos ejemplos son errores fatales para nuestro disco duro. Significa la muerte para ellos, pero, ¿y con su información?, ¿Puede ser recuperada?. La respuesta es si, puede ser recuperada. Existen varias empresas que se dedican a la recuperación de esos datos tan vitales para la empresa o el individuo. Uno de las empresas por las cual puedo dar fe, es www.inforescate.com. Después de presentarme un presupuesto y al aceptar el mismo en menos de una semana me remitieron un disco duro nuevo y reparado.

Fuente de datos:
es.wikipedi.org y en.wikipedia.org
blackshell
linux journal


Sobre esta entrada