Getty Images

Speicherplatz von Benutzern mit Linux-Quotas kontrollieren

Linux-Speicherquoten effizient konfigurieren: Eine Schritt-für-Schritt-Anleitung für Administratoren zur ressourcenschonenden Implementierung ohne Beeinträchtigung der Nutzer.

Benutzer betrachten Speicher oft als günstig und nahezu unbegrenzt – selbst einige Administratoren denken so. Zwar steigen die Kapazitäten von Festplatten weiter und die Kosten pro Gigabyte sinken in der Regel, dennoch ist es wichtig, Speicherplatz sorgfältig zu verwalten – beispielsweise über Linux-Quotas.

Die Effizienz der Speicherverwaltung wirkt sich nicht nur auf die Kosten für zusätzliche Festplatten oder Cloud-Ressourcen aus. Sie beeinflusst auch:

Es ist entscheidend, dass auf Systemlaufwerken immer etwas Speicher für das Betriebssystem frei bleibt, zum Beispiel für temporäre Dateien, Logging, Updates und Fragmentierung.

Glücklicherweise können Linux-Administratoren Speicherquoten einsetzen, um die Nutzung durch Benutzer zu steuern.

Was sind Linux-Quotas für Storage?

Quotas sind eine Funktion des Dateisystems, nicht des Betriebssystems selbst. Dateisysteme wie ext4, XFS und Btrfs unterstützen Quotas. Auch ZFS bietet Quotas, ist aber nicht Teil des Mainline-Linux-Kernels. Manche Features, beispielsweise bei ext4, benötigen allerdings Kernel-Support und Tools aus den Quota-Paketen. Dies gilt es vor der Konfiguration der Quotas abzuklären.

Es gibt zwei Arten der Konfiguration:

Soft Quotas: Diese sammeln Informationen über die Speicherbelegung, verhindern jedoch nicht das Speichern von Dateien, wenn das Limit überschritten wird. Sie eignen sich, um die Nutzung durch Benutzer zu analysieren.

Hard Quotas: Diese verhindern das Speichern von Dateien, sobald das Limit erreicht ist.

Empfohlen wird, zunächst Soft Quotas zu verwenden. So können Administratoren über einige Monate Daten sammeln und anschließend mit den Benutzern Speicherregeln kommunizieren, bevor Hard Quotas implementiert werden.

Die typische Vorgehensweise sieht wie folgt aus:

  1. Soft Quotas aktivieren und Nutzung über Zeit beobachten
  2. Speicherregeln festlegen und Benutzer informieren
  3. Hard Quotas einführen, nachdem Benutzer ihre Verzeichnisse bereinigt haben
  4. Quotas regelmäßig prüfen und anpassen

Linux setzt Quotas pro Dateisystem um. Sowohl Benutzer- als auch Gruppenquoten können für jedes Quota-fähige Dateisystem gesteuert werden. Gruppenzahlen entsprechen der Gesamtsumme aller Speicherplätze der Gruppenmitglieder.

Implementierung von Linux-Quotas

Es werden drei Komponenten benötigt, um die Konfiguration zu starten:

  • Ein Quota-fähiges Dateisystem
  • Benutzer, die Quotas unterliegen
  • Gruppen, die Quotas unterliegen

Planung

Quotas gelten für das gesamte Dateisystem. Eine 10-GByte-Quota für das Home-Verzeichnis eines Benutzers wirkt sich auch auf andere Verzeichnisse dieses Dateisystems aus. Deshalb sollten Speicherbereiche, die Quotas benötigen, als separate Dateisysteme angelegt werden. Die beiden häufigsten Kandidaten sind /home und /var/log.

  • /home: Standardverzeichnis für Benutzerdateien (Dokumente, Bilder, Musik)
  • /var/log: Verzeichnis für System- und Anwendungs-Logs. Oft auf separatem Dateisystem, damit große Logs nicht den Root-Bereich füllen.

Administratoren zentralisieren jedoch häufig die Home-Verzeichnisse der Benutzer auf einem einzigen Server. Sie können beispielsweise die Home-Verzeichnisse der 20 Mitglieder des Entwicklerteams auf einen einzigen Server abbilden, um das Backup und den Schutz ihrer Dateien zu vereinfachen.

Administratoren können auch die Weiterleitung von rsyslog-Protokolldateien konfigurieren, um alle Protokolldateien auf einem einzigen Server zu konsolidieren und so die Fehlerbehebung, die Analyse von Protokolldateien und die Archivierung zu vereinfachen. Angenommen, Sie sind für 20 Linux-Server verantwortlich. Stellen Sie sich vor, wie viel effizienter es wäre, alle Log-Dateien an einen einzigen zentralen Speicherort zu übertragen. Sie müssen jedoch auch sicherstellen, dass die Log-Dateien nicht zu viel Speicherplatz beanspruchen.

Ihr Server hostet möglicherweise auch andere zugeordnete Verzeichnisse, in denen abteilungs- oder projektspezifische Daten gespeichert sind. Wenn Sie diese in einem separaten Dateisystem ablegen, können Sie ihre Kapazität mit Kontingenten verwalten.

Schritte zur Einrichtung von Quotas

Sobald Sie die für Ihre Anforderungen optimale Dateisystemstruktur ermittelt haben, implementieren Sie Quoten anhand der folgenden Schritte:

  1. Aktivieren Sie Quoten für das Ziel-Dateisystem, indem Sie die Optionen zu den Mount-Punkten in der Datei /etc/fstab hinzufügen. Fügen Sie usrquota für Benutzer, grpquota für Gruppen oder beides hinzu.
