lunes, 3 de febrero de 2020

Diagnóstico Hardware: Disco Duro

Una parte importante del diagnóstico hardware es la comprobación de los discos duros. Si sospechamos que un disco duro tiene problemas es necesario hacer una copia de seguridad de los datos ya que se podrían perder o corromper debido al problema que tenga o a las pruebas que hagamos.

Si falla el disco duro es posible que el sistema operativo esté guardando un registro de los errores. En el archivo /var/log/kern.log de Linux o en el Visor de Sucesos de Windows podemos ver informes de estos errores.

© Raimond Spekking

Los discos duros fallan con el tiempo, por eso tienen internamente un sistema llamado S.M.A.R.T (Self Monitoring Analysis and Reporting Technology) que monitoriza el funcionamiento del disco duro, guarda un registro de errores y permite hacer unos test de funcionamiento. Los fabricantes de discos duros suelen poner a disposición de los usuarios un programa específico para sus discos duros para interactuar con el sistema SMART de estos.

Durante la monitorización que realiza el sistema SMART se guardan una serie de atributos sobre el funcionamiento del disco duro. Dependiendo del fabricante y el modelo pueden variar los atributos, sus valores y a partir de que nivel se considera un problema. Cada atributo tiene cuatro parámetros principales a tener en cuenta:

  • Value (valor): valor actual del atributo entre 253 y 1.
  • Threshold (límite): cuando el valor es menor que este límite indica que el disco funciona mal y va a fallar.
  • Worst (peor): el valor más bajo y por tanto peor que ha tenido el atributo
  • Raw Value (valor en bruto): dato guardado a partir del que se calcula el valor del atributo

El valor del atributo se calcula a partir del parámetro Raw Value (Valor Bruto), que es el dato que guarda el sistema SMART, como por ejemplo un número de sectores o de horas de funcionamiento. Este parámetro puede ser útil para el diagnóstico del disco duro pero hay que tener en cuenta que su valor y formato así como la forma de calcular el valor del atributo pueden variar entre modelos de disco duro y fabricantes, por lo que es necesario buscar la información necesaria para interpretarlo correctamente o usar el programa del fabricante.

Los discos duros modernos cuando falla un sector lo marcan como "reasignado" y utilizan en su lugar un sector del "área de repuesto". De esta forma no dan error y el disco duro sigue funcionando sin problemas mientras queden sectores libres en el "área de repuesto".

Hay tres parámetros SMART que nos dan información sobre estos sectores:

  • Reallocated Sector Count: Sectores que han fallado y han sido reasignados al área de repuesto.
  • Reallocated Event Count: Número de veces que se ha intentado reasignar un sector. Se incluyen las veces que funcionó y las que falló.
  • Current Pending Sector: Sectores que fallaron y que están pendientes de reasignar.

Mientras el valor de estos atributos no caiga por debajo del límite el disco duro se puede seguir usando, aunque si el valor bruto no es igual a cero puede ser conveniente cambiar el disco porque pueden ser los primeros síntomas de un problema importante que haga fallar el disco en el futuro.

Si el valor del atributo Temperature Celsius está por debajo del límite o el peor valor indica que alguna vez lo ha estado hay que revisar la refrigeración del disco o cambiarlo si no se puede arreglar. En el valor bruto se puede ver la temperatura actual y se puede comparar con el valor indicado en las especificaciones del disco duro.

Otro valor bruto a tener en cuenta es UDMA CRC Error Count. Si aumenta con el uso del disco duro puede indicar que el cable de datos está en mal estado o mal conectado.

El sistema SMART permite hacer dos tipos de test que verifican las propiedades eléctricas y mecánicas del disco y hacen una prueba de lectura: uno corto que dura 2 minutos y solo hace la prueba de lectura de una parte del disco y uno largo que no tiene límite de tiempo y hace la prueba de lectura en todo el disco.

Para interactuar con el sistema SMART y hacer otro tipo de comprobaciones como tests de lectura/escritura para buscar sectores defectuosos debemos usar una serie de programas. Para no dañar el disco duro o los datos grabados en este instalando programas podemos usar un Linux o Windows Live CD como System Rescue CD.

Chequeo BIOS

El BIOS del ordenador puede chequear los parámetros SMART al iniciar y además contar con un programa que permita hacer los tests.

smartctl

Para interactuar con el sistema SMART del disco duro desde Linux se utiliza el programa smartctl de smartmontools, donde también se incluye el programa smartd que permite monitorizar el estado del sistema SMART y realizar acciones ante algún cambio. Estos programas además están disponibles para otros sistemas operativos como Windows o MacOSX.

Ejecutando el siguiente comando se extrae toda la información del primer disco duro.

smartctl -a /dev/sda

Lo primero que aparece son las características del disco como el modelo, número de serie, tamaño, velocidad de rotación o si está activado el sistema SMART.

