disk space check in linux

disk space check in linux

Jeder Admin kennt den Moment der Panik. Plötzlich quittiert die Datenbank den Dienst. Webseiten laden nicht mehr. In den Logs stapeln sich kryptische Fehlermeldungen über fehlende Schreibrechte. Meistens liegt es an einer banalen Sache: Die Festplatte ist randvoll. Ein regelmäßiger Disk Space Check In Linux verhindert solche Katastrophen, bevor sie entstehen. Wer nur blind Befehle abtippt, ohne zu verstehen, was im Dateisystem eigentlich passiert, wird früher oder später gegen eine Wand laufen. Es geht nicht nur darum zu sehen, dass 95 Prozent belegt sind. Man muss wissen, ob Inodes fehlen, versteckte Log-Dateien den Platz fressen oder gelöschte Dateien im Hintergrund noch Speicher blockieren.

Grundlagen der Speicherverwaltung verstehen

In der Linux-Welt ist alles eine Datei. Das klingt simpel, hat aber tiefgreifende Konsequenzen für die Art, wie wir den Platz messen. Wenn wir über Speicherplatz reden, meinen wir meistens die Blöcke auf der physischen oder virtuellen Festplatte. Es gibt aber noch eine zweite Ebene: die Inodes. Jede Datei benötigt einen Inode. Wenn du Millionen winziger Dateien hast, kann dein Speicherplatz technisch gesehen noch halb leer sein, aber du kannst trotzdem nichts mehr speichern, weil keine Inodes mehr frei sind. Das passiert oft auf Mailservern oder bei schlecht konfigurierten Cache-Verzeichnissen.

Ein weiteres Phänomen sind "deleted open files". Du löschst eine riesige Log-Datei mit dem rm-Befehl, aber der Speicherplatz wird einfach nicht frei. Warum? Weil ein Prozess die Datei noch offen hält. Das Betriebssystem gibt den Platz erst frei, wenn der Prozess beendet wird oder die Datei schließt. Solche Nuancen machen den Unterschied zwischen einem Anfänger und einem Profi aus. Wer nur auf die Prozentanzeige schaut, übersieht diese Details.

Dateisysteme und Mountpoints

In Linux sind Festplatten in das Verzeichnisbaum-System eingehängt. Das unterscheidet sich fundamental von Windows mit seinen Laufwerksbuchstaben. Ein Verzeichnis wie /var kann auf einer völlig anderen physischen Partition liegen als /home. Wenn also /var/log überläuft, betrifft das nicht zwangsläufig deine Nutzerdaten in /home. Das ist ein Sicherheitsmerkmal. Es verhindert, dass ein Amok laufender Dienst das gesamte System lahmlegt. Man muss also gezielt prüfen, welcher Einhängepunkt gerade Probleme macht.

Disk Space Check In Linux mit Bordmitteln

Der Klassiker für jeden Techniker ist das Programm df. Es steht für "disk free". Ich nutze es fast täglich. Die Standardausgabe ist allerdings oft unübersichtlich, weil sie die Werte in 1K-Blöcken anzeigt. Niemand kann im Kopf schnell ausrechnen, wie viele Gigabyte 45678923 Blöcke sind. Deshalb ist der Parameter -h Pflicht. Er steht für "human-readable". Damit siehst du sofort MB, GB oder TB.

Ein typischer Aufruf sieht so aus: df -h. Das zeigt dir alle eingehängten Dateisysteme. Mich interessieren dabei meistens nur die echten Festplatten. Die ganzen temporären Dateisysteme wie tmpfs oder udev verstellen oft den Blick auf das Wesentliche. Hier hilft df -h -x tmpfs -x devtmpfs. Das filtert den Lärm heraus. Du siehst sofort die Wurzelpartition / und alle anderen wichtigen Datenplatten. Achte besonders auf die Spalte "Benutzung %". Wenn diese über 90 Prozent klettert, solltest du handeln. Viele Dateisysteme wie EXT4 reservieren standardmäßig 5 Prozent für den Root-Nutzer. Das ist ein Puffer, damit das System noch booten kann, selbst wenn die Platte für normale User voll ist.

Das Problem mit den Inodes lösen

