Quota mini-HOWTO

Albert M.C. Tam

Перевод: Павел Гашев, ASPLinux

Аннотация

Введение: This document is copylefted by Albert M.C. Tam (bertie@scn.org). Permission to use, copy, distribute this document for non-commerical purposes is hereby granted, provided that the author's / editor's name and this notice appear in all copies and/or supporting documents; that this document is not modified.

Надеюсь, что этот документ будет вам полезен, но БЕЗО ВСЯКИХ ГАРАНТИЙ, явных и не явных. Даже если в тексте присутствует убеждение в точности представленной информации, авторы/редакторы/сопроводители не несут НИКАКОЙ ОТВЕТСТВЕННОСТИ за ошибки или повреждения, полученными в результате ее использования. Этот документ описывает настройку квот для файловой системы Linux, определение квот для пользователей и групп, а также использование различных команд, связанных с квотированием. Предполагается, что у пользователя есть ядро 2.x (RedHat 4.1). Пользователям же старых ядер, чтобы использовать квотирование, необходимо обновить ядро. Если вы найдете ошибки или заметите пропущенную информацию, можете спокойно послать письмо с комментариями по адресу bertie@scn.org. Я оценю это.


Содержание
Что такое квотирование?
Текущее состояние квот в Linux
Основные требования
Установка - Часть I: Настройка
Установка - Часть II: Определение квот для пользователей и групп
Команды
Авторские права

Что такое квотирование?

Квотирование позволяет ограничить два аспекта использования диска: количество файлов, которыми владеет пользователь или группа пользователей; и количество блоков диска, которые может использовать пользователь или группа пользователей. Квотирование определяется, как для каждого пользователя, так и для каждой файловой системы. Если у вас несколько разделов, то квоты нужно определить для каждого раздела, в котором пользователь намеревается создавать файлы.


Текущее состояние квот в Linux

Я слышал, что поддержка квотирования встроена в ядро, начиная с версии 1.3.8x, и теперь это часть ядра 2.0.x. Если ваша система не поддерживает квотирование, я настоятельно рекомендую обновить ядро.

В настоящее время, квотирование работает только на файловой системе ext2.


Основные требования

Ядро

Исходные тексты ядра 2.x доступны на
http://sunsite.unc.edu/pub/Linux/kernel/v2.0 


Программное обеспечение

В зависимости от дистрибутива, у вас может быть, а может и не быть установлено программное обеспечение для поддержки квотирования. В этом случае, вы можете загрузить исходные тексты с
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz.


Установка - Часть I: Настройка

Настройка ядра

Перенастройте свое ядро и добавьте туда поддержку квотирования.:
Quota support (CONFIG_QUOTA) [n] y


Установка программного обеспечения

Программное обеспечение для квотирования находится по адресу
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz 


Включение квотирования во время загрузки

Далее приводится пример:
# Проверка квот и затем включение квотирования. 
if [ -x /usr/sbin/quotacheck ] 
        then 
               echo "Checking quotas. This may take some time." 
               echo "Проверка квот. Подождите минуту..." 
               /usr/sbin/quotacheck -avug 
               echo " Ok." 
        fi 
         if [ -x /usr/sbin/quotaon ] 
        then 
                echo "Turning on quota." 
                echo "Включаем квоты." 
                /usr/sbin/quotaon -avug 
        fi

Золотое правило: всегда включайте квотирование после того, как файловые системы перечисленные в /etc/fstab, установлены, иначе квотирование не будет работать. Я рекомендую включать квотирование в конце скрипта загрузки системы, или, если хотите, сразу после установки файловых систем.


Изменение /etc/fstab

Разделы, на которых не включено квотирование, выглядят следующим образом:
/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults        1       1

Для включения поддержки квотирования, напишите "usrquota" в четвертом поле, где написано "defaults" (для выяснения подробностей прочтите руководство к fstab).
/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults,usrquota       1       1

Замените "usrquota" на "grpquota", если вам нужна поддержка квотирования групп пользователей в файловой системе.
/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults,grpquota       1       1

Если вам нужна поддержка квотирования пользователей и их групп в файловой системе, то:
/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults,usrquota,grpquota       1   1