smartctl 6.6 2016-05-31 r4324 [i686-linux-4.9.0-3-686-pae] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Toshiba 2.5" HDD MK..59GSXP (AF)
Device Model:     TOSHIBA MK3259GSXP
Serial Number:    32HBPA5BT
LU WWN Device Id: 5 000039 3e2688944
Firmware Version: GN003J
User Capacity:    320.072.933.376 bytes [320 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s (current: 1.5 Gb/s)
Local Time is:    Mon Jul 17 12:43:30 2017 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

A continuación empieza la información del estado del sistema SMART y las funcionalidades que tiene activadas. Aquí se puede ver si está en marcha un test o está activada la recogida de información del funcionamiento.

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

General SMART Values:
Offline data collection status:  (0x85) Offline data collection activity
     was aborted by an interrupting command from host.
     Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
     without error or no self-test has ever 
     been run.
Total time to complete Offline 
data collection:   (  120) seconds.
Offline data collection
capabilities:     (0x5b) SMART execute Offline immediate.
     Auto Offline data collection on/off support.
     Suspend Offline collection upon new
     command.
     Offline surface scan supported.
     Self-test supported.
     No Conveyance Self-test supported.
     Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
     power-saving mode.
     Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
     General Purpose Logging supported.
Short self-test routine 
recommended polling time:   (   2) minutes.
Extended self-test routine
recommended polling time:   (  97) minutes.
SCT capabilities:         (0x003d) SCT Status supported.
     SCT Error Recovery Control supported.
     SCT Feature Control supported.
     SCT Data Table supported.

Después está la lista de atributos que el disco duro mantiene sobre su funcionamiento.

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   100   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       -       1208
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       2942
  5 Reallocated_Sector_Ct   0x0033   100   100   050    Pre-fail  Always       -       0
  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   088   088   000    Old_age   Always       -       4897
 10 Spin_Retry_Count        0x0033   158   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1498
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       366
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       24
193 Load_Cycle_Count        0x0032   090   090   000    Old_age   Always       -       102886
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       43 (Min/Max 10/53)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
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       -       0
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       59
222 Loaded_Hours            0x0032   089   089   000    Old_age   Always       -       4590
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       -       239
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0

A continuación de los atributos se muestra una lista de los errores detectados en el disco duro durante su funcionamiento. En el caso de este disco duro no ha habido ningún error.

SMART Error Log Version: 1
No Errors Logged

Por último está la lista de tests realizados por el sistema SMART al disco duro.

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%      4897         -
# 2  Extended offline    Completed without error       00%      1502         -
# 3  Short offline       Completed without error       00%      1500         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Para ejecutar los tests se utiliza también el programa smartctl con el parámetro -t con el valor short (corto) o long (largo).

smartctl -t short /dev/sda

Y la salida del comando es la siguiente:

smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-3-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Sun Jul 17 12:14:26 2017

Use smartctl -X to abort test.

gsmartcontrol

Para interactuar con el sistema SMART también se puede utilizar la aplicación gsmartcontrol, que es una interfaz gráfica para smartctl. Esta aplicación no está incluida en System Rescue CD.


badblocks

Si se quiere estar aún más seguro de que el disco duro no tiene fallos se puede hacer un test de lectura/escritura en todo el disco con el programa badblocks. Este programa también se puede usar con cualquier tipo de memoria flash. Por defecto solo hace un test de lectura pero con la opción -n o -w hace un test de escritura que consiste en escribir datos y luego leerlos para comprobar que lo escrito es igual que lo leído y el disco funciona correctamente. Es el mismo procedimiento que hace Memtest86+ con la memoria.

La diferencia entre las opciones -n y -w consiste en que con -n se conservan los datos que había en el disco y con -w se pierden. Con -n el procedimiento es más lento ya que tiene que volver a escribir los datos originales. Aunque se use la opción -n es conveniente tener una copia de seguridad por si algo falla o cometemos un error.

Además se puede añadir la opción -s para mostrar el progreso y la opción -v para que muestre más información.

badblocks -nsv /dev/sda

Revisando los bloques dañados en modo lectura-escritura no destructivo
Del bloque 0 al 312571223
Revisando los bloques dañados (prueba de lectura-escritura no destructiva)
Probando con un patrón aleatorio:   1.67% hecho, 1:02 transcurrido. (0/0/0 errores)

Si durante el chequeo encuentra algún error saldrá un mensaje por pantalla y al finalizar se muestra el número de bloques dañados y el número de errores.

Paso terminado, se encontraron 0 bloques dañados. (0/0/0 errores)

Como los discos duros modernos pueden detectar sectores defectuosos y reasignarlos es conveniente volver a revisar los atributos SMART de sectores defectuosos después de hacer un test de lectura/escritura.

e2fsck

En Linux durante un chequeo de un sistema de archivos con e2fsck se le puede indicar que utilice badblocks para comprobar los sectores del disco duro en los que está ese sistema de archivos. Con el parámetro -c hace un test de solo lectura y con -cc uno de lectura y escritura conservando los datos.

hdparm

El programa hdparm permite ver información detallada del disco, cambiar algunos parámetros de funcionamiento y hacer pruebas de velocidad de lectura. Esta información nos puede servir para diagnosticar problemas de rendimiento.

Utilizando la opción -I muestra toda la información del disco duro como el modelo, número de serie, firmware y todas las tecnologías que utiliza.

# hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
 Model Number:       TOSHIBA MK3259GSXP                      
 Serial Number:      32HBPA5BT
 Firmware Revision:  GN003J  
 Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
Standards:
 Supported: 8 7 6 5 
 Likely used: 8
Configuration:
 Logical  max current
 cylinders 16383 17475
 heads  16 15
 sectors/track 63 63
 --
 CHS current addressable sectors:    16513875
 LBA    user addressable sectors:   268435455
 LBA48  user addressable sectors:   625142448
 Logical  Sector size:                   512 bytes
 Physical Sector size:                  4096 bytes
 device size with M = 1024*1024:      305245 MBytes
 device size with M = 1000*1000:      320072 MBytes (320 GB)
 cache/buffer size  = 8192 KBytes
 Form Factor: 2.5 inch
 Nominal Media Rotation Rate: 5400
Capabilities:
 LBA, IORDY(can be disabled)
 Queue depth: 32
 Standby timer values: spec'd by Standard, no device specific minimum
 R/W multiple sector transfer: Max = 16 Current = 16
 Advanced power management level: 254
 DMA: sdma0 sdma1 sdma2 mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 
      Cycle time: min=120ns recommended=120ns
 PIO: pio0 pio1 pio2 pio3 pio4 
      Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
 Enabled Supported:
    * SMART feature set
      Security Mode feature set
    * Power Management feature set
    * Write cache
    * Look-ahead
    * Host Protected Area feature set
    * WRITE_BUFFER command
    * READ_BUFFER command
    * NOP cmd
    * DOWNLOAD_MICROCODE
    * Advanced Power Management feature set
      SET_MAX security extension
    * 48-bit Address feature set
    * Device Configuration Overlay feature set
    * Mandatory FLUSH_CACHE
    * FLUSH_CACHE_EXT
    * SMART error logging
    * SMART self-test
    * General Purpose Logging feature set
    * WRITE_{DMA|MULTIPLE}_FUA_EXT
    * 64-bit World wide name
    * IDLE_IMMEDIATE with UNLOAD
    * {READ,WRITE}_DMA_EXT_GPL commands
    * Segmented DOWNLOAD_MICROCODE
    * Gen1 signaling speed (1.5Gb/s)
    * Gen2 signaling speed (3.0Gb/s)
    * Native Command Queueing (NCQ)
    * Host-initiated interface power management
    * Phy event counters
    * Idle-Unload when NCQ is active
    * DMA Setup Auto-Activate optimization
      Device-initiated interface power management
    * Software settings preservation
    * SMART Command Transport (SCT) feature set
    * SCT Write Same (AC2)
    * SCT Error Recovery Control (AC3)
    * SCT Features Control (AC4)
    * SCT Data Tables (AC5)
Security: 
 Master password revision code = 65534
  supported
 not enabled
 not locked
  frozen
 not expired: security count
  supported: enhanced erase
 94min for SECURITY ERASE UNIT. 94min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50000393e2688944
 NAA  : 5
 IEEE OUI : 000039
 Unique ID : 3e2688944
Checksum: correct

Con la opción -t se realiza una prueba de lectura secuencial desde el disco duro.

# hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 256 MB in  3.00 seconds =  85.21 MB/sec

Con la opción -T se realiza una prueba de lectura secuencial desde la caché del sistema, por eso la velocidad es mucho mayor.

# hdparm -T /dev/sda

/dev/sda:
 Timing cached reads:   1470 MB in  2.00 seconds = 734.93 MB/sec

chkdsk

Al comprobar un sistema de archivos se le puede indicar al programa chkdsk de Windows que busque los sectores defectuosos del sistema de archivos escaneado e intente recuperar la información escrita en ellos. Para ello se le pasa el parámetro /R.

chkdsk c: /r

Crystal Disk Info

En Windows se puede utilizar el programa libre Crystal Disk Info para ver la información SMART y otras características del disco duro. Este programa además analiza la información, como los sectores defectuosos, e indica el estado del disco. Se puede usar sin necesidad de instalarlo.


HDDScan

Otro programa para Windows, en este caso gratuito, que nos permite ver la información SMART, otros datos de los discos duros y además hacer tests SMART y de lectura y escritura es HDDScan. Tampoco hace falta instalarlo.


Otros programas para Windows (alguno de ellos con versión para otros sistemas operativos) que permiten ver información del disco, monitorizar su estado o realizar operaciones sobre él son HDTune, DiskCheckup o HD Sentinel. En MacOSX se puede usar SMART Utility. Estos programas tienen una version gratuita o de prueba y otra versión de pago con más funciones.

Si las pruebas no muestran ningún error podemos seguir con el resto del diagnóstico hardware.

No hay comentarios:

Publicar un comentario