Cómo diagnosticar y optimizar un duro SSD o HDD

En mi último post hablé de cómo usar una Raspberry Pi Zero para monitorizar un SAI Salicru con NUT y Telegram, evitando esos molestos unsafe shutdowns que tanto dañan los SSD o las SD cards. Pues bien, todo empezó porque tenía un SSD Kingston A400 240GB conectado por USB 3.0 en mi Raspberry Pi 5, y quería saber si estaba sano, rápido y bien configurado.

Hoy os cuento el proceso paso a paso que usé para chequearlo todo: desde identificar el adaptador USB-SATA hasta medir velocidad real y ver la salud interna del disco con SMART. Estos comandos son oro puro para cualquiera que use boot desde SSD USB, NAS casero, backups o simplemente quiera exprimir su Pi sin sorpresas.

¿Por qué molestarse en hacer esto?

  • Saber si tu SSD (o HDD) está sano: Evitas perder datos por fallos silenciosos (bad blocks, sectores reasignados, desgaste excesivo).
  • Medir rendimiento real: Muchos enclosures USB baratos limitan a 30-50 MB/s o caen a USB 2.0. Con UASP bien configurado, un SSD SATA puede volar a 300-400 MB/s en Pi 5.
  • Detectar problemas de hardware: Chipset malo (Realtek vs ASMedia), alimentación inestable, cables defectuosos o quirks del kernel.
  • Beneficios prácticos: Boot mucho más rápido que microSD, menos corrupción de filesystem, alertas tempranas si la vida del SSD baja, y tranquilidad total (sobre todo si usas el Pi 24/7).

Los comandos que usé (y qué hace cada uno)

  1. Lista todos los dispositivos USB conectados.
    En mi caso:
vigilante@raspberrypi:~ $ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 04d9:0006 Holtek Semiconductor, Inc. Wired Keyboard (78/79 key) [RPI Wired Keyboard 5]
Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 002: ID 14b0:0206 StarTech.com Ltd.  SA400S37240G


→ Identifica el VID:PID del adaptador (14b0:0206 es StarTech con chipset ASMedia ASM105x, de los mejores). Si ves Realtek (0bda:xxxx), ojo, pueden ser más problemáticos.

  1. Muestra el árbol USB con drivers y velocidades.
vigilante@raspberrypi:~ $ lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/2p, 480M
    |__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 001: Dev 003, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 002: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/2p, 480M
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 001: Dev 002, If 0, Class=Mass Storage, Driver=uas, 5000M


Driver=uas y 5000M (USB 3.0) → ¡UASP activo! Esto es lo que queremos: bajo uso CPU, mejor rendimiento secuencial. Si ves «usb-storage» en vez de «uas», es más lento y usa más CPU.

  1. Instalar herramientas (si no las tienes):
   sudo apt update
   sudo apt install hdparm smartmontools


hdparm para tests de velocidad, smartmontools para SMART (salud del disco).

  1. Identifica el disco:
vigilante@raspberrypi:~ $ lsblk -o NAME,SIZE,TYPE,MODEL
NAME     SIZE TYPE MODEL
loop0      2G loop 
sda    223,6G disk KINGSTON SA400S37240G
├─sda1   512M part 
└─sda2 223,1G part 
zram0      2G disk 
vigilante@raspberrypi:~ $ sudo fdisk -l | grep -i disk
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram1: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram2: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram3: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram4: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram5: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram6: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram7: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram8: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram9: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram10: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram11: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram12: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram13: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram14: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/ram15: 4 MiB, 4194304 bytes, 8192 sectors
Disk /dev/loop0: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk /dev/sda: 223,57 GiB, 240057409536 bytes, 468862128 sectors
Disk model:  SA400S37240G   
Disklabel type: dos
Disk identifier: 0xc7a2c28e
Disk /dev/zram0: 2 GiB, 2147483648 bytes, 524288 sectors


→ Confirma que /dev/sda es tu SSD (no la SD de boot ni zram).

  1. Test de velocidad de lectura real (sin caché).
    Mi resultado:
   vigilante@raspberrypi:~ $ sudo hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 1026 MB in  3.02 seconds = 339.63 MB/sec


→ Brutal para un SSD SATA en USB 3.0 en Pi 5. El Kingston A400 nativo hace ~500 MB/s, pero con overhead USB + enclosure, 340 MB/s es top. Si sale <100 MB/s → problema (cable, chipset, alimentación, o sin UASP).

  1. Muestra TODA la info SMART (salud interna).
    Lo más interesante de mi disco:
