Come posso controllare i tempi di down down dell'HDD?


71

Ho 2 HDD sul mio PC. Ubuntu sta spegnendo l'HDD secondario molto rapidamente dopo circa 15 minuti, il che è breve per me. Devo controllare questa volta. Come posso farlo?

Ho provato la gestione dell'alimentazione GNOME ma non l'ho trovato utile.

Risposte:


67

Dai un'occhiata hdparm.

Dal manuale ( man hdparmdalla 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 levelmostrerà 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.


grazie Rinzwind per i suggerimenti, che mi hanno aiutato molto ma mi piacerebbe vedere gui per questo nella prossima versione di Ubuntu o potrebbe essere integrato in gnome power manager
user16295

4
Per quanto riguarda la risposta di lzap, sembra che tu abbia parlato di grepAPM ( -Bparm) ma di parlare di -Sspindown. Sai qualcosa anche su APM?
turbo,

3
L' -Bimpostazione corrente viene visualizzata come indicato sopra. Come posso vedere l' -Simpostazione corrente ?
SabreWolfy

5
sudo hdparm -y /dev/sdbuccide immediatamente la bestia
siamii il

1
@SabreWolfy L'ho posto come una domanda separata: come posso sapere l'attuale tempo di spin-down del drive?
ændrük,

46

Utility Disco -> seleziona unità HDD -> fai clic sull'icona "Altre azioni ..." nell'angolo in alto a destra -> Impostazioni unità ...

Il mio è simile a questo: immagine dello schermo


6
Di gran lunga più semplice, grazie! (A proposito, il pacchetto che devi installare se non lo hai è gnome-disk-utility.
Gerhard Burger,

modo di andare linux! +1
neu-rah,

Sì, estremamente facile - felice che sia qui.
Zzzach ...

@Ray, signore, siete fantastici! Fondamentalmente non avevo speranze che funzionasse per un HDD esterno ma lo ha fatto!
UTF-8

1
Perché la maggior parte dei suggerimenti prevede operazioni di modifica dei file soggette a errori o operazioni della console, mentre già esistono strumenti intuitivi come questo!
WooYek, l'

30

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/sdXformato. Puoi scoprire l'UUID del tuo disco con il comando sudo blkid.


3
È corretto da usare al command_linegiorno d'oggi? Ho diversi esempi nel mio /etc/hdparm?
Dims

1
La risposta di Ondra Žižka sembra essere più aggiornata.
Raphael,

9
  1. Trova l'UUID del tuo disco .

    sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
    
  2. modificare /etc/hdparm.conf

    sudo -H gedit /etc/hdparm.conf  # Be careful from now on
    
  3. Cerca spindown-timeo la sezione delle impostazioni del disco.

    /dev/disk/by-label/4TB {
        spindown_time = 1200
    }
    
  4. 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
    }
    
  5. Se lo script init provoca problemi di avvio, è possibile passare nohdparm dalla riga di comando del kernel e lo script non verrà eseguito.


Quali sono le unità per quel parametro?
detenere il

IIRC, sono secondi. O forse questo è il parametro che aveva regole selvagge come "se è inferiore a 10, quindi decine di secondi, se inferiore a 100, quindi è minuti" e così via. Dovrei trovare.
Ondra Žižka,

2
Non sono unità, controlla questo: wiki.archlinux.org/index.php/Hdparm
Ondra Žižka

Saluti, per qualche motivo non sono riuscito a trovarlo man hdparm.conf.
detenere il

man hdparm.conflegge indirettamente che il valore viene passato a -Squindi per i valori <255 dovrebbe essere compatibile con la regola nella risposta superiore . Ogni ulteriore informazione è benvenuta.
dma_k,

8

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



5

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 -Sdall'opzione.


hdparm può impostare ma non ottenere l' -Sopzione (vedere Come determinare il tempo di spindown del disco ). Per ottenerlo, utilizzare il software della GUI "Disco". Vedi l' altra risposta con lo screenshot.
KrisWebDev,

5

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/ sdbecc. Sembra cambiare ad ogni riavvio


10
Perché non usare hdparm.conf?
ændrük,

3

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!


Come si fa a farlo funzionare? Ho impostato questo, e dopo il riavvio, se torno, si è ricordato che l'unità dovrebbe spegnersi, ma non lo fa mai. hdparm -C mostra sempre che è attivo e solo l'esecuzione di hdparm -S xxx dalla riga di comando lo fa funzionare.
Dan Carter,

1
Dove trovi "Disks"?
nealmcb,

1

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.


1

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.