Quota/Realisierungen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| (7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Externe Quotendateien == | == 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. | ||
* | |||
2. | |||
* | === 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 == | == 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`. | |||
<noinclude> | <noinclude> | ||
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