Wie vorhin erwähnt, können volle Inodes dein System stoppen. Um das zu prüfen, nutzt du df -i. Das zeigt dir die Anzahl der benutzten und freien Inodes an. Ich habe schon Systeme gesehen, auf denen nur 10 Prozent des Speichers belegt waren, aber 100 Prozent der Inodes. In so einem Fall hilft kein Löschen großer Videodateien. Du musst die Millionen kleinen Dateien finden und entfernen. Oft sind das alte Session-Dateien von PHP oder unzählige kleine E-Mails in einer Queue.

Den Speicherfressern mit du auf der Spur

Wenn df dir sagt, dass die Platte voll ist, verrät es dir nicht, wo genau der Müll liegt. Hier kommt du ins Spiel. Es steht für "disk usage". Dieses Werkzeug ist mächtig, aber langsam. Es muss jede einzelne Datei im Verzeichnisbaum scannen. Ein Befehl wie du -sh /var gibt dir die Gesamtgröße des Verzeichnisses /var aus. Das hilft aber nur bedingt weiter, wenn du tiefer graben willst.

Ich verwende meistens eine Kombination aus Befehlen, um die größten Ordner zu finden. Ein Beispiel: du -ah /var | sort -rh | head -n 20. Dieser Befehl listet alle Dateien und Ordner in /var auf, sortiert sie nach Größe absteigend und zeigt die obersten 20 Ergebnisse. Das ist extrem effektiv. Oft stellt sich heraus, dass eine einzige Log-Datei wie syslog oder kern.log mehrere Gigabyte groß geworden ist, weil ein Hardware-Defekt sekündlich Fehlermeldungen produziert.

Versteckte Platzverschwender finden

Manchmal zeigt du weniger an, als df behauptet. Das ist der Moment, in dem die "gelöschten, aber offenen Dateien" ins Spiel kommen. Mit dem Befehl lsof +L1 findest du Dateien, die gelöscht wurden, aber noch von einem Prozess beansprucht werden. Das passiert häufig bei Datenbanken oder Webservern. Ein Neustart des betroffenen Dienstes gibt den Platz sofort frei. Wenn das nicht hilft, schau in /tmp. Manche Programme legen dort temporäre Dateien an, die nach einem Absturz nicht bereinigt wurden.

Moderne Alternativen für die Konsole

Obwohl die Standardwerkzeuge super sind, gibt es modernere Tools, die das Leben leichter machen. Eines meiner Favoriten ist ncdu. Es ist eine interaktive Version von du auf Basis von Ncurses. Du installierst es auf Debian-basierten Systemen einfach mit sudo apt install ncdu. Nach dem Start scannt es das Verzeichnis und bietet dir eine Oberfläche, in der du mit den Pfeiltasten durch die Ordner navigieren kannst. Du siehst sofort per Balkendiagramm, welcher Ordner den meisten Platz verbraucht. Mit der Taste d kannst du Dateien sogar direkt aus der Oberfläche löschen. Das spart enorm viel Zeit im Vergleich zum manuellen Tippen von Pfaden.

Grafische Analyse auf dem Desktop

Wer eine grafische Oberfläche nutzt, hat es noch bequemer. Programme wie Baobab (Disk Usage Analyzer) unter GNOME oder Filelight unter KDE visualisieren den Speicherverbrauch in Form von Ringen oder Tortendiagrammen. Das ist toll, um einen schnellen Überblick zu bekommen. Auf Servern ohne Monitor helfen diese Tools natürlich nicht weiter. Dort bleibt das Terminal das Werkzeug der Wahl. Die offizielle Dokumentation von Ubuntu bietet hierzu exzellente weiterführende Erklärungen für Einsteiger.

Automatisierung und Monitoring

Manuell zu prüfen ist auf Dauer mühsam. Ein professioneller Admin richtet ein Monitoring ein. Tools wie Nagios, Zabbix oder das moderne Prometheus überwachen den Plattenplatz rund um die Uhr. Sie senden eine Warnung per E-Mail oder Slack, wenn die Belegung einen Schwellenwert überschreitet. Das ist der Goldstandard.

Wenn du kein komplettes Monitoring-System aufsetzen willst, reicht oft ein einfaches Shell-Skript. Dieses kann per Cronjob einmal täglich laufen. Wenn der Speicherplatz über 80 Prozent liegt, schickt das Skript eine Mail. Das ist eine simple Versicherung gegen böse Überraschungen. Ein solches Skript nutzt im Kern wieder den df-Befehl und filtert die Ausgabe mit grep und awk.

