Metti HDD in standby dopo X minuti usando hdparm non funziona

Io uso Ubuntu 12.04 su un server di casa. Ci sono 5 dischi rigidi: un SSD con il sistema operativo e 4 HDD (Samsung HD204UI) configurati come RAID5 con mdadm.

Non ho bisogno del RAID molto spesso (diciamo circa una volta al giorno in media); contiene dati multimediali e alcuni backup, quindi ho deciso di mettere le unità in standby la maggior parte del tempo.

Ho configurato le unità per eseguire automaticamente lo spin down dopo 20 minuti utilizzando hdparm, qui /dev/sda come esempio:

 hdparm -S 240 /dev/sda 

L’output del comando ha confermato questo:

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

Ma il problema è che l’unità gira verso il basso dopo circa 5 secondi (invece di 20 minuti) dopo l’ultimo accesso, e

 hdparm -C /dev/sdb 

display:

 /dev/sdb: drive state is: standby 

Perché l’unità non attende i 20 minuti come configurato? Ha qualcosa a che fare con l’installazione RAID? (Io non la penso così …)

Questo timeout molto breve è problematico poiché si tratta di un RAID5 e quando accedo a un file, viene diffuso in blocco attorno alle quattro unità. Poiché l’unità 1 non è necessaria quando l’unità 2 viene letta, si è addormentata quando verrà utilizzata la volta successiva (dopo aver letto l’unità 3). Quindi le unità continuano a ruotare su e giù per tutto il tempo risultando in un throughput vicino allo zero.

Per le persone che sono preoccupate per la vita dei miei dischi: Non sarà un problema che le unità siano spinate su e giù una volta al giorno in media poiché preferisco risparmiare energia e calore per la salute delle unità (io uso RAID5 e il contenuto non è ‘molto importante).

AHCI è abilitato nel tuo BIOS? Se non provi ad accenderlo e riprovare.

Se ancora non funziona, potrebbe essere necessario provare qualcosa di un po ‘più complicato, dato che hdparm non funziona sempre bene con le unità SATA, che è quello che presumo tu abbia.

Dai un’occhiata a questa pagina per la seguente soluzione relativamente semplice che usa crontab:

 sudo apt-get install sg3-utils crontab -e 

Ora, aggiungi questo nella parte inferiore del tuo crontab (sostituisci sdx con l’unità che desideri mettere in standby):

 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 

Naturalmente, prima di tentare tutto ciò, è altamente consigliabile eseguire un backup completo del contenuto dei dischi rigidi.

Forse un modo migliore potrebbe essere:

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

Il primo hdparm mette immediatamente in standby il dispositivo. Il secondo spegne APM, quindi il disco rimane in modalità standby fino all’accesso successivo al disco.