
Без квот один пользователь или процесс может занять всё дисковое пространство и положить систему. На веб-серверах с несколькими клиентами, почтовых серверах и файловых хранилищах квоты - обязательный инструмент администратора.
Среда: Ubuntu 22.04 LTS, файловая система ext4, раздел /home.
1. Установка утилит quota
sudo apt update
sudo apt install quota quotatool -y
# Проверяем версию
quota --version
# Quota utilities version 4.062. Включение квот в файловой системе
Квоты нужно активировать на уровне файловой системы. Для этого добавляем опции монтирования в /etc/fstab.
Смотрим текущий /etc/fstab:
cat /etc/fstab
Находим строку с нужным разделом (например /home):
UUID=abc123... /home ext4 defaults 0 2
Меняем defaults на defaults,usrquota,grpquota:
UUID=abc123... /home ext4 defaults,usrquota,grpquota 0 2
Перемонтируем раздел без перезагрузки:
sudo mount -o remount /home
# Проверяем, что опции применились
mount | grep /home
# /dev/sda2 on /home type ext4 (rw,relatime,usrquota,grpquota)

3. Создание файлов базы квот
# Создаём файлы quota.user и quota.group на разделе
sudo quotacheck -ugm /home
# Проверяем созданные файлы
ls -la /home/aquota.*
# -rw------- 1 root root 8192 May 22 10:00 /home/aquota.group
# -rw------- 1 root root 8192 May 22 10:00 /home/aquota.user
Флаги quotacheck:
-u- создать файл квот для пользователей-g- создать файл квот для групп-m- не размонтировать раздел (для корневого FS)
# Включаем квоты
sudo quotaon -v /home
# /dev/sda2 [/home]: group quotas turned on
# /dev/sda2 [/home]: user quotas turned on4. Установка квот для пользователя
Команда edquota открывает редактор (по умолчанию nano или vi) с текущими настройками квоты:
sudo edquota -u username
Содержимое файла квоты:
Disk quotas for user username (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 4096 0 0 100 0 0
Меняем нули на лимиты:
Disk quotas for user username (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 4096 512000 614400 0 0 0
Здесь:
blocks- текущее использование (в KB для ext4)soft- мягкий лимит: 512 000 KB = 500 MB. Пользователь получает предупреждение, но может превысить его на время grace period (по умолчанию 7 дней)hard- жёсткий лимит: 614 400 KB = 600 MB. Превысить нельзя никакinodes- количество файлов (0 = без ограничений)
Сохраняем и выходим из редактора.

5. Копирование квот между пользователями
Если нужно установить одинаковые квоты для 20 пользователей, копируем настройки от одного к остальным:
# Копируем квоту пользователя template_user на user1, user2, user3
sudo edquota -p template_user user1 user2 user3
# Или копируем на всех пользователей из файла
cat users.txt | xargs sudo edquota -p template_user6. Установка квот для группы
Групповые квоты суммируют использование всех членов группы:
sudo edquota -g groupname
Disk quotas for group groupname (gid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 8192 2048000 2457600 0 0 0
Здесь группе выделено 2 GB (soft) и 2.4 GB (hard).
7. Настройка grace period
Grace period - время, в течение которого пользователь может превышать мягкий лимит. По умолчанию 7 дней для блоков и 7 дней для inodes.
sudo edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda2 3days 7days
Меняем на 3 дня для блоков. После grace period запись новых данных блокируется, даже если жёсткий лимит не достигнут.
8. Мониторинг через repquota
repquota выводит отчёт об использовании квот для всего раздела:
# Отчёт по пользователям
sudo repquota -u /home
# Отчёт по группам
sudo repquota -g /home
# Все разделы с включёнными квотами
sudo repquota -au
Пример вывода:
*** Report for user quotas on device /dev/sda2
Block grace time: 3days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 4096 0 0 126 0 0
alice -- 98304 512000 614400 2041 0 0
bob +- 498688 512000 614400 2days 8192 0 0
charlie ++ 602112 512000 614400 9856 0 0
Символы в колонке статуса:
--- в пределах мягкого лимита+-- превышен мягкий лимит, идёт отсчёт grace period++- превышен мягкий лимит, grace period истёк (запись заблокирована)

9. Просмотр квоты конкретного пользователя
# Пользователь может сам посмотреть свою квоту
quota -v
# Администратор смотрит квоту любого пользователя
sudo quota -v username
# Вывод:
# Disk quotas for user alice (uid 1001):
# Filesystem blocks quota limit grace files quota limit grace
# /dev/sda2 98304 512000 614400 2041 0 0
10. Автоматическое включение квот при загрузке
Если quotaon -v /home выполнен вручную, квоты останутся включёнными после перезагрузки только если файловая система смонтирована с опциями usrquota,grpquota в /etc/fstab. На современных системах этого достаточно - systemd автоматически запускает quotaon при монтировании.
Проверяем после перезагрузки:
sudo reboot
# После перезагрузки:
sudo quotaon -p /home
# group quota on /home (/dev/sda2) is on
# user quota on /home (/dev/sda2) is onИтог
Дисковые квоты на Linux настраиваются через три шага: добавить опции usrquota,grpquota в /etc/fstab, создать файлы базы квот через quotacheck, установить лимиты через edquota. Ключевое различие мягкого и жёсткого лимита: soft даёт временное превышение (grace period), hard блокирует запись немедленно. Для регулярного мониторинга запускайте repquota -au через cron и отправляйте вывод на почту администратора - так вы увидите приближение к лимитам до того, как сервер начнёт отказывать в записи.