Disk quota
From Wikipedia:
- "A disk quota is a limit set by a system administrator that restricts certain aspects of file system usage on modern operating systems. The function of setting diskquota to disks, is to allocate limited diskspace in a reasonable way."
This article covers the installation and setup of disk quotas.
Contents
Installing
Disk quotas only require one package:
# pacman -S quota-tools
Enabling
For journaled quotas, see the notes in #Journaled quotas.
1. First, edit Template:Filename to enable the quota mount option(s) on selected file systems:
/dev/sda1 /home ext4 defaults 1 1
- edit it as follows;
/dev/sda1 /home ext4 defaults,usrquota 1 1
- or aditionally enable the group quota mount option;
/dev/sda1 /home ext4 defaults,usrquota,grpquota 1 1
2. Create the quota files in the file-system:
# touch /home/aquota.user # touch /home/aquota.group # For group quota
2. The next step is to remount:
# mount -vo remount /home
4. Create the quota index to enable quotas:
# quotacheck -vgum /home
- or for all partitions with the quota mount options in Template:Filename;
# quotacheck -vguma
5. Finally, enable quotas:
# quotaon -av
Journaled quotas
Enabling journaling for disk quotas adds the same benefits journaled file-systems do for forced shutdowns; the data is less likely to become corrupt.
Setting up journaled quotas is the same as above, except for the mount options:
/dev/sda1 /home ext4 defaults,usrjquota=aquota.user,jqfmt=vfsv0 1 1
or aditionally enable the group quota mount option;
/dev/sda1 /home ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.grp,jqfmt=vfsv0 1 1
Configurating
Replace Template:Codeline as appropiate, and edit the quota as root: Template:Command
- blocks
- 1k blocks
- inodes
- Number of entries in directory file
- soft
- Max number of blocks/inodes user may have on partition before warning is issued and grace period countdown begins. If set to "0" (zero) then no limit is enforced.
- hard
- Max number of blocks/inodes user may have on partition. If set to "0" (zero) then no limit is enforced.
Example setup
Editing the limits as below, for example:
Disk quotas for user testuser (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/sda1 695879 10000 15000 6741 0 0
sets the following restrictions: the Template:Codeline limit means that once testuser uses over 10MB of space a warning gets ensued, and after a period of time, the soft limit gets enforced. The Template:Codeline limit is stricter, so to speak; a user cannot go over this limit.
To alter the grace period:
# edquota -t
Managing
Checking for quota limits and advanced operations
Basics
Use this command to check for quotas on a specific partition:
# repquota /home
Use this command to check for all quotas that apply to a user:
# quota -u $USER
for groups;
# quota -g $GROUP
Copying quotas
The idea is to make a temporary user acount, modify the quota settings for that user, and then copy the generated quota files for all users to use. After setting quota settings for quotauser, copy the settings:
# edquota -p quotauser `awk -F: '$3 > 999 {print $1}' /etc/passwd`
This applies the settings to users with a UID equal to or greater than 1000.
Other commands
There are several useful commands, here are some of them:
repquota -a # Shows the status on diskusage warnquota # Can be used to warn the users about their quota setquota # Non-interactive quota setting--useful for scripting
Lasty, Template:Codeline is used to give thorough information about the quota system: Template:Command