Vorheriger Abschnitt Inhaltsverzeichnis Nächster Abschnitt

6.11 Plattenplatzbegrenzung mit Quota

Wer den Server intensiv als Fileserver im Netz einsetzt und den Schülern die Freiheit lässt, diesen Speicherbereich für eigene Web-Seiten und ähnliches zu nutzen, der vermisst† schon bald eine Beschränkung des von den Schülern (und Lehrern) genutzten Plattenplatzes auf dem Schulserver. Hierfür ist Quota die Lösung!

a) Was ist Quota?

Das Quota-Paket erlaubt dem Systemverwalter, unter zwei verschiedenen Aspekten den von den Benutzern genutzten Plattenplatz zu begrenzen: Einerseits kann die Anzahl der von den Nutzern oder einer Gruppe angelegten Dateieinträge (number of inodes), andererseits der Gesamtumfang des genutzten Speicherbereichs auf einer Partition (number of disk blocks) für einen Nutzer oder eine Gruppe begrenzt werden. Der Ansatz des Quota-Pakets zielt also darauf, die Benutzer zu zwingen, bei Verwendung des Speicherplatzes vorgebenene Grenzen einzuhalten.

Prinzipiell sind für jeden einzelnen Nutzer auf jeder Partition verschiedene Vorgaben einstellbar, die zudem in ein Soft- und ein Hardlimit unterteilt sind. Das Softlimit ist eine Grenze, bei der Quota bereits aktiv wird, die man für einen bestimmten Zeitraum überschreiten darf. Die Überschreitung des Softlimits wird dem Benutzer jede Nacht per E-Mail mitgeteilt. Eine Kopie dieser E-Mail erhält der Systemverwalter "root". Bei Unix-/Linux-Clients kann außerdem beim Anmelden eine Warnung erscheinen, dass die Begrenzung überschritten wurde. Das Hardlimit ist die absolute Obergrenze, sie kann keinesfalls überschritten werden. Das Softlimit muss also kleiner oder höchstens gleich dem Hardlimit gesetzt werden. Sind beide Grenzen gleich, brauchen Sie sich über die "grace period" und diese E-Mails keine Gedanken machen.

Die "grace period" legt fest, wie lange das Softlimit überschritten werden darf. Dieser Parameter ist nicht auf den einzelnen Nutzer bezogen, sondern auf die jeweilige Partition. Standardmäßig gilt bei der Einrichtung für alle Partitionen eine "Grace Period" von 7 Tagen.

b) Quota konfigurieren

Der c't/ODS-Schulserver ist für die Verwendung von Quotas schon größtenteils vorbereitet. Sie brauchen nur noch wenige Schritte selbst erledigen. Als erstes kontrollieren Sie die Datei /etc/fstab , ob die beiden fett markierten Ergänzungen vorhanden sind:


/dev/hda1    /       ext2        defaults                   1 1
/dev/hda2    swap    swap        defaults                   0 0
/dev/hda3    /var    ext        defaults,usrquota          1 2
/dev/hda4    /home   ext3        defaults,usrquota          1 3
none         /proc   proc        defaults                   0 0
/dev/hdc     /cdrom  iso9660     defaults,ro,user,noauto    0 0
/dev/fd0     /a      vfat        defaults,rw,umask=000,user,noauto,noexec 0  0

Abbildung 6.11-1: Inhalt der /etc/fstab

Beim Systemstart muss nun das Quota-Paket gestartet werden. Dazu setzen Sie in der Datei /etc/rc.config die Zeile "START_QUOTA=yes" . Anschließend starten Sie den gesamten Server neu (Reboot!).
Bei diesem Neustart prüft Arktur erstmals den Plattenplatz und hinterlegt in jeder Partition in einer Datei "quota.user" die Information über den pro Nutzer belegten und belegbaren Speicherplatz. Diese Datei kann dabei einige Megabyte groß werden. Natürlich braucht diese Prüfung etwas Zeit!

c) Zuweisung von Quotas an die Nutzer

Dazu dient das Programm edquota. Normalerweise sollte vor dem Editieren† "quotacheck -mavu" aufgerufen werden, um sicherzustellen, dass die aktuelle Plattenbelegung in den Quota-Dateien vorliegt. Das ist mit dem Neustart geschehen. Nur bei Problemen mit dem Dateisystem sollte das zusätzlich erfolgen.

Erstellen einer Vorlage für die Quotas:

Auf dem c't/ODS-Schulserver gibt es einen (nicht weiter benutzten) User games. Das Kommando "edquota -u games" startet den Editor für die Bearbeitung der Quotas dieses Beispielbenutzers:


