Annotation of 43BSDReno/share/doc/smm/04.quotas/quotas.ms, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1983 Regents of the University of California.
        !             2: .\" All rights reserved.  The Berkeley software License Agreement
        !             3: .\" specifies the terms and conditions for redistribution.
        !             4: .\"
        !             5: .\"    @(#)quotas.ms   6.2 (Berkeley) 7/31/86
        !             6: .\"
        !             7: .EH 'SMM:4-%''Disc Quotas in a \s-2UNIX\s+2 Environment'
        !             8: .OH 'Disc Quotas in a \s-2UNIX\s+2 Environment''SMM:4-%'
        !             9: .ND 5th July, 1983
        !            10: .TL
        !            11: Disc Quotas in a \s-2UNIX\s+2\s-3\u*\d\s0 Environment
        !            12: .FS
        !            13: * UNIX is a trademark of Bell Laboratories.
        !            14: .FE
        !            15: .AU
        !            16: Robert Elz
        !            17: .AI
        !            18: Department of Computer Science
        !            19: University of Melbourne,
        !            20: Parkville,
        !            21: Victoria,
        !            22: Australia.
        !            23: .AB
        !            24: .PP
        !            25: In most computing environments, disc space is not
        !            26: infinite.
        !            27: The disc quota system provides a mechanism
        !            28: to control usage of disc space, on an
        !            29: individual basis.
        !            30: .PP
        !            31: Quotas may be set for each individual user, on any, or
        !            32: all filesystems.
        !            33: .PP
        !            34: The quota system will warn users when they
        !            35: exceed their allotted limit, but allow some
        !            36: extra space for current work.
        !            37: Repeatedly remaining over quota at logout,
        !            38: will cause a fatal over quota condition eventually.
        !            39: .PP
        !            40: The quota system is an optional part of
        !            41: \s-2VMUNIX\s0 that may be included when the
        !            42: system is configured.
        !            43: .AE
        !            44: .NH 1
        !            45: Users' view of disc quotas
        !            46: .PP
        !            47: To most users, disc quotas will either be of no concern,
        !            48: or a fact of life that cannot be avoided.
        !            49: The
        !            50: \fIquota\fP\|(1)
        !            51: command will provide information on any disc quotas
        !            52: that may have been imposed upon a user.
        !            53: .PP
        !            54: There are two individual possible quotas that may be
        !            55: imposed, usually if one is, both will be.
        !            56: A limit can be set on the amount of space a user
        !            57: can occupy, and there may be a limit on the number
        !            58: of files (inodes) he can own.
        !            59: .PP
        !            60: .I Quota
        !            61: provides information on the quotas that have
        !            62: been set by the system administrators, in each
        !            63: of these areas, and current usage.
        !            64: .PP
        !            65: There are four numbers for each limit, the current
        !            66: usage, soft limit (quota), hard limit, and number
        !            67: of remaining login warnings.
        !            68: The soft limit is the number of 1K blocks (or files)
        !            69: that the user is expected to remain below.
        !            70: Each time the user's usage goes past this limit,
        !            71: he will be warned.
        !            72: The hard limit cannot be exceeded.
        !            73: If a user's usage reaches this number, further
        !            74: requests for space (or attempts to create a file)
        !            75: will fail with an EDQUOT error, and the first time
        !            76: this occurs, a message will be written to the user's
        !            77: terminal.
        !            78: Only one message will be output, until space occupied
        !            79: is reduced below the limit, and reaches it again,
        !            80: in order to avoid continual noise from those
        !            81: programs that ignore write errors.
        !            82: .PP
        !            83: Whenever a user logs in with a usage greater than
        !            84: his soft limit, he will be warned, and his login
        !            85: warning count decremented.
        !            86: When he logs in under quota, the counter is reset
        !            87: to its maximum value (which is a system configuration
        !            88: parameter, that is typically 3).
        !            89: If the warning count should ever reach zero (caused
        !            90: by three successive logins over quota), the
        !            91: particular limit that has been exceeded will be treated
        !            92: as if the hard limit has been reached, and no
        !            93: more resources will be allocated to the user.
        !            94: The \fBonly\fP way to reset this condition is
        !            95: to reduce usage below quota, then log in again.
        !            96: .NH 2 
        !            97: Surviving when quota limit is reached
        !            98: .PP
        !            99: In most cases, the only way to recover from over
        !           100: quota conditions, is to abort whatever activity was in progress
        !           101: on the filesystem that has reached its limit, remove
        !           102: sufficient files to bring the limit back below quota,
        !           103: and retry the failed program.
        !           104: .PP
        !           105: However, if you are in the editor and a write fails
        !           106: because of an over quota situation, that is not
        !           107: a suitable course of action, as it is most likely
        !           108: that initially attempting to write the file
        !           109: will have truncated its previous contents, so should
        !           110: the editor be aborted without correctly writing the
        !           111: file not only will the recent changes be lost, but
        !           112: possibly much, or even all, of the data
        !           113: that previously existed.
        !           114: .PP
        !           115: There are several possible safe exits for a user
        !           116: caught in this situation.
        !           117: He may use the editor \fB!\fP shell escape command to
        !           118: examine his file space, and remove surplus files.
        !           119: Alternatively, using \fIcsh\fP, he may suspend the
        !           120: editor, remove some files, then resume it.
        !           121: A third possibility, is to write the file to
        !           122: some other filesystem (perhaps to a file on /tmp)
        !           123: where the user's quota has not been exceeded.
        !           124: Then after rectifying the quota situation,
        !           125: the file can be moved back to the filesystem
        !           126: it belongs on.
        !           127: .NH 1
        !           128: Administering the quota system
        !           129: .PP
        !           130: To set up and establish the disc quota system,
        !           131: there are several steps necessary to be performed
        !           132: by the system administrator.
        !           133: .PP
        !           134: First, the system must be configured to include
        !           135: the disc quota sub-system.
        !           136: This is done by including the line:
        !           137: .DS
        !           138: options   QUOTA
        !           139: .DE
        !           140: in the system configuration file, then running
        !           141: \fIconfig\fP\|(8)
        !           142: followed by a system configuration\s-3\u*\d\s0.
        !           143: .FS
        !           144: * See also the document ``Building 4.2BSD UNIX Systems with Config''.
        !           145: .FE
        !           146: .PP
        !           147: Second, a decision as to what filesystems need to have
        !           148: quotas applied needs to be made.
        !           149: Usually, only filesystems that house users' home directories,
        !           150: or other user files, will need to be subjected to
        !           151: the quota system, though it may also prove useful to
        !           152: also include \fB/usr\fR.
        !           153: If possible, \fB/tmp\fP should usually be free of quotas.
        !           154: .PP
        !           155: Having decided on which filesystems quotas need to be
        !           156: set upon, the administrator should then allocate the
        !           157: available space amongst the competing needs. How this
        !           158: should be done is (way) beyond the scope of this document.
        !           159: .PP
        !           160: Then, the
        !           161: \fIedquota\fP\|(8)
        !           162: command can be used to actually set the limits desired upon
        !           163: each user. Where a number of users are to be given the
        !           164: same quotas (a common occurrence) the \fB\-p\fP switch
        !           165: to edquota will allow this to be easily accomplished.
        !           166: .PP
        !           167: Once the quotas are set, ready to operate, the system
        !           168: must be informed to enforce quotas on the desired filesystems.
        !           169: This is accomplished with the
        !           170: \fIquotaon\fP\|(8)
        !           171: command.
        !           172: .I Quotaon
        !           173: will either enable quotas for a particular filesystem, or
        !           174: with the \fB\-a\fP switch, will enable quotas for each
        !           175: filesystem indicated in \fB/etc/fstab\fP as using quotas.
        !           176: See
        !           177: \fIfstab\fP\|(5)
        !           178: for details.
        !           179: Most sites using the quota system, will include the
        !           180: line
        !           181: .DS C
        !           182: /etc/quotaon -a
        !           183: .DE
        !           184: in \fB/etc/rc.local\fP.
        !           185: .PP
        !           186: Should quotas need to be disabled, the
        !           187: \fIquotaoff\fP(8)
        !           188: command will do that, however, should the filesystem be
        !           189: about to be dismounted, the
        !           190: \fIumount\fP\|(8)
        !           191: command will disable quotas immediately before the
        !           192: filesystem is unmounted.
        !           193: This is actually an effect of the
        !           194: \fIumount\fP\|(2)
        !           195: system call, and it guarantees that the quota system
        !           196: will not be disabled if the umount would fail
        !           197: because the filesystem is not idle.
        !           198: .PP
        !           199: Periodically (certainly after each reboot, and when quotas
        !           200: are first enabled for a filesystem), the records retained
        !           201: in the quota file should be checked for consistency with
        !           202: the actual number of blocks and files allocated to
        !           203: the user.
        !           204: The
        !           205: \fIquotacheck\fP\|(8)
        !           206: command can be used to accomplish this.
        !           207: It is not necessary to dismount the filesystem, or disable
        !           208: the quota system to run this command, though on
        !           209: active filesystems inaccurate results may occur.
        !           210: This does no real harm in most cases, another run of
        !           211: .I quotacheck
        !           212: when the filesystem is idle will certainly correct any inaccuracy.
        !           213: .PP
        !           214: The super-user may use the
        !           215: \fIquota\fP\|(1)
        !           216: command to examine the usage and quotas of any user, and
        !           217: the
        !           218: \fIrepquota\fP\|(8)
        !           219: command may be used to check the usages and limits for
        !           220: all users on a filesystem.
        !           221: .NH 1
        !           222: Some implementation detail.
        !           223: .PP
        !           224: Disc quota usage and information is stored in a file on the
        !           225: filesystem that the quotas are to be applied to.
        !           226: Conventionally, this file is \fBquotas\fR in the root of
        !           227: the filesystem.
        !           228: While this name is not known to the system in any way,
        !           229: several of the user level utilities "know" it, and
        !           230: choosing any other name would not be wise.
        !           231: .PP
        !           232: The data in the file comprises an array of structures, indexed
        !           233: by uid, one structure for each user on the system (whether
        !           234: the user has a quota on this filesystem or not).
        !           235: If the uid space is sparse, then the file may have holes
        !           236: in it, which would be lost by copying, so it is best to
        !           237: avoid this.
        !           238: .PP
        !           239: The system is informed of the existence of the quota
        !           240: file by the
        !           241: \fIsetquota\fP\|(2)
        !           242: system call.
        !           243: It then reads the quota entries for each user currently
        !           244: active, then for any files open owned by users who
        !           245: are not currently active.
        !           246: Each subsequent open of a file on the filesystem, will
        !           247: be accompanied by a pairing with its quota information.
        !           248: In most cases this information will be retained in core,
        !           249: either because the user who owns the file is running some
        !           250: process, because other files are open owned by the same
        !           251: user, or because some file (perhaps this one) was recently
        !           252: accessed.
        !           253: In memory, the quota information is kept hashed by user-id
        !           254: and filesystem, and retained in an LRU chain so recently
        !           255: released data can be easily reclaimed.
        !           256: Information about those users whose last process has
        !           257: recently terminated is also retained in this way.
        !           258: .PP
        !           259: Each time a block is accessed or released, and each time an inode
        !           260: is allocated or freed, the quota system gets told
        !           261: about it, and in the case of allocations, gets the
        !           262: opportunity to object.
        !           263: .PP
        !           264: Measurements have shown
        !           265: that the quota code uses a very small percentage of the system
        !           266: cpu time consumed in writing a new block to disc.
        !           267: .NH 1
        !           268: Acknowledgments
        !           269: .PP
        !           270: The current disc quota system is loosely based upon a very
        !           271: early scheme implemented at the University of New South
        !           272: Wales, and Sydney University in the mid 70's. That system
        !           273: implemented a single combined limit for both files and blocks
        !           274: on all filesystems.
        !           275: .PP
        !           276: A later system was implemented at the University of Melbourne
        !           277: by the author, but was not kept highly accurately, eg:
        !           278: chown's (etc) did not affect quotas, nor did i/o to a file
        !           279: other than one owned by the instigator.
        !           280: .PP
        !           281: The current system has been running (with only minor modifications)
        !           282: since January 82 at Melbourne.
        !           283: It is actually just a small part of a much broader resource
        !           284: control scheme, which is capable of controlling almost
        !           285: anything that is usually uncontrolled in unix. The rest
        !           286: of this is, as yet, still in a state where it is far too
        !           287: subject to change to be considered for distribution.
        !           288: .PP
        !           289: For the 4.2BSD release, much work has been done to clean
        !           290: up and sanely incorporate the quota code by Sam Leffler and
        !           291: Kirk McKusick at The University of California at Berkeley.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.