Zum Inhalt springen

Quota/Realisierungen: Unterschied zwischen den Versionen

Aus Foxwiki
DanielZorin (Diskussion | Beiträge)
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.


=== Преимущества квот без tune2fs ===
=== 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.
* Одинаковая схема для ext2/ext3/ext4 и ряда других файловых систем.
* In der Regel erfordert das einen Lauf von quotacheck, was auf großen Partitionen viel Zeit in Anspruch nehmen kann.
* Раздел с такими квотами можно смонтировать на другой машине, где нет поддержки ext4 native quotas, и квоты всё равно будут работать при наличии того же набора утилит quota.
* 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.
* Нет риска «сломать» файловую систему ошибочной опцией -O или некорректной работой tune2fs.
:* Auf Partitionen von mehreren TB kann das spürbar Zeit kosten und zusätzliche I/O-Last erzeugen.
* Применимо на разделах, где нет возможности безопасно размонтировать ФС (или нет maintenance-окна для серьёзных манипуляций).
* 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
* Квоты хранятся в обычных файлах (quota.* или aquota.*) в корне файловой системы.
:* 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.
* Простой откат и отключение. Чтобы отключить квоты, достаточно:
:* убрать опции usrquota/grpquota (или usrjquota/grpjquota) из /etc/fstab
:* выполнить quotaoff
:* при желании удалить файлы quota.* / aquota.*
:* Структура ФС при этом не меняется, ничего не нужно откатывать на уровне ext4-фич


2. Недостатки квот без tune2fs
 
* Риск рассинхронизации файлов квот
=== Schema ===
* При падении системы, жёсткой перезагрузке или проблемах с диском данные в quota.* / aquota.* могут не соответствовать реальному состоянию ФС.
Vereinfacht sieht das Schema folgendermaßen aus:
* Обычно это требует запуска quotacheck, который может занимать много времени на больших разделах.
; 1. Kennzeichnung auf Mount-Ebene
* Снижение производительности при работе quotacheck на больших объёмах данных:
In /etc/fstab werden für das Dateisystem Optionen der Form eingetragen:
:* quotacheck должен пройтись по всей файловой системе, чтобы пересчитать использование блоков/инодов.
usrquota,grpquota
:* На разделах в несколько ТБ это может занимать заметное время и создавать I/O-нагрузку.
: oder
* Менее плотная интеграция с журналом ext4:
usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1
:* Даже если используется журналируемый режим (usrjquota=...,jqfmt=vfsv1), квоты остаются внешними файлами, а не внутренними структурами FS
 
:* Встроенная quota-фича ext4 обеспечивает более тесную интеграцию с журналом и, как правило, более надёжна при сбоях.
Beim Einhängen erkennt der Kernel, dass auf diesem Dateisystem Benutzer-/Gruppenquoten aktiv sein sollen.
* Фактически устаревший подход для ext4
 
* На новых системах и в новой документации внешние квоты для ext4 часто помечаются как устаревший метод, предпочтение отдаётся встроенным (native) квотам.
; 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