Quotas for user games:
    /dev/hda3: blocks in use: 0, limits (soft = 1024, hard = 2048)
                   inodes in use: 0, limits (soft = 20, hard = 30)
    /dev/hda4: blocks in use: 0, limits (soft = 4096, hard = 6144)
                   inodes in use: 0, limits (soft = 400, hard = 500)

Abbildung 6.11-2: edquota für games

"blocks in use" ist die Gesamtzahl der Blöcke (in Kilobytes), die der Benutzer auf der Partition belegt hat.
"inodes in use" ist die Gesamtzahl der Dateieinträge, die der Benutzer auf der Partition angelegt hat.
Auf der Partition /dev/hda3 hat ein Benutzer eigentlich nur seine Mail-Datei (und ggf. temporäre Dateien beim Drucken), daher wurde in diesem Beispiel ein Softlimit von 1MB und ein Hardlimit von 2MB eingetragen, sowie die Anzahl der Dateieinträge auf 20 (max 30) festgesetzt. Auf der Partition /dev/hda4 liegt das Heimatverzeichnis, daher wurden hier größere Werte eingetragen. Wieviel Platz Sie jedem Nutzer im Heimatverzeichnis lassen, müssen Sie nach der Gesamtgröße der Festplatte entscheiden.

Kopieren von Quota-Einstellungen an die anderen Nutzer:

Das schnelle Zuweisen identischer Quota-Setzungen an alle User mit UID über 1999 (das sind auf dem Schulserver die Schüler) oder an alle User mit UID über 999 (das sind auf dem c't-Server die normalen User, Lehrer und Schüler) kann dann mit dem Skript /usr/sbin/copyquota vorgenommen werden, wobei der User games als Vorlage dient.
Außerdem wird bei aktiviertem Quota für alle neu angelegten Nutzer diese Begrenzung sofort übernommen. Sie können mit dem Befehle "edquota" aber für jeden einzelnen Nutzer die Beschränkungen wieder ändern.

Setzen der "grace period"

Mit dem Befehl "edquota -t", kann der Wert von "grace period" gesetzt werden. Benutzte Zeiteinheiten können sec(onds), min(utes), hour(s), day(s), week(s) und month(s) sein. Als root kann mit dem Befehl "edquota -t" mit dem Editor der Zeitraum festgelegt werden:


Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda3: block grace period: 7 days, file grace period: 7 days
/dev/hda4: block grace period: 21 days, file grace period: 21 days

Abbildung 6.11-3: edquota -t für Zeiteinstellung

In diesem Beispiel hat ein Nutzer 7 Tage Zeit, die Begrenzung in der Partition /dev/hda3 (also /var) wieder einzuhalten, jedoch 21 Tage für sein Heimatverzeichnis, das auf /dev/hda4 liegt. Diese Grenze muss für mindestens eine Nacht unterschritten bleiben, damit beim nächtlichen Cronjob die Einhaltung der Grenze erkannt und die "grace period" bei diesem Nutzer zurückgesetzt wird. Wenn er innerhalb der gesetzten "grace period" sein Softlimit nicht wieder unterschreitet, wird nach Ablauf dieser Zeit das Softlimit als Obergrenze aktiv und es können keine Daten mehr auf dem Netzlaufwerk geschrieben werden. Unter Linux führt das in Verbindung mit grafischen Oberflächen dazu, dass der Nutzer sich nicht mehr Anmelden kann.

d) Verschiedene Quota-Kommandos

quotacheck

Mit Quotacheck werden die Dateien "quota.user"† auf den aktuellen Stand gebracht. Der Server führt dieses Kommando jede Nacht automatisch aus. Deshalb erhält root jede Nacht eine E-Mail als Rückmeldung von dieser Funktion.

repquota

Repquota gibt eine Zusammenfassung des von den Nutzern belegten Speicherplatzes aus:† Ein Aufruf mit "repquota -av" ergibt:

*** Report for user quotas on /dev/hda3 (/var)
††††††††††††††††††††††† Block limits†††††††††††††† File limits
User††††††††††† used††† soft††† hard† grace††† used† soft† hard† grace
root††††† --††† 5615†††††† 0†††††† 0††††††††††† 563†††† 0†††† 0
bin†††††† --†††††† 2†††††† 0†††††† 0††††††††††††† 3†††† 0†††† 0
lp††††††† --†††††† 1†††††† 0†††††† 0††††††††††††† 1†††† 0†††† 0
news††††† --††††† 23†††††† 0†††††† 0†††††††††††† 28†††† 0†††† 0
uucp††††† --††††† 18†††††† 0†††††† 0†††††††††††† 17†††† 0†††† 0
nobody††† --††† 5030†††††† 0†††††† 0†††††††††† 4160†††† 0†††† 0
www†††††† --†††††† 2†††††† 0†††††† 0††††††††††††† 2†††† 0†††† 0
kwerner†† --†††††† 4††† 2048††† 4096††††††††††††† 1††† 20††† 40

