linux-rhel-centos-fedora storage xfs quotas monitoring rhel

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

  1. User Quotas: Limitiert den Speicher pro UID.
  2. Group Quotas: Limitiert den Speicher pro GID.
  3. 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 der fstab, auch wenn Sie noch keine Limits setzen. Ein späteres Hinzufügen erfordert einen Remount/Reboot.
  • Automation: Nutzen Sie Ansible, um /etc/projects und /etc/projid synchron 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'