Zum Inhalt springen

Quota/Realisierungen: Unterschied zwischen den Versionen

Aus Foxwiki
 
Zeile 69: Zeile 69:


== Eingebettete Quotendateien ==
== Eingebettete Quotendateien ==
; Integrierter Quoten - über tune2fs


=== Vorteile integrierter Quoten - über tune2fs ===
=== Vorteile ===
* Zuverlässigeres Verhalten bei Ausfällen
* Zuverlässigeres Verhalten bei Ausfällen
* Die Aktualisierung der Quoten ist in das Journal des Dateisystems integriert, daher sind die Quotendaten nach einem Systemabsturz wesentlich weniger anfällig für Desynchronisation als externe Dateien aquota.*.
* Die Aktualisierung der Quoten ist in das Journal des Dateisystems integriert, daher sind die Quotendaten nach einem Systemabsturz wesentlich weniger anfällig für Desynchronisation als externe Dateien aquota.*.
Zeile 86: Zeile 87:
:* Zusammen mit der Project-Feature können Projektquoten (prjquota) aktiviert werden, also Quoten auf Verzeichnisse (Projekte) und nicht nur auf UID/GID
:* Zusammen mit der Project-Feature können Projektquoten (prjquota) aktiviert werden, also Quoten auf Verzeichnisse (Projekte) und nicht nur auf UID/GID


=== Nachteile und Einschränkungen ===
=== Nachteile ===
 
; Nachteile und Einschränkungen
* Es müssen Dateisystem-Features geändert werden
* Es müssen Dateisystem-Features geändert werden
* Für ein bereits existierendes ext4-Dateisystem wird die Quota-Feature mit
* Für ein bereits existierendes ext4-Dateisystem wird die Quota-Feature mit
Zeile 100: Zeile 101:
* Die Konfiguration ist etwas weniger offensichtlich als bei externen Quotendateien.
* Die Konfiguration ist etwas weniger offensichtlich als bei externen Quotendateien.


=== Allgemeiner Aufbau des Schemas der ext4-native Quoten ===
=== Allgemeiner Aufbau ===
Allgemeiner Aufbau des Schemas der ext4-native Quoten


1. Features auf Dateisystemebene
; 1. Features auf Dateisystemebene
* Im ext4-Superblock wird das Feature quota (und bei Bedarf project) gesetzt.
* Im ext4-Superblock wird das Feature quota (und bei Bedarf project) gesetzt.
* Dies führt zur Erstellung interner `quota inode` und zur Eintragung ihrer Nummern in den Superblock:
* Dies führt zur Erstellung interner `quota inode` und zur Eintragung ihrer Nummern in den Superblock:
Zeile 109: Zeile 111:
:* die project quota wird in einem eigenen Inode gespeichert, dessen Nummer im Feld s_prj_quota_inum abgelegt ist.
:* die project quota wird in einem eigenen Inode gespeichert, dessen Nummer im Feld s_prj_quota_inum abgelegt ist.


2. Kernel – Quota-Inodes
; 2. Kernel – Quota-Inodes
* Beim Mounten des Dateisystems erkennt der Kernel, dass die Quota-Feature aktiviert ist, liest die Inode-Nummern der Quoten aus dem Superblock und bindet sie als Quota-Speicher ein.
* Beim Mounten des Dateisystems erkennt der Kernel, dass die Quota-Feature aktiviert ist, liest die Inode-Nummern der Quoten aus dem Superblock und bindet sie als Quota-Speicher ein.
* Die Erfassung der Block- und Inode-Nutzung nach UID/GID/Project-ID erfolgt ohne externe Dateien; die Daten werden atomar in Verbindung mit dem Journal aktualisiert.
* Die Erfassung der Block- und Inode-Nutzung nach UID/GID/Project-ID erfolgt ohne externe Dateien; die Daten werden atomar in Verbindung mit dem Journal aktualisiert.


