Poner los discos duros en espera después de X minutos usando hdparm no funciona

11

Yo uso Ubuntu 12.04 en un servidor doméstico. Hay 5 discos duros: un SSD con el sistema operativo y 4 discos duros (Samsung HD204UI) configurados como RAID5 con mdadm.

No necesito el RAID con mucha frecuencia (por ejemplo, aproximadamente una vez al día en promedio); contiene datos multimedia y algunas copias de seguridad, así que decidí poner las unidades en espera la mayor parte del tiempo.

Configuré las unidades para girar automáticamente después de 20 minutos usando hdparm, aquí /dev/sdacomo ejemplo:

hdparm -S 240 /dev/sda

La salida del comando confirmó esto:

/dev/sdb:
 setting standby to 240 (20 minutes)

Pero el problema es que la unidad gira después de unos 5 segundos (en lugar de 20 minutos) después del último acceso, y

hdparm -C /dev/sdb

muestra:

/dev/sdb:
 drive state is:  standby

¿Por qué la unidad no espera los 20 minutos configurados? ¿Tiene algo que ver con la configuración RAID? (No lo creo...)

Este tiempo de espera muy corto es problemático ya que es un RAID5 y cuando accedo a un archivo, se distribuye en bloque por las cuatro unidades. Dado que la unidad 1 no es necesaria cuando se lee la unidad 2, se durmió cuando se usará la próxima vez (después de que se haya leído la unidad 3). Entonces, las unidades siguen girando hacia arriba y hacia abajo todo el tiempo, lo que resulta en un rendimiento cercano a cero.

Para las personas que están preocupadas por la vida útil de mis unidades: no será un problema que las unidades se giren hacia arriba y hacia abajo una vez al día en promedio, ya que prefiero ahorrar energía y calor sobre la salud de las unidades (uso RAID5 y el contenido no es Es muy importante).

Leemes
fuente
2
Me alegra que hayas respondido aquí. Es una pena que los chicos de ServerFault fueran tan exigentes. Pensé que las técnicas de ahorro de energía serían bastante importantes en cualquier escenario empresarial con visión de futuro. En cambio, se lo perderán.
tomfanning
1
@tomfanning Bueno, supongo que ServerFault es para servidores a gran escala como en un centro de datos solamente. Pero no lo sabía, y esperaba que un servidor doméstico también cuente como servidor. Bueno, si no, debería poner mi servidor en mi jardín, para que ya no esté en mi casa. Lo que realmente no entiendo es por qué simplemente no me viven con lo que quiero y solo responden la pregunta si tienen respuestas constructivas para mi pregunta, sino que quieren que sea lo que quiero hacer. [para otras personas que no saben de qué estamos hablando: serverfault.com/q/389222/116951]
leemes

Respuestas:

11

¿AHCI está habilitado en su BIOS? Si no, intente encenderlo y volver a intentarlo.

Si eso todavía no funciona, entonces puede que tenga que probar algo un poco más complicado, ya hdparmque no siempre funciona bien con las unidades SATA, que es lo que supongo que tiene.

Consulte esta página para obtener la siguiente solución relativamente simple que usa crontab:

sudo apt-get install sg3-utils
crontab -e

Ahora, agregue esto a la parte inferior de su crontab (reemplace sdx con la unidad que desea poner en espera):

0-59/15 * * * * ( if [ ! -f /dev/shm/1 ] ; then touch /dev/shm/1 /dev/shm/2; fi ; mv /dev/shm/1 /dev/shm/2; cat /proc/diskstats > /dev/shm/1 ) >/dev/null 2>&1
0-59/15 * * * * ( export HD="sdx "; if [ "$(diff /dev/shm/1 /dev/shm/2 | grep $HD )" =  "" ] ; then /usr/bin/sg_start --stop /dev/$HD; fi ) >/dev/null 2>&1

Por supuesto, antes de intentar algo de esto, es muy recomendable realizar una copia de seguridad completa del contenido de sus discos duros.

SirCharlo
fuente
Trabajado como un encanto. Habilité AHCI en BIOS. El modo SATA se configuró en RAID (mi placa base tiene un controlador RAID incorporado que no uso). No sabía que AHCI es necesario para un control SMART adecuado de las unidades SATA o lo que sea que esté haciendo hdparm aquí. ¡Gracias!
Leemes
Sir @SirCharlo, ¿cuál es el comando básico para hacer un disco duro en modo de espera (usando eso sg3-utils)? Es /usr/bin/sg_start --stop /dev/sdx?
Oki Erie Rinaldi
1

Quizás una mejor manera podría ser:

hdparm -B 1 -Y / dev / device
hdparm -B 255 / dev / device

El primer hdparm puso el dispositivo en espera de inmediato. El segundo apaga APM, por lo que el disco permanece en modo de espera hasta el siguiente acceso al disco.

estera
fuente
Buena sugerencia, aunque debe afirmarse que estos comandos deben usarse con un script que cronometra las acciones.
Rucent88