Tutorial completo de hdparm en Linux: rendimiento, energía y seguridad

Última actualización: 21/02/2026
Autor: Isaac
  • Hdparm permite consultar y ajustar parámetros de discos IDE y SATA, mejorando rendimiento, energía y ruido si se usa con cuidado.
  • Las opciones -tT, -m, -A, -d, -X y -c sirven para medir y optimizar la velocidad de acceso y los modos de transferencia del disco.
  • Los parámetros -B, -S, -y y -Y controlan la gestión de energía, ciclos de spindown y estados de reposo, afectando a la vida útil del disco.
  • Algunos comandos de seguridad, caché y borrado en SSD son muy potentes y deben probarse antes de hacerlos persistentes en /etc/hdparm.conf.

tutorial hdparm en linux

Si usas Linux a diario y te preocupa cómo rinde tu disco duro o SSD, tarde o temprano vas a cruzarte con la herramienta hdparm. Es una utilidad veterana, potentísima y, si se usa con cabeza, muy útil para exprimir el rendimiento, reducir ruido, ajustar consumo energético o incluso realizar operaciones delicadas como el borrado seguro en ciertas unidades.

Aunque a primera vista pueda imponer un poco, hdparm no deja de ser un comando que habla directamente con el hardware del disco, permitiéndote consultar un montón de información interna y cambiar parámetros avanzados. Eso sí: no es un juguete; hay opciones que, mal usadas, pueden corromper el sistema de archivos o dejar el disco inaccesible. En esta guía vas a ver qué hace, cómo usarlo con cierta tranquilidad y qué opciones son realmente interesantes en el día a día.

¿Qué es hdparm y para qué sirve en Linux?

comando hdparm en linux

El comando hdparm es una utilidad de línea de comandos para gestionar y ajustar discos IDE y SATA (y, en parte, SSD modernos) en GNU/Linux, e incluso en Windows en algunas variantes. Trabaja a muy bajo nivel, hablando con el disco a través de la controladora, y permite modificar cosas como:

  • Modos de transferencia (PIO, DMA, UDMA).
  • Caché de lectura/escritura y read-ahead.
  • Gestión de energía (APM, tiempos de reposo, standby, sleep).
  • Gestión acústica para reducir ruido en discos mecánicos.
  • Parámetros de seguridad como bloqueo, protección contra escritura o borrado seguro.

En la mayoría de distribuciones, hdparm viene ya instalado por defecto. Si no lo tienes, puedes añadirlo fácilmente:

sudo apt install hdparm

Ten siempre presente que muchas opciones de hdparm requieren privilegios de administrador. La sintaxis básica es sencilla:

hdparm  /dev/sdX

donde /dev/sdX será tu disco (por ejemplo, /dev/sda o /dev/nvme0n1 en equipos más modernos, aunque hdparm está más orientado a SATA/IDE).

Antes de empezar a toquetear nada es buena idea leer el manual oficial con man hdparm y echar un ojo a las advertencias. El propio programa marca algunas opciones como peligrosas porque pueden bloquear el sistema o provocar corrupción masiva de datos si se usan sin saber.

Comprobar qué disco tienes y ver su información básica

Antes de tocar configuraciones conviene saber qué disco estás manipulando exactamente y cómo está conectado. Para listar discos y sus rutas de dispositivo puedes usar, por ejemplo:

sudo fdisk -l

Ahí verás rutas tipo /dev/sda, /dev/sdb, etc. En sistemas antiguos con IDE verías algo como /dev/hda. Esa ruta es la que usarás con hdparm en el resto de comandos.

Una vez claro qué dispositivo es, puedes obtener un resumen rápido de su configuración actual con:

sudo hdparm /dev/sda

Este comando muestra parámetros como multicount, IO_support, readahead, DMA, geometría y otros valores que te dan una foto rápida del estado del disco.

Si quieres ir más al detalle, tienes dos niveles de información extra:

  • Identificación básica del arranque (modelo, firmware, modos de transferencia, etc.):
    sudo hdparm -i /dev/sda
    
  • Identificación extendida y muy detallada directamente desde el disco:
    sudo hdparm -I /dev/sda
    

