Wie finde ich heraus, welcher Prozess regelmäßig auf die Festplatte schreibt?

40

Wie finde ich heraus, welcher Prozess ständig auf die Festplatte schreibt?

Ich mag es, wenn meine Workstation fast lautlos ist und ich baue gerade ein neues System (P8B75-M + Core i5 3450s - das 's', weil es eine niedrigere maximale TDP hat) mit leisen Lüftern usw. und installiere Debian Wheezy 64-Bit darauf.

Und etwas geht mir auf die Nerven: Ich kann eine Art Muster hören, als würde die Festplatte schreiben oder nach etwas suchen ( tick ... tick ... tick ... trrrrr spülen und ungefähr jede Sekunde wiederholen).

In der Vergangenheit hatte ich ein ähnliches Problem (vor vielen, vielen Jahren) und es stellte sich heraus, dass es sich um ein CUPS-Protokoll oder ähnliches handelte. Ich leitete dieses eine (nicht wichtige) Protokoll einfach auf eine (echte) RAM-Festplatte um.

Aber hier bin ich mir nicht sicher.

Ich habe folgendes versucht:

ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp

aber da ändert sich nichts.

Das Seltsame ist nun, dass ich das Muster auch höre, wenn die Eingabeaufforderung zur Eingabe meiner LVM-Entschlüsselungs-Passphrase angezeigt wird.

Könnte es etwas in dem Kernel / System sein, das ich gerade installiert habe, oder habe ich eine fehlerhafte Festplatte?

hdparm -tT /dev/sda berichte eine korrekte HD-Geschwindigkeit (130 GB / s, nicht zwischengespeichert, sata 6 GB) und ich habe bereits ohne Probleme große Quellen (Emacs) installiert und kompiliert, sodass ich nicht denke, dass das System schlecht ist.

(HD ist ein Seagate Barracude 500 GB)

Cedric Martin
quelle
Sind Sie sicher, dass es sich um eine Festplatte handelt, die dieses Geräusch verursacht, und nicht um etwas anderes? (Überprüfen Sie die Lüfter, einschließlich des Netzteillüfters. Es gab einmal sehr merkwürdige Klickgeräusche, wenn ein sehr dünnes Kabel zu nahe an einem Lüfter war und manchmal die Schaufeln leicht berührte und für ein paar "Klicks" zurückprallte ...)
Mat
@Mat: Ich werde die Festplatte aus dem Gehäuse nehmen (die Anschlüsse sollten lang genug sein), um sicherzugehen, und ich melde mich zurück. )
Cedric Martin
2
Stellen Sie sicher, dass Ihre Festplatten-Dateisysteme relatime oder noatime gemountet sind. Das Lesen von Dateien kann dazu führen, dass Inodes geschrieben werden, um die Zugriffszeit aufzuzeichnen.
camh

Antworten:

42

Haben Sie versucht zu untersuchen, welche Programme angezeigt werden iotop? Hier erfahren Sie genau, welche Art von Prozess gerade auf die Festplatte schreibt.

Beispielausgabe:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
 1033 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [flush-8:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
mnmnc
quelle
1
danke für diesen tipp. Ich wusste nichts über iotop . Unter Debian habe ich eine Apt-Cache-Suche nach iotop durchgeführt , um herauszufinden, dass ich apt-get iotop ausführen musste . Sehr cooler Befehl!
Cedric Martin
3
Ich benutze, iotop -o -b -d 10dass alle 10 Sekunden eine Liste der Prozesse gedruckt wird, die gelesen / auf die Festplatte geschrieben wurden, sowie die Menge der verwendeten IO-Bandbreite.
Ndemou
15

Sie können das IO-Debugging über aktivieren echo 1 > /proc/sys/vm/block_dumpund anschließend die Debugging-Meldungen in / var / log / syslog anzeigen . Dies hat den Vorteil, dass eine Art Protokolldatei mit früheren Aktivitäten abgerufen wird, während iotopnur die aktuelle Aktivität angezeigt wird.

scai
quelle
3
Es ist absolut verrückt, Sysloging aktiviert zu lassen, wenn block_dump aktiv ist. Protokollierung verursacht Festplattenaktivität, die Protokollierung verursacht, die Festplattenaktivität usw. Besser stoppen Sie Syslog, bevor Sie dies aktivieren (und verwenden Sie dmesg, um die Nachrichten zu lesen)
dan3
Sie haben vollkommen recht, obwohl der Effekt nicht so dramatisch ist, wie Sie es beschreiben. Wenn Sie nur einen kurzen Blick auf die Festplattenaktivität werfen möchten, müssen Sie den Syslog-Dämon nicht stoppen.
Scai
Ich habe es vor ungefähr 2 Jahren versucht und es hat meine Maschine zum Stillstand gebracht. An einem dieser Tage, an dem ich nichts Wichtiges am Laufen habe, werde ich es noch einmal versuchen :)
dan3
Ich habe es versucht, nichts ist wirklich passiert. Besonders wegen der Dateisystempufferung. Ein Schreibzugriff auf Syslog löst nicht sofort einen Schreibzugriff auf die Festplatte aus.
Scai
1
Ich gehe davon aus, dass für die Protokollnachrichten eine allgemeine Geschwindigkeitsbegrenzung besteht, die auch diesen Fall behandelt (?)
Volker Siegel
5

