Disk quota exceeded для службы
Сообщение Disk quota exceeded (номер 122, EDQUOT) означает исчерпание квоты, а не места на разделе. Служба, работающая от пользователя с квотой, перестаёт писать, хотя команда показывает свободное место.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Исчерпана квота пользователя службы
Квота считается по владельцу файлов. Служба от отдельного пользователя упирается в его квоту.
-
Исчерпана квота по числу файлов
Квота бывает не только на объём, но и на число файлов. Служба с множеством мелких файлов упирается во вторую раньше первой.
-
Квота задана для группы
Групповые квоты действуют на все файлы группы. Служба может упираться в них, даже если её пользователь не имеет своей квоты.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Квоты по пользователям и их использование.
sudo repquota -a 2>/dev/null | head -20Место на разделе: при квотах оно может быть свободным.
df -h /var/libРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Квота считается по владельцу файлов. Служба от отдельного пользователя упирается в его квоту.
- Как проверить
-
Посмотрите квоты пользователя.
sudo repquota -a 2>/dev/null | head -20 sudo quota -u app 2>/dev/null
- Как исправить
- Увеличьте квоту или уберите ненужные данные. Для служебных пользователей квоты часто задают по недосмотру — стоит проверить, нужны ли они вообще.
- Почему происходит
- Квота бывает не только на объём, но и на число файлов. Служба с множеством мелких файлов упирается во вторую раньше первой.
- Как проверить
-
Посмотрите оба вида квот.
sudo repquota -a 2>/dev/null | head -20
- Как исправить
- Увеличьте предел числа файлов или сократите их количество — например храня данные в одном файле вместо множества мелких.
- Почему происходит
- Групповые квоты действуют на все файлы группы. Служба может упираться в них, даже если её пользователь не имеет своей квоты.
- Как проверить
-
Посмотрите групповые квоты.
sudo repquota -g -a 2>/dev/null | head
- Как исправить
- Разберитесь, чья квота исчерпана: пользователя или группы. Правьте нужную.
Пример вывода
Квота исчерпана при свободном месте. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
myapp[1200]: error: write /var/lib/myapp/data.db: disk quota exceeded
$ df -h /var/lib
/dev/vda2 50G 22G 26G 46% /
$ sudo quota -u app
Filesystem blocks quota limit grace files quota limit
/dev/vda2 2097152 2097152 2097152 15234 50000 50000
Связанные ошибки
- No space left on device в журнале службы Нет места на устройстве: разбор по свободным блокам, по inode, по журналу systemd и по удалённым, но открытым файлам.
- Место есть, а файлы не создаются: кончились inode Ошибка о нехватке места при свободном диске: исчерпаны записи файловой системы. Как найти каталог с миллионом файлов.
- Cannot allocate memory в журнале службы Не удалось выделить память: предел службы, память машины, настройка overcommit, исчерпанные области отображения.
- Docker: no space left on device при запуске контейнеров Раздел с /var/lib/docker заполнен образами и слоями. Как посчитать занятое и что можно удалить безопасно.
- Elasticsearch: max virtual memory areas vm.max_map_count is too low Elasticsearch отказывается стартовать из-за заниженного vm.max_map_count. Как поднять значение и закрепить его.
- Elasticsearch: индексы переведены в режим только для чтения Elasticsearch блокирует запись при нехватке места: пороги watermark. Как снять блокировку правильно.
- Failed with result 'resources' Состояние resources: systemd не смог выделить ресурсы для запуска службы. Чем отличается от кодов 200-й группы и что проверять.
- Input/output error в журнале службы Ошибка ввода-вывода: проблемы носителя, отвалившийся сетевой ресурс, повреждённая файловая система. Что проверять срочно.
Источники
-
quota(1)
Дисковые квоты и их просмотр. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено квотой на служебного пользователя при свободном разделе.