hdparm es una utilidad de línea de comandos de los sistemas operativos GNU/Linux y Windows para ver y ajustar los parámetros del hardware de los discos IDE ySATA1 (aunque estos últimos cuentan también con una utilidad específica llamada sdparm). La utilidad puede ajustar parámetros como el caché de disco, el modo de descanso, el control de energía, la gestión acústica y los ajustes DMA. Suele venir instalado por defecto en la mayoría de distribuciones GNU/Linux.
Cambiar los parámetros de los valores conservativos por defecto a los ajustes óptimos puede aumentar el rendimiento sustancialmente. Por ejemplo, activar el modoDMA puede hacer que en ocasiones se doble o se triplique la velocidad de transferencia de datos. Desgraciadamente no hay un método confiable para determinar los ajustes óptimos para la combinación de una controladora determinada, excepto el método de prueba y error; además, todavía no hay una base de datos central que recolecte y comparta la experiencia de los usuarios de hdparm.
hdparm tiene un serio inconveniente: puede bloquear el sistema y hacer los datos del disco duro inaccesibles si se usan inadecuadamente ciertos parámetros. De aproximadamente unos cuarenta parámetros disponibles, siete son potencialmente peligrosos y pueden ocasionar una corrupción masiva del sistema de ficheros.
(Fuente Wikipedia)
¿Para que podemos querere configurar nuestro disco duro? ¿No es ya suficiente que este funcionando y sin errores?. La respuesta es casi siempre que si. Podemos dejarlo por defecto y en la mayoría de los casos no vamos a quejarnos.... seguramente por desconocimiento. ¿Hace falta engrasar y cuidar la cadena de una bicicleta? Bien.. si vamos solo de vez en cuando con ella, quizas no nos interesa sacarle un buen rendimiento. Pero si lo que queremos es más velocidad, más rendimiento.. entonces nos interesa dar un pasito más y configurarlo. Podemos ganar velocidad de escritura/lectura o incluso ahorrar energia y alargar la vida de nuestro disco. Eso si, hdparm trabaja a un nivel muy bajo, y si lo configuramos mal podemos dejar nuestro disco duro inaccesible.
Esta guía esta realizada bajo mi experiencia pero no me responsabilizo de daños ocasionados por su uso.
Podemos instalar hdparm facilmente desde nuestro repositorio oficial (apt-get install hdparm).
Podemos instalar hdparm facilmente desde nuestro repositorio oficial (apt-get install hdparm).
Para los ejemplos usaremos el dispositivo /dev/sda . Vosotros cambiarlo por el que queráis optimizar.
Primeramente vamos a mirar como está funcionando nuestro disco:
Tenemos esta tabla para saber que significa en métrica cada tipo de DMA y PIO:
(Fuente Wikipedia)
(Fuente Wikipedia)
VELOCIDAD
Ahora vamos a mirar el caso de que queramos incrementar la velocidad de lectura/escritura. Veremos en la información extraída con el parámetro '-I' una linea que habla de R/W multiple sector transfer. Bien, pues esta linea nos va a dar la pista de si podemos o no incrementar la velocidad de nuestro disco.
R/W multiple sector transfer: Max = 16 Current = ?
Si queremos poner la transferencia multiple de sectores al máximo, en el ejemplo anterior nos fijamos en el valor 'Max' y hacemos lo siguiente:
hdparm -m16 /dev/sda
(hemos puesto 16 dado que es el valor Máximo segun la especificacion de nuestro dispositivo).
hdparm.conf
En /etc/hdparm.conf podemos configurar como queremos que funcionen nuestros discos en el arranque. Por defecto en Ubuntu viene todo comentado excepto la linea 'quiet'. Así pues, lo que nos quiere decir esto es que ubuntu tiene unas opciones ya por defecto y aquí es donde las podemos cambiar si deseamos un comportamiento diferente. Leerse el archivo este es lo más similar a hacer man hdparm.
AHORRO DE ENERGIA Y VIDA DEL DISCO
Los fabricantes de disco suelen especificar cuantas veces un disco duro puede ser apagado y encendido durante su vida util. Unas 200.000 veces, por decir un estandard. Eso significa que si lo encendemos y apagamos unas 200.000 veces.. podremos agotar su vida util. 200.000 veces, con una vida de disco duro de 5 años, significaría 40.000 apagadas y encendidas por año, osea unas 109 veces en un dia. Ten en cuenta estos cálculos para saber si el apagado/encendido te sale a cuenta.
Si decidimos que SI sale a cuenta, podemos especificar un tiempo de inactividad minimo para que se apagen automáticamente. Por ejemplo:
sudo hdparm -S 24 /dev/sda
Primeramente vamos a mirar como está funcionando nuestro disco:
hdparm /dev/sda
/dev/sda:
multcount = 0 (off)
IO_support = 1 (32-bit)
readonly = 0 (off)
readahead = 256 (on)
geometry = 486401/255/63, sectors = 7814037168, start = 0
Para sacar toda la información completa y detallada del disco:
Significado de algunas de estas variables:
DMA
Mediante este comando podremos saber si nuestro disco tiene UDMA activado (activado por defecto desde Ubuntu 6.06)
* soporte DMA:
sudo hdparm -I /dev/sda |grep ‘DMA:’
por ejemplo:
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
También podemos hacerlo mediante:
hdparm -d /dev/sda
hdparm -I /dev/sda
Significado de algunas de estas variables:
- multicount: Nº de sectores que se leen en cada acceso.
- IO_support: 16/32 bits.
- unmakirq: Desemascarar IRQ del disco. Permite “compartir” la IRQ.
- using_dma: Acceso directo a memoria.
Mediante este comando podremos saber si nuestro disco tiene UDMA activado (activado por defecto desde Ubuntu 6.06)
* soporte DMA:
sudo hdparm -I /dev/sda |grep ‘DMA:’
por ejemplo:
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
(El tipo de DMA que vemos con un asterisco es el que se activa en el arranque del sistema)
También podemos hacerlo mediante:
hdparm -d /dev/sda
Tenemos esta tabla para saber que significa en métrica cada tipo de DMA y PIO:
Mode | Number | Also called | Maximum transfer
rate (MB/s)
| Defining standard |
---|---|---|---|---|
Ultra DMA | 0 | 16.7 | ATA-4 | |
1 | 25.0 | ATA-4 | ||
2 | Ultra ATA/33 | 33.3 | ATA-4 | |
3 | 44.4 | ATA-5 | ||
4 | Ultra ATA/66 | 66.7 | ATA-5 | |
5 | Ultra ATA/100 | 100 | ATA-6 | |
6 | Ultra ATA/133 | 133 | ATA-7 | |
7 | Ultra ATA/167 | 167 | CompactFlash 6.0[1] |
Mode | Maximum transfer rate (MB/s) | Minimum cycle time | Standard where spec is defined |
---|---|---|---|
Mode 0 | 3.3 | 600 ns | ATA-1 |
Mode 1 | 5.2 | 383 ns | ATA-1 |
Mode 2 | 8.3 | 240 ns | ATA-1 |
Mode 3 | 11.1 | 180 ns | ATA-2 |
Mode 4 | 16.7 | 120 ns | ATA-2 |
Mode 5 | 20 | 100 ns | CompactFlash 2.0 |
Mode 6 | 25 | 80 ns | CompactFlash 2.0 |
VELOCIDAD
Ahora vamos a mirar el caso de que queramos incrementar la velocidad de lectura/escritura. Veremos en la información extraída con el parámetro '-I' una linea que habla de R/W multiple sector transfer. Bien, pues esta linea nos va a dar la pista de si podemos o no incrementar la velocidad de nuestro disco.
R/W multiple sector transfer: Max = 16 Current = ?
Si queremos poner la transferencia multiple de sectores al máximo, en el ejemplo anterior nos fijamos en el valor 'Max' y hacemos lo siguiente:
hdparm -m16 /dev/sda
(hemos puesto 16 dado que es el valor Máximo segun la especificacion de nuestro dispositivo).
hdparm.conf
En /etc/hdparm.conf podemos configurar como queremos que funcionen nuestros discos en el arranque. Por defecto en Ubuntu viene todo comentado excepto la linea 'quiet'. Así pues, lo que nos quiere decir esto es que ubuntu tiene unas opciones ya por defecto y aquí es donde las podemos cambiar si deseamos un comportamiento diferente. Leerse el archivo este es lo más similar a hacer man hdparm.
AHORRO DE ENERGIA Y VIDA DEL DISCO
Los fabricantes de disco suelen especificar cuantas veces un disco duro puede ser apagado y encendido durante su vida util. Unas 200.000 veces, por decir un estandard. Eso significa que si lo encendemos y apagamos unas 200.000 veces.. podremos agotar su vida util. 200.000 veces, con una vida de disco duro de 5 años, significaría 40.000 apagadas y encendidas por año, osea unas 109 veces en un dia. Ten en cuenta estos cálculos para saber si el apagado/encendido te sale a cuenta.
Si decidimos que SI sale a cuenta, podemos especificar un tiempo de inactividad minimo para que se apagen automáticamente. Por ejemplo:
sudo hdparm -S 24 /dev/sda
El disco se apagará después de 24*5=120 segundos de inactividad
sudo hdparm -Y /dev/sda
sudo hdparm -Y /dev/sda
El disco entrará en apagado inmediátamente, causando el apagado del disco. Se necesita un reset por software o hardware para iniciarlo de nuevo. El driver IDE de Linux lo hará si se necesita de forma automática.
Ahora seguramente querremos comprobar que estamos en 'Sleep Mode'. Haremos lo siguiente para comprobarlo:
hdparm -Y /dev/sda1
/dev/sda1:
issuing sleep command
hdparm -C /dev/sda/dev/sdb1:
drive state is: standby
ERRORES FRECUENTES:
hdparm -d /dev/sdg
/dev/sdg:
HDIO_GET_DMA failed: Inappropriate ioctl for device
El comando hdparm, como hemos puesto al inicio de este artículo, se diseñó para dispositivos IDE. Por tanto, hay nomenclaturas que estan obsoletas. En este caso, la opción -d solo funciona sobre dispositivos IDE.
drive state is: standby
Pero tambien hay casos en el que hacer esta prueba justamente lo que hace es levantarnos el disco y sacarnos del modo de apagado. Básicamente al conectar con él para ver su estado, lo sacamos de su letargo. Para comprobarlo podemos mirar el /var/log/syslog y si una vez lo teníamos en sleeping mode, lo levantamos y vemos algo como "ata3.00: waking up from sleep" significará que lo hemos despertado (por lo tanto antes estaba dormido).
En cambio si lo dejamos en 'standby' eso no pasa. Porque dejamos el disco encendido, pero con energía al mínimo:
hdparm -y /dev/sdb1
/dev/sdb1:
issuing standby command
Para ello hay quien recomienda smartctl. Para ello tendremos que instalarnos la utilidad (apt-get install smartmontools):
smartctl -i -n standby /dev/sda
Pero podemos usar como antes nuestro comando hdparm:
hdparm -C /dev/sdb
/dev/sdb:
drive state is: standby
Recordad que si queremos mirar o configurar una serie de discos que tengamos en el servidor, podemos hacerlo o uno a uno o con un comando solo. Imaginemos que tenemos desde el /dev/sdb al /dev/sdg :
hdparm -C /dev/sd[b-g]
/dev/sdb:
drive state is: standby
/dev/sdc:
drive state is: active/idle
/dev/sdd:
drive state is: active/idle
/dev/sde:
drive state is: active/idle
/dev/sdf:
drive state is: active/idle
/dev/sdg:
drive state is: active/idle
O si son discos salteados:
hdparm -Y /dev/sd{b,g,f,e,d}
/dev/sdb:
issuing sleep command
/dev/sdg:
issuing sleep command
/dev/sdf:
issuing sleep command
/dev/sde:
issuing sleep command
/dev/sdd:
issuing sleep command
hdparm -d /dev/sdg
/dev/sdg:
HDIO_GET_DMA failed: Inappropriate ioctl for device
No hay comentarios:
Publicar un comentario