title: How to Fix Quotas
created at: Fri Nov 22 2024 08:43:51 GMT+0000 (Coordinated Universal Time)
updated at: Sat Feb 08 2025 14:22:38 GMT+0000 (Coordinated Universal Time)
---
# How to Fix Quotas
# Overview
!! Warning:
!! Quotas on some [Ubuntu](https://docs.cpanel.net/installation-guide/system-requirements-ubuntu/) servers may not work unless you take [additional actions](https://docs.cpanel.net/knowledge-base/general-systems-administration/how-to-fix-quotas/#how-to-fix-quotas-on-ubuntu) .
!! [CloudLinux 7](https://docs.cpanel.net/installation-guide/system-requirements-cloudlinux/) 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](https://docs.cpanel.net/installation-guide/system-requirements-almalinux/) , 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*](https://docs.cpanel.net/whm/server-configuration/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](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-xfs) and [XFS Quota Management](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/xfsquota) 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](https://en.wikipedia.org/wiki/File_system) .
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:
```bash
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw,usrquota)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/usr/tmpDSK on /tmp type ext3 (rw,noexec,nosuid,loop=/dev/loop0)
/tmp on /var/tmp type none (rw,noexec,nosuid,bind)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
```
!! Note:
!! For more information about the `mount` command, visit the [`mount` command](https://linux.die.net/man/8/mount) documentation.
## Examine the file system table contents
!! Important:
!! 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:
```bash
/dev/sda5 /backup ext3 defaults,noexec 0 0
LABEL=/boot /boot ext3 defaults,usrquota 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/sda5 /swap swap defaults 0 0
/usr/tmpDSK /tmp ext3 defaults,noauto 0 0
```
!! Note:
!! For more information about the `fstab` file, visit the [`fstab` command](https://linux.die.net/man/5/fstab) 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:
```javascript
repquota - a;
```
The output will resemble the following example:
```bash
*** Report for user quotas on device /dev/vda1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 7824884 0 0 218302 0 0
bin -- 73740 0 0 51 0 0
nobody -- 0 0 0 4 0 0
polkitd -- 0 0 0 2 0 0
rpc -- 0 0 0 2 0 0
rpcuser -- 0 0 0 4 0 0
postfix -- 4 0 0 27 0 0
chrony -- 4 0 0 3 0 0
centos -- 13680 0 0 1773 0 0
tss -- 8 0 0 2 0 0
named -- 120 0 0 20 0 0
mailman -- 38888 0 0 2199 0 0
cpanel -- 28 0 0 17 0 0
```
# 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 (`/`):
```bash
root@host [/]# ls -l /*.user
-rwxr--r-- 1 root root 13312 Apr 26 16:39 /aquota.user*
-rwxr--r-- 1 root root 32 Apr 19 16:26 /quota.user*
```
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](https://docs.cpanel.net/whm/server-configuration/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:
```javascript
lsmod | grep quota_v2
```
If your server has loaded its `quota_v2` module, it will produce an output that resembles the following example:
```bash
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:
1. Check your server’s kernel [metapackage](https://askubuntu.com/questions/66257/what-is-the-difference-between-a-meta-package-and-a-package) .\
a. Run the following command to find the server’s current boot image:
```bash
grep BOOT /proc/cmdline | cut -f1 -d' ' | cut -f2 -d'='
```
Your output may resemble the following example:
```bash
/boot/vmlinuz-5.4.0-77-generic
```
b. Run the following command to find the kernel metapackage that corresponds to that boot image:
```bash
dpkg -S /boot/vmlinuz-5.4.0-77-generic | cut -f1 -d:
```
Your output may resemble the following example:
```bash
linux-image-5.4.0-77-generic
```
c. Run the following command to trace the package-dependency chain, where `$example` represents the kernel metapackage:
```bash
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 empty `Reverse Depends` value.
Your output may resemble the following example:
```bash
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:
```
1. Check which `quota_v2` module you must install for your server’s empty `Reverse 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` |
1. Use the following command to install the appropriate `quota_v2` module for your server’s empty `Reverse Depends` kernel
metapackage, where `$example` is the name of the appropriate `quote_v2` module:
```bash
apt install $example
```
!! Note:\
You may also run the `/usr/local/cpanel/scripts/fixquotas` script to automatically install the appropriate `quota_v2` packages for each kernel metapackage on your server.
1. Reboot your server.