home *** CD-ROM | disk | FTP | other *** search
- Quota mini-HOWTO
- Albert M.C. Tam bertie@scn.org
- v0.0, 8 August 1997
-
- Preamble: This document is copylefted by Albert M.C. Tam
- (bertie@scn.org). Permission to use, copy, distribute this document
- for non-commerical 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 docu¡
- ment 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 RedHat 4.1 running kernel 2.0.27). Users run¡
- ning older kernels may need to upgrade to a newer kernel version in
- order to take advantage of quota. Feel free to send feedbacks or com¡
- ments to bertie@scn.org if you find an error, or if any information is
- missing. I appreciate it.
-
- 1. What is Quota?
-
-
- 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 comsumption limit, taking away their ability to comsume 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
- seperately.
-
- 2. Current Status of Quota on Linux
-
-
- Quota support has been integrated into kernel since version 1.3.8x I
- heard. Now it is part of the 2.0 release of the Linux kernel. If your
- system doesn't support quota, I really recommend an upgrade.
-
- Currently, quota works for ext2 type file system only.
-
- 3. Requirements for Using Quota on Linux
-
-
- 3.1. Kernel
-
-
- The 2.x kernel source is available from
-
- ______________________________________________________________________
- http://sunsite.unc.edu/pub/Linux/kernel/v2.0
- ______________________________________________________________________
-
-
-
- 3.2. Quota software
-
-
- Depending on the Linux distribution you have, you may, or may not have
- the quota softwares installed on your system. If you don't, then
- download the quota software source from
-
- ______________________________________________________________________
- ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz.
- ______________________________________________________________________
-
-
-
- 4. Quota Setup on Linux - Part I: The Configuration
-
-
- 4.1. Reconfigure your kernel
-
-
- Reconfigure your kernel and add quota support by typing y to:
-
- ______________________________________________________________________
- Quota support (CONFIG_QUOTA) [n] y
- ______________________________________________________________________
-
-
-
- 4.2. Compile and install the quota softwares
-
-
- The quota software source is available from
-
- ______________________________________________________________________
- ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz
- ______________________________________________________________________
-
-
-
- 4.3. time Modify your system init script to check quota and turn
- quota on at boot
-
-
- Here's an example:
-
- ______________________________________________________________________
- # 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 at the end of your system init script, or,
- if you like, right after the part where file systems are mounted in
- your system init script.
-
- 4.4. Modify /etc/fstab
-
-
-
- Partitions that you have not yet enabled quota normally look something
- like:
-
- ______________________________________________________________________
- /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
- ______________________________________________________________________
-
-
-
- 4.5. Create quota record "quota.user" and "quota.group"
-
-
- Both quota record files, quota.user and quota.group, should be owned
- by root, and read-write permission for root and none for anybody else.
-
- Login as root. Go to the root of the partition you wish to enable
- quota, then create quota.user and quota.group by doing:
-
- ______________________________________________________________________
- touch /partition/quota.user
- touch /partition/quota.group
- chmod 600 /partition/quota.user
- chmod 600 /partition/quota.group
- ______________________________________________________________________
-
-
-
- 4.6. Reboot
-
-
- Now reboot system for the changes you have made to take effect.
-
- Also note that subsequent partitions you wish to enable quota in the
- future only require step 4, 5, and 6.
-
-
- 5. Quota Setup on Linux - Part II: Assigning Quota for Users and
- Groups
-
-
- This operation is performed with the edquota command (man edquota for
- details).
-
- I would normally run quotacheck with the flags -avug to obtain the
- most updated filesystems usage prior to editing quota. This is just a
- personal habit, and not a required step however.
-
- 5.1. Assigning quota for a particular user
-
-
- 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:
-
- ______________________________________________________________________
- Quotas for user bob:
- /dev/hda2: 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 comsumed on a partition.
-
- "inodes in use" is the total number of files a user has on a
- partition.
-
- 5.2. Assigning quota for a particular group
-
-
- 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:
-
- ______________________________________________________________________
- Quotas for group games:
- /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
- inodes in use: 1454, limits (soft = 3000, hard = 4000)
- ______________________________________________________________________
-
-
-
- 5.3. Assigning quota for a bunch of users with the same value
-
-
- 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:
-
- ______________________________________________________________________
- 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.
-
- 5.4. Soft Limit
-
-
- _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.
-
- 5.5. Hard Limit
-
-
- 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.
-
- 5.6. Grace Period
-
-
- 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":
-
- ______________________________________________________________________
- 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).
-
- 6. Miscellaneous Quota Commands
-
-
- 6.1. Quotacheck
-
-
- Quotacheck is used to scan a file system for disk usages, and updates
- the quota record file "quota.user" to the most recent state. I
- recommend running quotacheck at system bootup, or via cronjob
- periodically (say, every week?).
-
- 6.2. Repquota
-
-
- Repquota produces a summarized quota information for a file system.
- Here is a sample output repquota gives:
-
- ______________________________________________________________________
- # 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
- ______________________________________________________________________
-
-
-
- 6.3. Quotaon and Quotaoff
-
-
- Quotaon is used to turn on quota accouting; quotaoff to turn it off.
- Actually both files are similar. They are executed at system startup
- and shutdown.
-
-