headermask image
Рекомендую: Фриланс-биржа | Кэшбэк-сервис | Интернет-бухгалтерия

LPI 101: Устройства, файловые системы Linux и стандарт FHS. Дисковые квоты

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

Установка режима квотирования

Для установки режима квотирования необходима поддержка ядра. Как правило, современные ядра версий 2.4 или 2.6 имеют всю необходимую поддержку. В более ранних версиях поддержка могла быть неполной, что требовало от вас сборки собственного ядра. В современных реализациях поддержка квот чаще всего реализуется в виде модулей ядра. Существует три версии поддержки квот; vfsold (версия 1), vfsv0 (версия 2) и xfs (для файловой системы XFS). Данный раздел охватывает вторую версию квотирования для файловых систем, отличных от XFS, и квоты xfs для файловой системы XFS.

Первый шаг для введения квотирования – указание опций usrquota или grpquota в определении файловой системы в /etc/fstab, соответственно тому, что вы хотите ввести: квоты для пользователей, групп или то и другое. Рассмотрим создание обоих типов квот в файловой системе XFS, используемой для каталогов home в нашем примере, а также для файловой системы /boot, чтобы видеть, как это делается в различных файловых системах. Сделайте, как показано в листинге 31.

Листинг 31. Установка режима квотирования в /etc/fstab

/dev/hda2 /boot ext3 defaults,usrquota,grpquota 0 2
/dev/hda7 /home xfs defaults,usrquota,grpquota 0 2

В файловой системе XFS информация о квотах входит в состав метаданных. В других файловых системах информация о квотах для пользователей хранится в файле aquota.user в корне файловой системы, а для групп пользователей – в файле aquota.group. Для квот первой версии использовались файлы quota.user и quota.group.

Внеся изменения в /etc/fstab и добавив квоты, необходимо перемонтировать файловые системы и, для файловых систем, отличных от XFS, создать файлы квот и разрешить проверку квотирования. Команда quotacheck проверяет квотирование на всех файловых системах и создает необходимые файлы aquota.user и aquota.group, если их не существует. Также она может восстановить поврежденные файлы квот. Более подробно см. руководство man. Команда quotaon включает проверку квот. Пример показан в листинге 32. Следующие опции используются в обеих командах:

-a
для всех файловых систем в /etc/fstab, для которых разрешено автоматическое монтирование
-u
для пользовательских квот (установлено по умолчанию)
-g
для групповых квот
-v
для подробного вывода

Листинг 32. Создание файлов квот и включение квотирования

root@pinguino:~# quotacheck -augv
quotacheck: Scanning /dev/hda2 [/boot] quotacheck: Cannot stat old user quota
file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
done
quotacheck: Checked 4 directories and 23 files
quotacheck: Old file not found.
quotacheck: Old file not found.
quotacheck: Skipping /dev/hda7 [/home]
root@pinguino:~# quotaon -ugva
/dev/hda2 [/boot]: group quotas turned on
/dev/hda2 [/boot]: user quotas turned on

Проверка квот при загрузке

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

Установка пределов квот

Как видно, квотирование управляется либо через бинарные файлы в корне файловой системы, либо через метаданные файловой системы. Для установки квоты для отдельного пользователя используется команда edquota. Эта команда извлекает информацию о квотах для данного пользователя из различных файловых систем, для которых включено квотирование, создает временный файл и открывает редактор, позволяющий изменять квоты. Информацию о том, какой именно редактор используется, см. в документации man команды edquota. Для изменения квот необходимо обладать полномочиями root. Полученная информация будет выглядеть примерно так, как в листинге 33.

Листинг 33. Запуск edquota

