Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


Disk-Quotas

Partitionierung ] RAID ] LVM ] RAID1 + LVM ] [ Disk-Quotas ] Hardware-Information/Diagnose ] Kernel ]


In vielen Fallen ist es erforderlich, den Speicherbedarf der Festplatte, der von bestimmten Benutzern oder Gruppen belegt werden darf, zu begrenzen. Gerade bei Mehrbenutzersystemen mit vielen Benutzern, welche z.B. als E-Mail-, Web- oder File-Server fungieren, ist es ratsam hierzu Disk-Quotas einzusetzen. Ohne irgendwelche Maßnahmen kann jeder Benutzer, in jedem Verzeichnis auf dem er ein Schreibrecht besitzt, beliebig viel Speicherplatz belegen und so die Systemstabilität gefährden.

Disk-Quota ist die Begrenzung des Festplattenspeicherplatzes für einzelne Benutzer oder Gruppen. Dabei kann die Begrenzung für jeden Benutzer/Gruppe individuell gesetzt werden. Zu beachten hierbei ist, Disk-Quotas werden vom System für jede Partition separat überwacht, d.h. falls Benutzer auf mehrere Partitionen Schreibrechte haben, muss für jede Partition ein einzelnes Quota gesetzen werden. Auch sollte dieses bei der Partitionierung der Festplatte vorher bedacht werden.
Die Einschränkungen durch Disk-Quota beziehen sich auf zwei Aspekte, das sind: 'Block-Limits' bzw. 'File-Limits'. Einerseits kann der Gesamtumfang des genutzten Speicherbereichs auf einer Partition ('number of disk blocks') begrenzt werden. Anderseits kann die angelegten Dateieinträge ('number of inodes'; Anzahl der Dateien) begrenzt werden.
Weiterhin wird bei Disk-Ouotas zwischen zwei Grenzen unterschieden. Das ist zum einen eine 'Softlimit', d.h. die Grenze darf für eine kurze Zeit überschritten werden. Zum anderen gibt es das 'Hardlimit', welches die Grenze ist, die auf keinen Fall überschritten werden darf. Der Zeitraum wie lange ein 'Softlimit' überschritten werden darf, wird als 'Grace Period' bezeichnet. Standardmäßig wird eine 'Grace Period' von sieben Tagen eingestellt.

Disk-Quota installieren/einrichten

Vorraussetzung für die Nutzung von Disk-Quotas ist ein entsprechender Linux-Kernel und ein unterstützendes Dateisystem. Beim Kernel muss die Disk-Quota-Funktion aktiviert sein, im Debian-Standard-Kernel und auch bei den meisten anderen Linux-Distributionen ist dieses meist ohnehin der Fall. Als Dateisysteme die Disk-Quota unterstützen, kommen 'ext2/3', ' XFS' und 'RaiserFS' in Frage, unter Debian-Linux empfiehlt es sich 'ext2' oder 'ext3' zu nutzen.

Weiterhin sind unter Debian/GNU die Pakete  'quota' und 'quotatool' mittels 'apt-get install' zu installieren. Das Paket 'quota' beinhaltet die eigentliche Implementierung des Disk-Quota-Systems, und 'quotatools' enthält Tools zum editieren der Quotas von der Kommandozeile aus. Während der Installation ist noch die Frage 'Schicke eine tägliche Erinnerung an Benutzer über Quota' mit '<Ja>' oder '<Nein>' zu beantworten.

Nach der Installation kann nun mit der Einrichtung der Quotas erfolgen, dazu sind in der '/etc/fstab' die Partitionen mit den Optionen 'usrquota' bzw. 'grpquota' zu versehen, auf denen Quotas angewendet werden sollen. Hierzu ein Beispiel:

/etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>                   <dump> <pass>
proc            /proc           proc    defaults                    0      0
/dev/hda1       /               ext3    defaults,errors=remount-ro  0      1
/dev/hda9       /home           ext3    defaults,usrquota,grpquota  0      2
/dev/hda8       /tmp            ext3    defaults,usrquota           0      2
/dev/hda5       /usr            ext3    defaults                    0      2
/dev/hda6       /var            ext3    defaults,usrquota           0      2
/dev/hda7       none            swap    sw                          0      0
/dev/fd0        /media/floppy0  auto    rw,user,noauto              0      0

Sinnvoll ist es auf allen Partitionen, auf denen Benutzer schreiben dürfen, Quotas einzuführen.

Zur Definition der jeweiligen Quota müssen im Wurzelverzeichnis des jeweiligen Dateisystems (Partition), die Datei 'quota.user' bzw. 'quota.group' existieren. Die Dateien können einfach als Leer-Datei mittels 'touch' angelegt werden. Bezogen auf das Beispiel bedeutet das:

touch /home/quota.user /home/quota.group /tmp/quota.user /var/quota.user

Nach den Anlegen der Dateien als 'root', sollten die Rechte mit 'chmod 600' abgeändert werden:

chmod 600 /home/quota.user /home/quota.group /tmp/quota.user /var/quota.user

Danach sind die einzelnen Partition erneut zu Mounten:

mount -o remount /home
mount -o remount /tmp
mount -o remount /var

Alternativ kann auch ein Neustart des Systems erfolgen. Ob die neu eingeführten Optionen akzeptiert wurden, kann mit dem Komando 'cat /etc/mtab' geprüft werden.

Als nächster Schritt ist das Programm 'quotacheck' zu starten. Das Programm erfasst den Platzverbrauch der einzeln Benutzer und Gruppen auf den einzelnen Partitionen, auf dem Quotas eingeschaltet sind und schreibt die Ergebnisse in die Dateien 'quota.user' und 'quota.group'. Die Dateien können dabei einige Megabyte groß werden, je nach Größe der Partition(en) und belegten Speicherplatz kann dieses einige Zeit in Anspruch nehmen. Hier ein Beispiel des Aufrufs mit 'quotacheck':

debian:~# quotacheck -v -m -a
quotacheck: WARNING - Quotafile /home/quota.user was probably truncated. Can't save quota settings...
quotacheck: Scanning /dev/hda9 [/home] quotacheck: Cannot stat old group quota file: Datei oder Verzeichnis nicht gefunden
done
quotacheck: Checked 85 directories and 177 files
quotacheck: WARNING - Quotafile /tmp/quota.user was probably truncated. Can't save quota settings...
quotacheck: Scanning /dev/hda8 [/tmp] quotacheck: Old group file not found. Usage will not be substracted.
done
quotacheck: Checked 5 directories and 2 files
quotacheck: WARNING - Quotafile /var/quota.user was probably truncated. Can't save quota settings...
quotacheck: Scanning /dev/hda6 [/var] quotacheck: Old group file not found. Usage will not be substracted.
done
quotacheck: Checked 105 directories and 1737 files
debian:~#

Im Normalfall versucht 'quotacheck' vor dem Scannen der Partitionen diese 'read-only' zu mounten und anschließend wieder 'read-write'. Diese kann jedoch nur gelingen, wenn kein einziger Zugriff mehr auf diese Partition erfolgt und kein User gerade sein aktuelles 'home'-Verzeichnis auf dieser Partition hat. Mit der Option '-m' können die Partitionen auch im 'read-write'-Modus gescannt werden; jedoch sollten die Warnungen hierzu auf der Manualseite beachtet werden.

Das Programm 'quotacheck' sollten nach jeder Veränderung der Quotas und nach jedem Neustart laufen. Unter Debian wird 'quotacheck' auch einmal täglich durch den 'cron'-Job ausgeführt.

Zum Schluss kann nun mit '/etc/init.d/quota start' oder einem Systemstart die Disk-Quotas aktiviert werden.

Arbeiten mit Quota

Nachdem das System für den Gebrauch von Disk-Quotas eingerichtet ist, im Folgenden einige Beispiele zum Handling.

Setzen/Ändern von Quotas

Mittels dem Kommando-Tool 'quotatool' können die Quotas für Benutzer oder Gruppen verändert werden:

  • Dem Benutzer 'norbert' soll ein Softlimit von 200MB auf der Partition '/home' gegeben werden:

    debian:~# quotatool -u norbert -b -q 200MB -v /home
    quotatool: using filesystem /home
    quotatool: user 'norbert' has uid 1001
    quotatool: filesystem /home has device node /dev/hda9
    quotatool:
    quotatool: Limit          Old              New
    quotatool: -----          ---              ---
    quotatool: block soft:    0                204800
    debian:~#

    Mit der Option '-u' wird der Benutzer auf dem das Quota wirken soll benannt, '-b' steht für 'block quotas' und '-q 200MB' steht für ein 'set soft limit'. Durch '-v' wird eine ausführliche Ausgabe ('verbose') erzeugt.
     
  • Dem Benutzer 'norbert' soll ein Hardlimit von 240MB auf der Partition '/home' gegeben werden

    quotatool -u norbert -b -l 240MB /home
     
  • Der Benutzer 'norbert' soll ein Softlimit von 1000 Dateien (inodes) auf der Partition '/home' bekommen.

    quotatool -u norbert -i -q 1000 /home
     
  • Der Benutzer 'norbert' soll ein Hardlimit von 1200 Dateien (inodes) auf der Partition '/home' bekommen.

    quotatool -u norbert -i -l 1200 /home
     
  • Die 'Grace Period' der '/home'-Patition auf zwei Wochen setzen.

    quotatool -t "2 week" /home

    Pro Typ (User-Quota und Group-Quota) sind nur zwei 'Grace Periods' gestattet: je eine für das Block-Limit und das Datei-Limit. Die festgelegte Zeit gilt für alle Benutzer.