Unter der Annahme , dass die Plattengeräusche auf ein Verfahren zurückzuführen sind , was zu einer Schreib- und nicht auf irgendeine Festplatte Spindown Problem , können Sie das verwenden Audit - Subsystem (installieren Sie das auditdPaket ). Beobachten Sie die syncAnrufe und ihre Freunde:

auditctl -S sync -S fsync -S fdatasync -a exit,always

Beobachten Sie die Logs /var/log/audit/audit.log. Achten Sie darauf, dies nicht zu tun, wenn die Überwachungsprotokolle selbst gelöscht werden! Stellen Sie sicher, /etc/auditd.confdass die flushOption auf eingestellt ist none.

Wenn Dateien häufig gelöscht werden, liegt dies wahrscheinlich an den Systemprotokollen. Wenn Sie beispielsweise fehlgeschlagene eingehende Verbindungsversuche protokollieren und jemand Ihren Computer prüft, werden viele Einträge generiert. Dies kann dazu führen, dass eine Festplatte Geräusche im Maschinengewehrstil ausgibt. Überprüfen Sie mit dem Basisprotokolldämon sysklogd Folgendes /etc/syslog.conf: Wenn vor einem Protokolldateinamen kein Name steht -, wird dieses Protokoll nach jedem Schreibvorgang auf die Festplatte geschrieben.

Gilles 'SO - hör auf böse zu sein'
quelle
@ StephenKitt Huh. Nein. Der Fragesteller erwähnte Debian, also habe ich es in einen Link zum Debian-Paket geändert.
Gilles 'SO- hör auf böse zu sein'
3

Möglicherweise werden Ihre Laufwerke automatisch heruntergefahren. Heutzutage tun dies viele Consumer-Laufwerke. Leider führt dies auch auf einem schwach ausgelasteten System dazu, dass die Laufwerke ständig herunter- und dann wieder hochfahren, insbesondere, wenn Sie zur Überwachung der Laufwerkstemperatur hddtemp oder ähnliches ausführen (die meisten Laufwerke lassen Sie dummerweise nicht den SMART-Temperaturwert abfragen ohne das Laufwerk hochzufahren - kretinös!).

Dies ist nicht nur ärgerlich, sondern kann die Laufwerke auch schneller verschleißen, da viele Laufwerke nur eine begrenzte Anzahl von Parkzyklen haben. Eine Beschreibung des Problems finden Sie beispielsweise unter https://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/952556 .

Ich deaktiviere Idle-Spindown auf allen meinen Laufwerken mit dem folgenden Shell-Code. Sie können es in ein /etc/rc.boot-Skript oder in /etc/rc.local oder ähnliches einfügen.

für die Festplatte in / dev / sd? ; machen
  / sbin / hdparm -q -S 0 "$ disk"
