Beschreibung: Prüfungskandidaten sollten in der Lage sein, Diskquotas für Benutzer zu verwalten. Dieses Lernziel beinhaltet das Einrichten von Diskquotas für ein Dateisystem, das Bearbeiten, Prüfen und Erstellen von Berichten über Userquotas.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Das Erstellen von Diskquotas hatte in der ersten Version der LPI101 Prüfung nur eine Bewertung von 1, es ist also fragwürdig, ob überhaupt nur eine Frage zu diesem Thema in der Prüfung vorkommt. Trotzdem ist es ein offizielles Thema und wird daher hier behandelt. Abgesehen von der niedrigen Bewertung ist es aber doch so, daß es ein sehr praktischer Mechanismus ist,m den man in der Systemverwaltung häufig brauchen kann.
Worum geht es? Quotas sind Mechanismen, die es erlauben, bestimmten Usern oder Gruppen einen eingeschränkten Platz auf einem bestimmten Dateisystem zu gewähren. Das heißt, es ist z.B. möglich, einem User fest vorzugeben, wieviel Platz er in seinem Homeverzeichnis nutzen darf. Damit kann verhindert werden, daß ein User übermäßig viel Platz in Anspruch nimmt und so den anderen Usern Platz wegnimmt. In der Praxis findet man diesen Mechanismus häufig bei Webservern, die bestimmten Usern eine eingeschränkte Menge Platz anbieten, um Webseiten darauf abzulegen.
Das Prinzip der Quotas läuft darauf hinaus, daß der Kernel bei jedem schreibenden Zugriff eines Users auf ein Dateisystem überprüft, ob der User noch Platz hat, oder ob er seine Quote schon erreicht hat. Um das zu gewährleisten, muß schon beim Mounten des Dateisystems festgelegt werden, daß dieses Dateisystem eine Quotierung des Platzes haben soll. Das wird in der Regel in der Datei /etc/fstab festgelegt, wo bei den Optionen eines Dateisystems die Begriffe usrquota bzw. grpquota angefügt werden. Userquotas sind Einschränkungen für einzelne User, Gruppenquotas entsprechend Einschränkungen für bestimmte Usergruppen.
Als nächstes muß in /etc/fstab angegeben werden, welche Dateisysteme Disk-Quota benutzen sollen. Jedes Dateisystem, das dieses Feature anbieten soll muß hier bei den Mount-Optionen den Begriff usrquota für Userquotas und/oder grpquota für Gruppenquotas enthalten. Eine /etc/fstab-Datei könnte also dann folgendermaßen aussehen:
/dev/hda2 / ext2 defaults,usrquota 1 1 /dev/hda3 swap swap defaults 0 2 /dev/hda5 /usr ext2 defaults 1 2 /dev/hda6 /opt ext2 defaults 1 2 /dev/hda7 /home ext2 defaults,usrquota 1 2Wir haben also sowohl für das Wurzeldateisystem (hier /dev/hda2), als auch für das Dateisystem, auf dem die Homeverzeichnisse liegen (/home auf /dev/hda7) Userquotas angegeben.
Das Programm quotacheck kann entweder für jedes Dateisystem einzeln aufgerufen werden, indem ihm die entsprechende Gerätedatei als Parameter mit angegeben wird, oder es wird mit dem Parameter -a aufgerufen und arbeitet so alle Dateisysteme ab, die in der Datei /etc/fstab eine Quotaangabe gesetzt haben.
Im einfachsten Fall schreiben wir also (als root) die Zeile
quotacheck -avugwas bedeutet, daß alle Dateisysteme bearbeitet werden, die Quotas unterstützen (-a), daß dort sowohl Userquotas (-u), als auch Gruppenquotas (-g) berücksichtigt werden und daß das Programm uns auch mitteilt, was es gerade tut (-v).
Dieser Befehl sollte immer dann angewandt werden, wenn ein neues Dateisystem mit quotas erstellt wurde oder wenn Dateisysteme nicht sauber heruntergefahren wurden, also typischerweise nach einem Systemabsturz, wenn auch fsck ausgeführt wird. Die meisten Distributionen bieten bereits fertige Startdateien an, die diese Aufgabe übernehmen.
Nach der Abarbeitung dieses Befehls existieren auf allen Dateisystemen, die die Mountoption usrquota gesetzt hatten die Datei quota.user und auf allen Dateisystemen, die die grpquota-Option aktiviert hatten die Datei quota.group. Diese Dateien enthalten binär codiert alle wichtigen Angaben über die festgelegten User- bzw. Gruppenquotas, insbesondere auch die Angaben, welche User wieviel Platz bzw. wieviele Dateien auf diesem Dateisystem im Augenblick in Anspruch nehmen.
Der Aufruf von edquota erfolgt entweder zusammen mit einem Usernamen, oder mit der Option -g und einem Gruppennamen. Dadurch wird ein Editor aufgerufen (standardmäßig der vi) und alle Angaben über die Quotas in lesbarer Form in eine Temporärdatei geschrieben. Diese Angaben können jetzt editiert werden. Wird der Editor jetzt mit Sichern der Datei beendet, so schreibt das Programm edquota die entsprechenden Einstellungen wieder binär codiert in die jeweiligen Quotadateien der jeweiligen Dateisysteme.
Typischerweise werden Userquotas für jeden User einzeln definiert. Ein Aufruf von
edquota hanswürde jetzt etwa folgende Ausgabe im Editor nach sich ziehen:
Quotas for user hans: /dev/hda2: blocks in use: 121, limits (soft = 0, hard = 0) inodes in use: 12, limits (soft = 0, hard = 0) /dev/hda7: blocks in use: 1220, limits (soft = 0, hard = 0) inodes in use: 204, limits (soft = 0, hard = 0)Um jetzt Einschränkungen vorzunehmen, können die jeweiligen Limits verändert werden. Dazu stehen uns jeweils ein Soft-Limit und ein Hard-Limit sowohl für die Kilobyte-Blocks (Speicherplatz), als auch für die Inodes (Anzahl der Dateien) zur Verfügung. Der Hard-Limit kann nicht überschritten werden, der Soft-Limit kann überschritten werden, es erfolgt aber eine Warnung. Ein User kann einen Soft-Limit nur für eine bestimmte Zeit überschreiten (standardmäßig eine Woche), dann wird der überschrittene Soft-Limit zum Hard-Limit.
Aus der Beispielausgabe oben können wir entnehmen, daß der User Hans auf der Wurzel (/dev/hda2) 121 Kilobyte in 12 Dateien und im Homeverzeichnis (/dev/hda7) 1,2 Megabyte in 204 Dateien belegt.
Nehmen wir an, wir wollten eine Einschränkung vornehmen, die besagt, daß Hans in seinem Homeverzeichnis 200 Megabyte nutzen darf, auf dem Wurzelverzeichnis aber nur 10 Megabyte. Dann verändern wir die Angaben folgendermaßen:
Quotas for user hans: /dev/hda2: blocks in use: 121, limits (soft = 10000, hard = 11000) inodes in use: 12, limits (soft = 0, hard = 0) /dev/hda7: blocks in use: 1220, limits (soft = 200000, hard = 210000) inodes in use: 204, limits (soft = 0, hard = 0)Wenn wir auch noch die Anzahl der Dateien einschränken wollten, so können wir das mit Hilfe der Inode-Limits machen. Um z.B. festzulegen, daß Hans nicht mehr als 100 Dateien auf dem Wurzelsystem anlegen darf schreiben wir:
Quotas for user hans: /dev/hda2: blocks in use: 121, limits (soft = 10000, hard = 11000) inodes in use: 12, limits (soft = 100, hard = 100) /dev/hda7: blocks in use: 1220, limits (soft = 200000, hard = 210000) inodes in use: 204, limits (soft = 0, hard = 0)Jetzt beenden wir den Editor mit sichern und alle nötigen Veränderungen sind vorgenommen.
Damit wir in einem System mit vielen hundert Usern diesen Vorgang nicht hunderte Male wiederholen müssen, gibt es die Möglichkeit, mit edquota die Einstellungen eines Users auf einen anderen User zu kopieren. Nehmen wir an, wir wollen die Einstellungen, die wir für Hans getroffen haben, jetzt auch für Peter, Michael und Gabi treffen, dann schreiben wir einfach:
edquota -p hans -u peter michael gabiDas -u könnten wir sogar noch weglassen. Jetzt haben alle drei User (peter, michael und gabi) die selben Einschränkungen wie hans.
Wird edquota mit der Option -g Gruppenname aufgerufen und es existieren auf dem System Gruppenquotas, so sind entsprechend die Gruppenquotas zu editieren.
Wird edquota mit der Option -t aufgerufen, so erscheint eine Angabe, die die Gnadenfrist (grace period) einstellbar macht, die zwischen Soft- und Hard-Limit liegt. Gültige Werte für die Zeit sind hier sec, min, hour(s), day(s), week(s) oder month(s).
Wird die Option -g benutzt, so werden die Gruppenquotas angezeigt.
Eine typische Ausgabe dieses Programms würde folgendermaßen aussehen, wenn in unserm Beispiel hans den Befehl quota ausführen würde:
Disk quotas for user hans (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/hda2 121 10000 11000 12 100 100 /dev/hda7 1200 200000 210000 204 0 0Das Feld grace (engl. Gnade) zeigt, wieviel Zeitraum zwischen Softlimit und Hardlimit gelassen wird. Steht hier keine Angabe, so ist die Standardeinstellung (1 Woche) gültig.
Wird quota mit der Option -g aufgerufen, so wird statt der Userquota die Gruppenquota des aufrufenden Users dargestellt.
Wenn ein oder mehrere Quotas überschritten wurden, dann gibt quota einen Rückgabewert ungleich Null zurück.
quotaon -avugstehen, die die Quotas auf allen (-a) Dateisystemen aktiviert, zeigt, was passiert (-v) und sowohl Userquotas (-u), als auch Gruppenquotas (-g) berücksichtigt.
Um von Hand die Quotas auf einzelnen Dateisystemen zu aktivieren, kann der Befehl quotaon aber auch entsprechend mit dem Dateisystem angegeben werden:
quotaon -u /dev/hda7würde also die Userquotas auf dem Dateisystem der Partition /dev/hda7 aktivieren.
Entsprechend funktioniert der Befehl quotaoff um die Quotas abzuschalten.