Examples of quota configuration
These examples help you understand how to configure quotas and read quota reports.
For the following examples, assume that you have a storage system that includes an SVM, vs1
, with one volume, vol1
.
-
To start setting up quotas, you create a new quota policy for the SVM:
cluster1::>volume quota policy create -vserver vs1 -policy-name quota_policy_vs1_1
-
Because the quota policy is new, you assign it to the SVM:
cluster1::>vserver modify -vserver vs1 -quota-policy quota_policy_vs1_1
-
You decide to impose a hard limit of 50MB for each user in
vol1
:cluster1::>volume quota policy rule create -vserver vs1 -policy-name quota_policy_vs1_1 -volume vol1 -type user -target "" -disk-limit 50MB -qtree ""
-
To activate the new rule, you initialize quotas on the volume:
cluster1::>volume quota on -vserver vs1 -volume vol1 -foreground
-
You view the quota report:
cluster1::>volume quota report
The resulting quota report is similar to the following report:
Vserver: vs1 ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol1 user * 0B 50MB 0 - * vol1 user jsmith 49MB 50MB 37 - * vol1 user root 0B - 1 -
The first line shows the default user quota that you created, including the disk limit. Like all default quotas, this default user quota does not display information about disk or file usage. In addition to the quota that was created, two other quotas appear. There is one quota for each user that currently owns files on vol1
. These additional quotas are user quotas that were derived automatically from the default user quota. The derived user quota for the user jsmith
has the same 50MB disk limit as the default user quota. The derived user quota for the root user is a tracking quota (without limits).
If any user on the system (other than the root user) tries to perform an action that would use more than 50MB in vol1
(for example, writing to a file from an editor), the action fails.
-
If you need to provide more space in volume
vol1
to the userjsmith
, then you enter the following command:cluster1::>volume quota policy rule create -vserver vs1 -policy-name quota_policy_vs1_1 -volume vol1 -type user -target jsmith -disk-limit 80MB -qtree ""
This is an explicit user quota, because the user is explicitly listed as the target of the quota rule.
This is a change to an existing quota limit, because it changes the disk limit of the derived user quota for the user
jsmith
on the volume. Therefore, you do not need to reinitialize quotas on the volume to activate the change. -
To resize quotas:
cluster1::>volume quota resize -vserver vs1 -volume vol1 -foreground
Quotas remain in effect while you resize, and the resizing process is short.
The resulting quota report is similar to the following report:
cluster1::> volume quota report Vserver: vs1 ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol1 user * 0B 50MB 0 - * vol1 user jsmith 50MB 80MB 37 - jsmith vol1 user root 0B - 1 - 3 entries were displayed.
The second line now shows a disk limit of 80MB
and a quota specifier of jsmith
.
Therefore, jsmith
can use up to 80MB of space on vol1
even though all other users are still limited to 50MB.
Suppose you want to receive a notification when users reach within 5MB of their disk limits.
-
To create a threshold of 45MB for all users, and a threshold of 75MB for
jsmith
, you change the existing quota rules:cluster1::>volume quota policy rule modify -vserver vs1 -policy quota_policy_vs1_1 -volume vol1 -type user -target "" -qtree "" -threshold 45MB cluster1::>volume quota policy rule modify -vserver vs1 -policy quota_policy_vs1_1 -volume vol1 -type user -target jsmith -qtree "" -threshold 75MB
Because the sizes of the existing rules are changed, you resize quotas on the volume in order to activate the changes. You wait until the resize process is finished.
-
To see the quota report with thresholds, you add the
-thresholds
parameter to thevolume quota report
command:cluster1::>volume quota report -thresholds Vserver: vs1 ----Disk---- ----Files----- Volume Tree Type ID Used Limit Used Limit Quota (Thold) Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol1 user * 0B 50MB 0 - * (45MB) vol1 user jsmith 59MB 80MB 55 - jsmith (75MB) vol1 user root 0B - 1 - ( -) 3 entries were displayed.
The thresholds appear in parentheses in the Disk Limit column.
Suppose you need to partition some space for two projects. You can create two qtrees, named proj1
and proj2
, to accommodate those projects within vol1
.
Currently, users can use as much space in a qtree as they are allotted for the entire volume (provided they did not exceed the limit for the volume by using space in the root or another qtree). In addition, each of the qtrees can grow to consume the entire volume.
-
If you want to ensure that neither qtree grows beyond 20GB, you can create default tree quota on the volume:
cluster1:>>volume quota policy rule create -vserver vs1 -policy-name quota_policy_vs1_1 -volume vol1 -type tree -target "" -disk-limit 20GB
The correct type is tree, not qtree. -
Because this is a new quota, you cannot activate it by resizing. You reinitialize quotas on the volume:
cluster1:>>volume quota off -vserver vs1 -volume vol1 cluster1:>>volume quota on -vserver vs1 -volume vol1 -foreground
You must ensure that you wait for about five minutes before reactivating the quotas on each affected volume, as attempting to activate them almost immediately after running the |
Quotas are not enforced during the reinitialization process, which takes longer than the resizing process.
When you display a quota report, it has several new lines. Some lines are for tree quotas and some lines are for derived user quotas.
The following new lines are for the tree quotas:
----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- ... vol1 tree * 0B 20GB 0 - * vol1 proj1 tree 1 0B 20GB 1 - proj1 vol1 proj2 tree 2 0B 20GB 1 - proj2 ...
The default tree quota that you created appears in the first new line, which has an asterisk (*) in the ID column. In response to the default tree quota on a volume, ONTAP automatically creates derived tree quotas for each qtree in the volume. These are shown in the lines where proj1
and proj2
appear in the Tree
column.
The following new lines are for derived user quotas:
----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- ... vol1 proj1 user * 0B 50MB 0 - vol1 proj1 user root 0B - 1 - vol1 proj2 user * 0B 50MB 0 - vol1 proj2 user root 0B - 1 - ...
Default user quotas on a volume are automatically inherited for all qtrees contained by that volume, if quotas are enabled for qtrees. When you added the first qtree quota, you enabled quotas on qtrees. Therefore, derived default user quotas were created for each qtree. These are shown in the lines where ID is asterisk (*).
Because the root user is the owner of a file, when default user quotas were created for each of the qtrees, special tracking quotas were also created for the root user on each of the qtrees. These are shown in the lines where ID is root.
-
You decide to limit users to less space in the
proj1
qtree than they get in the volume as a whole. You want to keep them from using any more than 10MB in theproj1
qtree. Therefore, you create a default user quota for the qtree:cluster1::>volume quota policy rule create -vserver vs1 -policy-name quota_policy_vs1_1 -volume vol1 -type user -target "" -disk-limit 10MB -qtree proj1
This is a change to an existing quota, because it changes the default user quota for the proj1 qtree that was derived from the default user quota on the volume. Therefore, you activate the change by resizing quotas. When the resize process is complete, you can view the quota report.
The following new line appears in the quota report showing the new explicit user quota for the qtree:
----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol1 proj1 user * 0B 10MB 0 - *
However, the user
jsmith
is being prevented from writing more data to the proj1 qtree because the quota you created to override the default user quota (to provide more space) was on the volume. As you have added a default user quota on theproj1
qtree, that quota is being applied and limiting all the users' space in that qtree, includingjsmith
. -
To provide more space to the user
jsmith
, you add an explicit user quota rule for the qtree with an 80MB disk limit to override the default user quota rule for the qtree:cluster1::>volume quota policy rule create -vserver vs1 -policy-name quota_policy_vs1_1 -volume vol1 -type user -target jsmith -disk-limit 80MB -qtree proj1
Because this is an explicit quota for which a default quota already existed, you activate the change by resizing quotas. When the resize process is complete, you display a quota report.
The following new line appears in the quota report:
----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol1 proj1 user jsmith 61MB 80MB 57 - jsmith
The final quota report is similar to the following report:
cluster1::>volume quota report Vserver: vs1 ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol1 tree * 0B 20GB 0 - * vol1 user * 0B 50MB 0 - * vol1 user jsmith 70MB 80MB 65 - jsmith vol1 proj1 tree 1 0B 20GB 1 - proj1 vol1 proj1 user * 0B 10MB 0 - * vol1 proj1 user root 0B - 1 - vol1 proj2 tree 2 0B 20GB 1 - proj2 vol1 proj2 user * 0B 50MB 0 - vol1 proj2 user root 0B - 1 - vol1 user root 0B - 3 - vol1 proj1 user jsmith 61MB 80MB 57 - jsmith 11 entries were displayed.
The user jsmith
is required to meet the following quota limits to write to a file in proj1
:
-
The tree quota for the
proj1
qtree. -
The user quota on the
proj1
qtree. -
The user quota on the volume.