Disk quotas for user ian (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/hda2 0 0 0 0 0 0
/dev/hda7 2948 0 0 172 0 0

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

Мягкие пределы – это пределы, при достижении которых пользователь получает предупреждения о превышении квоты. Жесткие пределы – это границы, которые пользователь не может превысить. Можно считать, что ограничения на блоки – это ограничения на объем сохраняемой информации, а ограничения на inode – это ограничения количества файлов и каталогов.

Изменение пределов квот

Чтобы изменить пределы квот, отредактируйте значения во временном файле и сохраните его. Чтобы не применять изменения, закройте файл без сохранения. Предположим, вы хотите установить для меня ограничения в файловой системе /home: по объему – 10 Мбайт, по количеству – 1000 файлов. Добавляя 10% запаса на жесткие пределы, устанавливаем значения, как показано в листинге 34.

Листинг 34. Установка пределов

Disk quotas for user ian (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/hda2 0 0 0 0 0 0
/dev/hda7 2948 10240 11264 172 1000 1100

Сохраните файл, чтобы применить изменения. В данном примере для пользователя ian в файловой системе /boot квоты не были изменены, поскольку пользователь ian не имеет прав для записи в эту файловую систему. Также обратите внимание, что любые изменения, внесенные в данные об используемых блоках или inodes, будут проигнорированы.

Копирование квот

Теперь предположим, что вы создаете идентификаторы для группы пользователей – слушателей учебного курса. Допустим, у вас есть пользователи gretchen, tom и greg, и вы хотите назначить им такие же квоты, как у ian. Для этого применяется опция -p команды edquota, которая использует значения квот пользователя ian в качестве прототипа для квот других пользователей, как показано в листинге 35.

Листинг 35. Установка квот по прототипу

root@pinguino:~# edquota -p ian gretchen tom greg

Квоты для групп пользователей

Команду edquota также можно использовать для ограничения выделения дискового пространства на основании принадлежности файлов группам. Пусть, например, три упомянутых выше слушателя объединены в основную группу xml-101. Чтобы задать пределы на суммарный объем, используемый всеми членами группы, на уровне 25 Мбайт и 2500 файлов, используйте команду edquota -q xml-101 и установите значения, как показано в листинге 36.

Листинг 36. Установка квот для группы пользователей

Disk quotas for group xml-101 (gid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/hda2 0 0 0 0 0 0
/dev/hda7 28 25600 28160 10 2500 2750

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

Пользователи могут превышать мягкие пределы квот в течение “льготного периода”, который по умолчанию составляет 7 дней. После истечения этого периода мягкие пределы становятся жесткими. Льготные периоды устанавливаются с помощью опции -y команды edquota. Перед вами вновь окажется редактор с данными, аналогичными представленным в листинге 37. Как и раньше, сохраните изменения, чтобы обновить значения. Убедитесь, что пользователям предоставлено достаточно времени для получения предупреждений по электронной почте и удаления некоторых файлов.

Листинг 37. Установка льготных периодов

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/hda2 7days 7days
/dev/hda7 7days 7days

Проверка квот

Команда quota без указания опций выводит квоты для вызвавшего ее пользователя во всех файловых системах, где такие квоты установлены. Опция -v выводит информацию для всех файловых систем, в которых включено квотирование. Пользователь root может также добавить имя пользователя к команде, чтобы просмотреть ограничения для конкретного пользователя. Эти команды представлены в листинге 38.

Листинг 38. Просмотр квот

root@pinguino:~# quota
Disk quotas for user root (uid 0): none
root@pinguino:~# quota -v
Disk quotas for user root (uid 0):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda2 19173 0 0 26 0 0
/dev/hda7 16 0 0 5 0 0
root@pinguino:~# quota -v ian
Disk quotas for user ian (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda2 0 0 0 0 0 0
/dev/hda7 2948 10240 11264 172 1000 1100

Наряду с текущими уровнями использования выводятся жесткие и мягкие пределы. В листинге 39 показано, что будет, если превысить границы мягкого предела, и что произойдет, если попытаться превысить жесткий предел. В данном примере мы создаем файл размером примерно 4 Мбайт, а затем копируем его. Вместе с первоначальным уровнем использования около 3 Мбайт этого достаточно для превышения мягкого предела. Обратите внимание, что рядом с мягким пределом выводится звездочка, показывающая, что пользователь превысил квоту. Также заметьте, что в столбце grace period теперь показано, сколько времени есть у пользователя, чтобы исправить положение.

Листинг 39. Превышение квот

ian@pinguino:~$ dd if=/dev/zero of=big1 bs=512 count=8000
8000+0 records in
8000+0 records out
4096000 bytes transferred in 0.019915 seconds (205674545 bytes/sec)
ian@pinguino:~$ cp big1 big2
ian@pinguino:~$ quota
Disk quotas for user ian (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 10948* 10240 11264 7days 174 1000 1100
ian@pinguino:~$ cp big1 big3
cp: writing `big3': Disk quota exceeded

Создание отчета о квотах

Проверять квоты для каждого пользователя последовательно не очень удобно, поэтому для создания отчета о квотах используется команда repquota. В листинге 40 показано, как просмотреть квоты для всех пользователей и групп каталога /home.

Листинг 40. Превышение квот

root@pinguino:~# repquota -ug /home
*** Report for user quotas on device /dev/hda7
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 16 0 0 5 0 0
ian +- 11204 10240 11264 6days 175 1000 1100
tom -- 8 10240 11264 3 1000 1100
gretchen -- 8 10240 11264 3 1000 1100
greg -- 12 10240 11264 4 1000 1100
*** Report for group quotas on device /dev/hda7
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 16 0 0 5 0 0
ian -- 11204 0 0 175 0 0
xml-101 -- 28 25600 28160 10 2500 2750

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

Как и в других командах, относящихся к квотам, опция -a создает отчет по всем файловым системам, где включено квотирование. Опция -v формирует более подробный вывод. Опция -n выводит список номеров пользователей без определения их имен. Это может повысить производительность для больших отчетов, но результат хуже читается человеком.

Предупреждение пользователей

Команда warnquota используется для отправки предупреждений по электронной почте пользователям, превысившим квоты. Если квоту превысила группа, сообщения по электронной почте отправляются пользователям, указанным в /etc/quotagrpadmins. Обычно warnquota запускается периодически как задание cron. Более подробно о cron и warnquota см. документацию man.

Взято с ibm developerworks

Похожие посты
  • LPI 101: Устройства, файловые системы Linux и стандарт FHS. Установка владельца и группы файла
  • LPI 101: Устройства, файловые системы Linux и стандарт FHS. Жесткие и символические ссылки
  • Описание более 350 команд Linux c примерами.
  • LPI 101: Устройства, файловые системы Linux и стандарт FHS. Монтирование и размонтирование файловых систем
  • Mac4Lin: как Linux превратить в Mac
  • Просмотр квоты на ящик в Outlook 2010 и Outlook Web App
  • LPI 101: Устройства, файловые системы Linux и стандарт FHS. Целостность файловых систем
  • LPI 101: Устройства, файловые системы Linux и стандарт FHS. Поиск и расположение системных файлов
  • LPI 101. Аппаратные средства и архитектура. Коммуникационные устройства
  • Ubuntu 7.10