XFS Quotas & Monitoring on RHEL (Artikel 090)
Verwaltung von Speicherplatz-Limits unter RHEL mit XFS Quotas. Einführung in User-, Group- und Project-Quotas zur präzisen Steuerung von Ressourcen.
# XFS Quotas: Speicherplatz-Governance auf RHEL-Systemen
TL;DR / Management Summary In Enterprise-Systemen (RHEL/Rocky) nutzen wir fast ausschließlich das XFS-Dateisystem. Ein entscheidender Vorteil von XFS: Es hat ein integriertes Quota-System, das ohne zusätzliche Metadaten-Files (wie bei Ext4) auskommt. Ein Senior Admin nutzt hierbei nicht nur User-Quotas, sondern vor allem Project Quotas, um ganze Verzeichnisbäume (z.B.
/var/www/customer1) hart zu limitieren, unabhängig davon, welcher User die Dateien schreibt.
# 1. Einführung & Architektur
Warum XFS Quotas anders sind.
XFS speichert Quota-Informationen direkt in den Inodes des Dateisystems. Das macht die Durchsetzung extrem performant.
# Die drei Quota-Arten
- User Quotas: Limitiert den Speicher pro UID.
- Group Quotas: Limitiert den Speicher pro GID.
- Project Quotas (Exklusiv!): Limitiert einen Verzeichnisbaum. (Kann nicht gleichzeitig mit Group Quotas auf dem gleichen Mountpoint genutzt werden).
graph TD
A[XFS Mount Point] --> B{Quota Type}
B -->|User| C[Limits for 'johndoe']
B -->|Project| D[Limits for '/data/app1']
D --> E[Hard Limit: 10GB]
D --> F[Soft Limit: 8GB + Grace Period]
# 2. Aktivierung
Voraussetzung für das Limitieren.
Quotas müssen bereits beim Mount-Vorgang aktiviert werden. Eine Aktivierung zur Laufzeit (wie bei Ext4) ist in XFS nicht möglich.
# Schritt 1: fstab anpassen
Datei: /etc/fstab
# Für User- und Project-Quotas
UUID=xxx /data xfs defaults,uquota,pquota 0 0
# Schritt 2: Reboot oder Remount
sudo mount -o remount /data
# 3. Management mit xfs_quota
Die Administration.
xfs_quota ist das zentrale Werkzeug. Es besitzt eine interaktive Shell oder kann direkt mit Parametern genutzt werden.
# User-Quota setzen
sudo xfs_quota -x -c 'limit bsoft=800M bhard=1G johndoe' /data
# Project-Quota einrichten (Das Profi-Feature)
Ideal für Web-Hosting oder Shared App-Folder.
# 1. Projekt-ID definieren (/etc/projects)
echo "101:/data/projects/alpha" >> /etc/projects
# 2. Projekt-Name definieren (/etc/projid)
echo "project_alpha:101" >> /etc/projid
# 3. Verzeichnis dem Projekt zuordnen
sudo xfs_quota -x -c 'project -s project_alpha' /data
# 4. Limit setzen
sudo xfs_quota -x -c 'limit -p bhard=5G project_alpha' /data
# 4. Day-2 Operations: Monitoring
Wer sprengt das Limit?
# Report generieren
sudo xfs_quota -x -c 'report -h' /data
Das Flag -h steht für “human-readable” (MB/GB).
# Warnungen (Grace Period)
Wenn ein User das Soft Limit überschreitet, hat er Zeit (Standard 7 Tage), Daten zu löschen, bevor er blockiert wird.
# Zeitspanne ändern
sudo xfs_quota -x -c 'timer -u -d 14days' /data
# 5. Troubleshooting & “War Stories”
Wenn die Disk voll ist, obwohl noch Platz da ist.
# Story 1: “Der hängende Dienst”
Symptom: Ein MySQL-Export bricht mit “No space left on device” ab. df -h zeigt aber 200GB freien Platz.
Ursache: Der User (mysql) hat sein Quota erreicht.
Lösung: xfs_quota -x -c 'report' /var/lib/mysql prüfen. Limit erhöhen oder Daten löschen.
# Story 2: “Project Quota vs. Group Quota”
Symptom: Der Admin versucht Project Quotas zu aktivieren, bekommt aber Mount-Fehler.
Ursache: Das Dateisystem ist bereits mit gquota (Group Quotas) gemountet. XFS erlaubt nur entweder Group oder Project Quotas zur gleichen Zeit.
Lösung: Entscheiden Sie sich. Im Enterprise ist pquota meist wertvoller.
# 6. Fazit & Empfehlung
- Planung: Aktivieren Sie Quotas (
uquota,pquota) von Anfang an in derfstab, auch wenn Sie noch keine Limits setzen. Ein späteres Hinzufügen erfordert einen Remount/Reboot. - Automation: Nutzen Sie Ansible, um
/etc/projectsund/etc/projidsynchron zu halten. - Transparenz: Geben Sie Usern die Möglichkeit, ihr Quota selbst zu prüfen (
quota -s).
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Übersicht aller Limits | xfs_quota -x -c 'report' |
| Einzelnen User prüfen | quota -u <user> |
| Project-Limit setzen | xfs_quota -x -c 'limit -p bhard=10G <name>' <mp> |
| Alles löschen | xfs_quota -x -c 'disable' <mp> |
| State prüfen | xfs_quota -x -c 'state' |