Metti HDD in standby dopo X minuti usando hdparm non funziona

9

Uso Ubuntu 12.04 su un server domestico. 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 per 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à vengano caricate su e giù una volta al giorno in media poiché preferisco risparmiare energia e calore per la salute delle unità (utilizzo RAID5 e il contenuto non è molto importante).

    
posta leemes 15.05.2012 - 23:32

2 risposte

8

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

Se il problema persiste, potresti dover provare qualcosa di un po 'più complicato, dato che hdparm non funziona sempre bene con le unità SATA, che presumo tu abbia.

Controlla questa pagina per la seguente soluzione relativamente semplice che utilizza crontab:

sudo apt-get install sg3-utils
crontab -e

Ora aggiungi questo in fondo al 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 ciò, è altamente consigliabile eseguire un backup completo dei contenuti dei tuoi dischi rigidi.

    
risposta data SirCharlo 15.05.2012 - 23:54
1

Forse un modo migliore potrebbe essere:

hdparm -B 1 -Y / dev / dispositivo
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.

    
risposta data mat 15.03.2013 - 18:49

Leggi altre domande sui tag