snippets · bash

No space left on device – aber df -h zeigt noch freien Platz

Ein Prozess meldet No space left on device, aber df -h zeigt noch Gigabytes frei. Dann ist Speicherplatz nur eine von mehreren möglichen Erklärungen.

Zwei verschiedene Ressourcen

df -hT
df -ih

df -hT zeigt belegte Datenblöcke. df -ih zeigt die Inodes – vereinfacht gesagt die Anzahl möglicher Dateisystemeinträge.

Ein System mit Millionen kleiner Cache-, Session- oder Temp-Dateien kann freie Gigabytes haben und trotzdem keine neuen Dateien mehr anlegen, weil die Inodes aufgebraucht sind.

Wenn die Inodes voll sind

Nicht sofort wild löschen. Finde erst die Verzeichnisse mit sehr vielen Einträgen:

for d in /*; do
  [ -d "$d" ] || continue
  printf '%10s %s\n' "$(find "$d" -xdev 2>/dev/null | wc -l)" "$d"
done | sort -nr | head

Das ist nur eine grobe Orientierung und kann auf großen Systemen dauern. Danach enger in den auffälligen Pfad gehen.

Wenn weder Platz noch Inodes voll sind

Dann kann die Fehlermeldung aus einer anderen Grenze kommen: Quota, read-only Dateisystem, temporärer Mount oder ein anderer Filesystem-Pfad als der, den du gerade mit df geprüft hast.

Die wichtige Frage lautet also nicht „Wie lösche ich schnell Dateien?“, sondern welche Ressource ist tatsächlich erschöpft?