Настройка дисковых квот

Небольшая заметка по настройке дисковых квот. Встречал в Интернете много противоречивых руководств по установке и настройке, поэтому решил написать своё собственное.

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

Установка софта

Установим минимально необходимый софт:

sudo aptitude install quota

Дальше необходимо включить поддержку квот, для чего в файле /etc/fstab пропишем параметры usrquota для квот пользователей  и grpquota для квот групп (или что-то одно из двух):

/dev/sda1 /               ext4    defaults,usrquota,grpquota 0       1

Подсчёт квот

Подсчёт квот можно запустить одним из следующих способов:

1. с перезагрузкой сервера, что несомненно парализует работу пользователей;

2. ручным запуском утилит.

Рассмотрим второй вариант. Во первых файловую систему необходимо перемонтировать, для чего запускается команда:

sudo mount -o remount /

Проверить результат выполнения команды можно с помощью mount: в перечне параметров монтирования должны появиться usrquota и/или grpquota.

Дальше запустим само построение файлов с информацией о квотах. Для этих целей используется команда quotacheck:

sudo quotacheck -acvugm

Мы передали ряд параметров:

  • a -- проверка всех файловых систем из файа /etc/fstab или /etc/mtab
  • c -- принудительно создать отсутствующие файлы aquota.group и aquota.user. Если это не сделать, то мы получим сообщение об ошибке: quotacheck: Cannot stat old user quota file //aquota.user: Нет такого файла или каталога. Usage will not be substracted. и аналогичное сообщение о файле aquota.group. Кстати, эти файлы можно создать вручную через touch и chmod.
  • v -- выводить отладочную информацию, в противном случае создание квот пройдёт в тихом режиме. Можно задать параметр vv, тогда на экран будет выводиться информация о процессе создания квот для каждой директории, что вцелом замедлит сам процесс.
  • u -- подсчёт квот пользователей (если указан usrquota)
  • g -- подсчёт квот групп (если указан grpquota)
  • m -- не пытаться перевести файловую систему в read-only. Без этого флага можно получить сообщение об ошибке: "quotacheck: Cannot remount filesystem mounted on / read-only so counted values might not be right. Please stop all programs writing to filesystem or use -m flag to force checking.". Т.е. нас попросили остановить все программы, работающие с диском или использовать флаг -m. Так же есть ещё флаг -M, который будет пытаться перемонтировать файловую систему в режим только для чтения, посчитать квоты, а потом перемонтировать её обратно, а если не получилось, то запустит проверку как -m. Отмечу что в обоих случаях (-m и -M) стОит ограничить работу с жёстким диском, иначе подсчёт квот будет неточным.

Сам процесс построение файла данных квот занимает продолжительное время (в моём случае на 8ТБ soft-raid массива с работающей SAMBA построение квот заняло 4 часа).

Дальше включаем дисковые квоты на всех устройствах:

sudo quotaon -a

или запустить демон квот вручную:

sudo /etc/init.d/quota start
[ ok ] Checking quotas...done.
[ ok ] Turning on quotas...done.

Если пропустить шаг вычисления квот, можно получить ошибку quotaon: cannot find //aquota.group on /dev/sda1 [/] Если не запускать демон квот, то для обновления информации по квотам придётся прибегать к помощи планировщика.

Отчёт по квотам

Отчёт по квотам создаётся командой repquota.

sudo repquota -as
*** Report for user quotas on device /dev/sda1
Block grace time: 7days; Inode grace time: 7days
                        Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    691M      0K      0K          24459     0     0       
man       --   1112K      0K      0K            143     0     0       
libuuid   --      4K      0K      0K              1     0     0       
user      --     16K      0K      0K              4     0     0 

В данном случае выведены квоты всех дисков, а сами квоты приведены в удобочитаемый формат -- Килобайты и Мегабайты.

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

Мы имеем возможность задать мягкую и жёсткую квоту для пользователей и групп по занятому пространству, а так же по количеству используемых i-нодов.

Мягкое ограничение даёт возможность пользователю превысить допустимую квоту на block grace time дней (см. вывод repquota). По умолчанию это значение составляет 7 дней и может быть перенастроено командой:

sudo edquota -t

, где указывается количество дней для квот дискового пространства и количества файлов. Для примера я поставил время ожидания на 1 день.

Из отчёта мы видим, что у пользователя user есть 4 файла (занято 4 i-ноды), общим объемом 16 КБайт. При этом у пользователя отсутсвую какие либо квоты. Зададим ему мягкое ограничение в 20МБ и жёсткое в 30МБ:

sudo edquota -u user

для чего выставим ему значения 20480 и 30720 соответственно (в КБ).

Теперь сгенерируем файл, превышающий мягкую квоту пользвоателя: dd if=/dev/zero of=~/test.txt bs=1M count=25.

Отчёт по пользователю покажет мягкое превышение квоты:

sudo repquota -as | grep user
user      +-  25600K  20480K  30720K  23:58       5     0     0 

Как видим, у пользователя произошло превышение квоты дискового пространства (+-), а так же запустился таймер обратного отсчёта, в течение которого превышение считается допустимым (23 часа 58 минут).

Пользователь не сможет первысить жёсткую квоту:

sudo quota -s user
Disk quotas for user user (uid 1000): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
/dev/sda1        30720K* 20480K  30720K   23:56       7       0       0 

Использование quotatool для управления квотами

Чтобы не править вручную файлы квот пользователей и групп можно воспользоваться утилитой quotatool. Устанавливаем утилиту:

sudo aptitude install quotatool

А теперь расширим мягкую квоту пользователя user до 40МБ, а жёсткую до 50МБ:

sudo quotatool -u user -bq 40M -l 50M /dev/sda1

 

Добавлено: 2015-04-10


Поделиться:

Оставить комментарий

Комментарий появится после одобрения.

Поля со значком * обязательны для заполнения.