Uso de S.M.Ar.T. para la supervisión de discos duros y unidades ssd

La tecnología S.M.A.R.T. (acrónimo de Self Monitoring Analysis and Reporting Technology) consiste en la capacidad de detección de fallos del disco duro. La detección de los fallos con la suficiente anticipación permite al usuario el poder realizar una copia de su contenido, o reemplazar el disco, antes de que se produzca una pérdida de datos irrecuperable. Este tipo de tecnología tiene que ser compatible con la BIOS del equipo, estar activada y además que el propio disco duro la soporte.

El servidor de aula ha empezado a reportar errores en el disco y al investigar me he dado cuenta de que no había contemplado algunas herramientas que a partir de ahora formarán parte de todas las instalaciones en los equipos del centro.

smartctl: para discos duros y mayoría de SSDs

Para instalarla únicamente debemos ejecutar el siguiente comando en la terminal:

sudo apt install smartmontools

Una vez instalada únicamente debemos ejecutar el siguiente comando para reconocer las unidades compatibles instaladas en el sistema

# smartctl --scan

/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/sdc -d scsi # /dev/sdc, SCSI device

En mi caso reporta la existencia de tres discos, siendo el tercero (/dev/sdc) el que me interesa investigar en este momento.

Si tienes dudas para identificar la unidad puedes ejecutar la  orden «lsblk» para obtener información sobre la marca, tamaño, modelo y punto de montaje actual de cada una de ellas:

# lsblk --output NAME,SIZE,MODEL,MOUNTPOINT

sda 596,2G WDC_WD6402AAEX-00Z3A0
├─sda1 29,8G /
├─sda2 7,6G [SWAP]
└─sda3 558,8G /home
sdb 931,5G ST1000DM003-1ER162
└─sdb1 931,5G /data
sdc 1,8T ST2000DL004_HD204UI
├─sdc1 23G
├─sdc2 1K
├─sdc3 1,8T
└─sdc5 4G

Ahora ejecutaremos «smartclt» para generar un informe detallado sobre el funcionamiento de esa unidad:

# smartctl --all /dev/sdc
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-63-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family: Seagate Samsung SpinPoint F4 EG (AF)
Device Model: ST2000DL004 HD204UI
Serial Number: S2H7JX0D200455
LU WWN Device Id: 5 0000f0 0200b5504
Firmware Version: 1AQ10001
User Capacity: 2.000.398.934.016 bytes [2,00 TB]
Sector Size: 512 bytes logical/physical
Rotation Rate: 5400 rpm
Form Factor: 3.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 6
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Sat Jan 16 12:54:12 2021 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

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

General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
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: (21660) 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: ( 361) minutes.
SCT capabilities: (0x003f) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.

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 0x002f 100 100 051 Pre-fail Always - 0
2 Throughput_Performance 0x0026 252 252 000 Old_age Always - 0
3 Spin_Up_Time 0x0023 067 064 025 Pre-fail Always - 10191
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 126
5 Reallocated_Sector_Ct 0x0033 049 049 010 Pre-fail Always - 6328
7 Seek_Error_Rate 0x002e 252 252 051 Old_age Always - 0
8 Seek_Time_Performance 0x0024 252 252 015 Old_age Offline - 0
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 48193
10 Spin_Retry_Count 0x0032 252 252 051 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 149
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 148
181 Program_Fail_Cnt_Total 0x0022 100 100 000 Old_age Always - 10447849
191 G-Sense_Error_Rate 0x0022 100 100 000 Old_age Always - 2
192 Power-Off_Retract_Count 0x0022 252 252 000 Old_age Always - 0
194 Temperature_Celsius 0x0002 064 064 000 Old_age Always - 26 (Min/Max 14/38)
195 Hardware_ECC_Recovered 0x003a 100 100 000 Old_age Always - 0
196 Reallocated_Event_Count 0x0032 049 049 000 Old_age Always - 6328
197 Current_Pending_Sector 0x0032 252 252 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 252 252 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0036 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x002a 100 100 000 Old_age Always - 1790
223 Load_Retry_Count 0x0032 100 100 000 Old_age Always - 149
225 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 297

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Completed [00% left] (0-65535)
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.

Podemos observar que en principio no reporta errores críticos, pero también que la unidad no estaba configurada para realizar autodiagnósticos. Para realizar un test podemos ejecutar la orden

# smartctl -t offline /dev/sdc
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-63-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART off-line routine immediately in off-line mode".
Drive command "Execute SMART off-line routine immediately in off-line mode" successful.
Testing has begun.
Please wait 21660 seconds for test to complete.
Test will complete after Sat Jan 16 19:16:13 2021 CET
Use smartctl -X to abort test.

que le llevaría unas 6 horas en completarse (la unidad es de 2TB). Si sospechamos que la unidad realmente tiene problemas podemos utilizar la opción del test rápido:

# smartctl -t short /dev/sdc
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-63-generic] (local build)
Copyright (C) 2002-19, 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 Sat Jan 16 13:22:37 2021 CET
Use smartctl -X to abort test.

Al volver a mostrar la información de la unidad he podido confirmar que tiene problemas, por lo que me tocara extraer la información que pueda y sustituir el disco:

SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short captive Completed: read failure 90% 48193 29395344
# 2 Short offline Completed: read failure 90% 48193 29395344

nvme-cli para discos SSD con tecnología NVME

En este caso hay que instalar un paquete que incluye la herramienta que necesitamos. Para esto ejecutamos el siguiente comando:

sudo apt install nvme-cli

Una vez instalado ejecuta el siguiente comando para identificar los discos compatibles con esta herramienta:

# nvme list

Identificado el nombre del dispositivo (p.ej:  /dev/nvme0n1) podemos proceder a leer la información con el comando

# nvme smart-log /dev/nvme0n1

NOTA: Recuerda que debes cambiar «nvme0n1» por el correspondiente identificador del SSD instalado en tu sistema.

GSmartControl: Aplicación gráfica

Existe una interfaz más amigable para realizar estas tareas sin no te encuentras cómodo con el terminal. Para ello instala la siguiente aplicación:

sudo apt-get install gsmartcontrol

Ejecútala como administrador y mostrará un primer panel con la lista de dispositivos. En mi caso:

Selecciona la unidad a revisar para acceder a los registros y pruebas de integridad:

Uso de GNOME Disks

La aplicación se llama Disks (anteriormente Disk Utility), y forma parte de las Core Applications de GNOME y de MATE.

Una vez abierta la aplicación, verás que se divide principalmente en un menú lateral izquierdo con un esquema con los diferentes dispositivos o unidades de disco detectados por el sistema operativo, incluyendo el disco duro principal en la parte superior, y la zona principal con información varia sobre la unidad de disco seleccionada.

Si marcas el icono de la parte superior verás que se desplega un menú con diversas opciones, entre ellas una que pone “Datos y pruebas SMART”.