domingo, agosto 24, 2008

Ahorrando Energia para que el disco duro no muera tan pronto

Hay que tener claro algo, no es culpa del sistema operativo (Ubuntu) si no que es un problema de los fabricantes de discos duros por darle la limitacion de ciclos de lectura (Carga y Descarga).

Usando los los parámetros S.M.A.R.T. del disco con el comando smartctl, me muestra la cantidad de ciclos usados, en caso que no tengamos el programa, solo bastaria instalarlo.-

# apt-get install smartmontools

y luego ejecutamos el siguiente comando:

root@Libertad:~# smartctl -a /dev/sda | egrep 'ID|Load_Cycle'
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
193 Load_Cycle_Count 0x0032 096 096 000 Old_age Always - 42516

Si se dan cuenta voy en los 42516 ciclos, algo asi como el 1% del uso de mi disco.-

Como se comenta en los enlaces que hablan del problema, con el comando “hdparm -B” podemos modificar el nivel de gestión de energía que ha de tener el disco (usando APM):

# man hdparm
[...]
-B Set Advanced Power Management feature,
if the drive supports it. A low value means

aggressive power management and a high value
means better performance. A value of 255

will disable apm on the drive.
[...]

Podemos reducirlo al máximo:

root@Libertad:~# hdparm -B 254 /dev/sda

/dev/sda:
setting Advanced Power Management level to 0xfe (254)

O incluso deshabilitarlo:

root@Libertad:~# hdparm -B 255 /dev/sda

/dev/sda:
setting Advanced Power Management level to disabled

El caso es que tras hacer lo último, el valor de Load_Cycle_Count en la salida del smartctl ya no crece más que en una unidad cuando arranco, así que me lo he puesto en el fichero /etc/rc.local, para que se ejecute siempre durante el arranque. Los clicks también han desaparecido, así que todo es mucho mejor ahora.


El problema con Ubuntu, el que ha creado toda esta alarma, es que en modo laptop, que no está habilitado por defecto, el fichero /etc/acpi/power.sh configura el disco para que ahorre energía de la forma más agresiva posible, con -B 1, haciendo que el disco tenga muchos más ciclos de carga y descarga y muchos más clicks:

function laptop_mode_enable {
...
$HDPARM -S $SPINDOWN_TIME /dev/$drive 2>/dev/null
$HDPARM -B 1 /dev/$drive 2>/dev/null
}

En un bug report del problema que ya tiene bastantes meses, alguien ha probado con distintos valores de -B:

-B 128 -> 23 cycles in 10 minutes
-B 160 -> 29 in 10'
-B 180 -> 0 in 10'
-B 196 -> 0 in 10'
-B 200 -> 0 in 10'


creo que es importante recalcar que en lugar de añadir
el comando “hdparm -B 254” al fichero /etc/rc.local, es
mejor editar el fichero /etc/hdparm.conf y poner algo así
(cambiando el fichero de dispositivo y el valor de apm
según nuestras necesidades):
/dev/sda {
apm = 254
}

Seguido por el comando:

update-rc.d hdparm defaults

para que el hdparm se ejecute durante el arranque.

Parece que en Ubuntu Hardy Heron no hay /etc/init.d/hdparm, de modo que probablemente siga siendo buena idea usar el /etc/rc.local.

hdparm -B 255 /dev/sda

Otra forma de agregar en el arranque creando un script, pero deben seguir los pasos
exactamente.-

1) crear el archivo con el nombre "99-hdd-spin-fix.sh".
Es importante que tenga ese nombre y que empieze con el "99".

2) Asegurarse que contendrá las 2 lineas (es como el parche para el problema del disco) a continuación les muestro las lineas de codigo.-

#!/bin/sh
hdparm -B 255 /dev/sda

3) y por ultimo copiar el script que creamos en tres lugares:

/etc/acpi/suspend.d/
/etc/acpi/resume.d/
/etc/acpi/start.d/

Y eso seria todo.-