Managing Directory Quota
Directory quotas in GlusterFS allow you to set limits on usage of disk space by directories or volumes.
The storage administrators can control the disk space utilization at the directory and/or volume
levels in GlusterFS by setting limits to allocatable disk space at any level in the volume and directory
hierarchy. This is particularly useful in cloud deployments to facilitate utility billing model.
For now, only Hard limit is supported. Here, the limit cannot be exceeded and attempts to use
more disk space or inodes beyond the set limit will be denied.
System administrators can also monitor the resource utilization to limit the storage for the users
depending on their role in the organization.
You can set the quota at the following levels:
Directory level – limits the usage at the directory level
Volume level – limits the usage at the volume level
You can set the disk limit on the directory even if it is not created. The disk limit is enforced
immediately after creating that directory. For more information on setting disk limit, see .
Enabling Quota
You must enable Quota to set disk limits.
To enable quota
Enable the quota using the following command:
# gluster volume quota VOLNAME enable
For example, to enable quota on test-volume:
# gluster volume quota test-volume enable
Quota is enabled on /test-volume
Disabling Quota
You can disable Quota, if needed.
To disable quota:
Disable the quota using the following command:
# gluster volume quota VOLNAME disable
For example, to disable quota translator on test-volume:
# gluster volume quota test-volume disable
Quota translator is disabled on /test-volume
Setting or Replacing Disk Limit
You can create new directories in your storage environment and set the disk limit or set disk limit for
the existing directories. The directory name should be relative to the volume with the export
directory/mount being treated as "/".
To set or replace disk limit
Set the disk limit using the following command:
# gluster volume quota VOLNAME limit-usage /directorylimit-value
For example, to set limit on data directory on test-volume where data is a directory under the
export directory:
# gluster volume quota test-volume limit-usage /data 10GB
Usage limit has been set on /data
In a multi-level directory hierarchy, the strictest disk limit will be considered for enforcement.
Displaying Disk Limit Information
You can display disk limit information on all the directories on which the limit is set.
To display disk limit information
Display disk limit information of all the directories on which limit is set, using the following
command:
# gluster volume quota VOLNAME list
For example, to see the set disks limit on test-volume:
# gluster volume quota test-volume list
Path__________Limit______Set Size
/Test/data 10 GB 6 GB
/Test/data1 10 GB 4 GB
Display disk limit information on a particular directory on which limit is set, using the following
command:
# gluster volume quota VOLNAME list /directory name
For example, to see the set limit on /data directory of test-volume:
# gluster volume quota test-volume list /data
Path__________Limit______Set Size
/Test/data 10 GB 6 GB
Updating Memory Cache Size
For performance reasons, quota caches the directory sizes on client. You can set timeout indicating
the maximum valid duration of directory sizes in cache, from the time they are populated.
For example: If there are multiple clients writing to a single directory, there are chances that some
other client might write till the quota limit is exceeded. However, this new file-size may not get
reflected in the client till size entry in cache has become stale because of timeout. If writes happen
on this client during this duration, they are allowed even though they would lead to exceeding of
quota-limits, since size in cache is not in sync with the actual size. When timeout happens, the size
in cache is updated from servers and will be in sync and no further writes will be allowed. A timeout
of zero will force fetching of directory sizes from server for every operation that modifies file data
and will effectively disables directory size caching on client side.
To update the memory cache size
Update the memory cache size using the following command:
# gluster volume set VOLNAME features.quota-timeout value
For example, to update the memory cache size for every 5 seconds on test-volume:
# gluster volume set test-volume features.quota-timeout 5
Set volume successful
Removing Disk Limit
You can remove set disk limit, if you do not want quota anymore.
To remove disk limit
Remove disk limit set on a particular directory using the following command:
# gluster volume quota VOLNAME remove /directory name
For example, to remove the disk limit on /data directory of test-volume:
# gluster volume quota test-volume remove /data
Usage limit set on /data is removed