3. Erfassung und Durchsetzung der Limits
; 3. Erfassung und Durchsetzung der Limits
 
* Die Quotenbuchführung wird bei aktivierter ext4-Quota-Feature nach dem Mounten automatisch aktiviert.
* Die Quotenbuchführung wird bei aktivierter ext4-Quota-Feature nach dem Mounten automatisch aktiviert.
* Die tatsächliche Durchsetzung der Limits muss jedoch explizit über `quotaon` eingeschaltet werden, analog zu externen Quoten.
* Die tatsächliche Durchsetzung der Limits muss jedoch explizit über `quotaon` eingeschaltet werden, analog zu externen Quoten.


4. Neue Mount-Optionen
; 4. Neue Mount-Optionen
Um dem Dateisystem und dem Kernel mitzuteilen, welche Quotenarten angewendet werden sollen, werden folgende Optionen verwendet:
Um dem Dateisystem und dem Kernel mitzuteilen, welche Quotenarten angewendet werden sollen, werden folgende Optionen verwendet:
* '''usrquota''''''Fetter Text''' — Benutzerquoten
* '''usrquota''''''Fetter Text''' — Benutzerquoten

Aktuelle Version vom 20. November 2025, 19:23 Uhr

Externe Quotendateien

Quoten ohne tune2fs

Vorteile

  • Maximale Kompatibilität und Vorhersagbarkeit
  • Funktionieren auf alten Kerneln und Distributionen.
  • Gleiches Vorgehen für ext2/ext3/ext4 und eine Reihe anderer Dateisysteme.
  • Eine Partition mit solchen Quoten kann auf einem anderen Rechner eingehängt werden, auf dem es keine Unterstützung für ext4-native-Quoten gibt, und die Quoten funktionieren weiterhin, sofern dort derselbe Satz von quota-Werkzeugen vorhanden ist.
  • Keine Änderungen an der Struktur des Dateisystems
  • Kein Risiko, das Dateisystem durch eine falsche -O-Option oder fehlerhaftes Verhalten von tune2fs „kaputtzumachen“.
  • Anwendbar auf Partitionen, bei denen es nicht möglich ist, das Dateisystem sicher auszuhängen (oder kein Wartungsfenster für größere Eingriffe existiert).
  • Einfaches Datenmodell
  • Die Quoten werden in normalen Dateien (quota.* oder aquota.*) im Wurzelverzeichnis des Dateisystems gespeichert.
  • Diese Dateien lassen sich leicht anzeigen, kopieren, archivieren und löschen.
  • Für manche administrativen Aufgaben ist es praktisch, eine explizite Datei zu haben und keinen versteckten internen Inode.
  • Einfache Rücknahme und Deaktivierung. Um Quoten zu deaktivieren, genügt es:
  • die Optionen usrquota/grpquota (oder usrjquota/grpjquota) aus /etc/fstab zu entfernen
  • quotaoff auszuführen
  • bei Bedarf die Dateien quota.* / aquota.* zu löschen
  • Die Struktur des Dateisystems ändert sich dabei nicht; es muss nichts auf Ebene der ext4-Features zurückgesetzt werden.

Nachteile

  • Risiko einer Desynchronisation der Quotendateien
  • Bei einem Systemabsturz, einem Hard-Reset oder Problemen mit der Platte können die Daten in quota.* / aquota.* nicht mehr dem tatsächlichen Zustand des Dateisystems entsprechen.
  • In der Regel erfordert das einen Lauf von quotacheck, was auf großen Partitionen viel Zeit in Anspruch nehmen kann.
  • Performance-Einbußen beim Lauf von quotacheck auf großen Datenmengen:
  • quotacheck muss das gesamte Dateisystem durchlaufen, um die Nutzung von Blöcken/Inodes neu zu zählen.
  • Auf Partitionen von mehreren TB kann das spürbar Zeit kosten und zusätzliche I/O-Last erzeugen.
  • Weniger enge Integration mit dem ext4-Journal:
  • Selbst wenn der journalisierte Modus verwendet wird (usrjquota=...,jqfmt=vfsv1), bleiben die Quoten externe Dateien und sind keine internen Strukturen des Dateisystems
  • Die eingebaute Quota-Funktion von ext4 ist enger mit dem Journal integriert und im Allgemeinen robuster bei Störungen.
  • In der Praxis ein veralteter Ansatz für ext4
  • Auf neuen Systemen und in aktueller Dokumentation werden externe Quoten für ext4 oft als veraltete Methode bezeichnet; bevorzugt werden die eingebauten (native) Quoten.