getan
cas
quelle
2
Dass Sie SMART-Messwerte nicht abfragen können, ohne das Laufwerk hochzufahren, macht mich sprachlos: - / Jetzt kann das Thema "Herunterfahren" offensichtlich ziemlich kompliziert werden. Zum Deaktivieren des Herunterfahrens: Würde sich die Festplatte dadurch nicht schneller abnutzen? Ich meine: Es "ruht" sich niemals aus, solange das System eingeschaltet ist.
Cedric Martin
IIRC Sie können einige SMART-Werte abfragen, ohne dass sich das Laufwerk dreht, aber die Temperatur ist bei keinem der von mir getesteten Laufwerke (einschließlich Modellen von WD, Seagate, Samsung, Hitachi) eine davon. Das ist natürlich verrückt, denn die Sorge um die Temperatur ist einer der Gründe für den Leerlauf eines Laufwerks. re: wear: AIUI 1. Konstante Geschwindigkeit ist weniger verschleißend als sich ändernde Geschwindigkeit. 2. die Antriebe haben die Köpfe in einem sicheren Bereich zu parken und ein Antrieb nur , dass so viele Male zu tun haben (IIRC bis zu einigen hunderttausend - leicht überschritten , wenn der Antrieb im Leerlauf ist und alle paar Sekunden hochgefahren )
cas
Es ist eine lange Debatte darüber, ob es besser ist, die Laufwerke laufen zu lassen oder herunterzufahren. Persönlich glaube ich, dass es am besten ist, sie am Laufen zu lassen - ich schalte meinen Computer nachts aus und wenn ich ausgehe, aber ansonsten drehe ich meine Laufwerke nie herunter. Einige Leute ziehen es vor, sie herunterzufahren, zum Beispiel nachts, wenn sie den Computer eingeschaltet lassen oder wenn der Computer längere Zeit nicht benutzt wird, und in solchen Fällen ist der Vorteil, sie ein paar Stunden lang herunterzufahren, umstritten, anstatt sie laufen zu lassen . Was jedoch nie gut ist, ist, dass die Festplatte in kurzer Zeit wiederholt hoch- und herunterfährt.
Micheal Johnson
Beachten Sie auch, dass das Herunterfahren des Laufwerks, nachdem es einige Stunden im Leerlauf war, etwas albern ist. Wenn es einige Stunden im Leerlauf war, wird es wahrscheinlich innerhalb einer Stunde wieder verwendet. In diesem Fall scheint es besser, das Laufwerk sofort herunterzufahren, wenn es im Leerlauf ist (z. B. innerhalb von 10 Minuten). Es ist jedoch auch möglich, dass das Laufwerk einige Minuten im Leerlauf ist, wenn jemand den Computer verwendet und dies wahrscheinlich benötigt die Fahrt bald wieder.
Micheal Johnson
Ich war mir sicher, dass dies mein Problem beheben würde, wenn ich höre, dass das Laufwerk regelmäßig klackt (3-4 Mal / Sekunde), als würde es schreiben, auch wenn es nicht gemountet ist! Aber ich höre immer noch das Geräusch, nachdem ich diesen Befehl ausgeführt habe. Besorgniserregenderweise ist es das Laufwerk, mit dem ich meine interne SSD sichern kann ...
Michael
1

Ich habe gerade festgestellt, dass Smart dazu führte, dass ein externer USB-Datenträger auf meinem Himbeer-Pi immer wieder hochfuhr. Obwohl SMART im Allgemeinen eine gute Sache ist, habe ich mich entschlossen, es wieder zu deaktivieren, und seitdem scheint es, dass die unerwünschte Festplattenaktivität aufgehört hat

jro
quelle
Sie können den Smart Daemon so konfigurieren, dass keine USB-Festplatten gescannt werden. Die meisten guten Linux-Distributionen tun dies standardmäßig.
lzap
1

Darauf kannst du dich ein bisschen einlassen. Sollte es für die meisten einschränken.

find / -mount -newer /proc -print

Geben Sie Dateien, die seit dem Start geändert wurden, auf dem physischen Gerät des / files-Systems an. Wenn Sie die Dateien kennen, können Sie den Schreiber leichter identifizieren.

user190618
quelle
1

Wenn Sie es auf eine exakte Festplatte beschränken müssen, gehen Sie wie folgt vor:

laufen lsblkund suchen Sie die Gerätenummer. Im folgenden Fall ist es9:126

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdb           8:16   0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdc           8:32   0   7.3T  0 disk  
└─sdc1        8:33   0   7.3T  0 part  /mnt/InternalFBE

Laufen Sie lsof | grep '9,126'mit dem :Ersetzen mit im ,Vergleich zu der oben genannten Datenträgernummer. In meinem Fall sieht das so aus:

bash      389162            root  cwd       DIR              9,126      4096  449183796 /mnt/InternalPhase/0000000001/CHANNEL01/LIVE/PHASE/DATA/2018/10/04

mit der PID von 389162töte diesen Prozess mit:

kill -9 389162
Jacques MALAPRADE
quelle
-1

Das Problem ist, dass das System standardmäßig alle 5 Sekunden Daten aus den Festplattenpuffern auf die Festplatte leeren muss. Wenn die Festplatte herunterfährt, gibt es keine andere Möglichkeit, als die Festplatte erneut hochzufahren, wenn ein Flush erfolgen muss. Das Problem ist also nicht wirklich vermeidbar, außer durch Deaktivieren von Spinsdowns oder Festplatten-Energieverwaltungsfunktionen insgesamt hdparm -B 255 /dev/hdax. Dies ist wahrscheinlich die bessere Option, da ein Neustart so oft Schaden anrichten kann, als einfach die ganze Zeit durchzubleiben.

Paul Reynolds
quelle
1
Es werden nur Daten gelöscht, wenn Daten zu löschen sind. Wenn die Festplatte wirklich nicht verwendet wird, müssen keine gepufferten Daten gelöscht werden.
Micheal Johnson