Este conteúdo não está disponível no idioma selecionado.
Chapter 23. Limiting storage space usage on ext4 with quotas
You have to enable disk quotas on your system before you can assign them. You can assign disk quotas per user, per group or per project. However, if there is a soft limit set, you can exceed these quotas for a configurable period of time, known as the grace period.
23.1. Installing the quota tool
You must install the quota
RPM package to implement disk quotas.
Procedure
Install the
quota
package:# dnf install quota
23.2. Enabling quota feature on file system creation
This procedure describes how to enable quotas on file system creation.
Procedure
Enable quotas on file system creation:
# mkfs.ext4 -O quota /dev/sda
NoteOnly user and group quotas are enabled and initialized by default.
Change the defaults on file system creation:
# mkfs.ext4 -O quota -E quotatype=usrquota:grpquota:prjquota /dev/sda
Mount the file system:
# mount /dev/sda
Additional resources
-
ext4(5)
man page.
23.3. Enabling quota feature on existing file systems
This procedure describes how to enable the quota feature on existing file system using the tune2fs
command.
Procedure
Unmount the file system:
# umount /dev/sda
Enable quotas on existing file system:
# tune2fs -O quota /dev/sda
NoteOnly user and group quotas are initialized by default.
Change the defaults:
# tune2fs -Q usrquota,grpquota,prjquota /dev/sda
Mount the file system:
# mount /dev/sda
Additional resources
-
ext4(5)
man page.
23.4. Enabling quota enforcement
The quota accounting is enabled by default after mounting the file system without any additional options, but quota enforcement is not.
Prerequisites
- Quota feature is enabled and the default quotas are initialized.
Procedure
Enable quota enforcement by
quotaon
for the user quota:# mount /dev/sda /mnt
# quotaon /mnt
NoteThe quota enforcement can be enabled at mount time using
usrquota
,grpquota
, orprjquota
mount options.# mount -o usrquota,grpquota,prjquota /dev/sda /mnt
Enable user, group, and project quotas for all file systems:
# quotaon -vaugP
-
If neither of the
-u
,-g
, or-P
options are specified, only the user quotas are enabled. -
If only
-g
option is specified, only group quotas are enabled. -
If only
-P
option is specified, only project quotas are enabled.
-
If neither of the
Enable quotas for a specific file system, such as
/home
:# quotaon -vugP /home
Additional resources
-
quotaon(8)
man page.
23.5. Assigning quotas per user
The disk quotas are assigned to users with the edquota
command.
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.
Prerequisites
- User must exist prior to setting the user quota.
Procedure
Assign the quota for a user:
# edquota username
Replace username with the user to which you want to assign the quotas.
For example, if you enable a quota for the
/dev/sda
partition and execute the commandedquota testuser
, the following is displayed in the default editor configured on the system:Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sda 44043 0 0 37418 0 0
Change the desired limits.
If any of the values are set to 0, limit is not set. Change them in the text editor.
For example, the following shows the soft and hard block limits for the testuser have been set to 50000 and 55000 respectively.
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sda 44043 50000 55000 37418 0 0
- 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.
Verification
Verify that the quota for the user has been set:
# quota -v testuser Disk quotas for user testuser: Filesystem blocks quota limit grace files quota limit grace /dev/sda 1000* 1000 1000 0 0 0
23.6. Assigning quotas per group
You can assign quotas on a per-group basis.
Prerequisites
- Group must exist prior to setting the group quota.
Procedure
Set a group quota:
# edquota -g groupname
For example, to set a group quota for the
devel
group:# 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/sda 440400 0 0 37418 0 0
- Modify the limits and save the file.
Verification
Verify that the group quota is set:
# quota -vg groupname
23.7. Assigning quotas per project
This procedure assigns quotas per project.
Prerequisites
- Project quota is enabled on your file system.
Procedure
Add the project-controlled directories to
/etc/projects
. For example, the following adds the/var/log
path with a unique ID of 11 to/etc/projects
. Your project ID can be any numerical value mapped to your project.# echo 11:/var/log >> /etc/projects
Add project names to
/etc/projid
to map project IDs to project names. For example, the following associates a project calledLogs
with the project ID of 11 as defined in the previous step.# echo Logs:11 >> /etc/projid
Set the desired limits:
# edquota -P 11
NoteYou can choose the project either by its project ID (
11
in this case), or by its name (Logs
in this case).Using
quotaon
, enable quota enforcement:
Verification
Verify that the project quota is set:
# quota -vP 11
NoteYou can verify either by the project ID, or by the project name.
Additional resources
-
edquota(8)
man page. -
projid(5)
man page. -
projects(5)
man page.
23.8. Setting the grace period for soft limits
If a given quota has soft limits, you can edit the grace period, which is the amount of time for which a soft limit can be exceeded. You can set the grace period for users, groups, or projects.
Procedure
Edit the grace period:
# edquota -t
While other edquota
commands operate on quotas for a particular user, group, or project, the -t
option operates on every file system with quotas enabled.
Additional resources
-
edquota(8)
man page.
23.9. Turning file system quotas off
Use quotaoff
to turn disk quota enforcement off on the specified file systems. Quota accounting stays enabled after executing this command.
Procedure
To turn all user and group quotas off:
# quotaoff -vaugP
-
If neither of the
-u
,-g
, or-P
options are specified, only the user quotas are disabled. -
If only
-g
option is specified, only group quotas are disabled. -
If only
-P
option is specified, only project quotas are disabled. -
The
-v
switch causes verbose status information to display as the command executes.
-
If neither of the
Additional resources
-
quotaoff(8)
man page.
23.10. Reporting on disk quotas
You can create a disk quota report using the repquota
utility.
Procedure
Run the
repquota
command:# repquota
For example, the command
repquota /dev/sda
produces this output:*** Report for user quotas on device /dev/sda 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
View the disk usage report for all quota-enabled file systems:
# repquota -augP
The --
symbol displayed after each user determines whether the block or inode limits have been exceeded. If either soft limit is exceeded, a +
character appears in place of the corresponding -
character. The first -
character 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.
Additional resources
The repquota(8)
man page for more information.