Quotas einrichten
Dieses Wochenende habe ich die ganze Struktur meiner Sambashares meines Servers (Debian Lenny 5.0) überarbeitet. User gelöscht und hinzugefügt, Rechte geändert. Dabei musste ich auch die Quotas neu erstellen und habe gleich ein einfaches Minihowto geschrieben.
Die Quotas kommen bei mir auf einem Sambaserver zum Einstatz. Es dürfen verschiedene Benutzer Daten auf den Server hochladen und damit mir niemand den Server ausversehen oder gewollt zumüllen kann werden Quotas konfiguriert. Quotas ergeben auch anderswo Sinn, zum Beispiel bei Homeverzeichnissen.
Etwas vornweg: Quotas können nur auf Partitionen und nicht auf Ordner gesetzt werden! Die Quotas gelten für eine Partition! Los gehts.
Quota installieren
aptitude install quota
Die /etc/fstab anpassen (Userquota und Gruppenquota)
/dev/sda1 /media/partition ext3 defaults,usrquota,grpquota 0 1
Die Partition remounten um Quotas zu aktivieren
mount /media/partition -o remount
Aktueller Platzverbrauch der einzelnen Benutzer analyisieren. Dies ging bei 985GB ca. 15min
quotacheck -vuq /media/partition
Beim ersten Mal werden ein paar Fehlermeldungen gezeigt, dies ist normal weil es der erste Check ist
quotacheck -vug /media/partition/
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sda1 [/media/partition] done
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Checked 20521 directories and 80591 files
quotacheck: Old file not found.
quotacheck: Old file not found.
Danach wird es auf der Partition die Files aquota.group und aquota.user geben mit den Rechten 600.
Jetzt schränke ich den Benutzer restricted auf ca. 14.6GB ein. Die Soft- und Hardlimite ist die gleiche, weil ich den Benutzer nicht benachrichtigen will, dass er zu viel Speicherplatz benutzt und ich ihm auch nicht die Möglichkeit geben will, Daten zu löschen um unter die Softlimite zu kommen. Ich möchte ja nur erreichen, dass er das Sambashare nicht zumüllen kann.
edquota -u restricted
Disk quotas for user restricted (uid 1020):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 0 15000000 15000000 0 0 0
Nun müssen die Quotas noch angeschaltet werden
quotaon -vug
Wenn ich das Sambashare mit dem Benutzer restricted im Windows mounte stehen mir nun 14.6GB zur Verfügung und nicht mehr. Schon sind die Quotas schnell und simpel eingerichtet!
Folgend noch ein paar Befehle zum Thema:
Quotas ausschalten
quotaoff -vug
Eine Gruppe einschränken
edquota -g Gruppe
Grace Period ändern
edquota -t
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/sda1 7days 7days
Aktuellen Report der Quotas anzeigen
repquota /media/partition/
*** Report for user quotas on device /dev/sda1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 229228 0 0 15 0 0
noquota -- 602825256 0 0 84026 0 0
restricted -- 820844 15000000 15000000 186 0 0
File Quota
Auch File Quotas sind möglich. Dabei wird die Anzahl der Dateien und Verzeichnisse beschränkt, wie gross diese sind ist egal. Die letzten beiden Zahlen bei edquota -u Benutzer oder edquota -g Gruppe müssen angepasst werden. Natürlich können die beiden Typen von Quotas (Grösse und Anzahl) auch kombiniert werden.
Soft-, Hardlimit und die Grace Period
Ich versuche die drei Begriffe anhand eines Beispiels zu erklären. Wir nehmen an: Softlimit = 50MB, Hardlimit = 60MB und Grace Period = 7 days.
Ein Benutzer füllt sein Verzeichnis zum Beispiel mit 55MB. Nun wird der Benutzer benachrichtigt, dass er das Softlimit von 50MB überschritten hat und in den nächsten 7 Tagen Daten löschen soll, damit er wieder unter die Softwarelimit von 50MB kommt. Kommt er dieser Warnung innert 7 Tagen nicht nach und löscht keine Daten nimmt der aktuell belegte Platz die Hardlimit ein, in diesem Fall 55MB. Jetzt kann er nur noch Daten löschen und muss unter die Softlimit von 50MB kommen. Die Hardlimit von 60MB kann nie überschritten werden! Wenn der Benutzer sein Verzeichnis am ersten Tag füllt kann er es nicht mehr als 60MB füllen.
Weitere Links:
Really nice and impressive blog i found today.