Готовый перевод Linux Fundamentals, Part 4 / Основы Linux от основателя Gentoo. Часть 4: Filesystem quotas
Квоты файловой системы
Знакомство с квотами
Квоты - это такая фича Linux, которая позволяет вам следить за использованием диска пользователем или группой. Квоты полезны для предотвращения захвата большей части фаловой системы каким либо одим пользователем или руппой или вобщем от переполнения файловой системы. Квоты могут быть активированны и управляться только пользователем root. В этой части я расскажу как настроить квоты в вашем Linux и управлять ими эффективно.
Поддержка квот ядром
Квоты являютсяя функцией файловой системы, по-этому они требуют поддержку со стороны ядра. Первая вещь, которую вам нужно сделать - это проверить, если ли поддержка квот в вашем ядре. Вы можете сделать это используя grep:
# cd /usr/src/linux
# grep -i quota .config
CONFIG_QUOTA=y
CONFIG_XFS_QUOTA=y
Ели эта комманда возвращает что-то отличное (такое как CONFIG_QUOTA is not set), тогда вы должны пересобрать ваше ядро с включенной поддержкой квот. Это не сложный процесс, но это выходит за рамки этого раздела руководства.
Поддержка квот файловой системой
До погружения в администрирование квот, пожайлуста учтите, что квоты поддерживаются в Linux с версей ядра 2.4.х не полностью. В этой версии существуют проблемы с квотами на файловых системах ext2 и ext3, а ReiserFS вообще не поддерживает квоты. Это руководство основано на примере XFS, котоая, кажется, должным образом поддерживает квоты.
Настрйка квот
Для начала настройки квот в вашей системе, вы должны отредактировать /etc/fstab для монтирования целевой файловой системы с включенными квотами. Например, мы монтируем XFS с квотами для пользователей и групп:
# grep quota /etc/fstab
/usr/users /mnt/hdc1 xfs usrquota,grpquota,noauto 0 0
# mount /usr/users
Учтите, что опции usrquota и grpquota не обязательно включать поддержку квот в файловой системе. Вы можете быть увереннымы, что квоты включены, если используете комманду quotaon:
# quotaon /usr/users
Соответственно отключить квоты можно командой quotaoff:
# quotaoff /usr/users
Но на данный момент, если вы попробуете ввести эти комманды, будьте уверены, что квоты включаться.
Комманда quota
Команда quota отображает использование диска пользователем и лимиты для всех примонтированных файловых систем. Опция -v включит в вывод файловые системы, для которых квоты включены, но не включит в вывод данные квот выделенных для текущего пользователя.
# quota -v
Disk quotas for user root (uid 0):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 0 0 0 3 0 0
В колонке blocks показано как много дискового пространство использует root на каждой из перечисленных файловых систем. Следующие колонки quota и limit относятся к ограничению текущего места на диске. Мы объясним разницу между квотами и лимитами и осмыслим значение колонки grace позже. Колонка files показывает каким количеством файлов пользователь root владеет на указанной файловой системе. Следующие колонки quota и limits относятся к ограничению файлов.
Просмотр квот
Любой пользователь может использовать команду quota для просмотра его квот, так же как показано в предыдущем примере. Однако только root может видеть квоты остальных пользователей и групп. Например скажем у нас есть файловая система /dev/hdc1 примонтированная в /usr/users с двумя пользователями: jane и john. Сначала посмотрим использование диска и ограничения jane:
# quota -v jane
Disk quotas for user jane (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 4100 0 0 6 0 0
В этом примере мы видим, что квоты jane раны нулю, что значит для нее нет ограничений.
Команда edquota
Теперь, скажем, мы хотим пользователю jane задать квоту. Мы сделаем это с помощью команды edquota. До начала редактирования квот, давайте посмотри как много места у нас доступно в /usr/users:
# df /usr/users
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hdc1 610048 4276 605772 1% /usr/users
Это не очень большая фаловая система, доступно только около 600Мб. Кажется разумным определить квоты для jane, чтобы она не смогла превысить разумные пределы. Когда мы запустим edquota временный файл создастся для каждого пользователя или группы, указанной в качестве аргумента.
Команда edquota откроет редактор, в котором вы сможете включить и/или изменить квоты в этом временном файле.
# edquota jane
Disk quotas for user jane (uid 1003):
Filesystem blocks soft hard inodes soft hard
/dev/hdc1 4100 0 0 6 0 0
Данный вывод похож на вывод команды quota данный выше, столбцы blocks и inodes во временном файле относятся к дисковому пространству и числу файлов, исользуемых jane. Вы не можете изменить число блоков или инодов, любые попытки сделать это будут просто отклонены системой. Колонки soft и hard показывают квоты jane, который, как мы видим, на данный момент неограничены (напомню: 0 обозначает, что квот нету).
Понимание edquota
Мягкое (soft) ограничение - это максимальное количество используемого дикового пространства, которое jane выделено в ее файловой системе (другими словами - ее квота). Если jane использует больше дискового пространства, чем ей выделено в "soft limit", она будет предупреждена о превышении квоты по e-mail. Жесткое (hard) ограничение показывает аблосютное ограничение на использование дискового пространства, которое пользователь не сможет превысить. Если jane попытается использовать большее дискового пространства, чем указано в "hard limits", то она получит ошибку"Disk quota exceeded" ("Дисковая квота превышена") и не сможет авершить действие.
Вносим изменения
Так, мы изменили мягкое и жесткое ограничения jane и сохранили файл:
Disk quotas for user jane (uid 1003):
Filesystem blocks soft hard inodes soft hard
/dev/hdc1 4100 10000 11500 6 2000 2500
Запустив команду quota, мы сможет проверить наши изменения:
# quota jane
Disk quotas for user jane (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 4100 10000 11500 6 2000 2500
Копирование квот
Как мы помним, у нас есть другой пользователь в системе - john. Если мы хотим применить к нему те же квоты, чтои к jane, то мы можем использовать опцию -p команды edquota, используя квоты jane как прототип для следующих пользователей. Это простой путь для настройки квот для групп и пользователей.
# edquota -p jane john
# quota john
Disk quotas for user john (uid 1003): Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 0 10000 11500 1 2000 2500
Групповые ограничения
Мы можем также использовать edquota для ограничения дискового пространства для групп. Например отредактируем квоты для группы users:
# edquota -g users
Disk quotas for group users (gid 100): Filesystem blocks soft hard inodes soft hard /dev/hdc1 4100 500000 510000 7 100000 125000
И посмотрим на изменения квот для группы users:
# quota -g users
Disk quotas for group users (gid 100): Filesystem blocks quota limit grace files quota limit grace /dev/hdc1 4100 500000 510000 7 100000 125000
Команда repquota
Осмотр квоты всех польователей используя команду quota может быть весьма утомительным, если у вас много польователей в файловой системе. Команда repquota представляет суммарную информацию по квотам файловой системы в понятном виде. Например посмотрим квоты всех пользователей и групп в /usr/users:
# repquota -ug /usr/users
*** Report for user quotas on device /dev/hdc1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0 0 0 3 0 0
john -- 0 10000 11500 1 2000 2500
jane -- 4100 10000 11500 6 2000 2500
*** Report for group quotas on device /dev/hdc1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0 0 0 3 0 0
users -- 4100 500000 510000 7 100000 125000
Аргументы команды repquota
Для repquota есть пара опций, которые следует отметить. repquota -a выведет все текущие примонтирование на чтение и запись файловые систем, для которых активны квоты. repquota -n не будет преобразовывать uids и gids в имена. Это может ускорить вывод большого списка.
Мониторинг квот
Если вы системный адмиистратор, вы захотите иметь способ мониторить квоты, чтобы гарантированно предотвращать их превышение. В простом случае это можно сделать используя warnquota. Команда warnquota отправляет e-mail пользователям, которые превышают софт лимит. Обычно warnquota запускается через cron-job.
Когда пользователь превышает свой софт лимит, колонка grace в выводе команды quota будет выводить период отсрочки - как давно был превышен софт лимит.
Disk quotas for user jane (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 10800* 10000 11500 7days 7 2000 2500
По-умолчанию период отсрочки до блокирования составляет семь дней.
Изменение периода отсрочки
Вы можете изменить период отсрочки для файловой системы используя команду equota:
# edquota -t
У вас откроется редактор временного файла, который выглядит примерно так:
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/hdc1 7days 7days
Текст файле достаточно толковый. Не забудьте оставить вашим пользователям достаточное кличество времени, чтобы они получили предупреждения по e-mail и нашли какие-нибудь файлы для удаления!
Проверка квот во время загрузки
Вы можете также захотеть проверять квоты при загрузке. Вы можете сделать это скриптом, который запускает команду quotacheck, в Quota Mini HOWTO есть скрипт-пример. Команда quotacheck также способна восстанавливать поврежденные файлы квот, ознакамтесь сами с ней, прочитав man-страницу quotacheck(8).
Также помните, что мы упомянали раньше касательно команд quotaon и quotaoff. Вы должны включить в загрузочные скрипты команду quotaon, чтобы квоты активировались. Для активации квот для всех файловых систем, которые поддерживают квоты, используйте опцию -a:
# quotaon -a
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется
Переведено на Нотабеноиде
http://notabenoid.org/book/24016/79542
Переводчики: Bomber
Настройки
Готово:
