Schalten Sie eine Festplatte in den Ruhezustand und wachen Sie nur bei Bedarf auf

10

Ich möchte eine andere Festplatte an meinen Computer anschließen, auf der ich 99% der Zeit schlafen möchte. Ich werde es nur für ein paar Dinge verwenden, aber ich muss es jederzeit montieren.

Um dies zu erreichen, würde ich gerne wissen:

  1. Wie protokolliere ich, welche Prozesse auf ein Gerät zugreifen? Ich benötige die Protokollierung, um feststellen zu können, warum die Festplatte in diesem Fall aufwacht, damit ich darauf reagieren kann.
  2. Gibt es spezielle Kerneleinstellungen, die ich vornehmen muss, damit das Gerät möglicherweise länger in den Ruhezustand wechselt?
  3. Wie stelle ich die Ruheintervalle der Festplatte ein?
Gelöscht
quelle

Antworten:

13

Das Ruheintervall heißt "APM" (Automatic Power Management) und spindown_time. Dies wird folgendermaßen gesteuert hdparm:

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

Dadurch wird Ihre Festplatte bei einer Inaktivität von ca. 3 Minuten heruntergefahren.

kolypto
quelle
4

Unter Linux können Sie das neue fatraceDienstprogramm verwenden, das jeden Dateizugriff protokolliert und Ihnen mitteilt, welcher Prozess verantwortlich ist:

https://launchpad.net/fatrace

Weitere Informationen hier:

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

Es nutzt die Linux Fanotify API ( weitere Details ), die seit dem Linux Kernel 2.6.37 verfügbar ist.

fatrace ist nicht von allen Distributionen ab Juli 2014 gepackt (es wurde kürzlich in Debian-Tests eingeführt, sollte also in 'jessie' geliefert werden), ist aber einfach von der Quelle zu installieren.

JosephH
quelle
1
Ich weiß nicht, was Sie unter "den meisten" Distributionen verstehen. Wie immer ist Debian die letzte Distribution, die etwas bekommt. Ich habe es schon seit einiger Zeit auf Fedora verfügbar ...
Michael Hampton
3

http://en.wikipedia.org/wiki/Fuser_%28Unix%29 - fuser ist ein UNIX-Befehl, mit dem angezeigt wird, welche Prozesse eine bestimmte Datei, ein bestimmtes Dateisystem oder einen bestimmten Socket verwenden.

http://sourceforge.net/projects/hdparm/ - ATA / SATA-Laufwerksparameter unter Linux abrufen / einstellen (nach -S-Option suchen)

http://sg.danny.cz/sg/sg3_utils.html - Das Paket sg3_utils enthält Dienstprogramme, die SCSI-Befehle an Geräte senden. Sowie Geräte für Transporte, die traditionell mit SCSI verbunden sind (siehe sg_start)

Maciek Sawicki
quelle
Vielen Dank für Ihre informative Antwort! Es sieht so aus, als ob die Fixiereinheit mir nur bei der Ausgabe des Befehls mitteilt, welche Prozesse eine Datei oder ein Dateisystem verwenden. Dies ist zwar sehr nützlich, wenn ein Prozess etwas schnelles erledigt, z. B. den Inhalt des Geräte-Stammverzeichnisses auflistet, aber ich vermisse es möglicherweise, selbst wenn die Fixiereinheit in einer Schleife ausgeführt wird. Wenn es etwas gäbe, das warten und alle Aktivitäten protokollieren würde, bis ich sage, dass es aufhören soll, wäre es in dieser Situation noch hilfreicher. Kennen Sie welche?
Gelöscht
Ich denke, hdparam ist das, was ich verwenden werde, um die Wartezeit vor dem Schlafengehen einzurichten? Und das sg3_utils ist nur ein mächtiges Werkzeug, aber ich werde es in diesem Fall nicht verwenden? (Wie ich denke, muss ich nicht manuell angeben, wann die Festplatte nach dem Einrichten mit hdparam in den Ruhezustand versetzt werden soll?)
Gelöscht
3

btraceoder blktrace(ein Wrapper von btrace) Track-Kernel-Block-E / A und kann Ihnen dort helfen.

anon
quelle
2

lsof +D /path/to/mount sollte Ihnen jeden Prozess anzeigen, bei dem eine Datei im angegebenen Pfad geöffnet ist.

Teddy
quelle
0

Ich habe ein ähnliches Problem. Ich habe SSD /dev/sdbmit Betriebssystem (Linux Mint 18.1 basierend auf Ubuntu Xenial) und HDD /dev/sdamit Daten, die ich von Zeit zu Zeit verwende. Beide Festplatten sind verschlüsselt. Die Partitionen der Festplatte sind nicht gemountet. Und trotzdem wacht die Festplatte in einigen Minuten auf, schläft dann und wacht dann wieder auf. Chaos.

Hier ist eine doppelte Frage mit hilfreicher Antwort , die darauf hindeutet auditd, den Prozess des schlechten Verhaltens zu finden.

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

Dann zwinge ich die Festplatte zum Schlafen hdparm -Y /dev/sda. Warten Sie dann, bis sich die Festplatte wieder dreht. Dann renne ausearch -f /dev/sda. In meinem Fall werden Einträge wie die folgenden angezeigt.

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)

Relevanter Teil ist exe = "/ usr / lib / udisks2 / udisksd" . Obwohl ich auch hatte, smartmontoolswessen smartdauch der Schuldige war. Ich habe smartmontoolsden udisk2Dienst deinstalliert und eingestellt service udisks2 stop. Danach schläft die Festplatte wie erwartet.

Beachten Sie, dass dies udisks2automatisch gestartet wird, wenn ich beispielsweise die Festplattenanwendung öffne , sodass ich sie erneut stoppen muss. Ein weiterer Nachteil ist, dass SMART-Parameter nicht für beide Festplatten überwacht werden, was nicht gut ist, aber als Problemumgehung passt.

Eine Sache, die nicht klar ist, ist, dass dieser Fehlerbericht besagt, udisks2dass keine Polling-Festplatten ausgeführt werden, was jetzt vom Kernel durchgeführt wird. Aber die Beweise scheinen das Gegenteil anzuzeigen.

saaj
quelle