Risposte:
Dai un'occhiata hdparm
.
Dal manuale ( man hdparm
dalla riga di comando):
-S Imposta il timeout di standby (spindown) per l'unità. Questo valore viene utilizzato dall'azionamento per determinare il tempo di attesa (senza attività del disco) prima di spegnere il motore del mandrino per risparmiare energia. In tali circostanze, l'unità potrebbe impiegare fino a 30 secondi per rispondere a un successivo accesso al disco, sebbene la maggior parte delle unità sia molto più veloce.
La codifica del valore di timeout è alquanto peculiare. Un valore pari a zero significa "timeout disabilitati": il dispositivo non entrerà automaticamente in modalità standby. I valori da 1 a 240 specificano multipli di 5 secondi, generando timeout da 5 secondi a 20 minuti. I valori da 241 a 251 specificano da 1 a 11 unità di 30 minuti, generando timeout da 30 minuti a 5,5 ore. Un valore di 252 indica un timeout di 21 minuti. Un valore di 253 imposta un periodo di timeout definito dal fornitore tra 8 e 12 ore e il valore 254 è riservato. 255 viene interpretato come 21 minuti più 15 secondi. Si noti che alcune unità meno recenti potrebbero avere interpretazioni molto diverse di questi valori.
Quindi sudo hdparm -I /dev/sdb | grep level
mostrerà il valore di spindown corrente, ad esempio:
Advanced power management level: 254
Dal manuale: 254 è riservato, quindi mi aspetto che sia l'impostazione predefinita di Ubuntu (qualcuno può confermare / espandere su questo per favore?)
Esempio:
sudo hdparm -S 25 /dev/sdb
= spindown dopo 25 * 5 secondi.
sudo hdparm -S 245 /dev/sdb
= spindown dopo (245-240) * 30 minuti.
grep
APM ( -B
parm) ma di parlare di -S
spindown. Sai qualcosa anche su APM?
-B
impostazione corrente viene visualizzata come indicato sopra. Come posso vedere l' -S
impostazione corrente ?
sudo hdparm -y /dev/sdb
uccide immediatamente la bestia
Utility Disco -> seleziona unità HDD -> fai clic sull'icona "Altre azioni ..." nell'angolo in alto a destra -> Impostazioni unità ...
Il mio è simile a questo:
gnome-disk-utility
.
Se sei interessato a mantenere le impostazioni di hdparm persistenti tra i riavvii, invece di aggiungerlo al crontab, puoi usare il /etc/hdparm.conf
. Ho il seguente, nota l'uso della S maiuscola, non in minuscolo:
command_line {
hdparm -S 25 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215
}
Aggiungi quella riga sostituendo l'UUID con la tua, oppure puoi specificare il dispositivo usando il /dev/sdX
formato. Puoi scoprire l'UUID del tuo disco con il comando sudo blkid
.
command_line
giorno d'oggi? Ho diversi esempi nel mio /etc/hdparm
?
sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
modificare /etc/hdparm.conf
sudo -H gedit /etc/hdparm.conf # Be careful from now on
Cerca spindown-time
o la sezione delle impostazioni del disco.
/dev/disk/by-label/4TB {
spindown_time = 1200
}
Preferisco fare riferimento al disco tramite UUID che rimane lo stesso su diverse installazioni (a meno che non lo modifichi nell'HW stesso).
/dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
spindown_time = 1200
}
Se lo script init provoca problemi di avvio, è possibile passare nohdparm
dalla riga di comando del kernel e lo script non verrà eseguito.
man hdparm.conf
.
man hdparm.conf
legge indirettamente che il valore viene passato a -S
quindi per i valori <255 dovrebbe essere compatibile con la regola nella risposta superiore . Ogni ulteriore informazione è benvenuta.
Dopo aver trascorso ore e ore ho scoperto che il mio disco WDC non supporta il comando hdparm -S, indipendentemente dal valore dell'attributo idle3 (google: idle3ctl). E questo è un problema comune con le unità WD. Ma sono lieto di annunciare che hd-idle ( http://hd-idle.sourceforge.net/ ) funziona alla perfezione. Se installato da un pacchetto creato da dpkg (consultare le Note di installazione), crea un demone su Ubuntu e Debian (la configurazione è in / etc / default / hd-idle). Funziona bene anche dopo aver ripreso il letargo.
mc default # ps aux | grep hd-idle | grep -v grep | taglio -c 66-; per f in [ad]; fare hdparm -C / dev / sd $ f | grep -v "^ $"; fatto / usr / sbin / hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log / Dev / sda: lo stato dell'unità è: attivo / inattivo / Dev / sdb: lo stato dell'unità è: standby / Dev / sdc: lo stato dell'unità è: standby / Dev / sdd: lo stato dell'unità è: standby
Ho scoperto che il comportamento dello spindown di Samsung HD204UI dipende dal livello APM ( hdparm -B
). Se il livello APM è 127, il timeout dello spindown è 10 s. Se il livello APM è 150, il timeout dello spindown è definito -S
dall'opzione.
-S
opzione (vedere Come determinare il tempo di spindown del disco ). Per ottenerlo, utilizzare il software della GUI "Disco". Vedi l' altra risposta con lo screenshot.
Aggiungo qualcosa del tipo:
@reboot sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e > /dev/null 2> /dev/null
al crontab di root. L'uso di uuid è meglio penso perché sda
/ sdb
ecc. Sembra cambiare ad ogni riavvio
hdparm.conf
?
In Ubuntu 14.04
Dischi> evidenzia unità> fai clic sull'ingranaggio nell'angolo in alto a destra> Impostazioni unità> ora hai le impostazioni Standby, APM, AAM e Write Cache in una GUI facile da usare!
Su Debian, con le unità WD, trovo che l'impostazione di qualsiasi livello con hdparm -S comporti che l'unità restituisca un livello 254 sul successivo hdparm -I . Quindi non sono davvero sicuro che stiano girando o no. Penso che stiano ancora ruotando verso il basso.
Queste unità si trovano su un array di server e in realtà non voglio che vengano mai disattivate. In passato ho risolto il problema impostando un processo cron per aggiornare un file ogni pochi minuti.
Non ho avuto fortuna con hdparm su un HDD esterno montato in una custodia USB, che utilizzo per servire media con minidlna.
Mi è venuta un'idea da qui: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping-while-mounted
I migliori risultati provengono dall'uso del uuid del disco, che puoi trovare con:
sudo blkid
Il seguente metodo richiede l'accesso come root, ma anche hdparm. Questo utilizza crontab per leggere un blocco casuale dall'unità ogni 5 minuti e ignora tutti i messaggi. Per assicurarti di avere l'UUID giusto, testalo sulla riga di comando in questo modo (assicurati di usare l'UUID desiderato, non questo):
sudo dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM
Dovresti vedere un output in questo modo:
1+0 records in
1+0 records out
512 bytes copied, 0.000738308 s, 693 kB/s`
Per sopprimere questo messaggio, che potrebbe finire per essere scritto da qualche parte, potenzialmente il / filesystem (che è su un SSD nel mio caso), di seguito è quello che sto usando nel crontab di root. Ci arrivi con
sudo crontab -e
Quindi, sotto i commenti:
*/5 * * * * bash -c 'dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM' >/dev/null 2>&1
Spero che questo aiuti qualcun altro con problemi simili. Sfortunatamente, questo viene ancora scritto nel syslog, ma ci sono potenzialmente modi per sopprimerlo; vedi questo post ServerFault .
[modifica] 07-01-2017 09:02:
Sono stato in grado di sopprimere questi messaggi modificando /etc/rsyslog.d/50-default.conf per modificare questa riga:
*.*;auth,authpriv.none -/var/log/syslog
a questo:
*.*;cron,auth,authpriv.none -/var/log/syslog
Sfortunatamente, questo elimina tutti i messaggi cron; Non sono riuscito a ottenere cron per reindirizzare la disconnessione dal filesystem di root (che è su un SSD obsoleto nel mio caso, quindi voglio limitare le scritture), ma poiché si tratta solo di un server di casa, probabilmente non mi sto perdendo molto. Sicuramente non consiglierei questa strategia per una macchina di produzione.