This chapter describes how to set up and administer quotas for disk space and inodes. This is a list of the step-by-step instructions in this chapter.
Quotas enable system administrators to control the size of UFS file systems by limiting the amount of disk space and the number of inodes (which roughly corresponds to the number of files) that individual users can acquire. For this reason, quotas are especially useful on the file systems where user home directories reside. As a rule, public and /tmp file systems usually do not benefit as much from the establishment of quotas.
Setting up quotas involves these general steps:
Enable file system quotas by issuing a series of commands, ensuring that quotas are enforced each time the system is rebooted and the file system is mounted. Entries must be added to the /etc/vfstab file, and a quotas file must be created in the root of the file system.
After a quota is created for one user, the quota can be copied as a prototype to set up other user quotas.
Before quotas are turned on, another command checks for consistency by comparing the proposed quotas to the current disk usage to make sure there are no conflicts.
Finally, a command turns on the quotas for one or more file systems.
These steps ensure that quotas are automatically activated on a file system each time it is mounted. For step-by-step instructions, see Chapter 17, Managing Quotas (Tasks).
Once quotas are in place, they can be changed to adjust the amount of disk space or number of inodes that users can consume. Additionally, quotas can be added or removed as system needs change. For instructions on how to change quotas, disable individual quotas, or remove quotas from file systems, see Changing and Removing Quotas.
Using quotas enable system administrators to control the size of UFS file systems by limiting the amount of disk space and the number of inodes (which roughly corresponds to the number of files) that individual users can acquire. For this reason, quotas are especially useful on the file systems where user home directories reside.
Once they are in place, quotas can be changed to adjust the amount of disk space or number of inodes that users can consume. Additionally, quotas can be added or removed as system needs change. See Changing and Removing Quotas for instructions on changing quotas or the amount of time that quotas can be exceeded, disabling individual quotas, or removing quotas from file systems.
In addition, quota status can be monitored. Quota commands enable administrators to display information about quotas on a file system, or search for users who have exceeded their quotas. For procedures that describe how to use these commands, see Checking Quotas.
You can set both soft and hard limits. The system will not allow a user to exceed his or her hard limit. However, a system administrator may set a soft limit (sometimes referred to as a quota), which the user can temporarily exceed. The soft limit must be less than the hard limit.
Once the user exceeds the soft limit, a timer begins. While the timer is ticking, the user is allowed to operate above the soft limit but cannot exceed the hard limit. Once the user goes below the soft limit, the timer is reset. However, if the user's usage remains above the soft limit when the timer expires, the soft limit is enforced as a hard limit. By default, the soft limit timer is set to seven days.
The timeleft field in the repquota and quota commands shows the value of the timer.
For example, let's say a user has a soft limit of 10,000 blocks and a hard limit of 12,000 blocks. If the user's block usage exceeds 10,000 blocks and the timer is also exceeded (more than seven days), the user will not be able to allocate more disk blocks on that file system until his or her usage drops below the soft limit.
A file system provides two resources to the user: blocks (for data) and inodes (for files). Each file consumes one inode. File data is stored in data blocks (usually made up of 1 Kbyte blocks).
Assuming there are no directories, a user can exceed his or her inode quota by creating all empty files (without using any blocks). A user can also use one inode yet exceed his or her block quota by simply creating one file large enough to consume all the data blocks in the user's quota.
You can set up quotas to limit the amount of disk space and number of inodes (roughly equivalent to the number of files) available to users. These quotas are activated automatically each time a file system is mounted. This section describes how to configure file systems for quotas, and how to set up and activate quotas.
Setting up quotas involves these general steps:
A series of commands prepares a file system to accept quotas, ensuring that quotas will be enforced each time the system is rebooted and the file system is mounted. Entries must be added to the /etc/vfstab file, and a quotas file must be created in the top-level directory of the file system.
After a quota is created for one user, it can be copied as a prototype to set up other user quotas.
Before quotas are actually turned on, another command checks for consistency by comparing the proposed quotas with the current disk usage to make sure that there are no conflicts.
Finally, a command turns the quotas on for one or more entire file systems.
These steps ensure that quotas are automatically activated on a file system each time it is mounted. For specific information about these procedures, see Setting Up Quotas (Task Map).
The following table describes the commands you use to set up disk quotas.
Table 17–1 Commands for Setting Up Quotas
Command |
Task |
Man Page |
---|---|---|
edquota |
Sets the hard limits and soft limits on the number of inodes and the amount of disk space for each user | |
quotacheck |
Examines each mounted UFS file system, comparing the file system's current disk usage against information stored in the file system's disk quota file, and resolves inconsistencies | |
Activates the quotas for the specified file systems | ||
quota |
Displays users' disk quotas on mounted file systems to verify that the quotas have been correctly set up |
Before you set up quotas, you need to determine how much space and how many inodes to allocate to each user. If you want to be sure that the total file system space is never exceeded, you can divide the total size of the file system between the number of users. For example, if three users share a 100-Mbyte slice and have equal disk space needs, you could allocate 33 Mbytes to each user.
In environments where not all users are likely to push their limits, you might want to set individual quotas so that they add up to more than the total size of the file system. For example, if three users share a 100-Mbyte slice, you could allocate 40 Mbytes to each.
When you have established a quota for one user by using the edquota command, you can use this quota as a prototype to set the same quota for other users on the same file system.
Before you turn on the quotas, you must first configure the UFS file systems for the quotas, establish quotas for each user, and run the quotacheck command to check for consistency between current disk usage and quota files. Also, if systems are rebooted infrequently, it is a good idea to periodically run the quotacheck command.
The quotas you set up with the edquota command are not enforced until you turn them on by using the quotaon command. If you have properly configured the quota files, the quotas are turned on automatically each time a system is rebooted and the file system is mounted.
Task |
Description |
For Instructions |
---|---|---|
1. Configure a file system for quotas |
Edit the /etc/vfstab file so that quotas are activated each time the file system is mounted, and create a quotas file. | |
2. Set up quotas for a user |
Use the edquota command to create disk quotas and inode quotas for a single user account. | |
3. (Optional) Set up quotas for multiple users |
Use the edquota command to apply prototype quotas to other user accounts. | |
4. Check for consistency |
Use the quotacheck command to compare quotas to current disk usage for consistency across one or more file systems. | |
5. Turn on quotas |
Use the quotaon command to initiate quotas on one or more file systems. |
Edit the /etc/vfstab file and add rq to the mount options field for each UFS file system that will have quotas.
Change directory to the root of the file system that will have quotas.
# touch quotas |
Change permissions to read/write for root access only.
# chmod 600 quotas |
The following /etc/vfstab example shows that the /export/home directory from the system pluto is mounted as an NFS file system on the local system. You can tell quotas are enabled by the rq entry under the mount options column.
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # pluto:/export/home - /export/home nfs - yes rq |
The following example line from /etc/vfstab shows that the local /work directory is mounted with quotas enabled, signified by the rq entry under the mount options column.
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/dsk/c0t4d0s0 /dev/rdsk/c0t4d0s0 /work ufs 3 yes rq |
Use the quota editor to create a temporary file that contains one line of quota information for each mounted UFS file system that has a quotas file in the file system's root directory.
# edquota username |
Where username is the user for whom you want to set up quotas.
Change the number of 1-Kbyte disk blocks (both soft and hard) and the number of inodes (both soft and hard) from 0 (the default) to the quotas you specify for each file system.
Verify the user's quota.
# quota -v username |
-v |
Displays the user's quota information on all mounted file systems where quotas exist. |
username |
Specifies the user name to view quota limits. |
The following example shows the contents of the temporary file opened by edquota on a system where /files is the only mounted file system containing a quotas file in the root directory.
fs /files blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0) |
The following example shows the same line in the temporary file after quotas have been set up.
fs /files blocks (soft = 50, hard = 60) inodes (soft = 90, hard = 100) |
Use the quota editor to apply the quotas you already established for a prototype user to the additional users you specify.
# edquota -p prototype-user username ... |
prototype-user |
User name of the account for which you have set up quotas. |
username ... |
Specifies one or more user names of additional accounts. |
The following example shows how to apply the quotas established for user bob to users mary and john.
# edquota -p bob mary john |
To ensure accurate disk data, the file systems being checked should be quiescent when you run the quotacheck command manually. The quotacheck command is run automatically when a system is rebooted.
Run a consistency check on UFS file systems.
# quotacheck [-va] filesystem |
-v |
(Optional) Identifies the disk quotas for each user on a particular file system. |
-a |
Checks all file systems with an rq entry in the /etc/vfstab file. |
filesystem |
Specifies the file system to check. |
See quotacheck(1M) for more information.
The following example shows how to check quotas for the /export/home file system on the /dev/rdsk/c0t0d0s7 slice. The /export/home file system is the only file system with an rq entry in the /etc/vfstab file.
# quotacheck -va *** Checking quotas for /dev/rdsk/c0t0d0s7 (/export/home) |
Turn on file system quotas.
# quotaon [-v] -a filesystem ... |
-v |
Displays a message for each file system after quotas are turned on. |
-a |
Turns on quotas for all file systems with an rq entry in the /etc/vfstab file. |
filesystem ... |
Turns on quotas for one or more file systems that you specify. More than one file system is specified by separating each file system name with a space. |
The following example shows how to turn quotas on for the file systems on the /dev/dsk/c0t4d0s7 and /dev/dsk/c0t3d0s7 slices.
# quotaon -v /dev/dsk/c0t4d0s7 /dev/dsk/c0t3d0s7 /dev/dsk/c0t4d0s7: quotas turned on /dev/dsk/c0t3d0s7: quotas turned on |
After you have set up and turned on disk quotas and inode quotas, you can check for users who exceed their quotas. In addition, you can check quota information for entire file systems.
The following table describes the commands you use to check quotas.
Table 17–2 Commands for Checking Quotas
Command |
Task |
---|---|
Displays user quotas and current disk use, and information about users who are exceeding their quotas |
|
Displays quotas, files, and the amount of space owned for specified file systems |
You can display the quotas and disk use for individual users on file systems on which quotas have been activated by using the quota command.
Become superuser.
Display user quotas for mounted file systems where quotas are enabled.
# quota [-v] username |
-v |
Displays one or more users' quotas on all mounted file systems that have quotas. |
username |
Is the login name or UID of a user's account. |
The following example shows that the user account identified by UID 301 has one 1–Kbyte quota but has not used any disk space.
# quota -v 301 Disk quotas for bob (uid 301): Filesystem usage quota limit timeleft files quota limit timeleft /export/home 0 1 2 0 2 3 |
Filesystem |
Is the mount point for the file system. |
usage |
Is the current block usage. |
quota |
Is the soft block limit. |
limit |
Is the hard block limit. |
timeleft |
Is the amount of time (in days) left on the quota timer. |
files |
Is the current inode usage. |
quota |
Is the soft inode limit. |
limit |
Is the hard inode limit. |
timeleft |
Is the amount of time (in days) left on the quota timer. |
Display the quotas and disk use for all users on one or more file systems by using the repquota command.
Become superuser.
Display all quotas for one or more file systems, even if there is no usage.
# repquota [-v] -a filesystem |
-v |
Reports on quotas for all users, even those users who do not consume resources. |
-a |
Reports on all file systems. |
filesystem |
Reports on the specified file system. |
The following example shows output from the repquota command on a system that has quotas enabled on only one file system (/export/home).
# repquota -va /dev/dsk/c0t3d0s7 (/export/home): Block limits File limits User used soft hard timeleft used soft hard timeleft #301 -- 0 1 2.0 days 0 2 3 #341 -- 57 50 60 7.0 days 2 90 100 |
Block limits |
|
used |
Is the current block usage. |
soft |
Is the soft block limit. |
hard |
Is the hard block limit. |
timeleft |
Is the amount of time (in days) left on the quota timer. |
File limits |
|
used |
Is the current inode usage. |
soft |
Is the soft inode limit. |
hard |
Is the hard inode limit. |
timeleft |
Is the amount of time (in days) left on the quota timer. |
You can change quotas to adjust the amount of disk space or the number of inodes users can consume. You can also remove quotas, for individual users or from entire file systems, as needed.
The following table describes the commands you use to change quotas or remove quotas.
Table 17–3 Commands for Changing Quotas and Removing Quotas
Command |
Man Page |
Description |
---|---|---|
edquota |
Changes the hard limits and soft limits on the number of inodes or amount of disk space for each user. Also, changes the soft quota time limit for each file system with a quota. |
|
quotaoff |
Turns off quotas for specified file systems. |
By default, users can exceed the soft time limits for their quotas for one week. So, after a week of repeated violations of the soft time limits of either disk space quotas or inode quotas, the system prevents users from using any more inodes or disk blocks.
You can change the length of time that users may exceed their disk space quotas or inode quotas by using the edquota command.
Use the quota editor to create a temporary file that contains soft time limits.
# edquota -t |
Where the -toption specifies the editing of the soft time limits for each file system.
Change the time limits from 0 (the default) to the time limits you specify by numbers and the keywords month, week, day, hour, min, or sec.
This procedure does not affect current quota violators.
The following example shows the contents of the temporary file opened by the edquota command on a system where /export/home is the only mounted file system with quotas. The 0 (default) value means that the default time limit of one week is used.
fs /export/home blocks time limit = 0 (default), files time limit = 0 (default) |
The following example shows the same temporary file after the time limit for exceeding the blocks quota has been changed to two weeks, and the time limit for exceeding the number of files has been changed to 16 days.
fs /export/home blocks time limit = 2 weeks, files time limit = 16 days |
Use the quota editor to open a temporary file containing one line for each mounted file system that has a quotas file in the file system's root directory.
# edquota username |
Where username specifies the user name whose quota you want to change.
Although you can specify multiple users as arguments to the edquota command, the information displayed does not show which user this information belongs to, which could create some confusion.
Enter the number of 1-Kbyte disk blocks, both soft and hard, and the number of inodes, both soft and hard.
Verify that a user's quota has been correctly changed.
# quota -v username |
-v |
Displays user quota information on all mounted file systems with quotas enabled. |
username |
Specifies the user name whose quota you want to check. |
The following example shows the contents of the temporary file opened by the edquota command on a system where /files is the only mounted file system containing a quotas file in the file system's root directory.
fs /files blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0) |
The following example shows the same temporary file after quotas have been changed.
fs /files blocks (soft = 0, hard = 500) inodes (soft = 0, hard = 100) |
The following example shows how to verify that the hard quotas for user smith have been changed to 500 1-Kbyte blocks, and 100 inodes.
# quota -v smith Disk quotas for smith (uid 12): Filesystem usage quota limit timeleft files quota limit timeleft /files 1 0 500 1 0 100 |
Use the quota editor to create a temporary file containing one line for each mounted file system that has a quotas file in its top-level directory.
# edquota username |
Where username specifies the user name whose quota you want to disable.
Although you can specify multiple users as arguments to the edquota command, the information displayed does not show which user this information belongs with, which could create some confusion.
Change the number of 1-Kbyte disk blocks, both soft and hard, and the number of inodes, both soft and hard, to 0.
Be sure you change the values to zero. Do not delete the line from the text file.
Verify that you have disabled a user's quota.
# quota -v username |
-v |
Displays user quota information on all mounted file systems with quotas enabled. |
username |
Specifies the user name (UID) whose quota you want to check. |
The following example shows the contents of the temporary file opened by the edquota command on a system where /files is the only mounted file system that contains a quotas file in the file system's root directory.
fs /files blocks (soft = 50, hard = 60) inodes (soft = 90, hard = 100) |
The following example shows the same temporary file after quotas have been disabled.
fs /files blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0) |
Turn off file system quotas.
# quotaoff [-v] -a filesystem ... |
-v |
Displays a message from each file system when quotas are turned off. |
-a |
Turns off quotas for all file systems. |
filesystem |
Turns off quotas for one or more file systems you specify. More than one file system is specified by separating each file system name with a space. |
The following example shows how to turn off the quotas for the /export/home file system.
# quotaoff -v /export/home /export/home: quotas turned off |