Alternativ können die Limits auch mit dem Kommando 'edquota' verändert werden. Hierzu ein Beispiel mit dem User 'linux':

debian:~# edquota -u linux

Disk quotas for user linux (uid 1003):
  Filesystem                   blocks    soft    hard    inodes    soft    hard
  /dev/hda9                        12  204800  245760         3    1000    1200
  /dev/hda8                         0       0       0         0       0       0
  /dev/hda6                         0       0       0         0       0       0

~

Das Kommando 'edquota' startet nach Aufruf den Standard-Editor (meist den 'vi'-Editor) mit den vorhandenen Werten für Quotas in tabellarischer Form. In den einzelnen Spalten sind die Quotas zu finden, in den Zeilen die Partitionen. Die Werte können einfach an den entsprechenden Stellen editiert werden, danach ist die Datei abzuspeichern.

Anzeigen von Quotas

Um einen Überblick der Quotas aller Benutzer zu gewinnen, kann das Kommando 'repquota' genutzt werden. Hierzu wieder ein Beispiel:

debian:~# repquota /home
*** Report for user quotas on device /dev/hda9
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   34080       0       0            111     0     0
nobody    --      12       0       0              3     0     0
localuser --    1328       0       0            129     0     0
norbert   --   10588  204800  245760             17  1000  1200
linux     --      12  204800  245760              3  1000  1200
debian:~#

Nach dem Aufruf unter Angabe der Partition, werden alle Benutzer mit ihrem 'Soft-/Hard'-Limits für Blöcke und Dateien ausgegeben. Auch können die zur Zeit benutzten Werte in Erfahrung gebracht werden. Das Kommando 'repquota' kennt einige Optionen, die auf der Manualseite nachgelesen werden können.
Um die 'Grace Period' zu verändern kann 'edquota -t' genutzt werden, auch hierbei wird der Standard-Editor aufgerufen.

Anmerkungen

Sollen die Quota eines Benutzers überschritten werden so kommt es zu einer Meldung, z.B. auf der Konsole beim Überschreiten des Softlimits: 'hda9: warning, user block quota exceeded.' oder beim Überschreiten des Hardlimits 'hda9: write failed, user block limit reached.'.

Beim Einsatz von Disk-Quotas sollte Folgendes beachtet werden:

  • Quotas sollten so klein gewählt werden das nicht der gesamte Plattenplatz belegt werden kann.
  • Quotas sollten so groß gewählt werden, dass die Benutzer nicht in ihrer Arbeit behindert werden, beispielsweise sollte das Spool-Verzeichnis für E-Mail nicht zu knapp bemessen werden.
  • Quotas müssen auf allen, von Benutzern beschreibbaren Bereichen eingerichtet werden, beispielsweise '/home' und '/tmp'.

Die Quota-Datenbank gibt es in der Version '1.x' und '2.x'. Bei der Version '1.x' lautet der Name der Datenbank 'quota.user' bzw. 'quota.group', bei der Version '2.x' 'aquota.user' bzw. 'aquota.group'. Das neuere Format 'aquota' hat gegenüber 'quota' folgende Erweiterungen:

  • Quota für root möglich
  • Quota für 32-Bit UID/GID möglich
  • Quota-Größe in Byte statt KByte möglich (für ReiserFS)
  • Unabhängig von der Hardware-Architektur
  • Quotadatei im Radixbaum-Format (einfache Baumstruktur)

Eine Konvertierung vom Format '1.x' nach '2.x' kann mit dem Programm 'convertquota' geschehen.

Auf der Kommandozeile kann mit 'quotaon -a' bzw. 'quotaoff -a' die Quota-Überwachung eingeschaltet bzw. ausgeschaltet werden.

Weitere Infos

Linux Quota mini-HOWTO http://www.linuxhaven.de/dlhp/HOWTO/mini/DE-Quota-HOWTO.html
Quota mini-HOWTO http://www.tldp.org/HOWTO/Quota.html
HOWTO zu Quota (Plattenplatz-Beschränkung) http://www.ostc.de/howtos/unix-quota-HOWTO.html
Manualseiten zu: quota man quota
Manualseiten zu: quotatool man quotatool
System-Dokumentation: quota; quotatool /usr/share/doc/quota; /usr/share/doc/quotatool

Home ] Nach oben ] Partitionierung ] RAID ] LVM ] RAID1 + LVM ] [ Disk-Quotas ] Hardware-Information/Diagnose ] Kernel ]

letzte Änderung: 09. März 2009

 

Copyright © 2004 Norbert Eusterholz