💡 Das könnte Sie interessieren: stiftung warentest handys bis 300 euro

Quotas als Rettungsanker

In Umgebungen mit vielen Nutzern, etwa auf einem Shared-Hosting-Server oder in einer Uni, sind Disk Quotas sinnvoll. Damit legst du fest, wie viel Platz jeder einzelne Nutzer maximal verbrauchen darf. Überschreitet ein Nutzer sein Limit, bekommt nur er eine Fehlermeldung, während das restliche System stabil weiterläuft. Das verhindert, dass ein einzelner User durch ein missglücktes Backup-Skript den gesamten Server für alle anderen lahmlegt. Informationen zum Einrichten von Quotas findest du oft direkt in den Manuals der Distributionen wie bei Debian.

Praktische Strategien zum Aufräumen

Wenn der Disk Space Check In Linux ergeben hat, dass die Platte voll ist, musst du handeln. Der erste Griff geht meist zum Paketmanager. Unter Ubuntu oder Debian bewirkt sudo apt-get clean oft Wunder. Es löscht die heruntergeladenen Archiv-Dateien der installierten Programme. Diese werden nach der Installation nicht mehr benötigt, bleiben aber standardmäßig im Cache liegen. Auch sudo apt-get autoremove ist hilfreich, um nicht mehr benötigte Abhängigkeiten und alte Kernel-Versionen zu entfernen. Gerade alte Kernel können in der kleinen Boot-Partition /boot schnell für Platznot sorgen.

Log-Rotation richtig konfigurieren

Log-Dateien sind Segen und Fluch zugleich. Ohne sie findest du keine Fehler, mit ihnen ist die Platte schnell voll. Das Werkzeug logrotate übernimmt die Verwaltung. Es sorgt dafür, dass alte Logs komprimiert und nach einer gewissen Zeit gelöscht werden. Wenn dein /var/log ständig überläuft, schau in die Konfiguration unter /etc/logrotate.conf oder in die spezifischen Dateien in /etc/logrotate.d/. Vielleicht werden die Logs zu lange aufbewahrt oder nicht aggressiv genug komprimiert. Eine Umstellung auf xz-Kompression statt gzip kann bei Textdateien enorm viel Platz sparen.

Den Journald-Speicher begrenzen

Moderne Linux-Systeme nutzen systemd-journald. Dieses System schreibt Logs in binärer Form. Wenn du es nicht einschränkst, kann es sich über die Zeit mehrere Gigabyte genehmigen. Mit journalctl --disk-usage prüfst du den aktuellen Verbrauch. Um den Platz zu begrenzen, kannst du in der Datei /etc/systemd/journald.conf den Parameter SystemMaxUse=500M setzen. Danach reicht ein systemctl restart systemd-journald, um die Änderungen zu übernehmen. Das System löscht dann automatisch die ältesten Einträge, sobald das Limit erreicht wird.

Strategische Planung für die Zukunft

Wer ständig am Limit operiert, hat falsch geplant. Ein gut dimensionierter Server sollte immer Reserven haben. Wenn dein Datenaufkommen stetig wächst, ist es sinnvoll, über Logical Volume Management (LVM) nachzudenken. LVM erlaubt es dir, Partitionen im laufenden Betrieb zu vergrößern. Du fügst einfach eine neue physische Festplatte hinzu, erweiterst die Volume Group und vergrößerst danach das logische Volume und das Dateisystem. Das ist deutlich flexibler als klassische Partitionstabellen.

Früher war es üblich, für jedes Verzeichnis eigene Partitionen anzulegen. Heute ist man davon oft abgekommen, außer bei speziellen Anforderungen. Eine separate Partition für /home ist jedoch nach wie vor sinnvoll. So kannst du das Betriebssystem neu installieren, ohne deine persönlichen Daten anzufassen. Auch für Docker-Container oder Datenbanken empfiehlt es sich, eigene Mountpoints auf schnellen SSDs zu verwenden, während Backups auf günstigen, langsamen HDDs landen.

Typische Fehler vermeiden

