Wie kann ich diesen ständigen Verlust an freiem Speicherplatz stoppen?

15

Ich habe Ubuntu wie gewohnt ausgeführt, als plötzlich ein Dialogfeld angezeigt wurde, in dem angegeben wurde, dass ich nur noch 1,2 GB freien Speicherplatz habe. Eine Stunde zuvor hatte ich 30 GB freien Speicherplatz.

Ich habe ein paar Sachen gelöscht und den freien Speicherplatz auf 25 GB erhöht. Aber es nimmt weiter ab. Ich habe versucht, alte Protokolldateien zu entfernen und Protokolldateien und ähnliches zu kürzen, und es nimmt weiter ab!

Ich habe versucht, mit Disk Analyzer herauszufinden, woher all dieser Verlust an freiem Speicherplatz stammt, und das hat nicht funktioniert, da es alles so zeigte, wie es sein sollte. Ich habe neu gestartet und schließlich Ubuntu eine Festplattenüberprüfung durchgeführt, die irgendwie den freien Speicherplatz auf 40 GB zurückbrachte, aber es geht immer noch um 10 GB pro Tag zurück. Ich versuche weiterhin, neue Wege zu finden, um Speicherplatz freizugeben, aber es ist wie ein automatisierter Prozess, bei dem der Speicherplatz verringert wird, den ich nicht stoppen kann.

Ich weiß nicht, was ich tun soll. Wie kann ich die Ursache finden und verhindern, dass mein freier Speicherplatz abnimmt?

