8.22. Дисковые квоты

Проблема
Требуется ограничить объем дискового пространства, которое может быть занято
пользователем. Во многих системах встречаются нарушители, забивающие свои
диски коллекциями МРЗ-файлов и телесериалами.
Решение
Воспользуйтесь пакетом Linux Disk Quota. Пакет содержит ряд компонентов, в том
числе quota, edquota, quotacheck и repquota.
Сначала отредактируйте файл /etc/fstab и выберите разделы, для которых бу дут установлены квоты. Квоты могут устанавливаться как для отдельных пользо вателей (usrquota), так и для групп (grpquota). Оба вида квот могут действовать
одновременно:
/dev/hda6 / ext3 defaults 0 1
/dev/hda7 /home ext3 defaults,usrquota,grpquota 0 1
Перемонтируйте файловую систему:
# mount -о remount /home
Сценарий Quota init запускает программу quotacheck, которая анализирует си стему, создает базу данных использования дискового пространства и создает фай лы квот.
Затем назначьте квоты пользователям. При этом файл конфигурации откры вается в редакторе по умолчанию:
# edquota -u vhenson
Disk quotas for user vhenson (uid 1550):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 550466 0 0 47466 0 0
Мягкое ограничение (soft limits) предоставляет нарушителю отсрочку с выда чей предупреждений. Жесткое ограничение (hard limits) вступает в силу немед ленно. Чтобы задать ограничение, просто отредактируйте файл:
# edquota -u vhenson
Disk quotas for user vhenson (uid 1550):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 550466 650000 700000 47466 0 0
БЛОКИ всегда имеют размер 1024 байта, поэтому 650 000 блоков составляют
около 665 Мбайт.
Сохраните и закройте файл. Убедитесь в том, что квота вступила в силу:
# quota vhenson
Disk quotas for user vhenson (uid 1550): 650000 700000
Назначение квот группам осуществляется следующим образом:
# edquota -g engineers
Если жадный пользователь использует всю групповую квоту, значит, группе
не повезло — другим ничего не остается.
Следующая команда вызывает редактор по умолчанию для назначения отсроч ки для мягких ограничений во всей файловой системе:
# edquota -t
Grace period before encforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda3 7days 7days
Один из пользователей может использоваться в качестве «прототипа» для оп ределения квот нового пользователя:
# edquota -p vhenson dnorth
или сразу нескольких новых пользователей:
# edquota -p vhenson "awk -F: '$3 > 999 {print $1}' /etc/passwd"
Также можно перечислить сразу нескольких пользователей:
# edquota -p vhenson dnorth jvesperman sanvin
Несомненно, вы захотите следить за использованием квот. Следующая коман да выводит общесистемный отчет о текущем расходовании дискового простран ства:
# repquota -a
Чтобы ограничиться конкретной файловой системой, используйте команду:
# repquota /home
Комментарий
Включите следующую строку в сценарий mass_useradd, после строки chmod, что бы квота пользователя vhenson автоматически применялась для всех новых пользо вателей:
/usr/sbin/edquota -p vhenson Susername
Команду add user можно настроить на автоматическое назначение квот для но вых пользователей. Отредактируйте файл adduser.conf:
QUOTAUSER="vhenson"
А теперь плохие новости: Quota сейчас находится в переходной фазе. Код Quota
в ядрах версий 2.2 и 2.4 устарел и не подходит для современных версий Quota.
Если в ваш дистрибутив включена «заплатка» ядра — считайте, вам повезло. Впро чем, вы сможете быть полностью уверены в этом лишь после того, как установите
и настроите Quota и назначите квоту пользователю. Если дистрибутив не содержит
готовые к запуску версии Quota, вероятно, вам придется устанавливать целую
серию «заплаток» ядра. Подробные инструкции приведены в документе «Quota
mini-HOWTO».
На момент написания книги надежная реализация ReiserFS с поддержкой Quota
существовала только в SuSE.« Заплатки» ReiserFS для других дистрибутивов можно
загрузить с домашней страницы ReiserFS по адресу http://www.namesys.com.
К счастью, ядро 2.6 полностью поддерживает Quota.
После решения проблем с ядром вашим следующим шагом должна стать уста новка новейшей версии Quota. Лучше всего найти RPM для вашей системы (поль зователи Debian используют apt-get install quota), в этом случае в вашем распоря жении появятся настроенные и готовые к использованию сценарии init. Если вы
предпочитаете настраивать сценарии init самостоятельно, обращайтесь к инструк циям в документе «Quota mini-HOWTO».
См. также
man(l) quota, man(8) edquota, man(8) quotacheck, man(8) repquota; сценарий mass_useradd
(раздел 8.17); Quota mini-HOWTO (http://www.tldp.org/HOWTO/Quota.htmL); домаш няя страница проекта Quota (http://sourceforge.net/projects/linuxquota/); домашняя
страница ReiserFS (http://www.namesys.com).