Диск свободен, но запись запрещена: проверяем квоту пользователя

На общем томе свободны сотни гигабайт, а сервис получает Disk quota exceeded. Проверка df показывает ресурс всей файловой системы, тогда как квота ограничивает конкретного владельца, группу или проект. Поэтому противоречия нет: общий запас ещё есть, но доступная приложению доля исчерпана.

Проверить точный объект ограничения

id reportbot
quota -s -u reportbot
quota -s -g reports
findmnt -T /srv/report-data
df -h /srv/report-data
df -i /srv/report-data

Просмотр чужой квоты может требовать дополнительных прав. Нужны также установленный quota-tools и поддержка соответствующего механизма файловой системой. Для XFS, project quota и управляемых хранилищ инструменты и политика могут отличаться. Не включайте квоты на рабочем томе ради диагностики без согласованной процедуры.

Сначала подтвердите владельца файлов и пользователя, который делает запись. Квота обычно связана с идентификатором, а не с тем, какой человек нажал кнопку в приложении. У файлов, создаваемых отдельным сервисным пользователем, расход будет накапливаться у этой учётной записи.

Прочитать soft, hard и grace

Рассмотрим условный отчёт: использовано 12 ГиБ, soft 10 ГиБ, hard 15 ГиБ, grace expired. Мягкая граница допускала временное превышение, но срок закончился. Поэтому новая запись может блокироваться, хотя жёсткая граница ещё не достигнута. В другом случае использование 15 ГиБ при hard 15 ГиБ останавливает дальнейший рост сразу.

Смотрите отдельно блоки и число файлов. Миллионы небольших объектов могут исчерпать файловую квоту при скромном объёме байтов. Очистка одного большого файла тогда почти не изменит ограничивающий показатель. Формат вывода и доступные виды квот представлены в quota(1).

Выбрать действие по данным

Если сервис накопил временные результаты, определите, какие из них действительно можно удалить по правилам приложения. Сначала остановите бесконтрольное создание новых файлов. Удаление произвольных объектов по возрасту может затронуть ещё используемые данные и не решить первопричину.

Если объём оправдан, согласуйте увеличение квоты с владельцем хранилища. Запишите текущую потребность, темп роста, ожидаемое окно хранения и запас. Увеличение hard без пересмотра retention просто переносит дату следующего отказа. Для групповой квоты проверьте соседних потребителей: виновником может быть другой сервис той же группы.

Подтвердить восстановление

После удаления или изменения лимита повторно прочитайте квоту и выполните штатную запись от сервисного пользователя. Например, used снизился до 8 ГиБ, ниже soft 10 ГиБ, новая операция завершилась. Проверьте также создание нового файла: оно обнаружит исчерпанный файловый лимит, который дописывание старого файла могло не затронуть.

Добавьте наблюдение за тем показателем, который вызвал отказ, с учётом soft, hard и grace. Простая тревога df здесь недостаточна. В курсе Linux и Bash для DevOps-инженеров диагностика дисков сочетается с правами и пользователями. Откройте программу, чтобы последовательно искать границу, которая реально ограничивает запись сервиса.

Ещё по теме

Продолжить на практике

  • Linux и Bash для DevOps-инженеров ↗

    Linux для работы с серверами: процессы, права, systemd, сеть, диски и логи. Автоматизируйте повседневные задачи на Bash и разберите типичные сбои сервиса — от занятого порта до переполненного диска.