En la salida de hdparm -I verás información como el número de sectores, modos PIO y DMA soportados, modos Ultra DMA activos, soporte de gestión de energía (APM), caché de escritura, si se admite gestión acústica, comandos de seguridad, etc. Es la base para saber qué se puede activar sin inventar valores que tu disco no soporta.

Medir el rendimiento del disco con hdparm

Uno de los usos más populares de esta utilidad es medir la velocidad de lectura del disco de forma rápida. Para ello se suele usar la combinación -tT:

sudo hdparm -tT /dev/sda

La salida típica tiene dos líneas importantes con tiempos y MB/s:

  • Timing cached reads: mide la velocidad de lectura usando la caché del sistema (memoria RAM), no es la velocidad “real” del disco, pero sirve para detectar cuellos de botella raros.
  • Timing buffered disk reads: mide la lectura directa desde el disco, que es el dato útil para comparar dispositivos.

Es recomendable ejecutar este test varias veces y hacer una media mental, porque el sistema puede estar haciendo otras tareas en segundo plano. También hay quien prefiere desactivar ciertos buffers con la opción –direct para ver el comportamiento más “crudo” del disco, por ejemplo:

sudo hdparm -t --direct /dev/sda
sudo hdparm -t --direct --offset 500 /dev/sda

En este último ejemplo se establece un offset para probar una zona concreta del disco, útil si sospechas que ciertas áreas van más lentas o están más castigadas.

  Cómo ver y gestionar el consumo energético por aplicación en Windows 11

Ten presente que esta prueba de hdparm mide sobre todo lecturas secuenciales. Para simulaciones más complejas de carga de trabajo (lecturas aleatorias, muchas colas de I/O, etc.) es más sensato usar herramientas como fio, ioping o iostat, de las que hablaremos brevemente más adelante.

Optimizar lecturas: múltiples sectores y read-ahead

Algo que muchos usuarios aprovechan de hdparm es la capacidad de leer varios sectores de golpe para ganar rendimiento. En la salida de hdparm -i /dev/sda aparece una línea similar a:

R/W multiple sector transfer: Max = 16   Current = ?

Ese máximo indica cuántos sectores puede leer de una tacada tu disco. Si quieres llevarlo a su tope, usarías:

sudo hdparm -m16 /dev/sda

Siempre conviene ajustar el valor -m al máximo que indica el propio disco (MaxMultSect) y no inventarse un número mayor. Después de cambiarlo, repite la prueba de rendimiento:

sudo hdparm -tT /dev/sda

Otro parámetro interesante es el read-ahead, que permite que el disco lea por adelantado más sectores de los que se han solicitado, mejorando lecturas secuenciales largas:

sudo hdparm -A1 /dev/sda        # Activar read-ahead
sudo hdparm -a256 /dev/sda      # Ajustar tamaño de read-ahead a 256 sectores

Con ambos ajustes (multisector y read-ahead) puedes conseguir mejoras apreciables de ancho de banda en discos mecánicos, siempre comprobando entre cambio y cambio si realmente suben los MB/s o si, por el contrario, el sistema se vuelve inestable.

Control de modos PIO, DMA y UDMA

Uno de los grandes puntos fuertes de hdparm es que permite configurar cómo se transfieren los datos entre el disco y la memoria. En sistemas modernos suele estar todo bastante bien ajustado de fábrica, pero sobre todo en hardware más viejo o controladoras raras es útil saber qué pasa.

Para ver si tu disco está usando acceso directo a memoria (DMA) puedes ejecutar:

sudo hdparm -d /dev/sda

Y para habilitarlo, en caso de estar desactivado y ser compatible:

sudo hdparm -d1 /dev/sda

El tipo concreto de Ultra DMA activo lo ves en hdparm -I /dev/sda en la sección de UDMA, por ejemplo:

UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6

La entrada marcada con un asterisco es el modo UDMA que se activa en el arranque. Si el disco y la controladora lo soportan, puedes forzar un modo en concreto con:

sudo hdparm -Xudma6 /dev/sda

También es posible ajustar los modos PIO (más antiguos y lentos) con:

sudo hdparm -p4 /dev/sda

y cambiar el acceso de 16 a 32 bits con:

sudo hdparm -c1 /dev/sda       # Activar 32 bits
sudo hdparm -c3 /dev/sda       # Otro modo 32 bits dependiendo de la controladora