vigilante@raspberrypi:~ $ sudo smartctl -a -d sat /dev/sda
smartctl 7.4 2023-08-01 r5530 [aarch64-linux-6.12.62+rpt-rpi-2712] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Phison Driven SSDs
Device Model:     KINGSTON SA400S37240G
Serial Number:    50026B7785211E3B
LU WWN Device Id: 5 0026b7 785211e3b
Firmware Version: SBFKB1H5
User Capacity:    240.057.409.536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
TRIM Command:     Available
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-3 T13/2161-D revision 4
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Mon Mar  9 19:15:15 2026 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: 		(65535) seconds.
Offline data collection
capabilities: 			 (0x11) SMART execute Offline immediate.
					No Auto Offline data collection support.
					Suspend Offline collection upon new
					command.
					No Offline surface scan supported.
					Self-test supported.
					No Conveyance Self-test supported.
					No 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: 	 (   1) minutes.
Extended self-test routine
recommended polling time: 	 (   2) minutes.

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     0x0032   100   100   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       9090
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       154
148 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       0
149 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       0
167 Write_Protect_Mode      0x0000   100   100   000    Old_age   Offline      -       0
168 SATA_Phy_Error_Count    0x0012   100   100   000    Old_age   Always       -       0
169 Bad_Block_Rate          0x0000   100   100   000    Old_age   Offline      -       17
170 Bad_Blk_Ct_Lat/Erl      0x0000   100   100   010    Old_age   Offline      -       0/12
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
173 MaxAvgErase_Ct          0x0000   100   100   000    Old_age   Offline      -       67 (Average 51)
181 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       0
182 Erase_Fail_Count        0x0000   100   100   000    Old_age   Offline      -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
192 Unsafe_Shutdown_Count   0x0012   100   100   000    Old_age   Always       -       149
194 Temperature_Celsius     0x0022   024   048   000    Old_age   Always       -       24 (Min/Max 17/48)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
199 SATA_CRC_Error_Count    0x0032   100   100   000    Old_age   Always       -       0
218 CRC_Error_Count         0x0032   100   100   000    Old_age   Always       -       0
231 SSD_Life_Left           0x0000   094   094   000    Old_age   Offline      -       94
233 Flash_Writes_GiB        0x0032   100   100   000    Old_age   Always       -       7476
241 Lifetime_Writes_GiB     0x0032   100   100   000    Old_age   Always       -       4094
242 Lifetime_Reads_GiB      0x0032   100   100   000    Old_age   Always       -       11006
244 Average_Erase_Count     0x0000   100   100   000    Old_age   Offline      -       51
245 Max_Erase_Count         0x0000   100   100   000    Old_age   Offline      -       67
246 Total_Erase_Count       0x0000   100   100   000    Old_age   Offline      -       392144

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]

Selective Self-tests/Logging not supported

The above only provides legacy SMART information - try 'smartctl -x' for more

Lo más interesante de mi disco

  • Overall-health self-assessment test result: PASSED → Perfecto.
  • Power_On_Hours: 9090 (~1 año encendido).
  • Unsafe_Shutdown_Count: 149 → Apagados bruscos (lo solucioné con el SAI + NUT del post anterior).
  • Reallocated_Event_Count: 0 → Ningún sector malo reasignado.
  • SSD_Life_Left: 94% → Aún le queda 94% de vida (TBW ~80 TB, yo ~4 TB escritos).
  • Temperature_Celsius: 24 (Max 48) → Fresco.
  • Lifetime_Writes_GiB: 4094 (~4.1 TB escritos). El bridge USB (StarTech) pasa SMART completo → gran ventaja vs enclosures baratos que lo truncan.

¿Qué aprendí y recomendaciones?

  • Mi combo Kingston A400 240GB + enclosure StarTech (ASMedia UAS) es ganador: rápido, estable, SMART full y salud excelente.
  • Si usas SSD USB en Pi → prioriza chipsets ASMedia (ASM1153/1053), evita Realtek baratos si puedes.
  • Alimentación: Usa powered hub o fuente externa para HDD/SSD grandes.
  • Monitorea periódicamente: Pon un cron mensual con smartctl -a y alerta por Telegram si vida <80% o temp >55°C.
  • Beneficio final: Boot Pi en 10-15s vs 30-60s en microSD, apps más fluidas, menos corrupción, y sabes exactamente cómo está tu hardware.

Si estás montando un NAS, media center o server casero con Raspberry Pi, haz estos tests YA. Te ahorras disgustos y descubres si tu setup vuela o cojea.

¿Has probado boot desde SSD USB? ¿Qué velocidades te salen? ¡Cuéntame en comentarios!

Próximo post: script para alertas automáticas de SMART por Telegram.

¡Un saludo, linuxetes! 🚀🔧

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio