Fare dormire un disco rigido e svegliarsi solo quando necessario


10

Voglio collegare un altro disco rigido al mio computer, che voglio dormire il 99% delle volte. Lo userò solo per alcune cose, ma ho bisogno che sia sempre montato.

Per raggiungere questo obiettivo vorrei sapere:

  1. Come registro quali processi accedono a un dispositivo? Ho bisogno della registrazione per essere in grado di dire cosa sta causando il risveglio del disco rigido se lo fa, quindi posso agire su di esso.
  2. Ci sono delle impostazioni speciali del kernel che devo fare in modo che il dispositivo possa dormire più a lungo?
  3. Come posso impostare gli intervalli di sospensione del disco rigido?

Risposte:


13

L'intervallo di sospensione si chiama "APM" (Gestione automatica dell'alimentazione) e spindown_time. Questo è controllato in hdparmquesto modo:

hdparm -B 50 -S 36 /dev/disk/by-label/BACKUP-HDD

Farà ripartire il tuo HDD con inattività di circa 3 minuti.


4

Dato che sei su Linux, puoi usare la nuova fatraceutility, che registra ogni accesso ai file e ti dice quale processo è responsabile:

https://launchpad.net/fatrace

Maggiori informazioni qui:

http://www.piware.de/2012/02/fatrace-report-system-wide-file-access-events/

Fa uso dell'API fanotify di Linux ( maggiori dettagli ) disponibile dal kernel 2.6.37 di Linux.

fatrace non è impacchettato da tutte le distribuzioni a partire da luglio 2014 (è entrato di recente nei test debian, quindi dovrebbe essere spedito in 'jessie'), ma è facile da installare dal sorgente.


1
Non so cosa intendi per "maggior parte" delle distribuzioni. Come al solito Debian è l' ultima distribuzione a ottenere qualcosa. L'ho avuto disponibile su Fedora da un po 'di tempo ...
Michael Hampton,

3

http://en.wikipedia.org/wiki/Fuser_%28Unix%29 - fuser è un comando UNIX utilizzato per mostrare quali processi utilizzano un file, un file system o un socket specificati.

http://sourceforge.net/projects/hdparm/ - ottieni / imposta i parametri dell'unità ATA / SATA su Linux (cerca l'opzione -S)

http://sg.danny.cz/sg/sg3_utils.html - Il pacchetto sg3_utils contiene utilità che inviano comandi SCSI ai dispositivi. Oltre ai dispositivi sui trasporti tradizionalmente associati a SCSI (cercare sg_start)


Grazie per la tua risposta informativa! Sembra che il fusore mi dica solo quali processi stanno usando un file, un filesystem o un socket nell'istanza di emissione del comando. Anche se questo è molto utile se un processo fa qualcosa di veloce, come elencare il contenuto della directory principale del dispositivo, potrei mancarlo anche se ho un fusore in esecuzione in un ciclo. Se ci fosse qualcosa che aspetterebbe e registrerebbe tutte le attività fino a quando non le dirò di smettere, sarebbe ancora più utile in questa situazione. Ne conosci qualcuno?
Eliminato il

Immagino che hdparam sia quello che userò per impostare il tempo di attesa prima di dormire? E sg3_utils è solo uno strumento potente ma in questo caso non lo userò? (Come immagino non dovrò specificare manualmente quando l'HDD dovrebbe dormire dopo averlo impostato usando hdparam?)
Eliminato il

3

btraceo blktrace(un wrapper di btrace) traccia I / O del blocco del kernel e può esservi d'aiuto.


2

lsof +D /path/to/mount dovrebbe mostrarti ogni processo che ha file aperto nel percorso indicato.


0

Ho un problema simile. Ho SSD, /dev/sdbcon OS (Linux Mint 18.1 basato su Ubuntu Xenial) e HDD /dev/sda, con dati, che utilizzo di volta in volta. Entrambi i dischi sono crittografati. Le partizioni dell'HDD non sono montate. E comunque in alcuni minuti l'HDD si sveglia, poi dorme, quindi si risveglia. Mess.

Ecco una domanda duplicata con una risposta utile , che suggerisce auditddi trovare il processo di comportamento scorretto.

apt-get install auditd
auditctl -w /dev/sda -p rwa

Quindi costringo l'HDD a dormire hdparm -Y /dev/sda. Quindi aspetta fino a quando sento di nuovo girare l'HDD. Quindi corri ausearch -f /dev/sda. Nel mio caso mostra voci come le seguenti.

time->Sat Feb 25 12:38:17 2017
type=PROCTITLE msg=audit(1488022697.651:1744): proctitle=2F7573722F6C69622F756469736B73322F756469736B7364002D2D6E6F2D6465627567
type=PATH msg=audit(1488022697.651:1744): item=0 name="/dev/sda" inode=376 dev=00:06 mode=060660 ouid=0 ogid=6 rdev=08:00 nametype=NORMAL
type=CWD msg=audit(1488022697.651:1744):  cwd="/"
type=SYSCALL msg=audit(1488022697.651:1744): arch=c000003e syscall=2 success=yes exit=12 a0=f3fb90 a1=800 a2=7f4745221f64 a3=30 items=1 ppid=1 pid=18520 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="pool" exe="/usr/lib/udisks2/udisksd" key=(null)

La parte pertinente è exe = "/ usr / lib / udisks2 / udisksd" . Anche se avevo anche il smartmontoolscui smartdcolpevole era anche lui. Ho disinstallato smartmontoolse interrotto il udisk2servizio con service udisks2 stop. Successivamente, l'HDD dorme come previsto.

Si noti che udisks2verrà avviato automaticamente quando, ad esempio, apro l' applicazione Dischi , quindi devo interromperlo di nuovo. Un altro aspetto negativo è che i parametri SMART non sono monitorati per entrambi i dischi, il che non va bene, ma come soluzione alternativa si adatta.

Inoltre, una cosa che non è chiara è che questa segnalazione di bug dice udisks2che non esegue il polling dei dischi che ora viene eseguito dal kernel. Ma le prove sembrano indicare il contrario.

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.