Quota - квотирование файловых систем

Версия для печатиОтправить другуPDF version

Для начала немножко общей информации из хендбука...

Квоты - это опциональная возможность операционной системы, которая позволяет ограничивать объем дискового пространства и/или количество файлов для конкретного пользователя или членов определенной группы в рамках одной файловой системы. Чаще всего эта возможность используется в системах разделения времени, когда желательно ограничить количество ресурсов, которые может использовать один пользователь или группа пользователей. Это позволит не допустить ситуации, когда один пользователь или группа пользователей заполняют всё доступное дисковое пространство.

Итак... Использование квот требует поддержки со стороны ядра. Поэтому в конфигурационный файл ядра необходимо добавить строку

options QUOTA

и пересобрать ядро (в стандартном ядре GENERIC эта опция по умолчанию отсутствует).

Будем считать, что данная опция уже вкомпилена в ядро. Следующим шагом собственно включаем квотирование дисков:

# echo '# Disk quotas' >> /etc/rc.conf
# echo 'enable_quotas="YES"' >> /etc/rc.conf

Обратите внимание, что теперь при загрузке системы будет проверяться целостность квот каждой файловой системы, а это довольно продолжительный просесс, особенно при больших дисковых массивах. Соответственно, мои рекомендации, отключить при загрузке системы проверку целостности квот:

# echo 'check_quotas="NO"' >> /etc/rc.conf

Далее необходимо включить поддержку квотирования непосредственно на уровне файловых систем. Можно включить поддержку квот для груп (groupquota), пользователей (userquota), а также и для пользователей и груп одновременно. Для этого необходимо отредактировать /etc/fstab, добавляя поддержку квотирования для определенной файловой системы. Для примера, наведу "кусочек" своего /etc/fstab, с поддержкой квот для пользователей (/home) и поддержкой квот для пользователей и груп одновременно (/usr и /var).

# less /etc/fstab | grep quota

/dev/mirror/gm0s1d              /home        ufs     rw,userquota                             2       2
/dev/mirror/gm0s1g              /usr            ufs     rw,userquota,groupquota         2       2
/dev/mirror/gm0s1e              /var            ufs     rw,userquota,groupquota         2       2

 Запускаем службу квотирования вручную (неохота лишний раз перезагружать сервер, да и незачем это...)

# sh /etc/rc.d/quota start
Enabling quotas: quotaon: using /home/quota.user on
quotaon: /home: No such file or directory
quotaon: using /usr/quota.group on
quotaon: /usr: No such file or directory
quotaon: using /usr/quota.user on
quotaon: /usr: No such file or directory
quotaon: using /var/quota.group on
quotaon: /var: No such file or directory
quotaon: using /var/quota.user on
quotaon: /var: No such file or directory
done.

Вот, заругалось, что нету файлов квот. "Лечится" это очень просто . Запустим проверку квот, и отсутствующие файлы создадутся автоматически:

# quotacheck -a

quotacheck: creating quota file /home/quota.user
quotacheck: creating quota file /usr/quota.user
quotacheck: creating quota file /usr/quota.group
quotacheck: creating quota file /var/quota.user
quotacheck: creating quota file /var/quota.group

 Теперь при запуске нету ругательств

# sh /etc/rc.d/quota start
Enabling quotas: done.

Также, кстати, включить поддержку квот для всех необходимых разделов (указано в  /etc/fstab) можно следующей командой:

# quotaon -a

Пора проверить, действительно ли поддержка квот включена. Проверить это можно следующей командой:

# quota -v
Disk quotas for user root (uid 0):
     Filesystem   usage   quota   limit   grace   files   quota   limit   grace
          /home    186532       0       0                2512       0       0
          /usr        3939724     0       0                307469   0       0
          /var        100484       0       0                1851       0       0

Что ж, теперь можно заняться непосредственно заданием ограничений на дисковое пространство. Квоты задаются с помощью команды edquota.

Описание процесса задания квот возьму из хендбука (http://www.freebsd.org/doc/ru/books/handbook/quotas.html), кстати советую перейти по данному линку, возможно почерпнете что-то интересное для себя.


 У вас есть несколько вариантов того, как приводить в действие ограничения по объему дискового пространства, который могут занимать пользователь или группа, а также по количеству файлов, которые они могут создать. Вы можете ограничивать размещение ресурсов на основе объема дискового пространства (квотирование блоков), количества файлов (квотирование inode) или их комбинации. Каждое из этих ограничений, в свою очередь, делится на две категории: мягкие и жёсткие ограничения.

Жёсткое ограничение не может быть превышено. Как только пользователь достиг своих ограничений, ресурсы соответствующей файловой системы ему больше выделяться не будут. Например, если пользователь имеет жесткое ограничение в 500 Кбайт на файловой системе и в текущий момент использует 490 Кбайт, то пользователь может получить дополнительно ещё 10 Кбайт. Попытка занять ещё 11 Кбайт окончится неудачно.

С другой стороны, мягкие ограничения могут быть превышены в течении некоторого периода времени. Этот период времени также называют периодом отсрочки, который по умолчанию равен одной неделе. Если пользователь превышает своё мягкое ограничение в течение периода времени, превышающего отсрочку, то это мягкое ограничение становится жестким и последующее выделение ресурсов будет запрещено. Когда пользователь вернётся обратно к отметке, меньшей, чем мягкое ограничение, то период отсрочки будет сброшен.

Далее приводится пример того, что вы можете наблюдать при запуске команды edquota. Когда вызывается команда edquota, вы оказываетесь в редакторе, заданном переменной переменной окружения EDITOR, или в редакторе vi, если переменная EDITOR не задана, и можете редактировать квоты.

# edquota -u test

Quotas for user test:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/var: kbytes in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)

Для каждой файловой системы, на которой включено квотирование, вы должны увидеть две строки. В одной строке приведены ограничения на блоки, а в другой на количество inode. Например, чтобы увеличить ограничения на количество блоков для пользователя с мягкого ограничения в 50 и жёсткого ограничения в 75, на мягкое ограничение в 500 и жёсткое ограничение в 600, измените:

/usr: kbytes in use: 65, limits (soft = 50, hard = 75)

на

/usr: kbytes in use: 65, limits (soft = 500, hard = 600)

Новые ограничения вступят в силу после выхода из редактора.

Иногда желательно установить ограничения квот на некоторый диапазон UID (идентификаторов пользователей). Это можно сделать при помощи параметра -p в команде edquota. Во-первых, установите желаемое ограничение для пользователя, а затем запустите команду edquota -p protouser startuid-enduid. Например, если пользователь test имеет желаемые ограничения, то для дублирования этих ограничений на пользователей с UID от 10000 до 19999 может быть использована такая команда:

# edquota -p test 10000-19999

Для просмотра состояния системных квот советую воспользоваться командой repquota. Например, для того, чтобы просмотреть таблицу состояния системных квот для раздела /usr, команда будет выглядеть так:

# repquota /usr

Голосов пока нет

Вставай, Україно!

Литература