Ten muy presente que jugar con -d, -p, -c o -X es delicado, porque un modo incompatible puede colgar el sistema o producir errores de I/O. La regla de oro es: hacer un cambio cada vez, probar estabilidad, medir rendimiento y, si algo huele raro, volver atrás.

Gestión de energía con APM (-B) y reposo (-S)

Uno de los campos donde hdparm brilla es en la gestión del consumo y el comportamiento del disco cuando está inactivo. Esto es vital sobre todo en portátiles, NAS caseros o servidores con discos de backup que no están siempre en uso.

La opción -B controla la característica Advanced Power Management (APM), siempre que el disco la soporte. Los valores posibles son:

  • 1-127: gestión de energía agresiva, permite apagado del giro (spindown).
  • 128-254: consumo intermedio/alto, generalmente sin spindown automático.
  • 254: prioriza rendimiento de I/O.
  • 255: desactiva APM por completo (no todos los discos lo admiten).

Un ejemplo típico para alargar la vida del disco en portátil, evitando que esté parando y arrancando todo el rato, sería:

sudo hdparm -B 180 /dev/sda

Hay experiencias reales donde, ajustando valores entre 180 y 200, se elimina el problema de ciclos excesivos de carga/descarga de cabezal, que acortan brutalmente la vida útil del disco. Valores muy bajos como 1 o 2 pueden ser letales a largo plazo por el número de ciclos de aparcado.

Para vigilar cuántos ciclos lleva tu disco, puedes recurrir a smartmontools y el comando smartctl:

sudo apt-get install smartmontools
sudo smartctl -a /dev/sda | egrep -i "id|load"

En el campo RAW_VALUE verás el contador de ciclos de carga/descarga. Los fabricantes suelen hablar de rangos de unos 300.000 a 600.000 ciclos antes de que empiecen los problemas, así que ajustar hdparm -B bien marca la diferencia.

Por otro lado, la opción -S define el tiempo que tarda el disco en pasar a modo de espera (standby) tras un periodo de inactividad. La codificación es peculiar:

  • 0: desactiva el tiempo de espera automático.
  • 1-240: cada unidad equivale a 5 segundos (de 5 s a 20 min).
  • 241-251: tramos de 30 minutos (de 30 min a 5,5 h).
  • 252: 21 minutos.
  • 253: valor definido por el fabricante (entre 8 y 12 horas).
  • 255: 21 minutos y 15 segundos.

Ejemplos prácticos de uso serían:

sudo hdparm -S 200 /dev/sda

que correspondería a un standby algo superior a 16 minutos, o bien:

sudo hdparm -S 24 /dev/sda

que provoca que el disco se apague tras 120 segundos de inactividad (24 × 5 segundos). Para portátiles que buscan exprimir batería a costa de algo más de latencia al volver a usar el disco, valores como 241 o 242 también son recomendables.

  13 mejores lugares para vender tus manuales y obtener más dinero

Ten en mente que el apagado del giro tiene un coste: cada encendido/apagado cuenta como un ciclo de vida. Si apagas el disco cientos de veces al día durante años, puedes agotar ese margen. Como regla general, hay que encontrar un equilibrio entre consumo, calor, ruido y número de ciclos.

Estados de energía: active, standby y sleep

Además de programar tiempos de inactividad, hdparm permite consultar y forzar estados de energía concretos. Para ver cómo está ahora mismo el disco:

sudo hdparm -C /dev/sda

La respuesta suele indicar si el disco está en active/idle, standby o sleep.

Si quieres empujarlo manualmente al modo de reposo ligero (standby), con el giro apagado pero listo para volver rápidamente, puedes usar:

sudo hdparm -y /dev/sda

En cambio, si usas:

sudo hdparm -Y /dev/sda

el disco entra en sleep profundo, apagándose por completo y requiriendo un reset por software o hardware para despertarse de nuevo. El driver IDE/SATA de Linux suele encargarse de ello cuando hace falta, pero es algo a usar con cuidado.

Para servidores con varios discos puedes comprobar el estado de todos a la vez con expansiones de shell del estilo:

sudo hdparm -C /dev/sd

o, si quieres mandarlos a dormir selectivamente:

sudo hdparm -Y /dev/sd{b,g,f,e,d}