Schema

Vereinfacht sieht das Schema folgendermaßen aus:

1. Kennzeichnung auf Mount-Ebene

In /etc/fstab werden für das Dateisystem Optionen der Form eingetragen:

usrquota,grpquota
oder
usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1

Beim Einhängen erkennt der Kernel, dass auf diesem Dateisystem Benutzer-/Gruppenquoten aktiv sein sollen.

2. Quotendateien im Wurzelverzeichnis des Dateisystems

Im Wurzelverzeichnis des Dateisystems werden spezielle binäre Quotendateien angelegt

  • ältere Variante:
quota.user quota.group
  • neuere, verbreitete Variante:
aquota.user aquota.group.

Darin werden Einträge pro UID/GID gespeichert: belegte Blöcke, belegte Inodes, weiche und harte Limits, Dauer der Grace-Periode usw.

3. Kernel und Quotendateien

Der Kernel greift bei jeder Operation, die die Plattennutzung verändern kann (Anlegen/Löschen von Dateien, Vergrößern der Dateigröße usw.), auf die Quotadaten zu:

  • prüft, ob das Limit überschritten würde
  • verweigert oder erlaubt die Operation
  • aktualisiert die Zähler in den Quotendateien über einen Cache im Speicher mit periodischem Schreiben auf die Platte

In der journalisierten Variante (Optionen usrjquota=/grpjquota=) werden die Aktualisierungsvorgänge für aquota.* teilweise in das Journal des Dateisystems integriert

4. Werkzeuge aus dem Paket quota
  • quotacheck – scannt das Dateisystem, berechnet die Nutzung neu und erzeugt/repariert die Quotendateien.
  • quotaon / quotaoff – aktivieren/deaktivieren die Anwendung der Quoten im Kernel.
  • edquota – bearbeitet die Limits für einen bestimmten Benutzer/eine bestimmte Gruppe.
  • repquota – Bericht über die Quoten (wer wie viel nutzt, wo Überschreitungen vorliegen usw.).
  • quota – zeigt die Quoten eines bestimmten Benutzers an.

Eingebettete Quotendateien

Integrierter Quoten - über tune2fs

Vorteile

  • Zuverlässigeres Verhalten bei Ausfällen
  • Die Aktualisierung der Quoten ist in das Journal des Dateisystems integriert, daher sind die Quotendaten nach einem Systemabsturz wesentlich weniger anfällig für Desynchronisation als externe Dateien aquota.*.
  • ext4 erzeugt spezielle interne Inodes, die im Superblock eingetragen sind
  • Die Quoten werden in speziellen Inodes gespeichert und sind im Verzeichnis / nicht sichtbar
  • Kein „Müll“ im Wurzelverzeichnis des Dateisystems
  • Schnelle Wiederherstellung nach Serverabstürzen
  • Wenn die Quota-Feature vorhanden ist, wird die Quotenverwaltung beim Mounten automatisch eingeschaltet, ohne dass ein quotacheck über das gesamte Dateisystem ausgeführt werden muss
  • In der Regel muss man nicht stundenlang auf die Neuberechnung der Quoten auf einer Multi-Terabyte-Partition warten.
  • Moderner, von den Entwicklern unterstützter Ansatz
  • Die Dokumentation empfiehlt ausdrücklich die ext4-Quota-Feature
  • Externe Quotendateien auf ext4 gelten bereits offiziell als veraltet: der Kernel gibt eine Warnung der Form aus
