How to Fix Quotas
Last modified: May 2, 2023
Overview
-
Quotas on some Ubuntu® servers may not work unless you take additional actions.
-
CloudLinux™ 7 updates may break quotas. For this reason, after each CloudLinux 7 update, you must run the
/usr/local/cpanel/scripts/fixquotas
script and then remount the file system. -
If you disable and then reenable quotas, servers that use the XFS® filesystem and run the CentOS 7, CloudLinux, AlmaLinux OS, or Red Hat® Enterprise Linux® (RHEL) 7 operating systems require one of the following additional actions for quotas to function properly:
-
Use WHM’s Initial Quota Setup interface (WHM » Home » Server Configuration » Initial Quota Setup) to configure quotas.
-
Use the command line interface to run the
/usr/local/cpanel/scripts/fixquotas
script and then remount the file system. -
Perform the
/usr/local/cpanel/scripts/fixquotas
script’s actions manually. For more information, read the Red Hat XFS and XFS Quota Management documentation.
-
This document describes how to confirm whether you properly configured the disk space quotas on your system’s devices. We enable quotas by default on new installations, but you must enable quotas for any device on which cPanel accounts exist.
Verify whether your device uses quotas
To verify whether your devices use quotas, connect to your system via SSH as the root
user and perform the following actions in your command line interface:
Run the mount command
Run the mount
command without any arguments to obtain basic information about all your currently-mounted file systems.
Entries that contain the usrquota
variable are quota-enabled.
For example, the following output from the mount
command confirms that the /dev/mapper/VolGroup00-LogVol00
device uses quotas because it contains a usrquota
variable:
|
|
For more information about the mount
command, visit the mount
command documentation.
Examine the file system table contents
The /etc/fstab
file is read-only. You cannot configure quotas by editing this file, only see whether quotas are enabled using the usrquota
variable.
The file system table (/etc/fstab
) file maps devices to their respective mount points within a system, displaying configuration options in six columns. These options determine the purpose of each file system and how it should mount:
Column | Description | Example |
---|---|---|
Device | The physical device that contains the data. | /dev/sda5 |
Mountpoint | The filepath to the device’s data storage location. | /backup |
FStype | The type of file system. | ext3 |
Options | The mount options for the file system. These options include the usrquota variable if quotas are enabled, as well as whether the system or users can execute programs on the device. |
defaults,noexec |
Dump | The dump option. This option has no impact on whether quotas are enabled. The dump backup utility uses this option. |
0 |
Pass | The fsck option. This option has no impact on whether quotas are enabled. The fsck file checking utility uses this option. |
0 |
To display the contents of the /etc/fstab
file, run the cat /etc/fstab
command. The /etc/fstab
file will resemble the following example, where entries that contain the usrquota
variable are quota-enabled:
|
|
For more information about the fstab
file, visit the fstab
command documentation, or connect to your system via SSH and run the man fstab
command.
List the file systems in the /etc/mtab file with quota options enabled
Run the following command to print all of the file systems that exist in the /etc/mtab
file with read and write privileges and quota options enabled:
repquota -a
The output will resemble the following example:
|
|
Enable quotas on your devices
After you verify which devices do not use quotas, connect to those devices via SSH as the root
user and run the /usr/local/cpanel/scripts/initquotas
script. This script adds the usrquota
variable to the Options
column in the /etc/fstab
file.
Verify that you enabled quota files
After you run the /usr/local/cpanel/scripts/initquotas
script, use the ls
command with a wildcard character to confirm the following:
- The quota files exist in the root directory (
/
). - Each file is greater than 0 bytes.
For example, the following ls -l /*.user
command lists the contacts of the root directory (/
):
|
|
The -l
flag in this example causes ls
output to display in long-listing format. This format displays the following information:
- The file’s permissions.
- Which user owns the file.
- Which group owns the file.
- The size of the file in bytes.
- The file’s last modification date.
If there are no quota files in the root directory, run the /usr/local/cpanel/scripts/initquotas
script again to create these files.
If quota files do exist, but quotas do not function, delete these quota files and then run the /usr/local/cpanel/scripts/initquotas
or /usr/local/cpanel/scripts/fixquotas
scripts.
A note about Virtuozzo®
If you use Virtuozzo, you must perform the following actions:
-
Enable second-level (per-user) quotas in addition to first-level (per-container) quotas.
-
Enable second-level quotas from the parent node.
For more information, read our Enable Quotas on a Virtuozzo VPS documentation.
How to fix quotas on Ubuntu
Some servers that run the Ubuntu operating system do not have the quota_v2
kernel module that enables quotas. If your server runs the Ubuntu operating system and quotas do not work, it may not have this module.
Check if your server has loaded its quota_v2 module
Run this command to check if your server has loaded its quota_v2
module:
lsmod | grep quota_v2
If your server has loaded its quota_v2
module, it will produce an output that resembles the following example:
quota_v2 16384 1
quota_tree 20480 1 quota_v2
If your server produces a response that does not contain quota_v2
, you must install the appropriate quota_v2
module.
Install your server’s quota_v2 module
To install your server’s appropriate quota_v2
module, perform the following steps:
-
Check your server’s kernel metapackage.
a. Run the following command to find the server’s current boot image:
Your output may resemble the following example:grep BOOT /proc/cmdline | cut -f1 -d' ' | cut -f2 -d'='
/boot/vmlinuz-5.4.0-77-generic
b. Run the following command to find the kernel metapackage that corresponds to that boot image:
Your output may resemble the following example:dpkg -S /boot/vmlinuz-5.4.0-77-generic | cut -f1 -d:
linux-image-5.4.0-77-generic
c. Run the following command to trace the package-dependency chain, where
$example
represents the kernel metapackage:apt-cache --installed rdepends $example
Run this command for each kernel metapackage name in the
Reverse Depends
value until you find the metapackage with an emptyReverse Depends
value.Your output may resemble the following example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
root@ubuntu:~# apt-cache --installed rdepends linux-image-5.4.0-77-generic linux-image-5.4.0-77-generic Reverse Depends: linux-image-virtual root@ubuntu:~# apt-cache --installed rdepends linux-image-virtual linux-image-virtual Reverse Depends: linux-virtual linux-virtual root@ubuntu:~# apt-cache --installed rdepends linux-virtual linux-virtual Reverse Depends:
-
Check which
quota_v2
module you must install for your server’s emptyReverse Depends
kernel metapackage:Kernel metapackage quota_v2 package linux-aws
linux-modules-extra-aws
linux-aws-edge
linux-modules-extra-aws-edge
linux-aws-lts-20.04
linux-modules-extra-aws-lts-20.04
linux-azure
linux-modules-extra-azure
linux-azure-cvm
linux-modules-extra-azure-cvm
linux-azure-edge
linux-modules-extra-azure-edge
linux-azure-fde
linux-modules-extra-azure-fde
linux-azure-lts-20.04
linux-modules-extra-azure-lts-20.04
linux-gcp
linux-modules-extra-gcp
linux-gcp-edge
linux-modules-extra-gcp-edge
linux-gcp-lts-20.04
linux-modules-extra-gcp-lts-20.04
linux-gke
linux-modules-extra-gke
linux-gke-5.4
linux-modules-extra-gke-5.4
linux-gkeop
linux-modules-extra-gkeop
linux-gkeop-5.4
linux-modules-extra-gkeop-5.4
linux-ibm
linux-modules-extra-ibm
linux-ibm-lts-20.04
linux-modules-extra-ibm-lts-20.04
linux-virtual
linux-image-extra-virtual
linux-virtual-hwe-20.04
linux-image-extra-virtual-hwe-20.04
linux-virtual-hwe-20.04-edge
linux-image-extra-virtual-hwe-20.04-edge
-
Use the following command to install the appropriate
quota_v2
module for your server’s emptyReverse Depends
kernel metapackage, where$example
is the name of the appropriatequote_v2
module:apt install $example
Note:You may also run the/usr/local/cpanel/scripts/fixquotas
script to automatically install the appropriatequota_v2
packages for each kernel metapackage on your server. -
Reboot your server.