Setting User and Group Quotas on a ZFS File System
You can set a user quota or a group quota by using the zfs userquota
or zfs groupquota
commands, respectively. For example:
$ zfs create students/compsci $ zfs set userquota@student1=10G students/compsci $ zfs create students/labstaff $ zfs set groupquota@labstaff=20GB students/labstaff
Display the current user quota or group quota as follows:
$ zfs get userquota@student1 students/compsci NAME PROPERTY VALUE SOURCE students/compsci userquota@student1 10G local $ zfs get groupquota@labstaff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupquota@labstaff 20G local
You can display general user or group disk space usage by querying the following properties:
$ zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 350M none POSIX User student1 426M 10G $ zfs groupspace students/labstaff TYPE NAME USED QUOTA POSIX Group labstaff 250M 20G POSIX Group root 350M none
To identify individual user or group disk space usage, query the following properties:
$ zfs get userused@student1 students/compsci NAME PROPERTY VALUE SOURCE students/compsci userused@student1 550M local $ zfs get groupused@labstaff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupused@labstaff 250 local
The user and group quota properties are not displayed by using the zfs get all
dataset command, which displays a list of all of the other file system properties.
You can remove a user quota or group quota as follows:
$ zfs set userquota@student1=none students/compsci $ zfs set groupquota@labstaff=none students/labstaff
User and group quotas on ZFS file systems provide the following features:
-
A user quota or group quota that is set on a parent file system is not automatically inherited by a descendent file system.
-
However, the user or group quota is applied when a clone or a snapshot is created from a file system that has a user or group quota. Likewise, a user or group quota is included with the file system when a stream is created by using the
zfs send
command, even without the-R
option. -
Unprivileged users can only access their own disk space usage. The root user or a user who has been granted the
userused
orgroupused
privilege, can access everyone's user or group disk space accounting information. -
The
userquota
andgroupquota
properties cannot be set on ZFS volumes, on a file system prior to file system version 4, or on a pool prior to pool version 15.
Enforcement of user and group quotas might be delayed by several seconds. This delay means that a user might exceed the user quota before the system notices that the user is over quota and refuses additional writes with the EDQUOT
error message.
You can use the legacy quota
command to review user quotas in an NFS environment, for example, where a ZFS file system is mounted. Without any options, the quota
command only displays output if the user's quota is exceeded. For example:
$ zfs set userquota@student1=10m students/compsci $ zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 350M none POSIX User student1 550M 10M $ quota student1 Block limit reached on /students/compsci
If you reset the user quota and the quota limit is no longer exceeded, you can use the quota -v
command to review the user's quota. For example:
$ zfs set userquota@student1=10GB students/compsci $ zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 350M none POSIX User student1 550M 10G $ quota student1 $ quota -v student1 Disk quotas for student1 (uid 102): Filesystem usage quota limit timeleft files quota limit timeleft /students/compsci 563287 10485760 10485760 - - - - -