Disk Quotas:
Disk space can be restricted by implementing disk quotas which alert a
system administrator before a user consumes too much disk space or a
partition becomes full..
Disk quotas can be configured for individual users as well as user
groups. This makes it possible to manage the space allocated for
user-specific files (such as email) separately from the space allocated
to the projects a user works on (assuming the projects are given their
own groups).
In addition, quotas can be set not just to control the number of disk
blocks consumed but to control the number of inodes (data structures
that contain information about files in UNIX file systems).
Because inodes are used to contain file-related information, this allows control over the number of files that can be created.
Because inodes are used to contain file-related information, this allows control over the number of files that can be created.
The
quota
RPM must be installed to implement disk quotas. Configuring Disk Quotas
To implement disk quotas, use the following steps:
- Enable quotas per file system by modifying the
/etc/fstab
file. - Remount the file system(s).
- Create the quota database files and generate the disk usage table.
- Assign quota policies.
Each of these steps is discussed in detail in the following sections.
Enabling Quotas
As root, using a text editor, edit the
/etc/fstab
file.
Edit
/etc/fstab
For example, to use the text editor
vim
type the following:
# vim /etc/fstab
Add the
usrquota
and/or grpquota
options to the file systems that require quotas:
Add quotas
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 /dev/VolGroup00/LogVol02 /home ext3 defaults,usrquota,grpquota 1 2 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 . . .
In this example, the
/home
file system has both user and group quotas enabled.
Note
The following examples assume that a separate
/home
partition was created during the installation of Red Hat Enterprise Linux. The root (/
) partition can be used for setting quota policies in the /etc/fstab
file.
Remounting the File Systems
After adding the
usrquota
and/or grpquota
options, remount each file system whose fstab
entry has been modified. If the file system is not in use by any process, use one of the following methods:
- Issue the
umount
command followed by themount
command to remount the file system. Refer to theman
page for bothumount
andmount
for the specific syntax for mounting and unmounting various file system types. - Issue the
mount -o remount
command (wherefile-system
is the name of the file system) to remount the file system. For example, to remount thefile-system
/home
file system, the command to issue ismount -o remount /home
.
If the file system is currently in use, the easiest method for remounting the file system is to reboot the system.
Creating the Quota Database Files
After each quota-enabled file system is remounted run the
quotacheck
command.
The
quotacheck
command examines
quota-enabled file systems and builds a table of the current disk usage
per file system. The table is then used to update the operating system's
copy of disk usage. In addition, the file system's disk quota files are
updated.
To create the quota files (
aquota.user
and aquota.group
) on the file system, use the -c
option of the quotacheck
command.
Create quota files
For example, if user and group quotas are enabled for the
/home
file system, create the files in the /home
directory:
# quotacheck -cug /home
The
-c
option specifies that the quota files should be created for each file system with quotas enabled, the -u
option specifies to check for user quotas, and the -g
option specifies to check for group quotas.
If neither the
-u
or -g
options are specified, only the user quota file is created. If only -g
is specified, only the group quota file is created.
After the files are created, run the following command to generate
the table of current disk usage per file system with quotas enabled:
# quotacheck -avug
The options used are as follows:
- a
- Check all quota-enabled, locally-mounted file systems
- v
- Display verbose status information as the quota check proceeds
- u
- Check user disk quota information
- g
- Check group disk quota information
After
quotacheck
has finished running,
the quota files corresponding to the enabled quotas (user and/or group)
are populated with data for each quota-enabled locally-mounted file
system such as /home
.
Assigning Quotas per User
The last step is assigning the disk quotas with the
edquota
command.
To configure the quota for a user, as root in a shell prompt, execute the command:
# edquota username
Perform this step for each user who needs a quota. For example, if a quota is enabled in
/etc/fstab
for the /home
partition (/dev/VolGroup00/LogVol02
in the example below) and the command edquota testuser
is executed, the following is shown in the editor configured as the default for the system:Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 0 0 37418 0 0
Note
The text editor defined by the
EDITOR
environment variable is used by edquota
. To change the editor, set the EDITOR
environment variable in your ~/.bash_profile
file to the full path of the editor of your choice.
The first column is the name of the file system that has a quota
enabled for it. The second column shows how many blocks the user is
currently using. The next two columns are used to set soft and hard
block limits for the user on the file system. The
inodes
column shows how many inodes the user is currently using. The last two
columns are used to set the soft and hard inode limits for the user on
the file system.
The hard block limit is the absolute maximum amount of disk space
that a user or group can use. Once this limit is reached, no further
disk space can be used.
The soft block limit defines the maximum amount of disk space that
can be used. However, unlike the hard limit, the soft limit can be
exceeded for a certain amount of time.
That time is known as the grace period. The grace period can be expressed in seconds, minutes, hours, days, weeks, or months.
That time is known as the grace period. The grace period can be expressed in seconds, minutes, hours, days, weeks, or months.
If any of the values are set to 0, that limit is not set. In the text editor, change the desired limits.
Change desired limits
For example:
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000 37418 0 0
To verify that the quota for the user has been set, use the command:
# quotausername
Disk quotas for userusername
(uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sdb 1000* 1000 1000 0 0 0
Assigning Quotas per Group
Quotas can also be assigned on a per-group basis. For example, to set a group quota for the
devel
group (the group must exist prior to setting the group quota), use the command:# edquota -g devel
This command displays the existing quota for the group in the text editor:
Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440400 0 0 37418 0 0
Modify the limits, then save the file.
To verify that the group quota has been set, use the command:
# quota -g devel
Setting the Grace Period for Soft Limits
If a given quota has soft limits, you can edit the grace period
(i.e. the amount of time a soft limit can be exceeded) with the
following command:
# edquota -t
This command works on quotas for inodes or blocks, for either users or groups.
Important
While other
edquota
commands operate on quotas for a particular user or group, the -t
option operates on every file system with quotas enabled. Managing Disk Quotas
If quotas are implemented, they need some maintenance — mostly in the
form of watching to see if the quotas are exceeded and making sure the
quotas are accurate.
Of course, if users repeatedly exceed their quotas or consistently
reach their soft limits, a system administrator has a few choices to
make depending on what type of users they are and how much disk space
impacts their work. The administrator can either help the user determine
how to use less disk space or increase the user's disk quota.
Enabling and Disabling
It is possible to disable quotas without setting them to 0. To turn
all user and group quotas off, use the following command:
# quotaoff -vaug
If neither the
-u
or -g
options are specified, only the user quotas are disabled. If only -g
is specified, only group quotas are disabled. The -v
switch causes verbose status information to display as the command executes.
To enable quotas again, use the
quotaon
command with the same options.
For example, to enable user and group quotas for all file systems, use the following command:
# quotaon -vaug
To enable quotas for a specific file system, such as
/home
, use the following command:# quotaon -vug /home
If neither the
-u
or -g
options are specified, only the user quotas are enabled. If only -g
is specified, only group quotas are enabled. Reporting on Disk Quotas
Creating a disk usage report entails running the
repquota
utility.
Output of
repquota
command
For example, the command
repquota /home
produces this output:
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 kristin -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0
To view the disk usage report for all (option
-a
) quota-enabled file systems, use the command:# repquota -a
While the report is easy to read, a few points should be explained. The
--
displayed after each user is a quick way to determine whether the block
or inode limits have been exceeded. If either soft limit is exceeded, a
+
appears in place of the corresponding -
; the first -
represents the block limit, and the second represents the inode limit.
The
grace
columns are normally
blank. If a soft limit has been exceeded, the column contains a time
specification equal to the amount of time remaining on the grace period.
If the grace period has expired, none
appears in its place. Keeping Quotas Accurate
When a file system fails to unmount cleanly (due to a system crash, for example), it is necessary to run
quotacheck
. However, quotacheck
can be run on a regular basis, even if the system has not crashed. Safe methods for periodically running quotacheck
include:
- Ensuring quotacheck runs on next reboot
- Note: Best method for most systemsThis method works best for (busy) multiuser systems which are periodically rebooted.As root, place a shell script into the
/etc/cron.daily/
or/etc/cron.weekly/
directory—or schedule one using thecrontab -e
command—that contains thetouch /forcequotacheck
command.
This creates an emptyforcequotacheck
file in the root directory, which the system init script looks for at boot time. If it is found, the init script runsquotacheck
. Afterward, the init script removes the/forcequotacheck
file; thus, scheduling this file to be created periodically withcron
ensures thatquotacheck
is run during the next reboot.For more information aboutcron
, refer toman cron
.
Running quotacheck in single user mode
- An alternative way to safely run
quotacheck
is to boot the system into single-user mode to prevent the possibility of data corruption in quota files and run the following commands:#
quotaoff -vaug /
file_system
#
quotacheck -vaug /
file_system
#
quotaon -vaug /
file_system
Running quotacheck on a running system
- If necessary, it is possible to run
quotacheck
on a machine during a time when no users are logged in, and thus have no open files on the file system being checked. Run the commandquotacheck -vaug
;file_system
this command will fail ifquotacheck
cannot remount the givenfile_system
as read-only. Note that, following the check, the file system will be remounted read-write.WarningRunningquotacheck
on a live file system mounted read-write is not recommended due to the possibility of quota file corruption.
Refer to
man cron
for more information about configuring cron
. References
For more information on disk quotas, refer to the
man
pages of the following commands:
quotacheck
edquota
repquota
quota
quotaon
quotaoff
0 comments:
Post a Comment