linux-ubuntu-debian storage monitoring quotas du ncdu

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, du und ncdu in 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 ncdu für manuelle Suchen.
  • Automation: Überwachen Sie Disks via Zabbix/Prometheus.
  • Disziplin: Trennen Sie Daten und Betriebssystem (Separate Mountpoints oder LVs). Ein voller /var Mountpoint 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).