Дисковые квоты используются для наблюдения за использованием дискового пространства на разделах и ограничения его использования, тем самым исключается возможность занять все дисковое пространство системы одним пользователем. Если имеется более одного раздела, доступного пользователю, квотирование должно быть настроено на каждом из них.
Установка
#apt-get install quota
Настройка
Есть директория /home смонтированная на отдельном разделе жесткого диска /dev/sda2 размером 100Гб, что бы включить квотирование на данном разделе необходимо в опциях монтирования добавить параметр "usrqouta"
Отредактируйте файл /etc/fstab
#nano /etc/fstab/
добавим "usrqouta" к опциям раздела /home.
замените "usrquota" на "grpquota", если нужна поддержка квот для групп или оба значения вместе "usrquota,grpquota"
Перемонтируйте раздел /home или перезагрузите компьютер
#mount -o remount /home
Создание файла квот
#quotacheck -сavumf
Включаем квоты для разделов
#quotaon -a
#quotaon -pa
group quota on / (/dev/disk/by-uuid/aeca8230-d477-44d7-b9fb-8f3c5c156e67) is off
user quota on / (/dev/disk/by-uuid/aeca8230-d477-44d7-b9fb-8f3c5c156e67) is on
Теперь можно выставлять квоты для пользователей
Редактирование квот пользователя
Ограничим пользователя 40Мб
#edquota -u quser
Disk quotas for user quser (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/disk/by-uuid/aeca8230-d477-44d7-b9fb-8f3c5c156e67 3092 0 40000 15 0 0
blocks: Количество блоков - занятое место пользователем в блоках длиной 1kB.
inodes: Количество инодов - файлов/каталогов пользователя.
soft: Максимальное количество blocks/inodes, которое пользователь может иметь. Если используется период отсрочки "grace period", то вместо жесткого ограничения, пользователь, превысивший данный лимит, получит лишь сообщение об этом, по прошествии "grace period" пользователь не сможет писать на диск пока использованное пространство не будет меньше данного лимита.
Значение 0 отключает данную опцию.
hard: Максимальное количество blocks/inodes, которое пользователь может иметь. Это жесткое ограничение, пользователь не может его превысить.
Значение 0 отключает данную опцию.
или установить лимиты одной командой
#setquota -u quser 0 40000 0 0 /home
1.block soft limit = 0
2.block hard limit = 40000byte
3.inodes soft limit = 0
4.inodes hard limit = 0
Usage:
setquota [-u|-g] [-rm] [-F quotaformat] <user|group>
<block-softlimit> <block-hardlimit> <inode-softlimit> <inode-hardlimit> -a|<filesystem>...
setquota [-u|-g] [-rm] [-F quotaformat] <-p protouser|protogroup> <user|group> -a|<filesystem>...
setquota [-u|-g] [-rm] [-F quotaformat] -b [-c] -a|<filesystem>...
setquota [-u|-g] [-F quotaformat] -t <blockgrace> <inodegrace> -a|<filesystem>...
setquota [-u|-g] [-F quotaformat] <user|group> -T <blockgrace> <inodegrace> -a|<filesystem>...
-u, --user set limits for user
-g, --group set limits for group
-a, --all set limits for all filesystems
--always-resolve always try to resolve name, even if is
composed only of digits
-F, --format=formatname operate on specific quota format
-p, --prototype=protoname copy limits from user/group
-b, --batch read limits from standard input
-c, --continue-batch continue in input processing in case of an error
-r, --remote set remote quota (via RPC)
-m, --no-mixed-pathnames trim leading slashes from NFSv4 mountpoints
-t, --edit-period edit grace period
-T, --edit-times edit grace times for user/group
-h, --help display this help text and exit
-V, --version display version information and exit
Редактирование периода отсрочки
#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/disk/by-uuid/aeca8230-d477-44d7-b9fb-8f3c5c156e67 7days 7days
Во время "grace period" система будет лишь предупреждать тех пользователей у которых установлен "soft limit", но не ограничивать их. Могут быть использованы секунды, минуты, часы, дни, недели и месяцы (seconds, minutes, hours, days, weeks, months).
Значение 0 отключает данную опцию. Отчет по квотам на файловой системе.
Usage:
repquota [-vugsi] [-c|C] [-t|n] [-F quotaformat] (-a | mntpoint)
-v, --verbose display also users/groups without any usage
-u, --user display information about users
-g, --group display information about groups
-s, --human-readable show numbers in human friendly units (MB, GB, ...)
-t, --truncate-names truncate names to 9 characters
-p, --raw-grace print grace time in seconds since epoch
-n, --no-names do not translate uid/gid to name
-i, --no-autofs avoid autofs mountpoints
-c, --batch-translation translate big number of ids at once
-C, --no-batch-translation translate ids one by one
-F, --format=formatname report information for specific format
-h, --help display this help message and exit
-V, --version display version information and exit
В случаях, когда файловая система не была размонтирована корректно, необходимо выполнить команду quotacheck, ее можно запускать регулярно, даже если сбоя не было. Периодический запуск команды позволяет поддерживать точность квот.
#quotacheck -avumf
для отдельного раздела
#quotacheck -vumf /home
Более точную статистику по квотам можно получить, когда анализируемая файловая система не сильно загружена. Поэтому стоит назначать запуск задания cron во время, когда файловая система (системы) используется меньше всего.