Abbildung 1: Fügen Sie die Mount-Optionen zur Datei /etc/fstab hinzu, um Quotas zu aktivieren.
Abbildung 1: Fügen Sie die Mount-Optionen zur Datei /etc/fstab hinzu, um Quotas zu aktivieren.
  1. Hängen Sie das Dateisystem erneut ein, um die Quotenverwaltung zu integrieren: sudo mount -o remount /home. Beachten Sie, dass in vielen Fällen stattdessen ein vollständiger Neustart empfohlen wird.
Abbildung 2: Aktivieren Sie die Quotas.
Abbildung 2: Aktivieren Sie die Quotas.
  1. Initialisieren Sie die Quotendatenbank: sudo quotacheck -ugm /home, wobei u der Zielbenutzer, g die Zielgruppe und m eine Option ist, um ein erneutes Einhängen des Dateisystems als schreibgeschützt zu vermeiden. Dieser Befehl generiert die Dateien aquota.user und aquota.group im Stammverzeichnis des Dateisystems. Dieser Schritt ist bei einigen modernen Dateisystemen möglicherweise nicht erforderlich.
Abbildung 3: Hier werden die Einstellungen der Benutzer-Quotas angezeigt.
Abbildung 3: Hier werden die Einstellungen der Benutzer-Quotas angezeigt.
  1. Aktivieren Sie die Quoten für das gewünschte Dateisystem: sudo quotaon -v /projects.
Abbildung 4: Konfigurieren Sie die Einstellungen für Benutzer-Quotas. Beachten Sie, dass die Grenzen in Blöcken festgelegt werden.
Abbildung 4: Konfigurieren Sie die Einstellungen für Benutzer-Quotas. Beachten Sie, dass die Grenzen in Blöcken festgelegt werden.
  1. Konfigurieren Sie eine Quote für den Benutzer user1: sudo edquota -u user1.
  2. Konfigurieren Sie eine Quote für die Gruppe devteam: sudo edquota -g devteam.

Standardmäßig legen Sie Quota-Limits in Blöcken fest, die 1 KB entsprechen. Um ein Limit von 10 GB festzulegen, führen Sie folgende Berechnung durch:

10 GB = 10 x 1024 x 1024 = 10.485.760 KB

Quota-Berichte

Führen Sie den Befehl repquota aus, um den Quotenstatus anzuzeigen. Verwenden Sie die verfügbaren Optionen, um genau die Ergebnisse zu filtern, die Sie benötigen, zum Beispiel die Nutzung durch Benutzer oder Gruppen.

Hier sind einige der gängigsten Optionen:

-a – Zeigt die Ergebnisse für alle quotenfähigen Dateisysteme auf dem System an.

-s – Zeigt eine für Menschen lesbare Ausgabe an.

-u – Zeigt nur die Quotenergebnisse für alle Benutzer an.

-g – Zeigt nur die Quotenergebnisse für alle Gruppen an.

Abbildung 5: Quota-Berichte werden so angezeigt.
Abbildung 5: Quota-Berichte werden so angezeigt.

Beachten Sie, dass in der zweiten Spalte nach dem Benutzernamen ein +-Zeichen angezeigt wird, wenn der Benutzer die Linux-Quota überschritten hat.

Um die Quota-Auslastung für einzelne Benutzer oder Gruppen anzuzeigen, verwenden Sie den Befehl quota.

  • Um einen Bericht für einen bestimmten Benutzer zu erstellen, geben Sie quota -u {Benutzername} ein.
  • Um einen Bericht für eine bestimmte Gruppe zu erstellen, geben Sie quota -g {Gruppenname} ein.
Abbildung 6: Anzeige eines Quota-Ergebnisses für einen individuellen Benutzer.
Abbildung 6: Anzeige eines Quota-Ergebnisses für einen individuellen Benutzer.

Erstellen Sie ein Bash-Skript oder einen Cron-Job, um regelmäßige Berichte zu planen.

Tipps für die Fehlerbehebung

Verwenden Sie die folgenden Tipps zur Fehlerbehebung, um Ihr Quotenverwaltungsprogramm zu warten.

  • Überprüfen Sie die Quotenunterstützung im Dateisystem. Die meisten modernen Dateisysteme unterstützen Linux-Quoten.
  • Überprüfen Sie, ob Sie das Dateisystem mit den Quotenoptionen in der Datei /etc/fstab (usrquota oder grpquota) gemountet haben.
  • Starten Sie das Dateisystem neu oder mounten Sie es erneut. Sie können auch systemctl daemon-reload nach dem Befehl zum erneuten Mounten ausprobieren.
  • Überprüfen Sie die Speicherkapazität mit Tools wie du, df, lsblk und mount.
  • Vergewissern Sie sich, dass die Verwaltungstools vorhanden sind, darunter quota, edquota, quotacheck, quotaon und quotaoff.
  • Vergewissern Sie sich, dass Sie die Quota-Dateien initialisiert haben: quotacheck -cug /home.
  • Überprüfen Sie die Protokolldateien unter /var/log/message auf Einträge zu Quotas.

Der Kernel-Parameter quotacheck.mod steuert, wie das System Quotas beim Booten überprüft. Er verwendet den Dienst systemd-quotacheck.service, um diese Überprüfungen durchzuführen. Sie können Überprüfungen erzwingen oder überspringen. Standardmäßig werden Quotas bei Bedarf automatisch überprüft.

Erfahren Sie mehr über Storage Management