Hier ist die Ausgabe von sudo du -sh /var/* ~/.xsession-errors:

13M /var/backups
204M    /var/cache
112M    /var/crash
4.0K    /var/games
503M    /var/lib
4.0K    /var/local
0       /var/lock
9.5G    /var/log
85M     /var/mail
4.0K    /var/metrics
24K     /var/opt
0       /var/run
1.7M    /var/spool
391M    /var/tmp
11G     /var/tvmobili
20K     /var/www
224K    /home/school/.xsession-errors
askcompu
quelle
2
Kannst du den Beitrag bearbeiten, um die Ausgabe von sudo du -sh /var/* ~/.xsession-errorsplease anzuhängen ? (Diese beiden Orte würde ich wahrscheinlich in die Luft jagen, wenn es etwas Dummes gibt). Ansonsten bin ich bei Eliah - dies weist auf Festplattenprobleme hin. Nimm das ernst.
Oli

Antworten:

26

Sie haben einige außer Kontrolle geratene Protokolle. Statt wie verrückt jeden Tag zu löschen, findet die schnell wachsende Datei oder Dateien, und Blick nach innen zu untersuchen , was dies verursachen kann. Möglicherweise dreht sich ein Programm in einer Schleife und protokolliert einen bestimmten Zustand. Deaktivieren Sie das Programm, deaktivieren Sie die Protokollierung, oder versuchen Sie, den Zustand zu beheben, über den es sich beschwert.

Wenn eine Datei vor Ihren Augen wächst und Sie keine Ahnung haben, welches Programm darauf schreibt, können Sie dies möglicherweise leicht herausfinden. Hier ist ein Beispiel. Wer hat /var/log/sysloggeöffnet? Wir benutzen den fuserBefehl:

# fuser /var/log/syslog
/var/log/syslog:      602

Es ist nur ein Prozess /var/log/syslogoffen. Es ist Prozess 602. Was ist das? Lassen Sie uns nicht mit psund befassen grep, sondern schauen Sie sich das /procDateisystem direkt an:

# ls -l /proc/602/exe
lrwxrwxrwx 1 root root 0 Mar 29 17:45 /proc/602/exe -> /usr/sbin/rsyslogd

Aha, das ist es rsyslogd. Wir sind nicht überrascht , dass rsyslogdhat /var/log/syslog/geöffnet.

Diese Methode funktioniert garantiert nicht. Der Grund dafür ist, dass Programme Dateien nicht geöffnet halten müssen, um darauf schreiben zu können. Angenommen, Sie haben einen Prozess, der eine Datei öffnet, an sie anfügt und sie dann schließt. Sie werden eine etwas schwierigere Untersuchung haben. Sie könnten fuserviele Male laufen, bis Sie zufällig den Prozess "auf frischer Tat" abfangen. Dieser Prozess selbst könnte schnell ein- und ausgehen. Ein weiteres Problem besteht darin, dass die Datei bei mehreren Prozessen möglicherweise geöffnet ist, aber nur einer vergrößert sie. In diesem Fall können Sie die Systemaufrufe verfolgen.

# fuser /var/log/huge-annoying-file
/var/log/huge-annoying-file:   1234 23459

Hoppla! Zwei Prozesse haben es geöffnet: 1234 und 23459. Mal sehen, was sie tun:

# strace -p 1234
Process 1234 attached - interrupt to quit
select(1, NULL, NULL, NULL, {9, 922666}

Es tut nichts, es blockiert nur einen selectAnruf. Strg + C, um den Trace zu unterbrechen:

select(1, NULL, NULL, NULL, {9, 922666}^C <unfinished ...>

Überprüfen Sie den nächsten:

# strace -p 23459
write(5, "Useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
^C

Hoppla, dieser schreibt ständig. Es muss der Böse sein. Wir können sogar überprüfen, ob der Dateideskriptor 5, in den der Prozess schreibt, tatsächlich die große Datei ist:

# ls -l /proc/23459/fd/5
lr-x------ 1 root root 64 Apr  3 23:39 /proc/23459/fd/5 -> /var/log/huge-annoying-file

Ich vermute nicht, dass Sie ein beschädigtes Dateisystem haben, aber um eine vollständige Überprüfung zu erzwingen, müssen Sie keine DVD booten.

Überprüfen Sie zunächst die maximale Anzahl der Ladevorgänge in Ihrem Dateisystem. Identifizieren Sie Ihre Partition mit dem Befehl df. Beispiel auf einem Ubuntu-System, das ich hier habe:

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18062108 5499320  11645284  33% /
udev              392152       4    392148   1% /dev
tmpfs             159768     768    159000   1% /run
none                5120       0      5120   0% /run/lock
none              399416     200    399216   1% /run/shm
/dev/sr0           43668   43668         0 100% /media/VBOXADDITIONS_4.1.4_74291

Sie können sehen, dass das /Dateisystem angehängt ist /dev/sda1. So /dev/sda1ist die Speichervorrichtung der Root - Partition (und die einzigen Partition in diesem speziellen System).

Schauen wir uns einige Attribute dieses Dateisystems an. Dies ist sicher, obwohl es montiert ist. Der Befehl gibt viel aus. Hier ist ein Auszug:

$ dumpe2fs /dev/sda1
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name:   <none>
Last mounted on:          /
[ ... SNIP ... ]
Last mount time:          Fri Mar 29 17:45:18 2013
Last write time:          Tue Mar  5 09:08:03 2013
Mount count:              22
Maximum mount count:      22
[ ... SNIP ... ]

Hey schau, die Anzahl der Reittiere ist gleich der maximalen Anzahl der Reittiere. Beim nächsten Neustart wird das Dateisystem überprüft. Wichtig ist, dass die Anzahl der Reittiere ein positiver Wert ist. Wenn deins Null ist, ändern Sie es mit auf einen positiven Wert wie 22 tune2fs -c 22 /dev/whatever. Null bedeutet, dass niemals eine Überprüfung erzwungen wird, unabhängig davon, wie oft die Partition gemountet wurde. Selten neu gestartete Systeme sollten hier niedrige Werte haben. Ein Server, der einmal im Jahr ausfällt, könnte wahrscheinlich bei jedem Neustart ein fsck verwenden. Sie können auch datumsbasierte Prüfintervalle festlegen.

Um nun eine Überprüfung zu erzwingen, können Sie die tatsächliche Anzahl so überschreiben , dass sie größer oder gleich dem Maximum ist, und anschließend neu starten. Das ist mit der Hauptstadt gemacht C: tune2fs -C 1234 /dev/whatever. Jetzt sieht es so aus, als ob die Partition 1234-mal ohne einen Haken gemountet wurde, der größer als das ein- oder zweistellige Maximum ist.

Kaz
quelle
Sehr informativ, aber das Problem ist gelöst, es war die Firewall, die riesige Protokolldateien schrieb
askcompu
2
Sehen Sie, wie ich vermutet habe. Keine mysteriöse Festplattenbeschädigung peitscht den Speicherplatz auf und ab. Ich meine, das könnte einen einzelnen Vorfall erklären, aber wenn er repariert ist, sollte er repariert werden. Und wenn das Laufwerk ausfällt, würden Sie einige Fehler im Kernel-Log und in Panics erwarten.
Kaz
Ja, ich dachte, es ist nicht das Laufwerk, SMART-Tests sagen, es ist ein altes Laufwerk, aber immer noch betriebsbereit und funktionsfähig
askcompu
Eine einfachere Möglichkeit, alle Dateisysteme zu überprüfen, besteht darin, sudo touch / forcefsck auszuführen. sudo / sbin / shutdown -r now '.
Blair Zajac
3

Eine Festplattenüberprüfung hat einen Teil des Speicherplatzes freigegeben, was darauf hindeutet, dass dieses Problem (oder ein Teil davon) auf eine Beschädigung des Dateisystems zurückzuführen ist. In diesem Fall sollten Sie in der Lage sein, mehr Speicherplatz freizugeben, indem Sie das Dateisystem scannen und reparieren. Wenn die Beschädigung jedoch fortwährend auftritt (was möglicherweise der Fall ist oder nicht), bedeutet dies in der Regel, dass die Festplatte ausfällt. Wenn Ihre Backups (Ihrer Dokumente und anderer wichtiger Dateien, die schwer zu ersetzen sind) nicht vollständig auf dem neuesten Stand sind, sichern Sie jetzt alle wichtigen Daten!

Um die Festplatte zu überprüfen und zu reparieren , kann sie nicht gemountet werden (zumindest nicht mit Lese- / Schreibzugriff). Sie sollten das Reparaturdienstprogramm daher in einer Live-Umgebung (Live-CD / DVD oder USB) ausführen. Zuerst müssen Sie den Gerätenamen der Partition ermitteln, die Ihre Dateien enthält.

Führen Sie daher auf dem installierten System Folgendes aus:

mount | grep ' on / '

(Stellen Sie sicher, dass der Abstand zwischen /und angegeben ist '.)

Du bekommst so etwas wie:

/dev/sda8 on / type ext4 (rw,errors=remount-ro)

Der Text vor on- im Beispiel von meinem Computer - /dev/sda8ist der vollständige Gerätename für Ihre Root-Partition ( /). Schreiben Sie das auf - Sie werden es brauchen.

Starten Sie dann Ihren Computer von einer Ubuntu-Desktop-CD / DVD oder einem USB-Flash-Laufwerk, wie Sie es ursprünglich bei der Installation von Ubuntu getan haben. (Wenn es sich um ein Wubi-System handelt, das mit dem Windows-Installationsprogramm installiert wurde, teilen Sie uns dies bitte mit. Ich erwarte dies nicht, wenn Sie dies melden. In diesem Fall ist die Vorgehensweise jedoch anders.)

Wählen Sie Ubuntu ohne Installation testen (nicht Ubuntu installieren ). Wenn Sie einen funktionierenden Desktop erhalten, drücken Sie Ctrl+ Alt+ T, um ein Terminalfenster zu öffnen. Führen Sie dann diesen Befehl aus:

sudo e2fsck -fkccp /dev/sda8

Stellen Sie jedoch sicher, dass Sie /dev/sda8den richtigen vollständigen Gerätenamen für Ihre /Partition verwenden, wie Sie dies mit der oben beschriebenen Methode erhalten haben.

Das kann eine Weile dauern. Die cin diesem Befehl enthaltenen Optionen führen dazu, dass die Oberfläche der Festplatte sowie das Dateisystem auf Fehler überprüft werden (und fehlerhafte Bereiche als fehlerhaft markiert werden, damit sie nicht verwendet werden). Sie können auslassen cc, wenn Sie möchten (wenn Sie dies tun, können Sie auch auslassen k), aber ich empfehle, sie beizubehalten.

Möglicherweise werden Sie aufgefordert, bestimmte Probleme e2fsckzu beheben , wenn Sie der Ansicht sind, dass der Versuch, sie zu beheben, mit hoher Wahrscheinlichkeit zu Datenverlusten führen kann. (Das psorgt dafür, dass alle Probleme behoben werden, von denen es überzeugt ist, dass sie ohne Komplikationen behoben werden können.)

Ich empfehle Ihnen dringend zu ermöglichen geneigt sein , um es zu beheben , was es will, da man nur tun dies sollte nach dafür , dass Ihre Backups sind Strom , sowieso. Wenn Sie möchten, dass auch potenziell gefährliche Fehler behoben werden, ohne dass Sie dazu aufgefordert werden, ersetzen Sie die pdurch y.

Starten Sie danach wieder Ihr Ubuntu-System und prüfen Sie, ob Speicherplatz frei ist. Wenn dies nicht der Fall ist oder das Problem weiterhin besteht, kommentieren und bearbeiten Sie Ihre Frage, um Details bereitzustellen.

Eliah Kagan
quelle
Was ist, wenn ich nichts zum Sichern habe?
Askcompu
1
@ user2045360 Stehlen, plündern, leihen oder kaufen. Oder schieben Sie es online (Ubuntu One, Dropbox, Google Text & Tabellen, S3 usw.).
Oli
@ user2045360 Es kommt darauf an, wie viele und welche wichtigen Dateien Sie haben. Wenn sie aus 20 Bürodokumenten bestehen (oder sogar 100, wenn Sie geduldig sind), können Sie sie per E-Mail an sich selbst senden. Sie können auch Cloud-Speicherdienste wie Ubuntu One oder DropBox verwenden (Vorsicht: Wenn Sie eine Synchronisierung einrichten und eine Datei auf Ihrem Computer gelöscht oder geändert wird, geschieht die gleiche Änderung in der Cloud). Wenn Sie Filmemacher sind und über 300 Gigabyte Filmmaterial verfügen, besteht Ihre einzige Möglichkeit wahrscheinlich darin, ein Speichermedium wie eine externe Festplatte zu kaufen (oder zu leihen, wie Oli es vorschlägt).
Eliah Kagan
Ich habe kein Geld und niemanden zum Ausleihen. Wie groß ist die Wahrscheinlichkeit, dass bei diesem Befehl Daten verloren gehen?
Askcompu
@ user2045360 Die Wahrscheinlichkeit eines Datenverlusts durch diesen e2fsckBefehl ist ziemlich gering, insbesondere wenn Sie nicht yauf etwas drücken , das Sie warnt, dass Sie Daten verlieren könnten. Das Ausführen dieses Befehls ist jedoch nicht der Grund, warum Sie Ihre Daten sichern müssen. Sie müssen Ihre Daten sichern, da die schnelle und kontinuierliche Abnahme des freien Speicherplatzes stark darauf hindeutet, dass Ihre Festplatte möglicherweise physisch komplett ausfällt . In diesem Fall verlieren Sie alle darauf gespeicherten Daten und können mit ziemlicher Sicherheit keine Daten wiederherstellen. Sie können auch über ein Netzwerk auf einen anderen Computer oder auf eine CD / DVD sichern.
Eliah Kagan
0

Dieses Problem wurde gelöst, es war die Firewall, die Unmengen von Protokollen und tvmobili-Codierungsdateien schrieb

askcompu
quelle