Kontingente für ZFS-Dateisysteme können mit den Befehlen zfs set und zfs get festgelegt und angezeigt werden. Im folgenden Beispiel wird für das Dateisystem tank/home/bonwick ein Kontingent von 10 GB gesetzt.
# zfs set quota=10G tank/home/bonwick # zfs get quota tank/home/bonwick NAME PROPERTY VALUE SOURCE tank/home/bonwick quota 10.0G local |
ZFS-Kontingente wirken sich auch auf die Ausgabe der Befehle list und df aus. Beispiel:
# zfs list NAME USED AVAIL REFER MOUNTPOINT tank/home 16.5K 33.5G 8.50K /export/home tank/home/bonwick 15.0K 10.0G 8.50K /export/home/bonwick tank/home/bonwick/ws 6.50K 10.0G 8.50K /export/home/bonwick/ws # df -h /export/home/bonwick Filesystem size used avail capacity Mounted on tank/home/bonwick 10G 8K 10G 1% /export/home/bonwick |
Bitte beachten Sie, dass, obwohl für tank/home 33,5 GB Festplattenkapazität verfügbar sind, wegen des für tank/home/bonwick gesetzten Kontingents für tank/home/bonwick und tank/home/bonwick/ws nur 10 GB verfügbar sind.
Kontingente können nicht auf Werte gesetzt werden, die kleiner als der gegenwärtig vom betreffenden Dataset belegte Speicherplatz sind. Beispiel:
# zfs set quota=10K tank/home/bonwick cannot set quota for 'tank/home/bonwick': size is less than current used or reserved space |
Es ist möglich, refquota für ein Dataset zu setzen, um die durch das Dataset belegbare Festplattenkapazität einzuschränken. Dieser absolute Grenzwert berücksichtigt keine Festplattenkapazität, die von untergeordneten Objekten belegt wird. Beispiel:
# zfs set refquota=10g students/studentA # zfs list NAME USED AVAIL REFER MOUNTPOINT profs 106K 33.2G 18K /profs students 57.7M 33.2G 19K /students students/studentA 57.5M 9.94G 57.5M /students/studentA # zfs snapshot students/studentA@today # zfs list NAME USED AVAIL REFER MOUNTPOINT profs 106K 33.2G 18K /profs students 57.7M 33.2G 19K /students students/studentA 57.5M 9.94G 57.5M /students/studentA students/studentA@today 0 - 57.5M - |
Sie können ein weiteres Kontingent für ein Dataset festlegen, um die Verwaltung der durch Snapshots belegten Festplattenkapazität zu erleichtern. Beispiel:
# zfs set quota=20g students/studentA # zfs list NAME USED AVAIL REFER MOUNTPOINT profs 106K 33.2G 18K /profs students 57.7M 33.2G 19K /students students/studentA 57.5M 9.94G 57.5M /students/studentA students/studentA@today 0 - 57.5M - |
In diesem Szenario kann studentA den mit „refquota“ festgelegten absoluten Grenzwert (10 GB) erreichen und selbst bei vorhandenen Snapshots wiederherzustellende Dateien entfernen.
Im obigen Beispiel wird das kleinere der beiden Kontingente (10 GB im Vergleich mit 20 GB) in der Ausgabe von zfs list angezeigt. Zum Anzeigen der Werte beider Kontingente verwenden Sie den Befehl zfs get. Beispiel:
# zfs get refquota,quota students/studentA NAME PROPERTY VALUE SOURCE students/studentA refquota 10G local students/studentA quota 20G local |
Unter Verwendung des Befehls zfs userquota oder zfs groupquota können Sie ein Benutzer- oder Gruppenkontingent wie folgt einrichten. Beispiel:
# zfs create students/compsci # zfs set userquota@student1=10G students/compsci # zfs create students/labstaff # zfs set groupquota@staff=20GB students/labstaff |
Zeigen Sie das aktuelle Benutzer- oder Gruppenkontingent wie folgt an:
# zfs get userquota@student1 students/compsci NAME PROPERTY VALUE SOURCE students/compsci userquota@student1 10G local # zfs get groupquota@staff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupquota@staff 20G local |
Sie können die von allgemeinen Benutzern und Gruppen belegte Festplattenkapazität durch Abfrage der folgenden Eigenschaften anzeigen:
# zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 227M none POSIX User student1 455M 10G # zfs groupspace students/labstaff TYPE NAME USED QUOTA POSIX Group root 217M none POSIX Group staff 217M 20G |
Um die von einzelnen Benutzern oder Gruppen belegte Festplattenkapazität zu ermitteln, fragen Sie die folgenden Eigenschaften ab:
# zfs get userused@student1 students/compsci NAME PROPERTY VALUE SOURCE students/compsci userused@student1 455M local # zfs get groupused@staff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupused@staff 217M local |
Die Eigenschaften der Benutzer- und Gruppenkontingente werden nicht über den Befehl zfs get all dataset angezeigt. Dieser führt die Eigenschaften aller anderen Dateisysteme auf.
Sie können ein Benutzer- oder Gruppenkontingent folgendermaßen entfernen:
# zfs set userquota@user1=none students/compsci # zfs set groupquota@staff=none students/labstaff |
ZFS-Benutzer- und Gruppenkontingente in ZFS-Dateisystemen besitzen folgende Merkmale:
Ein in einem übergeordneten Dateisystem eingerichtetes Benutzer- oder Gruppenkontingent wird nicht automatisch von einem untergeordneten Dateisystem übernommen.
Allerdings wird das Benutzer- oder Gruppenkontingent angewendet, wenn ein Klon oder Snapshot aus einem Dateisystem mit einem Benutzer- oder Gruppenkontingent erstellt wird. Ebenso wird ein Benutzer- oder Gruppenkontingent in das Dateisystem aufgenommen, wenn mit dem Befehl zfs send ein Datenstrom erstellt wird, auch ohne Anwendung der Option -R.
Benutzer ohne Privilegien haben nur Zugriff auf ihre eigene Festplattenkapazität. Der Root-Benutzer oder ein Benutzer, dem das Privileg userused oder groupused erteilt wurde, kann auf Informationen zur Berechnung der Festplattenkapazität sämtlicher Benutzer und Gruppen zugreifen.
Die Eigenschaften userquota und groupquota können nicht auf ZFS-Volumes, auf einem Dateisystem vor Dateisystem-Version 4 oder auf einem Pool vor Pool-Version 15 eingerichtet werden.
Das Inkrafttreten von Benutzer- und Gruppenkontingenten kann einige Sekunden dauern. Die Verzögerung kann bedeuten, dass Benutzer ihr Kontingent überschreiten, bevor das System dies registriert und weitere Schreibvorgänge mit der Fehlermeldung EDQUOT zurückweist.
Mit dem Legacy-Befehl quota können Sie Benutzerkontingente in einer NFS-Umgebung überprüfen, zum Beispiel beim Einhängen eines ZFS-Dateisystems. Ohne Auswahl von Optionen zeigt der Befehl quota nur Ergebnisse, wenn das Benutzerkontingent überschritten wird. Beispiel:
# zfs set userquota@student1=10m students/compsci # zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 227M none POSIX User student1 455M 10M # quota student1 Block limit reached on /students/compsci |
Wenn Sie das Benutzerkontingent zurücksetzen und die Begrenzung des Kontingents nicht länger überschritten ist, können Sie zur Überprüfung des Benutzerkontingents den Befehl quota -v verwenden. Beispiel:
# zfs set userquota@student1=10GB students/compsci # zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 227M none POSIX User student1 455M 10G # quota student1 # quota -v student1 Disk quotas for student1 (uid 201): Filesystem usage quota limit timeleft files quota limit timeleft /students/compsci 466029 10485760 10485760 |