Website-Suche

So legen Sie Dateisystem-(Festplatten-)Kontingente unter Ubuntu fest


Das Dateisystemkontingent ist eine integrierte Standardfunktion im Linux-Kernel. Kontingente legen fest, wie viel Speicherplatz eine Datei zur Unterstützung von Benutzeraktivitäten haben sollte. Die Festplattenkontingente begrenzen auch die Anzahl der Dateien, die ein Benutzer auf dem System erstellen kann.

Zu den Dateisystemen, die das Quotensystem unterstützen, gehören unter anderem xfs, ext2, ext4 und ext3. Die Zuweisung von Kontingenten ist dateisystemspezifisch und für jeden Benutzer. Dieser Artikel enthält alles, was Sie über die Arbeit mit dem Quota-Dateisystem in einer Mehrbenutzer-Ubuntu-Umgebung wissen müssen.

Hier wird davon ausgegangen, dass Sie das Ubuntu-System mit einem Benutzer (tecmint) verwenden, dem Sudo-Rechte erteilt wurden. Die hier geteilten Ideen können auf jeder Linux-Distribution funktionieren, solange Sie die richtige Implementierungstechnik verwenden.

Schritt 1: Quota in Ubuntu installieren

Damit die Kontingente bereit und nutzbar sind, installieren Sie das Befehlszeilentool quota mit dem Befehl apt. Zuvor müssen Sie jedoch die Systemsoftwarepakete aktualisieren.

sudo apt update

Verwenden Sie nun den folgenden Befehl, um das quota-Paket auf Ubuntu zu installieren.

sudo apt install quota

Drücken Sie Y und dann ENTER, um den Installationsvorgang zu starten.

Bestätigen Sie die Installationsversion, indem Sie den folgenden Befehl ausführen. Ihre Versionsnummer kann von der unten angezeigten Version abweichen.

quota --version

Schritt 2: Installieren des Moduls für Quota Kernel

Für diejenigen, die ein cloudbasiertes virtuelles System ausführen, fehlen in der Standardinstallation von Ubuntu möglicherweise die Kernelmodule, die die Verwendung von Kontingenten unterstützen. Sie müssen dies mithilfe des Suchtools bestätigen und sicherstellen, dass sich die beiden Module quota_v1 und quota _v2 im Verzeichnis /lib/modules befinden.

find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'

Dies sollte das Ergebnis des obigen Befehls sein.

Machen Sie sich keine Sorgen um die Kernel-Versionen, solange die beiden Module vorhanden sind. Wenn es nicht gefunden wird, verwenden Sie den folgenden Befehl, um die Quote-Kernelmodule wie gezeigt zu installieren.

sudo apt install linux-image-extra-virtual

Sie erhalten die passenden Module, die Sie für die Quotenumsetzung benötigen.

Schritt 3: Aktualisieren der Dateisystem-Mount-Optionen

Damit die Kontingente auf einem bestimmten System aktiv sind, muss es mit entsprechenden Kontingentoptionen bereitgestellt werden. Sie können dies tun, indem Sie den Dateisystemeintrag in der Datei /etc/fstab aktualisieren.

sudo nano /etc/fstab

Sie sollten bereit sein, die Datei entsprechend zu bearbeiten. Der Unterschied zwischen einer fstab-Datei und einer Desktop-Datei besteht darin, wie das /- oder Root-Dateisystem den gesamten Speicherplatz darstellt. Ersetzen Sie die Zeile (/), die auf das Root-System verweist, durch die folgenden Zeilen.

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0

Die Zeilen ändern sich, um den Zugriff auf userquota und grpquota zu ermöglichen. Sie können einen belassen, der nicht Teil der endgültigen Konfiguration ist. Wenn die fstab einige Optionen hatte, fügen Sie die neuen Optionen am Ende der Zeile hinzu. Trennen Sie beim Anhängen die neuen Elemente durch ein Komma, aber ohne Abstand zwischen ihnen.

Hängen Sie das Dateisystem erneut ein, damit die Änderungen wirksam werden.

sudo mount -o remount /

HINWEIS: Stellen Sie sicher, dass zwischen den Optionen in /etc/fstab keine Leerzeichen vorhanden sind, um solche Fehler zu vermeiden.

mount: /etc/fstab: parse error

Die Überprüfung der Verwendung neuer Optionen beim Mounten des Dateisystems in der Datei /proc/mounts erfolgt über grep. Der Befehl zeigt den Root-Dateisystemeintrag in der Datei an.

sudo cat /proc/mounts | grep ' / '