En algunos casos, simplemente consultar el estado puede despertar al disco. Es decir, al hacer hdparm -C se produce un acceso que saca al disco de standby. Si quieres monitorizar esto, puedes mirar el /var/log/syslog y buscar mensajes tipo «waking up from sleep».

Reducir el ruido de discos duros mecánicos con el modo acústico

Si tienes un PC viejo o un portátil con HDD mecánico, seguramente te suene el ruidito constante del giro y el cabezal; puedes encontrar consejos de mantenimiento del disco duro en Linux. Algunas unidades ofrecen un parámetro de gestión acústica avanzada que hdparm puede ajustar con la opción -M.

Primero puedes comprobar si el disco admite este modo con:

sudo hdparm -I /dev/sda | grep -i acoustic

Si aparece información al respecto, probablemente puedas jugar con valores como:

sudo hdparm -M 128 /dev/sda   # Reducir ruido a costa de algo de rendimiento
sudo hdparm -M 254 /dev/sda   # Priorizar velocidad, más ruido

En muchos tutoriales se recomienda anotar el valor recomendado que aparezca en la salida del comando anterior y, si quieres dejarlo fijo, aplicar:

sudo hdparm -M <VALOR_RECOMENDADO> /dev/sda

Si tras reiniciar ves que se pierde el ajuste, puedes añadir el comando correspondiente a los scripts de arranque (lo veremos más abajo) para que el sistema lo aplique en cada boot.

Recuerda que este truco sirve únicamente para discos HDD mecánicos. Los SSD no tienen partes móviles, así que no generan este tipo de ruido ni responden al modo acústico.

Caché de escritura y otros parámetros útiles

Hdparm también permite activar o desactivar la caché de escritura del disco, algo que puede mejorar mucho el rendimiento de escritura, pero que implica cierto riesgo de pérdida de datos si hay un corte de corriente.

Para consultar o cambiar la caché de escritura se usa la opción -W:

sudo hdparm -W /dev/sda    # Ver estado
sudo hdparm -W1 /dev/sda   # Activar caché de escritura
sudo hdparm -W0 /dev/sda   # Desactivar caché de escritura

Hay escenarios (por ejemplo, en recuperación de datos o tests específicos) donde puede interesar desactivar la caché para obtener lecturas más realistas o evitar inconsistencias. Para uso normal en escritorio o servidor, casi siempre es mejor dejarla activada si el sistema tiene una alimentación estable (o SAI).

Otro ajuste que a veces se confunde es -s para el modo de espera en algunos manuales antiguos, pero la opción estándar de hdparm para standby es -S. Asegúrate siempre de comprobar con hdparm --help qué hace cada parámetro en tu versión, porque hay opciones marcadas como obsoletas y otras que sólo aplican a dispositivos IDE clásicos.

Borrado seguro y operaciones delicadas en SSD

Con la llegada de los SSD, hdparm ha ido incorporando soporte para comandos de seguridad ATA, incluido el borrado seguro. Esto permite, en teoría, dejar la unidad en un estado similar a fábrica, eliminando todos los datos a bajo nivel.

El flujo típico implica primero definir una contraseña temporal y luego ejecutar el borrado. Un ejemplo muy simplificado sería:

sudo hdparm --user-master u --security-erase 123456 /dev/sdb

donde 123456 sería la contraseña en claro que defines en ese momento. Este comando envía a la controladora la orden de borrar todos los bloques del SSD.

Aquí es fundamental remarcar que hay unidades problemáticas en las que el uso de estos comandos puede dejar el disco en un estado inaccesible o “ladrillo”, sobre todo si ya venían “congeladas” (frozen) por la BIOS/UEFI para evitar manipulaciones en caliente.

  Cómo descargar e instalar Photo Story en Windows 10

Si ves en hdparm -I /dev/sda que el disco aparece como frozen, hay trucos como poner el equipo en suspensión y reanudar para que la unidad se descongele, pero todo esto sigue siendo terreno delicado. Si tu fabricante ofrece una herramienta oficial (como algunos utilitarios de Samsung, Crucial, etc.), suele ser más seguro usarla para actualizar el firmware de tu SSD en Linux que jugar con hdparm directamente, sobre todo si no quieres arriesgarte a cargarte un SSD caro.

Para tareas de “limpieza” más moderadas también existen scripts como wiper.sh que, combinados con soporte TRIM adecuado, ayudan a eliminar bloques marcados como libres y mantener el rendimiento del SSD, pero de nuevo hay que extremar precauciones y hacer copias de seguridad antes de nada.

