- Permission to use, copy, distribute this document for non-commercial purposes - is hereby granted, provided that the author's / editor's name and this notice - appear in all copies and/or supporting documents; that this document is not - modified. This document is distributed in hope that it will be useful, but - WITHOUT ANY WARRANTY, either expressed or implied. While every effort has been - taken to ensure the accuracy of the information documented herein, the author / - editor / maintainer assumes NO RESPONSIBILITY for errors, or for damages results - for the use of the information documented herein. -
- This document describes how to enable file system quota on a Linux host, - assigning quota for users and groups, as well as the usage of miscellaneous - quota commands. It is intended for users running kernel 2.x (recently tested - on kernel 2.4.17). -
- Feel free to send feedbacks or comments to r.vdooren@snow.nl if you find an - error, or if any information is missing. I appreciate it. -
-Quota allows you to specify limits on two aspects of disk storage: the - number of inodes a user or a group of users may possess; and the number of - disk blocks that may be allocated to a user or a group of users. -
- The idea behind quota is that users are forced to stay under their disk
- consumption limit, taking away their ability to consume unlimited disk space
- on a system. Quota is handled on a per user, per file system basis. If there
- is more than one file system which a user is expected to create files, then
- quota must be set for each file system separately.
-
-
-Currently, there are some major changes in the way quota works. There are two
-different setups. The tools works the same, but there's a difference in used files. This
-document describes the setup and operation of the _new_ quota setup. As the new setup
-of quota is not in the regular kernel source, this setup needs some patching. We will describe this
-patching and installation of the linuxquota package. If you already have the quota software installed
-on your system, you may or may not have to install this patch and package. You can email me if
-you have any questions about this. I'll try to include a overview of Linux distro's and it's implications
-in a later version of this document.
-
-
-
-
-The 2.x kernel source is available from
-
-
-Depending on the Linux distribution you have, you may, or may not have
-the quota softwares installed on your system. The most recent version of quota
-is available through SourceForge and is in active development. You can reach the
-homepage of the quota-development at
-
-
-
- Download the patch for your kernel at:
-
-
-Choose your kernel version and download the patch. Patch your kernel with the 'patch' command.
-
-
-
-Reconfigure your kernel and add quota support by typing y to:
- Via `make menuconfig` of `make xconfig` you can find the option to support quota
-under the Filesystems-menu.
-
-Make sure the new kernel will be used when rebooting the system.
-
-
-If the quota package is already in your Linux distribution, you don't have to install the quota
-software. If the quota package is not available in your Linux distribution, or if you wan't to
-install the most recent version, you can download the latest version of the quota software source from
-the location mentioned above.
-
-When downloaded do:
-
-
-Here's an example:
-
-
-Partitions that you have not yet enabled quota normally look something
- like:
-
-To activate the quota software you have to reboot the system for the changes you have made
-to take effect. The new kernel with quota support will be loaded and the startup scripts you've
-just created will be executed. At first run, quotacheck will generate the appropiate files to maintain
-the quota databases.
-
-
-Although quota should work with periodical checks, it sometimes helps to run quotacheck periodically, e.g. weekly. Add the following line to your root's crontab:
-
-
-This operation is performed with the edquota command (`man edquota` for details).
-
-
-
-Here's an example. I have a user with the login id bob on my system. The
- command "edquota -u bob" takes me into vi (or editor specified in my $EDITOR
- environment variable) to edit quota for user bob on each partition that has
- quota enabled:
-
-
-Now I have a group games on my system. "edquota -g games" takes me into
- the vi editor again to edit quota for the group games:
-
-
-To rapidly set quotas for, say 100 users, on my system to the same value
- as my user bob, I would first edit bob's quota information by hand, then execute:
-
-
-_Soft limit_ indicates the maximum amount of disk usage a quota user has
- on a partition. When combined with grace period, it acts as the border line,
- which a quota user is issued warnings about his impending quota violation when
- passed.
-
-
-Hard limit works only when grace period is set. It specifies the absolute
- limit on the disk usage, which a quota user can't go beyond his hard limit.
-
-
-Executed with the command "edquota -t", grace period is a time limit before
- the soft limit is enforced for a file system with quota enabled. Time units
- of sec(onds), min(utes), hour(s), day(s), week(s), and month(s) can be used.
- This is what you'll see with the command "edquota -t":
-
-
-
-Quotacheck is used to scan a file system for disk usages, and updates the
- quota record file "aquota.user" to the most recent state. I recommend running
- quotacheck at system bootup, and via cronjob periodically (say, every week?).
-
-
-Repquota produces a summarized quota information for a file system. Here
- is a sample output repquota gives:
-
-
-Quotaon is used to turn on quota accounting; quotaoff to turn it off. Actually
- both files are similar. They are executed at system startup and shutdown.
-
-http://www.kernel.org
-
. Please use an available mirror close to your location to save bandwidth.
-http://www.sourceforge.net/projects/linuxquota
-
-
-ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/
-
-Quota support (CONFIG_QUOTA) [n] y
-
-
-$ gzip -dc
-
-# Check quota and then turn quota on.
-if [ -x /usr/sbin/quotacheck ]
- then
- echo "Checking quotas. This may take some time."
- /usr/sbin/quotacheck -avug
- echo " Done."
- fi
- if [ -x /usr/sbin/quotaon ]
- then
- echo "Turning on quota."
- /usr/sbin/quotaon -avug
- fi
-
-
-The golden rule is that always turn quota on after your file systems in
- /etc/fstab have been mounted, otherwise quota will fail to work. I recommend
- turning quota on right after the part where file systems are mounted in your system init script.
-
-/dev/hda1 / ext2 defaults 1 1
-/dev/hda2 /usr ext2 defaults 1 1
-
-
-To enable user quota support on a file system, add "usrquota" to the fourth
- field containing the word "defaults" (man fstab for details).
-/dev/hda1 / ext2 defaults 1 1
-/dev/hda2 /usr ext2 defaults,usrquota 1 1
-
-
-Replace "usrquota" with "grpquota", should you need group quota support
- on a file system.
-/dev/hda1 / ext2 defaults 1 1
-/dev/hda2 /usr ext2 defaults,grpquota 1 1
-
-
-Need both user quota and group quota support on a file system?
-/dev/hda1 / ext2 defaults 1 1
-/dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1
-
-
-0 3 * * 0 /sbin/quotacheck -avug
-
-
-Quotas for user bob:
-/dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500)
- inodes in use: 356, limits (soft = 1000, hard = 1500)
-
-
-"blocks in use" is the total number of blocks (in kilobytes) a user has
- consumed on a partition.
-
-"inodes in use" is the total number of inodes a user has consumed on a partition.
- Quotas for group games:
- /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
- inodes in use: 1454, limits (soft = 3000, hard = 4000)
-
-edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`
-
-
-assuming that you are using csh, and that you assign your user UID's starting
- with 500.
-
-In addition to edquota, there are 3 terms which you should familiarize
- yourself with: Soft Limit, Hard Limit, and Grace Period.
-Time units may be: days, hours, minutes, or seconds
-Grace period before enforcing soft limits for users:
-/dev/hda2: block grace period: 0 days, file grace period: 0 days
-
-
-Change the 0 days part to any length of time you feel reasonable. I personally
- would choose 7 days (or 1 week).
-# repquota -a
- Block limits File limits
- User used soft hard grace used soft hard grace
- root -- 175419 0 0 14679 0 0
- bin -- 18000 0 0 735 0 0
- uucp -- 729 0 0 23 0 0
- man -- 57 0 0 10 0 0
- user1 -- 13046 15360 19200 806 1500 2250
- user2 -- 2838 5120 6400 377 1000 1500
-
-