Si noti che alcune unità non implementano questa funzione, anche se il comando ha esito positivo. Potrebbe anche essere necessario ridurre la Gestione energetica avanzata livello a 127 o meno con hdparm -B 127 /dev/sda
. Dalla pagina man:
-BGet/set Advanced Power Management feature...valori da 1 a 127 (che consentono lo spin-down) e valori da 128 a 254 (che non consentono lo spin-down).
Se tutto fallisce, puoi scrivere un piccolo script che esegue il polling /proc/diskstats
o /sys/block/sda/stat
per il numero di letture/scritture sul dispositivo e mette esplicitamente l'unità in standby se non cambiano per diversi minuti. Vedi l'utility hd-idle.
Il vero problema era smartd
, che controllava regolarmente i valori del dispositivo, anche quando era in modalità standby.
L'ho risolto disabilitando smartd
e l'esecuzione di test con smartctl
di tanto in tanto.
sto usando Ubuntu 18.04 e ho avuto lo stesso problema. grazie alla risposta di @allo, ho scoperto il smartd
è davvero la causa.
per impostazione predefinita il /etc/smartd.conf
è configurato in questo modo:
DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/martd-runner
che esegue automaticamente la scansione di tutte le unità e le interroga (questa operazione fa girare il disco) periodicamente (predefinito 30 minuti, modificabile). Anche se con -n standby
parte smartd salterà i dischi spin-down, ma il problema è:se l'intervallo di polling smartd è più breve del tempo di "spin-down after" del disco, allora smartd eseguirà sempre il polling del disco PRIMA che abbia l'opportunità di eseguire lo spin-down, quindi il disco non entrerà mai in modalità standby.
se il "timeout spindown" del disco è più breve dell'intervallo di polling di smartd, allora il disco verrebbe sottoposto a spindown prima del polling di smartd, dopodiché smartd salterà questo disco e non lo farà girare. strumenti come hd-idle
, allora anche smartd lo salterà.
un modo per allungare l'intervallo di polling smartd è modificare questa riga in /etc/default/smartmontools
:
smartd_opts="--interval=1800"
1800 mis 30 min, rendilo 10800 (3 ore) è abbastanza lungo, per esempio. e non dimenticare di riavviarli:
systemctl restart smartd smartmontools