Herramientas complementarias: fio, iostat e ioping

Aunque hdparm tiene su propio test de rendimiento, en muchos casos querrás evaluar el comportamiento del disco bajo cargas más realistas. Para eso hay varias herramientas muy útiles que complementan lo que ofrece hdparm.

Con fio puedes simular diferentes patrones de lectura/escritura (secuencial, aleatorio, mezcla de ambos, distintos tamaños de bloque, profundidad de cola, etc.). El uso típico consiste en crear un archivo de trabajo, por ejemplo:


rw=randread
size=256m
directory=/var/www/html

y ejecutarlo con:

fio test.fio

En la salida te interesa sobre todo la parte donde se muestra el total de datos leídos, el ancho de banda medio (bw) y las IOPS. Esto te da una imagen más cercana a cómo se comporta ese disco sirviendo una web, una base de datos o cualquier servicio de producción.

La herramienta iostat entra en juego cuando quieres monitorizar en tiempo real el uso de los discos. Al ejecutar:

iostat

verás estadísticas de CPU y, a continuación, una tabla con campos como:

  • tps: transferencias por segundo.
  • kB_read/s, kB_wrtn/s: kilobytes leídos y escritos por segundo.
  • kB_read, kB_wrtn: totales leídos y escritos.

Puedes pedirle muestras periódicas con algo como:

iostat -d 2 3

para obtener tres iteraciones separadas dos segundos entre sí, centradas únicamente en los dispositivos de disco.

Por último, ioping te da una especie de “ping” del subsistema de E/S: latencias y IOPS de lectura/escritura. En Ubuntu está en los repositorios, y su uso básico puede ser:

ioping -c 10 -s 1M -D /tmp

que te devolverá la latencia de 10 operaciones con bloques de 1 MB, además de los MB/s resultantes. Sus opciones más interesantes son:

  • -c count: número de peticiones.
  • -s size: tamaño de cada operación.
  • -L: pruebas secuenciales.
  • -C: pruebas usando caché.
  • -D: accediendo directamente al disco.

Combinando hdparm, fio, iostat e ioping puedes tener una visión bastante completa del estado y rendimiento de tu almacenamiento, y respaldar con datos cualquier petición de mejora de hardware que necesites hacer.

Hacer persistentes los cambios de hdparm

Algo que desconcierta a mucha gente es que los ajustes hechos con hdparm suelen perderse tras reiniciar. Esto es intencionado, precisamente para no dejar el sistema “tocado” de forma permanente si has probado algo que no funciona bien.

Cuando ya tengas claro qué parámetros quieres dejar fijos (por ejemplo, -A1 -d1 -p4 -c1 -m16 -Xudma6 en un disco concreto) tienes varias opciones:

  • Debian, Ubuntu y derivadas: usar el archivo /etc/hdparm.conf, donde puedes definir secciones por dispositivo con las opciones que quieras aplicar al arranque.
  • Otros sistemas: añadir las llamadas a hdparm en scripts de inicio, por ejemplo en /etc/rc.local (si tu distribución aún lo respeta), tipo:
    hdparm -A1 -d1 -p4 -c1 -m16 -Xudma6 /dev/sda
    

Recuerda siempre que, antes de hacer permanentes los cambios, deberías haberlos probado a conciencia: reinicios, carga de trabajo real, pruebas de rendimiento y, sobre todo, ausencia de errores en el log del sistema. No es plan de dejar un parámetro que gana un 5 % de velocidad pero genera errores de I/O aleatorios.

Hdparm es, en definitiva, una navaja suiza para discos en Linux: sirve para exprimir hasta el último MB/s de tu HDD, afinar consumos en portátiles, domar el ruido de viejos discos mecánicos o acceder a funciones avanzadas en SSD. Bien usado, te permite adaptar el comportamiento de tu almacenamiento a tu forma de trabajar; mal usado, puede dejarte con un sistema roto y datos irrecuperables, así que merece la pena ir con pies de plomo, hacer copias de seguridad y documentar cada cambio que vayas aplicando.

Actualizar firmware de SSD en linux
Artículo relacionado:
Cómo actualizar el firmware de tu SSD en Linux paso a paso