diff --git a/LDP/howto/docbook/HOWTO-INDEX/adminSect.sgml b/LDP/howto/docbook/HOWTO-INDEX/adminSect.sgml index 39c9fa8d..7cc20227 100644 --- a/LDP/howto/docbook/HOWTO-INDEX/adminSect.sgml +++ b/LDP/howto/docbook/HOWTO-INDEX/adminSect.sgml @@ -266,7 +266,7 @@ Quota, Quota mini-HOWTO -Updated: April 2002. +Updated: August 2003. 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. diff --git a/LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml b/LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml index 5a66ac4b..5b6b6456 100644 --- a/LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml +++ b/LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml @@ -3699,7 +3699,7 @@ on an Intel Linux system. Quota, Quota mini-HOWTO -Updated: April 2002. +Updated: August 2003. 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. diff --git a/LDP/howto/linuxdoc/Quota.sgml b/LDP/howto/linuxdoc/Quota.sgml index 602cc57c..19e8b259 100644 --- a/LDP/howto/linuxdoc/Quota.sgml +++ b/LDP/howto/linuxdoc/Quota.sgml @@ -1,276 +1,303 @@ - - -
- -Quota mini-HOWTO -<author>Ralf van Dooren <tt/r.vdooren@snow.nl/ -<date>v0.3, April 2002 -<abstract>Preamble: This document is written by Ralf van Dooren (r.vdooren@snow.nl). - Original text and setup of this document is copyleft-ed by Albert M.C. Tam, many thanks to him - for this initial mini-HOWTO. - - This document is licensed under the GNU Free Documentation License. -<p> - 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. -<p> - 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). -<p> - 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. -</abstract> -<sect>What is Quota? -<p> -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. -<p> - 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. -<sect>Current Status of Quota on Linux -<p> - -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. - -<sect>Requirements for Using Quota on Linux -<p> -<sect1>Kernel -<p> - -The 2.x kernel source is available from -<code>http://www.kernel.org -</code>. Please use an available mirror close to your location to save bandwidth. -<sect1>Quota software -<p> - -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 - -<code>http://www.sourceforge.net/projects/linuxquota -</code> -<p> -<sect>Quota Setup on Linux - Part I: The Configuration -<p> -<sect1>Patch the kernel - -<p>Download the patch for your kernel at: - -<code> -ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/ -</code> -<p> -Choose your kernel version and download the patch. Patch your kernel with the 'patch' command. - -<sect1>Reconfigure your kernel -<p> - -Reconfigure your kernel and add quota support by typing y to: -<code>Quota support (CONFIG_QUOTA) [n] y -</code> - -<p>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. - -<sect1>Compile and install the quota softwares -<p> -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. -<p> -When downloaded do: -<code>$ gzip -dc <downloaded file> | tar xvf -$ cd quota-tools (or whatever directory the software is put in) -$ ./configure -$ make -$ su -# make install - -</code> - -<sect1>Modify your system init script to check quota and turn quota on at boot - time -<p> - -Here's an example: -<code># 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 -</code> - -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. - -<sect1>Modify /etc/fstab -<p> - -Partitions that you have not yet enabled quota normally look something - like: -<code>/dev/hda1 / ext2 defaults 1 1 -/dev/hda2 /usr ext2 defaults 1 1 -</code> - -To enable user quota support on a file system, add "usrquota" to the fourth - field containing the word "defaults" (man fstab for details). -<code>/dev/hda1 / ext2 defaults 1 1 -/dev/hda2 /usr ext2 defaults,usrquota 1 1 -</code> - -Replace "usrquota" with "grpquota", should you need group quota support - on a file system. -<code>/dev/hda1 / ext2 defaults 1 1 -/dev/hda2 /usr ext2 defaults,grpquota 1 1 -</code> - -Need both user quota and group quota support on a file system? -<code>/dev/hda1 / ext2 defaults 1 1 -/dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1 -</code> - -<sect1>Activate the quota system -<p> -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. - -<sec1>Add quotacheck to crontab - -<p> -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: -<code>0 3 * * 0 /sbin/quotacheck -avug -</code> - -<sect>Quota Setup on Linux - Part II: Assigning Quota for Users and Groups -<p> - -This operation is performed with the edquota command (`man edquota` for details). - -<sect1>Assigning quota for a particular user -<p> - -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: -<code>Quotas for user bob: -/dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500) - inodes in use: 356, limits (soft = 1000, hard = 1500) -</code> - -"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. -<sect1>Assigning quota for a particular group -<p> - -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: -<code> Quotas for group games: - /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) - inodes in use: 1454, limits (soft = 3000, hard = 4000) -</code> -<sect1>Assigning quota for a bunch of users with the same value -<p> - -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: -<code>edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd` -</code> - -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. -<sect1>Soft Limit -<p> - -_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. -<sect1>Hard Limit -<p> - -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. -<sect1>Grace Period -<p> - -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": -<code>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 -</code> - -Change the 0 days part to any length of time you feel reasonable. I personally - would choose 7 days (or 1 week). -<sect>Miscellaneous Quota Commands -<p> -<sect1>Quotacheck -<p> - -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?). -<sect1>Repquota -<p> - -Repquota produces a summarized quota information for a file system. Here - is a sample output repquota gives: -<code># 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 -</code> -<sect1>Quotaon and Quotaoff -<p> - -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. - -</article> - +<!doctype linuxdoc system> + +<article> + +<title>Quota mini-HOWTO + +<author>Ralf van Dooren <tt/r.vdooren@snow.nl/ + +<date>v0.5, 2003-08-09 +<abstract> +Preamble: This document is written by Ralf van Dooren (r.vdooren@snow.nl). + Original text and setup of this document is copyleft-ed by Albert M.C. Tam, many thanks to him + for this initial mini-HOWTO. + This document is licensed under the GNU Free Documentation License. + +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. +<p> + 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.21). +<p> + 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. +</abstract> + +<sect>What is quota? + +<sect1>What is quota for? + +<p> +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. +<p> + 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. Various tools are + available for you to administer and automate quota policies on your + system. + +<sect1>Current Status of Quota on Linux +<p> + +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. + +<sect>Requirements for quota +<p> +<sect1>Kernel +<p> + +The 2.x kernel source is available from <url +url="http://www.kernel.org/" name="http://www.kernel.org"> +Please use an available mirror close to your location to save bandwidth. If +you have a recent version of tar, you can download the .bz2 compressed file. + +Untar the kernel: +<code> +cd /usr/src +tar jxvf /path/to/linux-2.4.21-tar.bz2 - for bzip2 kernel - +tar zxvf /path/to/linux-2.4.21-tar.gz - for gzip kernel - +ln -s /usr/src/linux-2.4.21 /usr/src/linux +</code> + +<sect1>Quota software +<p> + +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 <url +url="http://www.sourceforge.net/project/linuxquota" +name="http://www.sourceforge.net/projects/linuxquota" >. + +<sect>Quota setup: installation and configuration + +<sect1>Patch the kernel + +<p>Download the patch for your kernel at: + +<url url="ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/" +name="ftp::/atrey.karlin.mff.cuni.cz/pub/local/jack/quota/" >. + +<p> +Choose your kernel version and download the patch(es). Patch your kernel with the 'patch' command. If there is more than 1 patch for your kernel version, be sure to apply the patches in the correct order. + +You can use this script ( I assume the downloaded patches are in /tmp/quota/ and the kernel has been untarred to /usr/src/linux) : + +<code> +#!/bin/sh + +gunzip /tmp/quota/*.gz +cd /usr/src/linux +COUNT=`ls -1 /tmp/quota/*.diff | wc -l` +for I in `seq 1 $COUNT` +do + patch -p1 < /tmp/quota/quota-2.4.21-$I-*.diff +done +</code> + +<sect1>Reconfigure your kernel +<p> + +Reconfigure your kernel and add quota support. + +<p>Via `make menuconfig` or `make xconfig` you can find the option to support quota under the Filesystems-menu. You can specify extra options if you need them, like 32-bit UID support. + +<p>Save the configuration and compile the kernel. Make sure the new kernel will be used when rebooting the system. + +<sect1>Compile and install the quota softwares +<p> +To be able to use all the features of the new quota system, you'll probably need to download the new quota-package. Download the new quota software via the URL +provided above. +<p> +When downloaded do: +<code>$ gzip -dc <downloaded file> | tar xvf +$ cd quota-tools (or whatever directory the software is put in) +$ ./configure +$ make +$ su +# make install + +</code> + +<sect1>Modify your system init script to check quota and turn quota on at boot + time +<p> + +Here's an example: +<code># 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 +</code> + +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. + +<sect1>Modify /etc/fstab +<p> + +Partitions that you have not yet enabled quota normally look something + like: +<code>/dev/hda1 / ext2 defaults 1 1 +/dev/hda2 /usr ext2 defaults 1 1 +</code> + +To enable user quota support on a file system, add "usrquota" to the fourth + field containing the word "defaults" (man fstab for details). +<code>/dev/hda1 / ext2 defaults 1 1 +/dev/hda2 /usr ext2 defaults,usrquota 1 1 +</code> + +Replace "usrquota" with "grpquota", should you need group quota support + on a file system. +<code>/dev/hda1 / ext2 defaults 1 1 +/dev/hda2 /usr ext2 defaults,grpquota 1 1 +</code> + +Need both user quota and group quota support on a file system? +<code>/dev/hda1 / ext2 defaults 1 1 +/dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1 +</code> + +<sect1>Activate the quota system +<p> +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. + +<sect1>Add quotacheck to crontab + +<p> +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: +<code>0 3 * * 0 /sbin/quotacheck -avug +</code> + +<sect>Quota setup: tools +<p> + +This operation is performed with the edquota command (`man edquota` for details). + +<sect1>Assigning quota for a particular user +<p> + +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: +<code>Quotas for user bob: +/dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500) + inodes in use: 356, limits (soft = 1000, hard = 1500) +</code> + +"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. +<sect1>Assigning quota for a particular group +<p> + +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: +<code> Quotas for group games: + /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) + inodes in use: 1454, limits (soft = 3000, hard = 4000) +</code> +<sect1>Assigning quota for a bunch of users with the same value +<p> + +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: +<code>edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd` +</code> + +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. +<sect1>Soft Limit +<p> + +_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. +<sect1>Hard Limit +<p> + +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. +<sect1>Grace Period +<p> + +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": +<code>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 +</code> + +Change the 0 days part to any length of time you feel reasonable. I personally + would choose 7 days (or 1 week). +<sect>Miscellaneous Quota Commands +<p> +<sect1>Quotacheck +<p> + +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?). +<sect1>Repquota +<p> + +Repquota produces a summarized quota information for a file system. Here + is a sample output repquota gives: +<code># 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 +</code> +<sect1>Quotaon and Quotaoff +<p> + +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. + +</article> +