Disk Quotas & Space Monitoring: du, ncdu & quota (Artikel 024)
Werkzeuge zur Analyse des Speicherplatzverbrauchs und Implementierung von Quotas zur Begrenzung der Nutzerkapazitäten. Praxis-Tipps für volle Dateisysteme.
# Disk Management: Speicherplatz überwachen und begrenzen
TL;DR / Management Summary Ein volles Dateisystem ist der Tod für fast jeden Dienst. Ein Senior Admin muss nicht nur wissen, wie man den Platzbedarf mit Tools wie
df,duundncduin Sekunden analysiert, sondern auch, wie man proaktiv verhindert, dass einzelne Benutzer oder Dienste den gesamten Server lahmlegen. Lösung: Disk Quotas.
# 1. Einführung & Konzepte
Platzmangel verstehen.
Speicherplatzprobleme treten meist schleichend auf (Logs) oder plötzlich (Daten-Imports).
# Die Analyse-Werkzeuge
- df: Schnelle Übersicht der Mountpoints.
- du: Detailanalyse von Verzeichnissen.
- ncdu: Interaktive CLI-GUI (Der Admin-Favorit).
- quota: Erzwingt Limits auf Kernel-Ebene.
graph LR
A[Root Partition /] --> B{Check Usage}
B -->|Overview| C[df -h]
B -->|Deep Dive| D[du -sh *]
B -->|Visual| E[ncdu]
B -->|Proactive| F[Kernel Quotas]
# 2. Analyse in der Praxis
Wo sind meine Terabytes hin?
# Der Klassiker: du
# Top 10 größte Ordner im aktuellen Verzeichnis
du -ah | sort -rh | head -n 10
# Der Profi-Weg: ncdu
sudo apt install ncdu
ncdu /
ncdu erlaubt das Navigieren mit den Pfeiltasten und das direkte Löschen von Dateien.
# 3. Implementierung von Quotas
Spielregeln für Nutzer setzen.
Quotas funktionieren pro Dateisystem. Wir unterscheiden zwischen Soft Limit (Warnung) und Hard Limit (Stopp).
# Schritt 1: Quota-Support aktivieren
In /etc/fstab die Optionen usrquota,grpquota hinzufügen:
UUID=xxxx / ext4 defaults,usrquota,grpquota 0 1
Danach remounten: mount -o remount /.
# Schritt 2: Quota-Datenbank initialisieren
sudo quotacheck -cum /
sudo quotaon -v /
# Schritt 3: Limit für User setzen
sudo edquota -u johndoe
Es öffnet sich ein Editor. Setzen Sie die Werte für soft und hard (Einheit: 1KB Blöcke).
# 4. Day-2 Operations: Monitoring
Platzmangel vorhersehen.
# Alerting via Shell-Script (Einfach)
#!/bin/bash
CURRENT=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
THRESHOLD=90
if [ "$CURRENT" -gt "$THRESHOLD" ]; then
echo "Disk Space Critical: ${CURRENT}% used on /" | mail -s "DISK ALERT" admin@company.com
fi
# Inodes nicht vergessen!
Manchmal ist Platz frei (df -h), aber man kann keine Dateien erstellen.
df -i
Wenn die Inodes bei 100% sind, gibt es zu viele kleine Dateien (oft Sessions oder E-Mails).
# 5. Troubleshooting & “War Stories”
Wenn die Disk voll ist.
# Story 1: “Die Geisterdateien”
Symptom: df sagt 100% voll, aber du findet keine großen Dateien.
Ursache: Ein Prozess (z.B. Nginx) hat eine große Logdatei geöffnet, die bereits gelöscht wurde (rm). Linux gibt den Platz erst frei, wenn der Prozess beendet wird.
Lösung: lsof +L1 findet diese “deleted but open” Dateien. Dienst restarten -> Platz frei.
# Story 2: “Docker log flooding”
Symptom: /var/lib/docker frisst die gesamte Disk.
Ursache: Container schreiben massiv auf stdout, Docker speichert dies in JSON-Files ohne Rotation.
Lösung: Log-Rotation in /etc/docker/daemon.json konfigurieren (max-size, max-file).
# 6. Fazit & Empfehlung
- Standard: Nutzen Sie
ncdufür manuelle Suchen. - Automation: Überwachen Sie Disks via Zabbix/Prometheus.
- Disziplin: Trennen Sie Daten und Betriebssystem (Separate Mountpoints oder LVs). Ein voller
/varMountpoint darf niemals den/(Root) Bootvorgang verhindern.
# Anhang: Cheatsheet
| Befehl | Wirkung |
|---|---|
df -hT |
Zeigt Platz und Dateisystem-Typ. |
lsblk |
Zeigt Block-Device Struktur (Topologie). |
repquota -a |
Zeigt Quota-Status aller User an. |
find / -size +100M |
Findet alle Dateien größer als 100MB. |
ncdu -x / |
Scannt nur das lokale Dateisystem (keine Mounts). |