Включение дисковых квот в Linux.
Взято с http://www.yolinux.com/TUTORIALS/LinuxTutorialQuotas.html
- Редактируем файл /etc/fstab, добавляя параметры "usrquota" и/или "grpquota" в строки для нужного дискового раздела.
Примеры:/dev/hda1 /home ext3 defaults,usrquota 1 1 /dev/hda2 /home ext3 defaults,usrquota,grpquota 1 1
- Перемонтируем файловую систему. Пример:
/bin/mount -o remount /hda2
- Проверяем, что квоты включились, заглядывая в /etc/mtab. Там должно быть что-то вроде:
/dev/hda2 / ext3 rw,usrquota,grpquota 0 0
- Запускаем процесс подсчета текущего использования дискового пространства, после чего должны создаться/обновиться файлы /aquota.user, /aquota.group в корне файловой системы:
quotacheck -vgum /partition
или
quotacheck -vguma
- Включаем квоты для файловой системы:
quotaon -v /dev/hda2
- Расставляем квоты для определенных пользователей/групп. Пример:
edquota -u user1 Disk quotas for user user1 (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda5 1944 5120 10240 120 0 0
blocks - блоки по 1 килобайту
soft - максимальное количество блоков/inodes, которые пользователь может использовать, перед тем, как будет сгенерировано предупреждение и начнется отсчет "периода терпимости" (grace period). Если установлено в "0" (ноль), то лимита нет.
hard - максимальное количество блоков/inodes, которые пользователь может использовать вообще.
В примере лимит установлен в 10 мегабайт. Для редактирования групповых квот использовать edquota с ключом -g."Grace Period" задается с помощью edquota -t, это промежуток времени, перед тем, как soft limit преваратиться в
тыквуhard limit. Единицы: sec, min, hour, day, week и month. Пример: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/hda5 7days 7days
То есть в примере выше пользователь user1 может использовать до 5-ти МБ дискового пространтва на постоянной основе без каких либо прочих ограничений. Когда общий размер файлов превысит 5МБ дискового пространства, начнёт действовать grace period (7 дней по умолчанию), в течение которых user1 может занять до 10МБ дискового пространства. По истечении 7-ми дней с момента превышения лимита в 5МБ создание новых файлов будет недоступно до тех пор, пока user1 не удалит часть своих файлов, чтобы суммарный их объём не превышал 5МБ.
- Просмотр квот. Команды quota, repquota. Примеры:
quota -u user1 Disk quotas for user user1 (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/hda6 992 50000 55000 71 10000 11000
Получить отчет по всем пользователям, что превысили квоту:
quota -q repquota -a *** Report for user quotas on device /dev/hda5 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace root -- 4335200 0 0 181502 0 0 bin -- 15644 0 0 101 0 0 ... user1 -- 1944 0 0 120 0 0
quotacheck следует запускать периодически, особенно после аварийных выключений сервера.
У edquota есть также интересный ключик -p, который позволяет задавать квоты массово на основе шаблона. Пример:
edquota -p user1 `awk -F: '$3 > 499 {print $1}' /etc/passwd`
Здесь для пользователей с uid >= 500 будут установлены такие же квоты, как и у пользователя user1.
В Redhat quotacheck и quotaon запускаются из /etc/rc.d/rc.sysinit:
if [ -x /sbin/quotacheck ]; then echo "Checking root filesystem quotas" /sbin/quotacheck -v -a fi ... if [ -x /usr/sbin/quotaon ] then echo "Turning on quota." /usr/sbin/quotaon -v -a fi
Чтобы пользователи, превысившие лимиты, получали уведомление об этом по email, следует периодически из cron-а запускать команду warnquota.