Tenga en cuenta que algunas unidades no implementan esta función, incluso si se aprueba el comando. Es posible que también deba reducir la Administración avanzada de energía nivel a 127 o menos con hdparm -B 127 /dev/sda
. Desde la página del manual:
-BObtener/establecer la función Administración de energía avanzada... valores del 1 al 127 (que permiten la disminución de la velocidad) y valores del 128 al 254 (que no permiten la disminución de la velocidad).
Si todo falla, puede escribir un pequeño script que sondee /proc/diskstats
o /sys/block/sda/stat
para el número de lecturas/escrituras en el dispositivo y pone explícitamente la unidad en modo de espera si no cambian durante varios minutos. Consulte la utilidad hd-idle.
El problema real era smartd
, que comprobaba regularmente los valores del dispositivo, incluso cuando estaba en modo de espera.
Lo resolví deshabilitando smartd
y ejecutando pruebas con smartctl
de vez en cuando.
Estoy ejecutando ubuntu 18.04 y tuve el mismo problema. gracias a la respuesta de @allo, descubrí el smartd
es de hecho la causa.
por defecto el /etc/smartd.conf
está configurado así:
DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/martd-runner
que escaneará automáticamente todas las unidades y las sondeará (esta operación hace girar el disco) periódicamente (predeterminado 30 minutos, cambiable). Aunque con el -n standby
smartd omitirá los discos desactivados, pero el problema es que:si el intervalo de sondeo de smartd es más corto que el tiempo de "desactivación posterior" del disco, entonces smartd siempre sondeará el disco ANTES de que tenga la oportunidad de desactivarse, por lo tanto el disco nunca entrará en modo de espera.
si el "tiempo de espera de rotación" del disco es más corto que el intervalo de sondeo de smartd, entonces el disco se reducirá antes de la activación de smartd, después de lo cual smartd omitirá este disco y no lo acelerará. herramientas como hd-idle
, entonces smartd también lo omitirá.
una forma de cambiar el intervalo de sondeo inteligente más largo es editar esta línea en /etc/default/smartmontools
:
smartd_opts="--interval=1800"
1800 mide 30 min, que sea 10800 (3 horas) es suficiente, por ejemplo. Y no olvide reiniciarlos:
systemctl restart smartd smartmontools