`external quota files on ext4 are deprecated, please switch filesystem to use ext4 quota feature`
  • Unterstützung von Project-Quoten
  • Zusammen mit der Project-Feature können Projektquoten (prjquota) aktiviert werden, also Quoten auf Verzeichnisse (Projekte) und nicht nur auf UID/GID

Nachteile

Nachteile und Einschränkungen
  • Es müssen Dateisystem-Features geändert werden
  • Für ein bereits existierendes ext4-Dateisystem wird die Quota-Feature mit
tune2fs -O quota /dev/sdXN

(gegebenenfalls -O project hinzufügen, wenn Project-Quotas benötigt werden).

  • Dies ist eine Änderung der Dateisystemstruktur. Sie darf nur auf einer ausgehängten Partition durchgeführt werden. Für das Root-Dateisystem `/` ist in der Regel ein separater Wartungsmodus/Live-CD/initramfs erforderlich.
  • Abhängigkeit von Kernel- und e2fsprogs-Version
  • Es wird eine ausreichend aktuelle Kombination aus Kernel + e2fsprogs mit Unterstützung der Quota-Feature benötigt, gebaut mit --enable-quota. In einigen Distributionen ist dies bis heute nicht aktiviert.
  • Wie bei anderen ext4-Features: Nach dem Setzen eines neuen Feature-Bits ist das Dateisystem nicht mehr vollständig mit älteren Kerneln kompatibel.
  • Das Zurückrollen ist schwieriger:
  • Ein Rollback ist nur über ein vollständiges Backup und das Neuaufsetzen des Dateisystems möglich.
  • Die Konfiguration ist etwas weniger offensichtlich als bei externen Quotendateien.

Allgemeiner Aufbau

Allgemeiner Aufbau des Schemas der ext4-native Quoten

1. Features auf Dateisystemebene
  • Im ext4-Superblock wird das Feature quota (und bei Bedarf project) gesetzt.
  • Dies führt zur Erstellung interner `quota inode` und zur Eintragung ihrer Nummern in den Superblock:
  • user quota (3)
  • group quota (4)
  • die project quota wird in einem eigenen Inode gespeichert, dessen Nummer im Feld s_prj_quota_inum abgelegt ist.
2. Kernel – Quota-Inodes
  • Beim Mounten des Dateisystems erkennt der Kernel, dass die Quota-Feature aktiviert ist, liest die Inode-Nummern der Quoten aus dem Superblock und bindet sie als Quota-Speicher ein.
  • Die Erfassung der Block- und Inode-Nutzung nach UID/GID/Project-ID erfolgt ohne externe Dateien; die Daten werden atomar in Verbindung mit dem Journal aktualisiert.
3. Erfassung und Durchsetzung der Limits
  • Die Quotenbuchführung wird bei aktivierter ext4-Quota-Feature nach dem Mounten automatisch aktiviert.
  • Die tatsächliche Durchsetzung der Limits muss jedoch explizit über `quotaon` eingeschaltet werden, analog zu externen Quoten.
4. Neue Mount-Optionen

Um dem Dateisystem und dem Kernel mitzuteilen, welche Quotenarten angewendet werden sollen, werden folgende Optionen verwendet:

  • usrquota'Fetter Text' — Benutzerquoten
  • grpquota — Gruppenquoten
  • prjquota — Projektquoten


  • Diese Optionen ersetzen die alten usrjquota=...,grpjquota=...,jqfmt=... für ext4 mit aktivierter Quota-Feature.
  • Die Werkzeuge bleiben dieselben.
  • Es werden weiterhin dieselben Programme verwendet: `quotacheck`, `quotaon`, `quotaoff`, `edquota`, `repquota`, `quota`.


Anhang

Siehe auch



Dokumentation

Links

Projekt

Weblinks