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
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
smartctl -s on /dev/sdbb smartctl -s off /dev/sdbb
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
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.
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).
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
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
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