Table of Contents

Guía avanzada de smartctl desde linea de comandos

Si algunos de los comandos propuestos fallan, se recomienda probar el parámetro “-T permissive” (e incluso “-T verypermissive”) para que smartctl sea más tolerante a posibles errores recibidos por comandos SMART / ATA y se pueda trabajar sobre el disco.

El comando dmesg puede ayudar también a localizar problemas en los discos. En esta guía se mostrarán las opciones más interesantes de la herramienta, no todas las opciones valen para todos los tipos de disco, se recomienda mirar el manual de smartctl.

Si se desea configurar smartd (demonio de smartd): configurar_smartd_con_alertas_a_gmail_facil

Obtener información del disco duro

Modelo de disco duro, número de serie, versión del firmware del disco duro, etc.

smartctl -i /dev/sdd
 
=== START OF INFORMATION SECTION ===
Model Family:     SAMSUNG SpinPoint S250
Device Model:     SAMSUNG HD250HJ
Serial Number:    S0URJ9CPB07644
LU WWN Device Id: 5 0000f0 09bb07644
Firmware Version: FH100-05
User Capacity:    250.059.350.016 bytes [250 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA/ATAPI-7, ATA8-ACS T13/1699-D revision 3b
Local Time is:    Sun Mar 29 17:10:12 2015 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Obtener toda la información smart del disco duro.

smartctl -a /dev/sdbb

Obtener toda la información del disco smart y no-smart.

smartctl -a /dev/sdbb

Activar o desactivar smart en discos duros

smartctl -s on /dev/sdbb
smartctl -s off /dev/sdbb

Indicar el tipo de dispositivo usado con smart

Por defecto se usa siempre el tipo auto, pero cuando este falla se debe especificar el tipo de dispositivo. Es posible también apoyarse en la opción de escaneo.

Analiza en busca de dispositivos y muestra los nombres, tipos y protocolos ([ATA] o [SCSI]) de los dispositivo conectados.

smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device

Ejemplo de uso

smartctl -a /dev/sdd
 
/dev/sdd: USB bridge [0x152d:0x0539 (0x202)] type is ambiguous: 'usbjmicron' or 'sat'
Please specify device type with the -d option.
 
Use smartctl -h to get a usage summary
 
$ smartctl -H -d sat /dev/sdd

Examinar los atributos de los discos

Información del estado de cada atributo del disco. Se puede consultar la temperatura actual, su mínimo y máximo soportado, cuantas veces ha entrado el disco en estado de standby, horas que ha estado funcionando el disco desde que se compró, cuantas veces se ha encendido el disco, etc. Esto permite controlar el estado de cada atributo, los cuales no siempre son iguales y dependen de cada fabricante y modelo de disco duro.

smartctl -A /dev/sdd
 
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   099   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       449
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       185
  5 Reallocated_Sector_Ct   0x0033   001   001   050    Pre-fail  Always   FAILING_NOW 16376
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       56
 10 Spin_Retry_Count        0x0033   103   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       101
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       44
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       298
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       34 (Min/Max 13/47)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1690
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       1073
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       0
222 Loaded_Hours            0x0032   100   100   000    Old_age   Always       -       40
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       265
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0

En el ejemplo, el atributo Reallocated_Sector_Ct muestra que hay sectores dañados en el disco y estos se han reasignado. Cuando el disco duro encuentra un error de lectura / escritura / verificación, marca ese sector como “reasignado” y transfiere los datos a un área reservada especial (área de repuesto). Este proceso se conoce también como reasignación (remapping) y los sectores reasignados remaps. El valor bruto normalmente representa un recuento de los sectores defectuosos que se han encontrado y reasignado. Cuanto mayor sea el valor de atributo, más sectores de la unidad se han tenido que reasignar. El usar discos duros con sectores reasignados tiene un impacto en el rendimiento debido a que la aguja debe ir a esa área de repuesto cada vez que necesita algún dato afectado por la reasignación.

En el caso del ejemplo, el disco está tan deteriorado que no es posible reasignar los sectores defectuosos. En otros casos, se puede seguir usando el disco duro, pero se debe tener en cuenta que ese disco será, muy posiblemente, más propenso a fallar cada día que pase en funcionamiento. Cuando la controladora del disco no puede reasignar los sectores dañados por el motivo que sea y se quiere seguir usando el dispositivo, se puede obtener un listado de bloques dañados y dar formato al disco esquivando esas áreas del disco.

La reasignación de sectores la realiza el propio firmware del disco duro, pero algunas veces todavía no ha sido realizada o bien no puede hacerla. Esto provocaría que se encontrara el atributo smart Reallocated_Sector_Ct a 0 y Current_Pending_Sector con algún valor indicando que hay sectores pendientes de reasignar.

La reasignación automática de sectores sólo ocurre cuando se escribe en un sector defectuoso, si una unidad sabe que un sector tiene problemas y la controladora de la unidad recibe una orden para escribir sobre él, esta no utilizará más ese sector y los reasignará otra región (espacio de repuesto). Esto explica porque algunos discos que parecen completamente defectuosos, pasado un tiempo parecen estar recuperados (Cuanto todos los sectores defectuosos se han reasignado). Ver atributos #197 Current_Pending_Sector y #5 Reallocated_Sector_Ct. Para forzar la reasignación manualmente se pueden utilizar herramientas como SeaTools, hdparm, dd o sg_reassign / sg_verify (Leer).

NOTA: La reasignación de sectores no tiene relación con el sistema de ficheros y el encargado de realizarlo y utilizarlo es la controladora del disco duro. Cuando no se pueden reasignar todos los sectores defectuosos, la solución sería esquivarlos a nivel de sistema de ficheros al dar formato al disco, de esta forma nunca se usarían esos bloques dañados.

Información sobre los atributos

Comprobar que los sectores están defectuosos Obtenemos la la siguiente salida.

smartctl -a /dev/sdb
...
Error 614 occurred at disk power-on lifetime: 14643 hours (610 days + 3 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 08 60 cb 02 eb  Error: ICRC, ABRT at LBA = 0x0b02cb60 = 184732512
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ca 00 08 60 cb 02 eb 00      00:21:04.563  WRITE DMA
  ec 00 00 00 00 00 a0 00      00:21:04.500  IDENTIFY DEVICE
  ef 03 42 00 00 00 a0 00      00:21:04.500  SET FEATURES [Set transfer mode]
  ec 00 00 00 00 00 a0 00      00:21:04.500  IDENTIFY DEVICE
  00 00 01 01 00 00 a0 00      00:21:04.313  NOP [Abort queued commands]

Podemos usar hdparm o dd para asegurar el estado de esos sectores. Si el sector defectuoso está pendiente de ser reasignado, el siguiente comando mostraría errores de entrada salida ya que todavía el LBA apunta a un sector inutilizable.

hdparm --read-sector 184732512 /dev/sdd
/dev/sdd: Input/Output error
 
# Usando dd.
dd bs=4096 seek=$((184732512/8)) count=1 if=/dev/sdd of=/dev/null
dd: /dev/sdd: Input/output error

Es muy posible que la salida de smartctl muestre errores y estos estén ya subsanados. Es decir, se han reasignado esos sectores defecutosos y LBA apunta a sectores sin problemas, por eso es importante fijarse en los atributos que muestra smartctl.

hdparm --read-sector 184732512 /dev/sdb
/dev/sdb:
reading sector 184732512: succeeded
 
# Usando dd.
dd bs=4096 seek=$((184732512/8)) count=1 if=/dev/sdd of=/dev/null
1+0 registros leídos
1+0 registros escritos
4096 bytes (4,1 kB) copiados, 2,77199 s, 1,5 kB/s

Forzar reasignación de sectores con hdparm.

hdparm --write-sector 184732512 --yes-i-know-what-i-am-doing /dev/sdd
    /dev/sdb: re-writing sector 184732512: succeeded

# Comprobación del sector reasignado.
hdparm --read-sector 184732512
   /dev/sdb:
   reading sector 184732512: succeeded

Al reasignar sectores se puede apreciar como aumenta el valor del atributo smart Reallocated_Sector_Ct y disminuye Reallocated_Event_Count.

Leer: http://www.smartmontools.org/browser/trunk/www/badblockhowto.xml#sdisk

NOTA: La utilidad hdparm puede también crear sectores defectuosos con la opción --make-bad-sector.

Atributos smart críticos a tener en cuenta.

Si alguno de estos atributos tiene un problema lo más probable es que se encuentren problemas en el uso del disco de forma inminente.

Campos de los atributos mostrados por smartctl.

Para el ID 194, el valor crudo guarda tres temperaturas: la temperatura del disco en grados Celsius (34), su mínimo (13) y máximo (47)

Para reflejar la fiabilidad del disco, el firmware del disco convierte el valor crudo en un valor normalizado entre 1 y 253. Si este valor normalizado es menor o igual que el umbral (THRESH), se dice que el atributo ha fallado, tal y como indica la columna “WHEN_FAILED”, mostrando “FAILING_NOW”. Si el valor registrado es inferior o igual al valor del umbral, entonces esta columna mostrará “In_the_past”. Si la columna “WHEN_FAILED” no tiene ninguna entrada (indicado por un guión: '-') entonces este atributo está correcto y nunca ha fallado en el pasado.

Que no se obtenga ningún FAILING_NOW no quiere decir que todo esté en orden en nuestro disco, es obligatorio siempre hacer un test largo y consultar los resultados con la opción “-H” o bien “-l selftest” o utilizar -a (recomendado).

NOTA: Los nombres/significados de los atributos y la interpretación de sus valores crudos no están especificados en ningún estándard. A veces diferentes fabricantes utilizan el mismo ID de atributo para diferentes propósitos. Por esta razón, la interpretación de un atributo específico puede modificarse con la opción -v de smartctl; consulte la página de manual para los detalles.

Visualizar los errores reportados por smart

Mostrar los errores encontrados en el disco, solo puede mostrar los últimos 5 errores críticos. Uno se debe preocupar solo cuando los errores comienzan a aparecer en grandes cantidades. Un error ocasional, transitorio y no recurrente suele ser benigno. La página web de smartmontools tiene varios ejemplos de salida de smartctl -a mostrando algunas entradas en el registro de errores ilustrativas.

smartctl -l error /dev/sdb
 
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
ATA Error Count: 615 (device log contains only the most recent five errors)
	CR = Command Register [HEX]
	FR = Features Register [HEX]
	SC = Sector Count Register [HEX]
	SN = Sector Number Register [HEX]
	CL = Cylinder Low Register [HEX]
	CH = Cylinder High Register [HEX]
	DH = Device/Head Register [HEX]
	DC = Device Command Register [HEX]
	ER = Error register [HEX]
	ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
 
Error 615 occurred at disk power-on lifetime: 14643 hours (610 days + 3 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 08 60 cb 02 eb  Error: ICRC, ABRT at LBA = 0x0b02cb60 = 184732512
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ca 00 08 60 cb 02 eb 00      00:21:04.938  WRITE DMA
  ec 00 00 00 00 00 a0 00      00:21:04.875  IDENTIFY DEVICE
  ef 03 42 00 00 00 a0 00      00:21:04.875  SET FEATURES [Set transfer mode]
  ec 00 00 00 00 00 a0 00      00:21:04.813  IDENTIFY DEVICE
  00 00 01 01 00 00 a0 00      00:21:04.625  NOP [Abort queued commands]
 
Error 614 occurred at disk power-on lifetime: 14643 hours (610 days + 3 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 08 60 cb 02 eb  Error: ICRC, ABRT at LBA = 0x0b02cb60 = 184732512
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ca 00 08 60 cb 02 eb 00      00:21:04.563  WRITE DMA
  ec 00 00 00 00 00 a0 00      00:21:04.500  IDENTIFY DEVICE
  ef 03 42 00 00 00 a0 00      00:21:04.500  SET FEATURES [Set transfer mode]
  ec 00 00 00 00 00 a0 00      00:21:04.500  IDENTIFY DEVICE
  00 00 01 01 00 00 a0 00      00:21:04.313  NOP [Abort queued commands]
 
Error 613 occurred at disk power-on lifetime: 14643 hours (610 days + 3 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 08 60 cb 02 eb  Error: ICRC, ABRT at LBA = 0x0b02cb60 = 184732512
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ca 00 08 60 cb 02 eb 00      00:21:04.250  WRITE DMA
  ec 00 00 00 00 00 a0 00      00:21:04.188  IDENTIFY DEVICE
  ef 03 42 00 00 00 a0 00      00:21:04.188  SET FEATURES [Set transfer mode]
  ec 00 00 00 00 00 a0 00      00:21:04.188  IDENTIFY DEVICE
  00 00 01 01 00 00 a0 00      00:21:04.000  NOP [Abort queued commands]
 
Error 612 occurred at disk power-on lifetime: 14643 hours (610 days + 3 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 08 60 cb 02 eb  Error: ICRC, ABRT at LBA = 0x0b02cb60 = 184732512
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ca 00 08 60 cb 02 eb 00      00:21:03.938  WRITE DMA
  ec 00 00 00 00 00 a0 00      00:21:03.875  IDENTIFY DEVICE
  ef 03 42 00 00 00 a0 00      00:21:03.875  SET FEATURES [Set transfer mode]
  ec 00 00 00 00 00 a0 00      00:21:03.875  IDENTIFY DEVICE
  00 00 01 01 00 00 a0 00      00:21:03.688  NOP [Abort queued commands]
 
Error 611 occurred at disk power-on lifetime: 14643 hours (610 days + 3 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 08 60 cb 02 eb  Error: ICRC, ABRT at LBA = 0x0b02cb60 = 184732512
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ca 00 08 60 cb 02 eb 00      00:21:03.625  WRITE DMA
  ec 00 00 00 00 00 a0 00      00:21:03.563  IDENTIFY DEVICE
  ef 03 42 00 00 00 a0 00      00:21:03.563  SET FEATURES [Set transfer mode]
  ec 00 00 00 00 00 a0 00      00:21:03.563  IDENTIFY DEVICE
  00 00 01 01 00 00 a0 00      00:21:03.375  NOP [Abort queued commands]

NOTA: Una vez reasignados (reparados) determinados sectores, se recomienda realizar de nuevo el test largo y comprobar el resultado con el anterior.

LBA = Logical Block Address

Cada bloque en disco tiene una única dirección. Sin embargo, hay diferentes métodos de direccionamiento. La dirección lógica no tiene que coincidir necesariamente con la dirección física. A los bloques también a veces se les llama 'cuadros' (frame) o 'sectores' (sectors).

Consultar la salud del disco segun los datos smart

Esta opción muestra un resumen de la salud del disco, mostrando si algo tiene problemas o no, para obtener una información completa se debe utilizar la opción “-a”. El estado SMART no necesariamente indica la fiabilidad del dispositivo en la actualidad o en el pasado.

NOTA: Si la unidad ya ha tenido problemas anteriormente el estado SMART puede ser inaccesible. Si la unidad estaba experimentando problemas en el pasado, pero ahora los sensores indican que ya no existen los problemas, el estado SMART puede indicar la unidad está bien, dependiendo de la programación del fabricante.

smartctl -H /dev/sdb
 
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
smartctl -H /dev/sdd
 
=== START OF READ SMART DATA SECTION ===
SMART Status not supported: Incomplete response, ATA output registers missing
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
Warning: This result is based on an Attribute check.
Failed Attributes:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   001   001   051    Pre-fail  Always   FAILING_NOW 71480
  5 Reallocated_Sector_Ct   0x0033   001   001   050    Pre-fail  Always   FAILING_NOW 16376

Obtener toda la información smart del disco duro.

smartctl -a /dev/sdbb

Ejecutar tests de autodiagnóstico

Se muestran dos tipos diferentes de pruebas de autodiagnóstico, la corta, la larga, la selectiva y conveyance. Estos tests no corrompen los datos del disco. Normalmente, un test corto sólo tarda dos minutos en completarse, y un test largo tardar varias horas dependiendo del tamaño (1Terybyte - 4 horas). Con el test largo o extendido no hay ninguna restricción de tiempo y se comprueban todos los segmentos del disco en vez de una sección.

Estos tests no interfieren con el funcionamiento normal del disco, así que los comandos se pueden utilizar sobre discos montados en un sistema en ejecución.

Test rápido / largo o extendido (recomendado).

smartctl -t short /dev/sdb 
smartctl -t long /dev/sdb 

Se pueden realizar también test selectivos y usar rangos (hasta 5)

sudo smartctl -t select,10-20 /dev/sdc # LBA 10 a LBA 20 (incl.)
sudo smartctl -t select,10+11 /dev/sdc # LBA 10 a LBA 20 (incl.)
sudo smartctl -t select,0-10 -t select,5-15 -t select,10-20 /dev/sdc # Rangos

El test Conveyance es una prueba rápida para identificar los daños ocasionados durante el transporte del dispositivo del fabricante de la unidad al fabricante del equipo.

Obtener información sobre los test realizados. (Solo muestra los últimos 21 Tests)

smartctl -l selftest /dev/sdd
 
=== 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  Extended captive    Completed: unknown failure    90%        71         0
# 2  Extended offline    Completed: read failure       00%        61         79544
# 3  Short offline       Completed without error       00%      3692         -

Si “-l selftest” dice que no hay nada registrado, es que todavía debe haber un test trabajando o bien todavía no se hizo ninguno.

Para saber el estado / progreso de un smart test en funcionamiento.

smartctl -c /dev/sda | grep remain
50% of test remaining.

Una vez que el test haya terminado se puede saber como resulto usando “-l selftest”.

Si los test extendidos aparecen siempre como interrumpidos, leer esta entrada.

Cancelar un test que está en ejecución.

smartctl -X /dev/sda

Recomendaciones a tener en cuenta

Comando útil para listar todos los discos duros y mostrar propiedades / estado.

for i in /dev/[sh]d[abcdefghijklmnopqrstuvwxyz]; do echo "===DRIVE: $i==="; smartctl -a $i | egrep -i "serial|model|capacity|reallocated_sec|ata error|power_on"; done;
 
===DRIVE: /dev/sda===
Model Family:     Western Digital Blue
Device Model:     WDC WD10EZEX-00BN5A0
Serial Number:    WD-WMC3F0685256
User Capacity:    1.000.204.886.016 bytes [1,00 TB]
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       5449
===DRIVE: /dev/sdb===
Model Family:     SAMSUNG SpinPoint S250
Device Model:     SAMSUNG HD250HJ
Serial Number:    S0URJ9CPB07644
User Capacity:    250.059.350.016 bytes [250 GB]
  5 Reallocated_Sector_Ct   0x0033   253   253   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       23338
ATA Error Count: 615 (device log contains only the most recent five errors)
===DRIVE: /dev/sdc===
Model Family:     Seagate Barracuda 7200.12
Device Model:     ST31000528AS
Serial Number:    9VP5ENVM
User Capacity:    1.000.204.886.016 bytes [1,00 TB]
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   097   097   000    Old_age   Always       -       3413

Enlaces de interés recomendados