*** Report for user quotas on /dev/hda4 (/home)
††††††††††††††††††††††† Block limits†††††††††††††† File limits
User††††††††††† used††† soft††† hard† grace††† used† soft† hard† grace
root††††† --†† 72231†††††† 0†††††† 0††††††††††† 236†††† 0†††† 0
adm†††††† --††† 3342†††††† 0†††††† 0†††††††††††† 20†††† 0†††† 0
nobody††† --†††††† 5†††††† 0†††††† 0††††††††††††† 1†††† 0†††† 0
ftp†††††† --†††† 670†††††† 0†††††† 0††††††††††††† 6†††† 0†††† 0
www†††††† --†† 17304†††††† 0†††††† 0†††††††††† 1898†††† 0†††† 0
kwerner†† --†††† 207††† 4096††† 6144†††††††††††† 35†† 300†† 400

quota

Quota zeigt die aktuelle Platzbelegung für den Nutzer an. Mit diesem Befehl kann jeder Nutzer seinen belegten Platz und die eingetragenen Begrenzungen anzeigen lassen. Als root können Sie hinter dem Befehl eine Nutzerkennung angeben, um die Angaben für diesen Nutzer anzuzeigen.

quotaon and quotaoff

Quotaon wird benutzt um die Quota-Funktion beim Systemstart einzuschalten. Mit quotaoff†wird beim Herunterfahren des Servers die Quota-Funktion wieder abzuschalten. Sie können quotaoff auch während des normalen Systemlaufs verwenden, um die Quota-Funktion abzuschalten. Damit Sie diese Funktion aber wieder einschalten können, darf auf der Partition keine Datei geöffnet sein. Das können Sie meist nicht während des normalen Systemlaufs realisieren.

warnquota

Warnquota versendet Warnungen an die Benutzer per E-Mail. Dieser Befehl wird jede Nacht als Cron-Job (siehe Kapitel 6.8) ausgeführt.†Dadurch werden je Nacht Warnungen an die Nutzer versandt, die ihre Speicherplatzgrenzen überschritten haben. Eine solche per E-Mail zugestellte Warnung sieht dann z.B. so aus:


Message 1/11   From root                               Aug 5, 98 04:39:00 pm

Return-Path: <root>
Date: Wed, 5 Aug 98 16:39 MEST
Subject: Plattenplatzkontrolle: Grenzueberschreitung
To: maxie
Cc: root

Hallo,
Es wurde festgestellt, dass die Plattenplatzbegrenzung
auf diesem System ueberschritten wurden. Folgende Konflikte treten auf:


                        Block limits               Dateieintraege
Filesystem           used    soft    hard  grace    used  soft  hard  grace
/dev/hda4      +-   25384   25000   30000   none    2425  2500  3000


Bitte dafuer sorgen, dass die Ueberschreitung vor Ablauf der Frist beseitigt wir
Das bedeutet, das ein Teil der Dateien auf den angegebenen Partitionen geloescht
oder verkleinert werden muss. Wenn der Platz weiterhin nicht freigegeben wird,
kann es zu Problemen mit der Anmeldung oder anderer Software (Mail, Drucken,...)
kommen, und es koennen keine Daten mehr gespeichert werden.

Fuer weitere Informationen bitte an den Systembetreuer wenden.

Abbildung 6.11-4: Quota-Warnung

Diese Beschreibung stellt nur eine Einführung in das Thema Quota dar. Wenn diese Beschreibung nicht ausreicht, sollten Sie weiterführende Literatur zu Rate ziehen.


Vorheriger Abschnitt Inhaltsverzeichnis Nächster Abschnitt
© Reiner Klaproth, 11.02.2002
Diese Seite dokumentiert den c't/ODS-Schulserver, insbesondere die Dateien in den Verzeichnissen "/slack/ods1" und "slack/ods9" auf der Installations-CD (oder der zugehörigen *.iso-Datei).
Die o.g. Dateien stehen unter der GNU Public License GPLv2, dementsprechend steht auch diese Dokumentation unter der GPL.
© Arktur-Team 2004,2005,2006,2007,2008,2009