Disk QuotasContributed by &a.mpp;.26 February
1996Quotas are an optional feature of the operating system that allow
you to limit the amount of disk space and/or the number of files a
user, or members of a group, may allocate on a per-file system basis.
This is used most often on timesharing systems where it is desirable
to limit the amount of resources any one user or group of users may
allocate. This will prevent one user from consuming all of the
available disk space.Configuring Your System to Enable Disk QuotasBefore attempting to use disk quotas it is necessary to make
sure that quotas are configured in your kernel. This is done by
adding the following line to your kernel configuration file:
options QUOTAThe
stock GENERIC kernel does not have this enabled
by default, so you will have to configure, build and install a
custom kernel in order to use disk quotas. Please refer to the
Configuring the FreeBSD Kernel
section for more information on kernel configuration.Next you will need to enable disk quotas in
/etc/sysconfig. This is done by changing the
line:
quotas=NO
to:
quotas=YESIf you are running FreeBSD 2.2.2 or later, the configuration
file will be /etc/rc.conf instead and the
variable name changed to:
check_quotas=YESFinally you will need to edit /etc/fstab to
enable disk quotas on a per-file system basis. This is where you
can either enable user or group quotas or both for all of your file
systems.To enable per-user quotas on a file system, add the userquota option to the options field in the
/etc/fstab entry for the file system you want
to to enable quotas on. For example:
/dev/sd1s2g /home ufs rw,userquota 1 2Similarly, to enable group quotas, use the
groupquota option instead of the userquota keyword. To enable both user and
group quotas, change the entry as follows:
/dev/sd1s2g /home ufs rw,userquota,groupquota 1 2By default the quota files are stored in the root directory of
the file system with the names quota.user and
quota.group for user and group quotas
respectively. See man fstab for more
information. Even though that man page says that you can specify an
alternate location for the quota files, this is not recommended
since all of the various quota utilities do not seem to handle this
properly.At this point you should reboot your system with your new
kernel. /etc/rc will automatically run the
appropriate commands to create the initial quota files for all of
the quotas you enabled in /etc/fstab, so there
is no need to manually create any zero length quota files.In the normal course of operations you should not be required to
run the quotacheck, quotaon, or quotaoff commands manually. However, you may
want to read their man pages just to be familiar with their
operation.Setting Quota LimitsOnce you have configured your system to enable quotas, verify
that they really are enabled. An easy way to do this is to run&prompt.root; quota -vYou should see a one line summary of
disk usage and current quota limits for each file system that quotas
are enabled on.You are now ready to start assigning quota limits with the
edquota command.You have several options on how to enforce limits on the amount
of disk space a user or group may allocate, and how many files they
may create. You may limit allocations based on disk space (block
quotas) or number of files (inode quotas) or a combination of both.
Each of these limits are further broken down into two categories:
hard and soft limits.A hard limit may not be exceeded. Once a user reaches their
hard limit they may not make any further allocations on the file
system in question. For example, if the user has a hard limit of
500 blocks on a file system and is currently using 490 blocks, the
user can only allocate an additional 10 blocks. Attempting to
allocate an additional 11 blocks will fail.Soft limits on the other hand can be exceeded for a limited
amount of time. This period of time is known as the grace period,
which is one week by default. If a user stays over his or her soft
limit longer than their grace period, the soft limit will turn into
a hard limit and no further allocations will be allowed. When the
user drops back below the soft limit, the grace period will be
reset.The following is an example of what you might see when you run
then edquota command. When the
edquota command is invoked, you are
placed into the editor specified by the EDITOR
environment variable, or in the vi
editor if the EDITOR variable is not set, to
allow you to edit the quota limits.&prompt.root; edquota -u test
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)You will
normally see two lines for each file system that has quotas enabled.
One line for the block limits, and one line for inode limits.
Simply change the value you want updated to modify the quota limit.
For example, to raise this users block limit from a soft limit of 50
and a hard limit of 75 to a soft limit of 500 and a hard limit of
600, change:
/usr: blocks in use: 65, limits (soft = 50, hard = 75) to:
/usr: blocks in use: 65, limits (soft = 500, hard = 600)The new
quota limits will be in place when you exit the editor.Sometimes it is desirable to set quota limits on a range of
uids. This can be done by use of the option on
the edquota command. First, assign
the desired quota limit to a user, and then run edquota -p
protouser startuid-enduid. For example, if user
test has the desired quota limits, the
following command can be used to duplicate those quota limits for
uids 10,000 through 19,999:&prompt.root; edquota -p test 10000-19999The ability to specify uid ranges was added to the system after
2.1 was released. If you need this feature on a 2.1 system, you
will need to obtain a newer copy of edquota.See man edquota for more detailed
information.Checking Quota Limits and Disk UsageYou can use either the quota or
the repquota commands to check quota
limits and disk usage. The quota
command can be used to check individual user and group quotas and
disk usage. Only the super-user may examine quotas and usage for
other users, or for groups that they are not a member of. The
repquota command can be used to get a
summary of all quotas and disk usage for file systems with quotas
enabled.The following is some sample output from the quota
-v command for a user that has quota limits on two file
systems.
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60On the /usr file system in the above example this
user is currently 15 blocks over their soft limit of 50 blocks and
has 5 days of their grace period left. Note the asterisk * which
indicates that the user is currently over their quota limit.Normally file systems that the user is not using any disk space
on will not show up in the output from the quota command, even if they have a quota limit
assigned for that file system. The option will
display those file systems, such as the
/usr/var file system in the above
example.* Quotas over NFSThis section is still under development.