Создание "quota.user" и "quota.group"

Доступ к файлам записи квот quota.user и quota.group должен иметь только пользователь с правами root

Зайдите как пользователь root. Зайдите в корневой каталог и создайте файлы quota.user и quota.group:
touch /partition/quota.user 
touch /partition/quota.group 
chmod 600 /partition/quota.user 
chmod 600 /partition/quota.group


Перезагрузка

Теперь перезагрузите систему.

Запомните, что теперь для установления квотирования на каталоги вам потребуется произвести шаги 4, 5, и 6.


Установка - Часть II: Определение квот для пользователей и групп

Эта операция выполняется, при помощи команды edqouta (man edquota).

Перед этим я обычно запускаю команду qoutacheck с параметрами -avug, чтобы файловая система точно знала, что и кем используется. Впрочем, это не обязательный шаг, а просто привычка.


Определение квот для конкретного пользователя

Например. У меня в системе есть пользователь bob. Команда "edqouta -u bob" запускает текстовый редактор (определенный в переменной окружения $EDITOR) для редактирования квот пользователя bob для каждого раздела, на котором включено квотирование:
Quotas for user bob: 
/dev/hda2: blocks in use: 2594, limits (soft = 5000, hard = 6500) 
         inodes in use: 356, limits (soft = 1000, hard = 1500)

"blocks in use" это общее количество блоков (килобайт), используемых пользователем на этом разделе.

"inodes in use" это общее количество файлов, принадлежащих пользователю.


Определение квот для конкретной группы

В моей системе есть группа games. "edquota -g games", снова запускает текстовый редактор для редактирования квот группы games:
        Quotas for group games: 
        /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) 
                inodes in use: 1454, limits (soft = 3000, hard = 4000)


Установка одинаковых квот для множества пользователей

Для быстрой установки квот, скажем для 100 пользователей, на те же значения, что и для пользователя bob, я должен определить ему квоты, а затем запустить:
edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`

если вы используете оболочку csh и идентификаторы пользователей (UID), то последние начинаются с 500.

В добавок к edqouta вы еще должны ознакомиться с тремя понятиями: мягкие ограничения, жесткие ограничения и льготный период.


Мягкие ограничения

Мягкие ограничения определяют максимальный объем диска для пользователя на каждом разделе. В комбинации со льготным периодом, они определяют границу, после которой пользователь начинает получать предупреждения.


Жесткие ограничения

Жесткие ограничения работают только тогда, когда установлен льготный период. Они определяют абсолютный лимит использования диска, который пользователь не может превысить.


Льготный период

Льготный период (grace period) - это количество времени после превышения мягких ограничений, в течении которого пользователю позволено использовать дисковое пространство, если оно не превышает жесткий лимит. Он определяется в секундах (seconds), минутах (minutes), часах (hours), днях (days), неделях (weeks) или месяцах (months). Проверить его можно при помощи команды "edquota -t":
Time units may be: days, hours, minutes, or seconds 
Grace period before enforcing soft limits for users: 
/dev/hda2: block grace period: 0 days, file grace period: 0 days 

Можете изменить число дней на любое разумное значение. Лично я использую 7 дней (или 1 неделю).


Команды

Quotacheck

Quotacheck используется для сканирования дискового пространства и обновления файла "quota.user". Я рекомендую запускать его во время загрузки системы или периодически через cron (скажем, каждую неделю).


Repquota

Repquota выводит общий отчет по квотированию файловой системы. Пример:
# repquota -a 
                                Block limits               File limits 
        User            used    soft    hard  grace    used  soft  hard  grace 
        root      --  175419       0       0          14679     0     0 
        bin       --   18000       0       0            735     0     0 
        uucp      --     729       0       0             23     0     0 
        man       --      57       0       0             10     0     0 
        user1     --   13046   15360   19200            806  1500  2250 
        user2     --    2838    5120    6400            377  1000  1500


Quotaon и Quotaoff

Quotaon используется для включения подсчета квот; quotaoff для выключения. На самом деле, оба файла похожи между собой и запускаются во время запуска, и выключения системы соответственно.


Авторские права

Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу