Dateisystem-Quota in Linux

Mit wenigen Schritten lässt sich in Linux eine Quota für Benutzer oder Gruppen einrichten. Im Gegensatz zur Quota in Windows kann diese nicht nur für das gesamte Dateisystem, sondern für einzelne Verzeichnisse definiert werden.

Installation der Softwarepakete

Zu allererst müssen Pakete nachinstalliert werden. Für Debian und seine Abkömmlinge über diesen Befehl:

sudo apt update && sudo apt -y install quota quotatool

Definition in fstab

Die Quota muss für jedes betroffene Dateisystem in der Datei /etc/fstab aktiviert werden. Je nach Kernel und Dateisystem gibt es zwei Möglichkeiten.

Für Steinzeit-Kernel und Dateisysteme ohne Journal ergänzt ergänzt man die Option usrquota:

/dev/sda3 /home ext2 defaults,usrquota 0 2

Soll eine Quota für Gruppen genutzt werden, ergänzt man zusätzlich die Option grpquota:

/dev/sda3 /home ext2 defaults,usrquota,grpquota 0 2

Für moderne Kernel und Dateisysteme mit Journal wird dringend diese Alternative empfohlen:

/dev/sda3 /home ext4 defaults,usrjquota=aquota.user,jqfmt=vfsv1 0 2

Auch hier wird die Quota für Gruppen über eine Zusatzoption aktiviert:

/dev/sda3 /home ext4 defaults,usrjquota=aquota.user,qrpjquota=aquota.group,jqfmt=vfsv1 0 2

Die Änderungen werden wahlweise mit einem Neustart oder mit diese Befehl aktiviert:

sudo mount -vo remount /home

Quota-Index erstellen

Zu allererst wird ein Index erstellt:

sudo quotacheck -cum /home

Wer die gruppenbasierte Quota aktiviert hat, muss den Parameter -g ergänzen, damit der entsprechende Index ebenfalls erstellt wird:

sudo quotacheck -cugm /home

Je nach Größe des Dateisystems kann dieser Prozess etwas länger dauern. Der Index muss zwingend erstellt werden. Ohne ihn scheitern alle weiteren Schritte.

Quota aktivieren

Anschließend kann die Quota aktiviert werden:

sudo quotaon -v /home

Quota deaktivieren

Sollte es jemals erforderlich werden, die Quota zu deaktivieren, erfolgt das mit einem sehr ähnlichen Befehl:

sudo quotaoff -v /home

Beschränkungen konfigurieren

Es ist nicht zwingend erforderlih, Beschränkungen für jeden Benutzer zu konfigurieren. Es ist noch nicht einmal erforderlich irgendeine Beschränkung zu konfigurieren. Das Aktivieren der Quota erzeugt bereits deutliche Zugewinne in der Performance von Befehlen wie du. Wer häufig derartige Befehle nutzt, darf gerne darüber nachdenken, eine Dateisystemquota ohne Limits zu aktivieren.

Der eigentliche Sinn einer Quota ist jedoch die Beschränkung des verfügbaren Speicherplatzes für einzelne oder alle Benutzer bzw. Gruppen. Das wird mit dem Befehl edquota eingerichtet:

sudo edquota heikorichter

Es öffnet sich ein Texteditor mit folgendem Inhalt:

Disk quotas for user heikorichter (uid 1000):
   Filesystem                   blocks       soft       hard     inodes     soft     hard
   /dev/sda3                        24    1000000    1048576          6        0        0

Die einzelnen Einträge sind schnell erklärt:

blocks
Anzahl der 1K-Blocks, die der Benutzer aktuell belegt.
soft
Wenn der Benutzer dieses Limit an 1K-Blocks erreicht hat, erhält er eine Warnung.
hard
Maximale Anzahl an 1K-Blocks, die dem Benutzer zur Verfügung stehen.
inodes
Anzahl der INodes, die der Benutzer aktuell belegt.
soft
Wenn der Benutzer dieses Limit an INodes erreicht hat, erhält er eine Warnung.
hard
Maximale Anzahl an INodes, die der Benutzer belegen kann.

Zusätzlich kann über den Befehl

sudo edquota -t

ein Zeitlimit definiert werden. Dadurch kann ein Benutzer temporär die Warnschwelle überschreiten ohne eine Warnung zu erhalten. Die konfiguration erfolgt ebenfall im Texteditor, der sich nach Eingabe des Befehls öffnet. Das Zeitlimit kann für Inodes und 1K-Blocks verschieden definiert werden.

Grace period before enforcing soft limits for users:
 Time units may be: days, hours, minutes, or seconds
   Filesystem             Block grace period     Inode grace period
   /dev/sda3              7days                  7days

Berichte

Dieser Befehl zeigt einen Bericht über die Quotas aller Dateisysteme:

sudo repquota -a

Selbstverstänlich kann auch ein Bericht für eine spezifische Partition erstellt werden:

sudo repquota /home

Um die Quotas eines Benutzers anzuzeigen ohne dabei im Texteditor zu landen, gibt es natürlich ebenfalls einen passenden Befehl:

sudo quota -u heikorichter

Wer gruppenbasierte Quotas aktiviert hat, kann sich auch die Quotas einer Gruppe anzeigen lassen:

sudo quota -g users

Quotas übertragen

Auf Systemen mit vielen Benutzern und Gruppen mag man davor zurückschrecken, für jeden Benutzer die Quota händisch zu konfigurieren. Das ist jedoch nicht erforderlich. Einstellungen können bequem von einem Benutzer zu einem anderen kopiert werden:

sudo edquota -p heikorichter newuser

Das Gleiche funktioniert natürlich auch bei einer gruppenbasierten Quota:

sudo edquota -g -p users newusers

Selbstverständlich ist es auch möglich, die Quota eines Benutzers auf alle anderen Benutzer zu kopieren. Das kann sehr Hilfreich sein, um bei einem Fileserver mit hunderten Benutzerkonten Quotas zu einzuführen oder zu ändern:

edquota -p heikorichter $(awk -F: '$3 > 999 {print $1}' /etc/passwd)

Sonstiges

  • Über das Kommando warnquota ist es möglich, eine Warnung mit den aktuellen Werten an alle Benutzer zu senden. Das bietet sich besonders an, wenn Quotas neu eingeführt wurden oder sich die Limits geändert aben. Wie diese Warnung aussieht und wie sie versandt wird, lässt sich in der Datei /etc/warnquota.conf konfigurieren.
  • Über das Kommando quotastats lassen sich diverse Statistiken einsehen. Hier kann auch abgeschätzt werden, wie sehr sich die Quota auf die Performance des gesamten Dateisystems auswirkt.

Aufrufe: 438

Ähnliche Artikel

Comments

Leave a Comment