In der Ausgabe können Sie die beiden Optionen sehen, die wir eingerichtet haben. Es ist Zeit, das Quotensystem einzuführen.

Schritt 4: Festplattenkontingente unter Ubuntu aktivieren

Zuerst müssen Sie den Befehl quotacheck ausführen.

sudo quotacheck -ugm /

Der Befehl erstellt zwei Dateien, einen Quota-Benutzer und eine Quota-Gruppe, die Informationen über die Begrenzung und Nutzung des Dateisystems enthalten. Diese Dateien müssen vorhanden sein, bevor Sie mit der Nutzung des Kontingents beginnen.

Hier ist eine Definition der Parameter:

  • -u: symbolisiert, dass eine benutzerbasierte Kontingentdatei erstellt wird.
  • -g: gibt an, dass eine gruppenbasierte Kontingentdatei erstellt wird.
  • -m: Deaktiviert das erneute Mounten des Dateisystems als schreibgeschützt und liefert gleichzeitig genaue Ergebnisse in einer Umgebung, in der der Benutzer weiterhin Dateien speichert. Die Option m ist beim Setup nicht zwingend erforderlich.

Wenn die Verwendung von Kontingenten basierend auf Benutzer oder Gruppe nicht aktiviert werden muss, muss die Option quotacheck nicht ausgeführt werden. Bestätigen Sie dies, indem Sie das Stammverzeichnis mit dem Befehl ls auflisten.

ls /
Beispielausgabe
aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

Wenn die Parameter u und g nicht im quotacheck-Befehl enthalten sind, fehlen die entsprechenden Dateien.

Jetzt können wir das Kontingent für das Root-Dateisystem (/) mit dem folgenden Befehl aktivieren.

sudo quotaon -v /

Schritt 5: Kontingente für einen einzelnen Benutzer konfigurieren

Wir können die Befehle edquota und setquota verwenden, um sie für Benutzer oder Gruppen festzulegen.

Verwendung von edquota

Die edquota-Befehle bearbeiten Kontingente. Beispielsweise können wir ein Kontingent eines tecmint-Benutzers bearbeiten, indem wir Folgendes verwenden:

sudo edquota -u tecmint

Die Verwendung der Option -u gibt an, dass das Kontingent einem Benutzer gehört. Verwenden Sie die Option -g, wenn Sie ein Kontingent bearbeiten müssen, das zu einer Gruppe gehört. Der Befehl öffnet eine Datei mit dem Texteditor Ihrer Wahl.

Die Ausgabe listet den Benutzernamen, die UID, das Dateisystem mit aktiven Kontingenten und die Verwendung von Blöcken und Inodes auf. Ein auf Inodes basierendes Kontingent begrenzt die Anzahl der Dateien und Verzeichnisse, die Benutzer erstellen können, unabhängig von der Größe, die sie auf der Festplatte verwenden. Die meisten Administratoren bevorzugen das blockbasierte Kontingent, das den Speicherplatz steuert.

HINWEIS: Die Verwendung von Blöcken zeigt nicht, wie sie sich abhängig von verschiedenen Faktoren ändern kann, z. B. dem Befehlszeilentool, das sie meldet. Innerhalb der Kontextkontingente unter Ubuntu können wir davon ausgehen, dass ein einzelner Block einem Kilobyte Festplattenspeicher entspricht.

Mit der obigen Befehlszeile verwendet der Benutzer 2032 Blöcke, was 2032 KB Speicherplatz auf /dev/sda1 entspricht. Der Wert 0 deaktiviert sowohl weiche als auch harte Grenzwerte.

Für jeden Quotensatz können weiche und harte Limits eingerichtet werden. Ein Benutzer, der das Soft-Limit überschreitet, hat möglicherweise sein Kontingent überschritten, ist jedoch nicht daran gehindert, mehr Leerzeichen oder Inodes zu verwenden. In einem solchen Fall hat der Benutzer sieben Tage Zeit, seinen Soft-Limit-Speicherplatz einzulösen. Geschieht dies nicht, wird es schwierig, Dateien zu speichern oder zu erstellen.

Ein hartes Limit bedeutet, dass die Erstellung neuer Blöcke oder Inodes stoppt, sobald Sie das Limit erreichen. Benutzer berichten, dass sie bei der Ausführung regelmäßiger Aufgaben Warnungen oder Fehler sehen.

Wir können das Blockkontingent von tecmint so aktualisieren, dass es ein weiches Limit von 100 MB und 110 MB für das harte Limit hat.

Schließen Sie nach der Bearbeitung die Datei und überprüfen Sie die neuen Einstellungen für die Benutzerkontingentbegrenzung mit dem Quota-Befehl.

