Глава 13. Реализация дисковых квот

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

Дисковые квоты можно настраивать как для отдельных пользователей, так и для групп. Такая гибкость позволяет отвести каждому пользователю небольшую квоту для «личных» файлов (например, электронной почты и отчётов), а проектам, над которыми они работают, дать больше места (если для каждого проекта создана отдельная группа).

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

Чтобы вы могли внедрить дисковые квоты, у вас должен быть установлен RPM-пакет quota. За дополнительными сведениями об установке RPM-пакетов обратитесь к части III Управление пакетами.

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

Чтобы внедрить дисковые квоты, выполните следующие действия:

  1. Включите квоты в файловой системе, отредактировав файл /etc/fstab.

  2. Перемонтируйте файловую систему (системы).

  3. Создайте файлы базы данных квот и постройте таблицу использования диска.

  4. Назначьте политики квот.

Каждое из этих действий рассматривается подробнее в следующих разделах.

13.1.1. Включение квот

Воспользуйтесь текстовым редактором и отредактируйте файл /etc/fstab от имени root. Добавьте в описание файловых систем, в которых требуется включить квоты, параметр usrquota и/или grpquota:

/dev/VolGroup00/LogVol00 /         ext3    defaults        1 1
LABEL=/boot              /boot     ext3    defaults        1 2
none                     /dev/pts  devpts  gid=5,mode=620  0 0
none                     /dev/shm  tmpfs   defaults        0 0
none                     /proc     proc    defaults        0 0
none                     /sys      sysfs   defaults        0 0
/dev/VolGroup00/LogVol02 /home     ext3    defaults,usrquota,grpquota  1 2
/dev/VolGroup00/LogVol01 swap      swap    defaults        0 0
.
.
.

В этом примере для файловой системы /home включаются квоты и для пользователей, и для групп.

ЗамечаниеЗамечание
 

В следующих примерах предполагается, что при установке Red Hat Enterprise Linux был создан отдельный раздел /home. Хотя это и не идеально, корневой раздел (/) (раздел, по умолчанию создаваемый программой установкой) также может использоваться для назначения политик квот в файле /etc/fstab.

13.1.2. Перемонтирование файловых систем

Добавив параметр usrquota и/или grpquota, размонтируйте все файловые системы, записи которых вы изменили в fstab. Если файловая система не используется никакими процессами, примените один из следующих способов:

  • Выполните команду umount, а за ней команду mount, чтобы перемонтировать файловую систему.

  • Выполните команду mount -o remount /home, чтобы перемонтировать файловую систему.

Если ваша файловая система в данный момент используется, проще всего будет перемонтировать её, перезагрузив систему.

13.1.3. Создание файлов базы данных квот

После того, как все файловые системы, в которых включены квоты, перемонтированы, система может работать с дисковыми квотами. Однако, сам файловая система ещё не готова к поддержке квот. Следующим действием должен быть запуск команды quotacheck.

Команда quotacheck проверяет файловые системы, в которых включены квоты, и строит таблицу текущего использования диска в файловых системах. Затем эта таблица используется для обновления системной копии данных об использовании диска. Кроме этого, обновляются файлы дисковых квот в файловой системе.

Чтобы создать в файловой системе файлы квот (aquota.user и aquota.group), воспользуйтесь параметром -c команды quotacheck. Например, если для файловой системы /home включены квоты пользователей и групп, создайте эти файлы в каталоге /home:

quotacheck -cug /home

Параметр -c показывает, что файлы квот следует создать для всех файловых систем, в которых включены квоты, параметр -u выполняет проверку квот пользователей, а параметр -g — проверку квот групп.

Если параметры -u и -g не указаны, создаётся только файл квот пользователей. Если указан только параметр -g, создаётся только файл квот групп.

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

quotacheck -avug

Используемые параметры описаны ниже:

  • a — Проверяет все локально смонтированные файловые системы, в которых включены квоты

  • v — Выводит подробную информацию о процессе проверке квот

  • u — Проверяет информацию о дисковых квотах пользователей

  • g — Проверяет информацию о дисковых квотах групп

После завершения работы quotacheck, файлы квот, соответствующие включённым квотам (пользователей и/или групп) заполняются данными о каждой локально смонтированной файловой системе с включёнными квотами, как, например /home.

13.1.4. Назначение квот на уровне пользователей

Последний этап назначения дисковых квот выполняется с помощью команды edquota.

Чтобы настроить квоты для пользователя, выполните от имени root в приглашении оболочки следующую команду:

edquota username

Выполните это действие для каждого пользователя, которому нужно назначить квоту. Например, если в /etc/fstab включена квота для /home partition (/dev/VolGroup00/LogVol02) и выполняется команда edquota testuser, в редакторе, выбранном в системе как редактор по умолчанию, вы увидите:

Disk quotas for user testuser (uid 501):
  Filesystem                blocks     soft     hard    inodes   soft   hard
  /dev/VolGroup00/LogVol02  440436        0        0     37418      0      0

ЗамечаниеЗамечание
 

Команда edquota использует текстовый редактор, определённый в переменной окружения EDITOR. Чтобы сменить этот редактор, укажите в переменной окружения EDITOR в вашем файле ~/.bash_profile полный путь к предпочитаемому редактору.

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

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

Мягкий предел определяет также максимальный объём дискового дискового пространства. Однако, в отличие от жёсткого предела, мягкий предел может быть превышен в течение некоторого времени. Это время называется периодом отсрочки. Период отсрочки можно задавать в секундах, минутах, часах, днях, неделях или месяцах.

Если одно из этих значений равно 0, предел не устанавливается. Определите требуемые пределы в текстовом редакторе. Например:

Disk quotas for user testuser (uid 501):
  Filesystem                blocks     soft     hard   inodes   soft   hard
  /dev/VolGroup00/LogVol02  440436   500000   550000    37418      0      0

Чтобы проверить, установились ли квоты для пользователя, выполните команду:

quota testuser

13.1.5. Назначение квот на уровне групп

Квоты можно также назначать на уровне групп. Например, чтобы назначить квоту группе devel (к этому моменту группа уже должна существовать), выполните следующую команду:

edquota -g devel

Эта команда выводит существующую квоту этой группы в текстовом редакторе:

Disk quotas for group devel (gid 505):
  Filesystem                blocks    soft     hard    inodes    soft    hard
  /dev/VolGroup00/LogVol02  440400       0        0     37418       0       0

Измените пределы, сохраните файл, и настройте квоты.

Чтобы проверить, установились ли квоты группы, выполните команду:

quota -g devel

13.1.6. Назначение квот на уровне файловой системы

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

edquota -t

Как и в случае с другими командами edquota, при этом в текстовом редакторе будет показаны текущие квоты для файловой системы:

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/mapper/VolGroup00-LogVol02       7days                7days

Измените период отсрочки для блоков или inode, сохраните изменения в файле и выйдите из текстового редактора.