# 6.11 Plattenplatzbegrenzung mit Quota

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

### a) Was ist Quota?

Das Quota-Paket erlaubt dem Systemverwalter unter zwei verschiedenen Aspekten den von den Benutzern genutzten Disk-Speicherbereich 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 Harddiskpartition (number of disk blocks) für einen User oder eine Gruppe von Usern begrenzt werden. Der Ansatz des Quota-Pakets geht also dahin, die Benutzer zu zwingen, bei Verwendung des Disk-Speicherbereichs vorgebenene Grenzen einzuhalten.

Prinzipiell sind somit für jeden User auf jeder Partition verschiedene Vorgaben einstellbar, die man zudem durch eine Soft- und eine Hartgrenze belegen kann. Doch dazu später mehr.

### b) Quota konfigurieren

Der ODS-Server V3.0 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                   1 1
>     /dev/hda3    /var    ext2        defaults,usrquota          1 1
>     /dev/hda4    /home   ext2        defaults,usrquota          1 1
>     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 144: 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 startet Sie den gesamten Server neu (Reboot!).
Bei diesem Neustart prüft Arktur erstmals den Plattenplatz und hinterlegt für jede Partition in einer Datei "quota.user" die Information für die entsprechenden Nutzer über den belegten Plattenplatz. 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 -avu" aufgerufen werden, um sicherzustellen, dass die aktuelle Plattenbelegung in den Quota-Dateien vorliegt. Das ist mit dem Neustart aber geschehen; nur bei Problemen mit dem Dateisystem sollte das zusätzlich erfolgen.

Erstellen einer Vorlage für die Quotas:

Auf dem ODS-Server gibt es einen nicht weiter benutzten User games. Das Kommando "edquota -u games" startet den Editor für die Quotas:

>     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 145: 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 wird hier ein Softlimit von 1MB und ein Hardlimit von 2MB eingetragen, die Anzahl der Dateien auf 20 (max 30) festgesetzt. Auf der Partition /dev/hda4 liegt das Homeverzeichnis, daher werden hier größere Werte eingetragen.

Zuweisung von Quota-Einstellungen an die anderen Nutzer:

Das schnelle Zuweisen identischer Quota-Setzungen an alle User mit UID über 1999 (das sind auf dem c't-Server 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 die Beschränkungen wieder ändern.

Im Zusammenhang mit Quota sind die folgenden 3 Begriffe wichtig: Soft Limit, Hard Limit, and Grace Period.

Soft Limit

Soft limit gibt den maximal belegbaren Diskspeicher (oder Dateianzahl) vor, dieein Benutzer auf der Partition belegen kann. Wenn diese Option mit grace period kombiniert wird, dient diese Angabe als erste Grenze, ab der der User Quota-Warnungen bekommt, wenn er dieses Limit überschreitet. Diese Warnungen werden beim Einloggen in den Server beim Login ausgegeben (oder auch per Mail zugestellt, siehe Warnquota weiter unten!). Beim Einloggen erhält ein User z.B. dann bei Überschreiten des Limits bei aktivierter grace period die Meldung:

Hard Limit

Hard limit arbeitet nur, wenn grace period gesetzt ist. Damit wird dann die absolute Obergrenze vorgegeben, die auch kurzfristig nicht überschritten werden kann.

Grace Period

Mit dem Kommando "edquota -t", kann der Wert von grace period gesetzt werden. Dies meint einen Zeitraum, der dem User nach Überschreiten des Soft Limits (bis maximal zum Hard Limit) zur Verfügung gestellt wird, bevor die Anwendung des soft limit erzwungen wird. Benutzte Zeiteinheiten können sec(onds), min(utes), hour(s), day(s), week(s) und month(s) sein. Nach Eingabe von "edquota -t" kann im Editor die folgende Einstellung herbeigeführt 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: 7 days, file grace period: 7 days

Abbildung 146: edquota -t für Zeiteinstellung

Ein User, der sein Softlimit überschritten hat, bekommt so beim Einloggen entsprechende Rückmeldung, bekommt einem Zeitraum von bis zu 7 Tagen eingeräumt, in dem er das Softlimit bis zum Hardlimit überschreiten darf, danach werden die als Softlimit angegebenen Grenzwerte aktiv.

### d) Verschiedene Quota Kommandos

Quotacheck

Mit Quotacheck werden die Dateien "quota.user" auf den aktuellen Stand gebracht. Der Server führt das jede Nacht automatisch aus.

Repquota

Repquota gibt eine Zusammenfassung des von den Usern belegten Disk-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`

Quotaon and Quotaoff

Quotaon wird im Start-Skript /etc/rc.d/rc.quota benutzt um Quota einzuschalten; quotaoff um Quota beim Herunterfahren des Servers wieder abzuschalten.

Warnquota

Warnquota versendet Warnungen an Benutzer per eMail. Dieser Befehl wird jede Nacht als Cron-Job (siehe Kapitel 6.8) ausgeführt. Hierdurch werden jeweils nachts die Warnungen an Nutzer versandt, die ihre Speicherplatzgrenzen überschritten haben. Eine solche, per eMail 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: Quota usage on system
>     To: maxie
>     Cc: root

>     Hi,
>     We noticed that you are in violation with the quotasystem
>     used on this system. We have found the following violations:

>                             Block limits               File limits

>     Filesystem           used    soft    hard  grace    used  soft  hard  grace
>     /dev/hda4      +-    4913    4096    6144  7days      38   300   400

>     We hope that you will cleanup before your grace period expires

>     root (System Super User).

Abbildung 148: Quota-Warnung

Diese Beschreibung stellt nur eine Einführung in das Thema Quota dar. Sie sollten hier eventuell weiterführende Literatur zu Rate ziehen.

© Reiner Klaproth, 16.04.2000