sudo quota -vs tecmint

HINWEIS: Um Ihren Benutzern die Möglichkeit zu geben, ihre Kontingente zu analysieren, ohne den sudo-Befehl aufzurufen, muss ihnen währenddessen Zugriff zum Lesen von Kontingentdateien gewährt werden Erstellungsphase in Schritt vier. Eine einfache Möglichkeit hierfür besteht darin, eine Benutzergruppe zu erstellen und der Gruppe Zugriff zu gewähren, damit Sie ihr Benutzer hinzufügen können.

Setquota verwenden

setquota aktualisiert die Kontingentinformationen mit einem einzigen Befehl ohne interaktive Einrichtung. Der Befehl erfordert den Benutzernamen und die Einstellung der Soft- und Hard-Limits, die der Block und der Inode verwenden werden. Sie müssen außerdem das Dateisystem angeben, das das Kontingent verwenden soll.

sudo setquota -u tecmint 200M 220M 0 0 /

Der Befehl verdoppelt die blockbasierten Kontingentgrenzen auf 200 Megabyte und 220 Megabyte. Die beiden 0 0 geben an, dass weder die harten noch die weichen Grenzwerte festgelegt sind. Dies ist eine Anforderung, auch wenn keine Notwendigkeit besteht, inode-basierte Kontingente festzulegen.

Verwenden Sie wie üblich den Befehl „quota“, um Ihren Fortschritt zu überprüfen.

sudo quota -vs tecmint

Schritt 6: Kontingentberichte erstellen

Beim Erstellen eines Kontingentberichts muss die Nutzung aller Benutzer angegeben werden. Es wird der Befehl repquota verwendet.

sudo repquota -s /

Die obige Ausgabe ist ein Bericht über das Root-Dateisystem /. Der -s weist repquota an, Ergebnisse in einem für Menschen lesbaren Format bereitzustellen.

Die standardmäßige Sperrfrist beträgt 7 Tage. Die Kulanzspalte benachrichtigt den Benutzer über die Anzahl der Tage, bevor der Zugriff auf die Ressourcenfestplatte verweigert wird.

Schritt 7: Legen Sie die Kulanzfristen für die Konfiguration fest

Der Kulanzzeitraum ist der Zeitraum, in dem ein Benutzer die Erlaubnis erhält, über den Standardzeitraum hinaus zu arbeiten.

sudo setquota -t 864000 864000 /

Der Befehl weist den Block und den Inode an, eine Kulanzfrist von 864000 Sekunden einzuhalten, was 10 Tagen entspricht. Die Einstellung wirkt sich auf alle Benutzer aus. Daher müssen Werte auch dann festgelegt werden, wenn keine Blöcke und Inodes verwendet werden. Der Zeitwert muss in Sekunden angegeben werden.

Bestätigen Sie die Änderungen und prüfen Sie, ob sie wirksam wurden, indem Sie den folgenden Befehl verwenden:

sudo repquota -s /

Häufige Fehlermeldungen

quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

Der obige Fehler tritt häufig auf, wenn Sie versuchen, Kontingente mit dem Befehl qoutaon zu aktivieren, bevor Sie versuchen, den Status eines Kontingents mit dem Befehl quotacheck zu überprüfen.

quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.

Dieser Fehler teilt dem Administrator mit, dass der Kernel dies nicht unterstützt oder dass möglicherweise die falsche Version auf dem Computer installiert ist (wir haben quota_v1 und quota_v2). Bei Ubuntu sind solche Fehler typisch für einen cloudbasierten virtuellen Server.

Beheben Sie den Fehler, indem Sie das Paket Linux-image-extra-virtual mit dem Befehl apt installieren.

quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory

Der Fehler tritt auf, wenn der aktuelle Benutzer keine Berechtigung zum Lesen von Kontingentdateien hat. Als Administrator müssen Sie nur dann die richtigen Berechtigungsänderungen vornehmen oder sudo verwenden, wenn Sie auf Dateien in einem Kontingentsystem oder auf eine Datei zugreifen müssen.

Abschluss

Am Anfang des Artikels haben wir mit Quota-Befehlszeilentools und der Überprüfung der Kernel-Version begonnen und dann erklärt, wie man ein blockbasiertes Kontingent für einen einzelnen Benutzer einrichtet und wie das geht Erstellen Sie einen Bericht über die Kontingentnutzung eines Dateisystems.

Der Artikel behandelt auch häufige Fehler und wie Sie diese vermeiden können, indem Sie ein zusätzliches Paket verwenden oder die Kernelversion auf Ihrem System überprüfen.