Red Hat Certified System Administrator(RHCSA)
Configure Local Storage
Setup user and group disk quotas for filesystems
In this guide, you'll learn how to set up user and group disk quotas for file systems in Linux. Disk quotas prevent any user or group from monopolizing storage resources, ensuring fair distribution among all system users. For instance, on a 100-terabyte server, instead of one user consuming 80 terabytes and leaving only 20 terabytes for 99 users, you can enforce quotas—such as allowing each user 1 terabyte of storage.
Overview
Enforcing disk quotas helps maintain balanced resource usage on shared storage systems, preventing individual users or groups from overwhelming the system capacity.
Prerequisites
Before proceeding, ensure the necessary quota management tools are available. On many distributions like CentOS, these tools come preinstalled. If not, install them using DNF:
$ sudo dnf install quota
Enabling Disk Quotas on a Filesystem
Updating /etc/fstab
To begin, decide which file system will have quotas enabled. For example, to enforce quotas on the backup partition, open the /etc/fstab
file with your preferred text editor (e.g., Vim) and modify the corresponding line to include user and group quota options.
If the original entry is:
/dev/vdb1 /mybackups xfs ro,noexec 0 2
Update it to:
/dev/vdb1 /mybackups xfs defaults,usrquota,grqquota 0 2
Here, usrquota
activates user quotas and grqquota
activates group quotas.
Important
Before modifying /etc/fstab, ensure you have a backup of the file. A misconfiguration could render your system unbootable.
Applying Changes
After editing /etc/fstab
, save the file and reboot the machine to apply the changes:
$ sudo vim /etc/fstab
$ sudo systemctl reboot
Configuring Quotas on Different Filesystems
XFS Filesystem
On an XFS filesystem, quota monitoring is managed internally. Once the quota options are enabled in /etc/fstab
, the system will automatically track usage and enforce limits without additional configuration.
ext4 Filesystem
For ext4 filesystems, quotas are not tracked internally. To set up quota tracking on a partition (e.g., /dev/vdb2
mounted at /mnt
), create the necessary quota files (aquota.user
and aquota.group
) by running:
$ sudo quotacheck --create-files --user --group /dev/vdb2
Note: Run the quotacheck
command only once per filesystem to avoid redundancy.
Creating a Test Environment on an XFS Filesystem
To demonstrate quota management, we will use the XFS filesystem mounted at /mybackups
.
Step 1: Set Up a User Directory
Create a directory for a user named Aaron, change its ownership, and generate a 100-megabyte file using the fallocate
command:
$ sudo mkdir /mybackups/aaron/
$ sudo chown aaron:aaron /mybackups/aaron
$ fallocate --length 100M /mybackups/aaron/100Mfile
Step 2: Adjust User Quotas
Use the edquota
command to adjust quotas for the user Aaron:
$ sudo edquota --user aaron
Disk quotas for user aaron (uid 1000):
When the editor launches, you will see current block usage (where one block is typically one kilobyte). For example, 102,400 blocks correspond to 100 megabytes. You can easily set soft and hard limits using the suffixes “M” (megabytes), “G” (gigabytes), or “T” (terabytes). In this scenario, you might set a soft limit of 150M and a hard limit of 200M:
$ sudo edquota --user aaron
Disk quotas for user aaron (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/vdb1 102400 150M 200M 2 0 0
Step 3: Testing Quota Enforcement
Create an additional 60-megabyte file to increase Aaron's disk usage:
$ fallocate --length 60M /mybackups/aaron/60Mfile
At this point, Aaron's total disk usage is 160 megabytes—exceeding the soft limit of 150M but still below the hard limit of 200M. The system marks the soft limit breach with an asterisk and initiates a grace period (typically six days), during which Aaron can reduce disk usage below the soft limit:
$ sudo quota --user aaron
Disk quotas for user aaron (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/vdb1 163840* 153600 204800 6days 3 0 0
If storage usage is not reduced during the grace period, the system will enforce the soft limit strictly.
Step 4: Exceeding the Hard Limit
Attempting to create a file that pushes usage beyond the hard limit will result in an error. For example, creating a 40-megabyte file would exceed the 200-megabyte hard limit:
$ fallocate --length 40M /mybackups/aaron/40Mfile
fallocate: fallocate failed: Disk quota exceeded
Managing Inode Quotas
Disk quotas can also limit the number of files and directories via inode quotas. Each file or directory consumes one inode. For example, the quota editor might display:
$ sudo edquota --user aaron
Disk quotas for user aaron (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/vdb1 102400 0 0 4 0 5
Aaron is using 4 inodes with a hard limit of 5. Creating another file or directory would exceed the inode limit, blocking further file creations.
Adjusting Grace Periods
You can modify the grace periods (the time before soft limits are enforced) using the edquota
command with the corresponding edit period option. This allows you to set separate grace periods for blocks (storage) and inodes (file count).
Managing Group Quotas
Managing group quotas follows a process nearly identical to that for user quotas. The primary difference is using the group flag (e.g., -g) with the edquota
command. To verify group quotas, include the group option with the quota
command.
Conclusion
By following these steps, you can efficiently set up and manage disk quotas for both users and groups on Linux systems. This ensures balanced resource utilization and prevents excessive disk usage by any single user or group.
Now, it's time to get some hands-on lab practice and deepen your understanding of disk quota management!
Watch Video
Watch video content
Practice Lab
Practice lab