Ein Fehler, den ich oft sehe: Leute löschen Dateien, die noch in Benutzung sind. Das Problem haben wir besprochen. Ein anderer Fehler ist das blinde Löschen von Inhalten in /tmp. Manche Anwendungen legen dort Sockets oder Lock-Files ab, die für den Betrieb zwingend notwendig sind. Löschst du diese während des Betriebs, kann die Anwendung abstürzen oder Daten korrumpieren. Sicherer ist es, das System neu zu starten oder nur Dateien zu entfernen, die nachweislich seit Tagen nicht mehr angefasst wurden.

Ein weiterer Klassiker ist das Ignorieren von versteckten Dateien (Dotfiles). Ein du -sh * in deinem Home-Verzeichnis zeigt dir nur die sichtbaren Ordner. Versteckte Ordner wie .cache oder .local können jedoch riesig sein. Nutze lieber du -sh .[^.]* *, um wirklich alles zu erfassen. Besonders Browser-Caches oder Thumbnails von Bildbetrachtern blähen das Home-Verzeichnis oft unbemerkt auf.

Die Rolle von Docker und Containern

In der Ära von Docker ist Speicherplatz-Management noch komplexer geworden. Docker-Images, Volumes und ungenutzte Container fressen massiv Platz. Ein einfacher Befehl wie docker system prune kann oft viele Gigabyte freigeben. Er löscht gestoppte Container, ungenutzte Netzwerke und "dangling" Images. Wer viel mit Containern arbeitet, sollte diesen Befehl regelmäßig ausführen. Auch die Logs der Container können unter /var/lib/docker/containers/ unbemerkt wachsen, wenn kein Logging-Treiber mit Limit konfiguriert wurde.

Echte Praxiserfahrung zählt

Ich erinnere mich an einen Vorfall, bei dem ein Server alle zehn Minuten komplett einfror. Die CPU-Last war niedrig, der RAM war leer. Erst ein Blick auf die Inodes zeigte: Ein fehlerhaftes Skript erstellte pro Sekunde hunderte leere Dateien in einem Session-Ordner. Die Festplatte war physisch fast leer, aber das System konnte keinen einzigen Schreibvorgang mehr ausführen. Seit diesem Tag prüfe ich bei jedem Problem sofort beide Werte: Speicherplatz und Inodes. Es ist diese Art von Erfahrung, die dich davor bewahrt, stundenlang an der falschen Stelle zu suchen.

Man sollte auch den Einfluss von Snapshots nicht unterschätzen. Wenn du Dateisysteme wie BTRFS oder ZFS nutzt, belegt ein Snapshot zwar initial keinen Platz, aber jede Änderung an den Originaldaten sorgt dafür, dass der Snapshot den alten Stand beibehält. Wenn du also viele Daten änderst und alte Snapshots nicht löschst, füllt sich deine Platte rasend schnell, ohne dass du im aktuellen Dateisystem große Dateien finden kannst. Hier helfen die spezifischen Befehle der jeweiligen Dateisysteme weiter, um den realen Verbrauch inklusive Snapshots zu ermitteln.

Nächste Schritte für dein System

  1. Führe sofort ein df -h aus, um den aktuellen Status deiner Partitionen zu sehen. Achte besonders auf die Root-Partition /.
  2. Überprüfe mit df -i, ob dein System noch genügend Inodes zur Verfügung hat, besonders wenn viele kleine Dateien verarbeitet werden.
  3. Installiere ncdu über deinen Paketmanager, um bei Bedarf schnell und interaktiv die größten Speicherfresser in Verzeichnissen wie /var oder /home zu identifizieren.
  4. Kontrolliere die Einstellungen deiner Log-Rotation in /etc/logrotate.d/, um sicherzustellen, dass alte Protokolle zuverlässig gelöscht oder komprimiert werden.
  5. Setze ein Limit für das Systemd-Journal in der Datei /etc/systemd/journald.conf, falls dieses zu viel Platz beansprucht.
  6. Wenn du Docker nutzt, räume mit docker system prune regelmäßig ungenutzte Ressourcen auf, um die Belegung der Docker-Partition gering zu halten.
MN

Markus Neumann

Mit Erfahrung in Newsrooms und Content-Teams erstellt Markus Neumann verständliche, gut recherchierte Beiträge.