Durch Ansammlung von Logs und temporärem Dateimüll kann es vorkommen, daß sich die Rootpartition zusehends anfüllt. Ist der Speicherplatz erschöpft, so kann das System beispielsweise keine Updates mehr installieren und in einigen Fällen ist dies das erste wahrnehmbare Anzeichen dafür, daß etwas aus dem Ruder gelaufen ist.
Eine vollständig gefüllte Root-Partition tritt überwiegend bei Systemen auf, wenn System und Benutzerdaten auf unterschiedlichen Partitionen liegen. Ist dies nicht der Fall, weil alle Daten ohne Unterschied auf ein und derselben Partition gespeichert werden, so wird es bis zur vollständigen Erschöpfung des Speichers länger dauern. Auslöser sind einige Prozesse, die im Laufe der Zeit zunehmend mehr Logdateien anlegen und nicht automatisch nach einem angemessenen Zeitraum wieder entfernen.
Ein übliches Problem sind Systemlogs die in Systemen mit Systemd angelegt werden.
Ist der Speicherplatz unserer Root-Partition vollgelaufen, so lohnt es sich als erstes dessen Logs nachzusehen.
journalctl --disk-usage
Der Speicherverbrauch für Systemd umfasst nach einiger Gebrauchszeit leicht mehrere Dutzend GB. Haben wir die empfohlenen 30-50 GB für unsere Systempartition reserviert, so wird schnell klar warum dies zu einem Problem wird. Wir weisen also Systemd an nur die aktuellsten Logs bis zu einer maximalen Größe aufzubewahren.
sudo journalctl --vacuum-size=500M
In diesem Fall verbleiben also nur noch 500MB für Logs und der Rest wird freigegeben. Anschließend wollen wir den Prozess automatisieren und den verfügbaren Speicherplatz für Systemd Logs begrenzen.
sudo nano /etc/systemd/journald.conf
In der Konfigurationsdatei wird die folgende Zeile unkommentiert (d.h. vorangestelltes ‚#‘ entfernen) und ergänzt um nur die aktuellsten 500MB zu erhalten.
SystemMaxUse=500M
Der Wert 500M kann nach eigenem Geschmack frei gewählt werden.
Andere Verbraucher identifizieren
Neben Systemd kann es natürlich andere Dienste geben, die ähnlich verschwenderisch mit Speicherplatz umgehen. Ein erster Schritt diese aufzufinden ist eine Analyse der Dateiverzeichnisse mit dem Größten Speicherverbrauch.
sudo du -hsx /* | sort -rh | head -n 40
Angenommen ein Verzeichnis mit sehr hohem Speicherverbrauch ist /var/log, wo sämtliche Prozesse ihre Logs ablegen sollen (aber nicht immer tun). Dann können wir dieses Verzeichnis etwas genauer anschauen.
du -ha /Pfad/zum/Verzeichnis | sort -n -r | head -n 30
Auf diese Weise können wir die größten Verbraucher identifizieren und entsprechende Maßnahmen einleiten.
Dankeschön!
Hallo,
die Reduzierung von Systemd auf 500M hat mich in letzter Not gerettet, da mein System sich nicht mehr hat booten lassen.
Das war der beste Tipp ever!
Vielen Dank dafür.
Detlef