From f24a199983522732a0cbecb53d44bee37e05b742 Mon Sep 17 00:00:00 2001 From: Mike Pritchard Date: Mon, 4 Mar 1996 22:50:30 +0000 Subject: [PATCH] Added a section explaining how to configure/use disk quotas. Reviewed by: Guy Helmer, John Fieber, Sean Kelly --- share/doc/handbook/Makefile | 4 +- share/doc/handbook/handbook.sgml | 4 +- share/doc/handbook/quotas.sgml | 192 +++++++++++++++++++++++++++++++ share/doc/handbook/sections.sgml | 3 +- 4 files changed, 199 insertions(+), 4 deletions(-) create mode 100644 share/doc/handbook/quotas.sgml diff --git a/share/doc/handbook/Makefile b/share/doc/handbook/Makefile index 044d6d350ca1..1fb94be68b9d 100644 --- a/share/doc/handbook/Makefile +++ b/share/doc/handbook/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.8 1996/02/11 00:16:06 jkh Exp $ +# $Id: Makefile,v 1.9 1996/02/16 13:28:19 jkh Exp $ SRCS= authors.sgml basics.sgml bibliography.sgml boothelp.sgml SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml dialup.sgml @@ -7,7 +7,7 @@ SRCS+= firewalls.sgml glossary.sgml goals.sgml SRCS+= handbook.sgml history.sgml hw.sgml install.sgml kerberos.sgml SRCS+= kernelconfig.sgml kerneldebug.sgml memoryuse.sgml SRCS+= mirrors.sgml nfs.sgml nutshell.sgml -SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml relnotes.sgml +SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml quotas.sgml relnotes.sgml SRCS+= routing.sgml scsi.sgml sections.sgml sio.sgml SRCS+= skey.sgml slipc.sgml slips.sgml stable.sgml submitters.sgml sup.sgml SRCS+= synching.sgml troubleshooting.sgml userppp.sgml uart.sgml diff --git a/share/doc/handbook/handbook.sgml b/share/doc/handbook/handbook.sgml index d23610187d89..2ac580a7717f 100644 --- a/share/doc/handbook/handbook.sgml +++ b/share/doc/handbook/handbook.sgml @@ -1,4 +1,4 @@ - + . &firewalls; &printing; + + "as; The X-Window System

Pending the completion of this section, please refer to documentation supplied by the + +

+ Disk quotas + <author> Mike Pritchard <tt/mpp@FreeBSD.org/ + <date> 26 February 1996, (c) 1996 + + <abstract> This document describes configuration and administration + of disk quotas under FreeBSD. </abstract> + + <toc> +--> + + <chapt><heading>Disk quotas<label id="quotas"></heading> + + <p><em>Contributed by &a.mpp;.<newline>26 February 1996</em> + + Quotas 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. + +<sect><heading>Configuring your system to enable disk quotas</heading> + + <p>Before 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: +<verb> +options QUOTA +</verb> + The 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 + <ref id="kernelconfig" name="Configuring the FreeBSD Kernel"> + section for more information on kernel configuration. + + <p>Next you will need to enable disk quotas in <tt>/etc/sysconfig</tt>. + This is done by changing the line: +<verb> +quotas=NO +</verb> +to: +<verb> +quotas=YES +</verb> + + <p>Finally you will need to edit <tt>/etc/fstab</tt> 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. + + <p>To enable per-user quotas on a file system, add the + <tt>userquota</tt> option to the options field in the + <tt>/etc/fstab</tt> entry for the file system you want to + to enable quotas on. For example: +<verb> +/dev/sd1s2g /home ufs rw,userquota 1 2 +</verb> + + <p>Similarly, to enable group quotas, use the <tt>groupquota</tt> + option instead of the <tt>userquota</tt> keyword. To enable both + user and group quotas, change the entry as follows: +<verb> +/dev/sd1s2g /home ufs rw,userquota,groupquota 1 2 +</verb> + + <p>By default the quota files are stored in the root directory of the file + system with the names <tt>quota.user</tt> and <tt>quota.group</tt> + for user and group quotas respectively. See <tt>man fstab</tt> 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. + + <p>At this point you should reboot your system with your new kernel. + <tt>/etc/rc</tt> will automatically run the appropriate commands to + create the initial quota files for all of quotas you enabled + in <tt>/etc/fstab</tt>, so there is no need to manually create any + zero length quota files. + + <p>In the normal course of operations you should not be required + to run the <tt>quotacheck</tt>, <tt>quotaon</tt>, or <tt>quotaoff</tt> + commands manually. However, you may want to read their man pages + just to be familiar with their operation. + +<sect><heading>Setting quota limits</heading> + + <p>Once you have configured your system to enable quotas, verify that + they really are enabled. An easy way to do this is to run + <tt>quota -v</tt>. You should see a one line summary of disk + usage and current quota limits for each file system that + quotas are enabled on. + + <p>You are now ready to start assigning quota limits + with the <tt>edquota</tt> command. + + <p>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. + + <p>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. + + <p>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. + + <p>The following is an example of what you might see when + you run then <tt>edquota</tt> command. When the <tt>edquota</tt> + command is invoked, you are placed into the editor specified by the + <tt>EDITOR</tt> environment variable, or in the <tt>vi</tt> editor + if the <tt>EDITOR</tt> variable is not set, to + allow you to edit the quota limits. +<verb> +# 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) +</verb> + 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: +<verb> +/usr: blocks in use: 65, limits (soft = 50, hard = 75) +</verb> +to: +<verb> +/usr: blocks in use: 65, limits (soft = 500, hard = 600) +</verb> + The new quota limits will be in place when you exit the editor. + + <p>See <tt>man edquota</tt> for more detailed information. + +<sect><heading>Checking quota limits and disk usage</heading> + + <p>You can use either the <tt>quota</tt> or the <tt>repquota</tt> + commands to check quota limits and disk usage. The <tt>quota</tt> + 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 <tt>repquota</tt> command can be used to get a summary of all + quotas and disk usage for file systems with quotas enabled. + + <p>The following is some sample output from the <tt>quota -v</tt> + command for a user that has quota limits on two file systems. + +<verb> +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 60 +</verb> + On 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. + + <p>Normally file systems that the user is not using any disk space + on will not show up in the output from the <tt>quota</tt> command, + even if they have a quota limit assigned for that file system. + The <tt>-v</tt> option will display those file systems, such as + the <tt>/usr/var</tt> file system in the above example. + +<sect><heading>* Quotas over NFS</heading> + + <p>This section is still under development. + diff --git a/share/doc/handbook/sections.sgml b/share/doc/handbook/sections.sgml index 945d7ea85b93..1bd287a1a6b7 100644 --- a/share/doc/handbook/sections.sgml +++ b/share/doc/handbook/sections.sgml @@ -1,4 +1,4 @@ -<!-- $Id: sections.sgml,v 1.8 1996/02/11 00:16:15 jkh Exp $ --> +<!-- $Id: sections.sgml,v 1.9 1996/02/16 13:28:21 jkh Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- Entities containing all the pieces of the handbook are --> @@ -34,6 +34,7 @@ <!ENTITY ports SYSTEM "ports.sgml"> <!ENTITY ppp SYSTEM "ppp.sgml"> <!ENTITY printing SYSTEM "printing.sgml"> +<!ENTITY quotas SYSTEM "quotas.sgml"> <!ENTITY relnotes SYSTEM "relnotes.sgml"> <!ENTITY routing SYSTEM "routing.sgml"> <!ENTITY scsi SYSTEM "scsi.sgml">