Quota linux что это

Обновлено: 08.07.2024

Глава 13 Программы обеспечения безопасности (Управление и ограничения) - Квоты

Установка поддержки квот на вашей Linux системе.

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

Создание ядра с поддержкой квот

Первое, что вам необходимо сделать, это создать ядро с поддержкой квот. В ядре 2.2.14 надо удостовериться, что вы ответили "Y" на вопрос:
Filesystems
Quota support (CONFIG_QUOTA) [N/y/?] Y

ЗАМЕЧАНИЕ. Если при компиляции ядра вы руководствовались соответствующей главой из этой книги, то поддержка квот у вас включена.

Модификация файла "/etc/fstab"

Файл "/etc/fstab" содержит информацию обо всех файловых системах, инсталлированных на вашем Linux сервере. Квоты должны быть включены в нем, чтобы их можно было использовать. Так как квоты должны быть определены для каждой файловой системы независимо и каждая файловая система описывается в файле "/etc/fstab" в отдельной строке, то квота должна быть установлена для каждой строки, где вы хотите включить их поддержку. Используя прорамму квота, в зависимости от ваших нужд, вы можете включить квоты только для групп, пользователей или и тех и других одновременно. Для всех нижеприведенных примеров, мы используем каталог "/home", размещенный на разделе "/dev/sda6".
Возможность 1.

Для включения квот для пользователей на определенной файловой системы, отредактируйте ваш "/etc/fstab" файл (vi /etc/fstab) и добавьте опцию "usrquota" в четвертое поле после слова "defaults" или любой другой опции.

Например:
/dev/sda6 /home ext2 defaults 1 2 (как пример: слово "defaults")
/dev/sda6 /home ext2 nosuid,nodev 1 2 (как пример: любая другая опция)

Должен читаться:
/dev/sda6 /home ext2 defaults,usrquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,usrquota 1 2

Для включения квот для групп на определенной файловой системы, отредактируйте ваш "/etc/fstab" файл (vi /etc/fstab) и добавьте опцию "grpquota" в четвертое поле после слова "defaults" или любой другой опции.

Например:
/dev/sda6 /home ext2 defaults 1 2 (как пример: слово "defaults")
/dev/sda6 /home ext2 nosuid,nodev 1 2 (как пример: любая другая опция)

Должен читаться:
/dev/sda6 /home ext2 defaults,grpquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,grpquota 1 2
Возможность 3.

Для включения квот для пользователей и групп на определенной файловой системы, отредактируйте ваш "/etc/fstab" файл (vi /etc/fstab) и добавьте опции "usrquota, grpquota" в четвертое поле после слова "defaults" или любой другой опции.

Например:
/dev/sda6 /home ext2 defaults 1 2 (как пример: слово "defaults")
/dev/sda6 /home ext2 nosuid,nodev 1 2 (как пример: любая другая опция)

Должен читаться:
/dev/sda6 /home ext2 defaults,usrquota,grpquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,usrquota,grpquota 1 2

Создание файлов "quota.user" и "quota.group"

После модификации файла "/tc/fstab", чтобы квоты начали действовать, в корневой каталог файловой системы (например, "/home") помещается файл "quota.user", если вы хотите использовать пользовательские квоты, или "quota.group", для групповых квот, или и тот и другой для комбинированных квот. Владельцем обоих файлов является "root".

Команда "touch" будет создавать новые пустые файлы в каталоге "home" с именами "quota.user" и "quota.group". Команда "chmod" будет устанавливать права доступа к этим файлам в чтение-запись только для root.

ЗАМЕЧАНИЕ. Оба файла "quota.user" и "quota.group", должны принадлежать root, с правами чтение-запись только для владельца.
Шаг 2

Вышеприведенные команды необходимы только для инициализации файлов "quota.user" и/или "quota.group"; команда edquota (-u) будет редактировать квоты для пользователя "wahib" и (-g) будет редактировать квоты для группы. Заметим, что вы должны редактировать существующие в вашей системе UID/GID, чтобы инициализация файлов прошла успешно.
Шаг 3

Назначение квот для Пользователей и групп

После того, как система перезагрузилась, вы можете назначить квоты пользователям и группам пользователей. Это операция осуществляется при помощи команды "edquota". edquota (8).
Программа edquota.

Edquota - это редактор квот, который создает временный файл с текущими дисковыми квотами, используемый пользователем "root" для их установки для пользователей и групп пользователей. Нижеприведенный пример покажет как установить квоты для пользователя и группы пользователей.
Установка квоты для пользователя.

Предположим, для примера, что у вас есть пользователь с именем "wahib". Следующая команда вызывает редактор (vi), чтобы изменить и установить квоты для пользователя "wahib" на каждый раздел, где включены квоты:
Шаг 1

После выполнения этой команды, вы увидите на экране строки связанные с пользователем "wahib". "blocks in use:" отображает общее число блоков (в килобайтах) расходуемых пользователем на разделе. "inodes in use:" отображает общее число файлов, которое имеет пользователь на разделе. Эти параметры ("blocks in use, and inodes in use") контролируются и устанавливаются автоматически системой и вы не можете установить или изменить их.
Шаг 2

Назначим 5MB квоту для пользователя "wahib", изменив следующие параметры в редакторе vi:
Quotas for user wahib:
/dev/sda6: blocks in use: 6, limits (soft = 0, hard = 0)
inodes in use: 5, limits (soft = 0, hard = 0)

Должна читаться:
Quotas for user wahib:
/dev/sda6: blocks in use: 6, limits (soft = 5000, hard = 0)
inodes in use: 5, limits (soft = 0, hard = 0)

"soft limit" (soft =) определяет максимальное количество дискового пространства, которое пользователь может иметь.
"hard limit" (hard =) определяет абсолютное ограничение использования пользоватлем дискового пространства. Пользователь не может превзойти его. Следует заметить, что "hard limit" работает только когда установлен параметр "grace period".
Параметр grace period

Параметр "grace period" позволяет вам установить время, прежде чем значение soft limit будет приведено в жизнь на файловой системе с включенными квотами. Например этот параметр может быть использован для предупреждения ваших пользователей о новой политике, которая установит дисковую квоту в 5MB на их домашний каталог через 7 дней. Вы можете установить это значение в 0 дней (по умолчанию) для любого отрезка времени. Чтобы изменить это требуется два следующих шага (в моем примере я принимаю 7 дней).
Шаг 1

Модифицируем период любезности (grace period) до 7 дней. Измените или установите следующие параметры в редакторе vi:
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda6: block grace period: 0 days, file grace period: 0 days

Должно читаться:
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda6: block grace period: 7 days, file grace period: 7 days

Замечание. Команда "edquota -t" редактирует параметр soft time limits для каждой файловой системы с включенными квотами.
Назначение квот для отдельных групп

Программа edquota будет дуплицировать квоты, которые установлены для пользователя "wahib", на всех пользователей с UID больше 499 из файла "/etc/passwd"

Дополнительная документация.

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

$ man edquota (8) - редактирование пользовательских квот
$ man quota (1) - вывод информации об использовании диска и ограничениях
$ man quotacheck (8) - сканирование файловой системы о использовании диска
$ man quotactl (2) - манипулирование дисковыми квотами
$ man quotaon, quotaoff (8) - включение или выключение квот на файловой системе
$ man repquota (8) - суммирование квот на файловой системе
$ man rquota (3) - осуществление квот на удаленной машине

Команды

Ниже приведены команды из тех, что мы часто используем в регулярной работе, но из существует много больше. Читайте страницы руководства (man) для получения большей информации.
Quota

Quota выводит информацию об использовании диска и ограничениях на файловой системе.

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

Блог про Linux, Bash и другие информационные технологии

Управление квотами дискового пространства осуществляется под пользователем root. Существуют два вида квот: мягкие (soft quota) и жесткие (hard quota).

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

Установка пакета

Перед началом работы с квотами нужно установить пакет quota

Настройка файловых систем на работу с квотами

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

После указания опций надо перемонтировать файловую систему:

После этого можно включить квоты

У этой команды тоже есть опции командной строки, вот некоторые из них:

После включения квот можно приступать к их настройке.

Управление квотами

Настройка лимитов квот (непосредственное управление квотами) производится при помощи команды edquota. Формат команды:

Несколько опций команды edquota:

После редактирования квот может потребоваться перезапустить сервис quota

Теперь давайте создадим пользователя и настроим для него квоты

Пользователь создан. Добавим для него следующие ограничения: пусть он не может использовать больше 1 мегабайта и может создать только 3 файла на файловой системе, смонтированной в /mnt/storage.

В редакторе вы увидите следующее:

И выйдем с сохранением. Теперь посмотрим, сохранились ли квоты. Залогинимся под пользователем user1 и перейдем в директорию /mnt/storage. Попробуем создать файл большого размера:

Как видите, квота пользователя исчерпана. Посмотрим, что у нас есть на дисковой системе:

Как видите, размер файла 1 мегабайт. Теперь надо проверить, работает ли ограничение на количество файлов. Удалим file.dat и попробуем создать четыре файла.

Файл file4 мы не смогли создать, потому что сработало ограничение на количество файлов. Смотрим, какие файлы у нас есть:

Как видите, управление квотами работает.

Просмотреть установленные квоты можно при помощи команды quota. Вот несколько опций:

Давайте посмотрим информацию для пользователя user1:

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

Также можно воспользоваться командой repquota для просмотра квот, которые в данный момент присутствуют в системе.

Содержание 1. Что такое квотирование? 2. Текущее состояние квот в Linux 3. Основные требования 3.1. Ядро 3.2. Программное обеспечение 4. Установка - Часть I: Настройка 4.1. Настройка ядра 4.2. Установка программного обеспечения 4.3. Включение квотирования во время загрузки 4.4. Изменение /etc/fstab 4.5. Создание "quota.user" и "quota.group" 4.6. Перезагрузка 5. Установка - Часть II: Определение квот для пользователей и групп 5.1. Определение квот для конкретного пользователя 5.2. Определение квот для конкретной группы 5.3. Установка одинаковых квот для множества пользователей 5.4. Мягкие ограничения 5.5. Жесткие ограничения 5.6. Льготный период 6. Команды 6.1. Quotacheck 6.2. Repquota 6.3. Quotaon и Quotaoff 7. Авторские права

Квотирование позволяет ограничить два аспекта использования диска: количество файлов, которыми владеет пользователь или группа пользователей; и количество блоков диска, которые может использовать пользователь или группа пользователей. Квотирование определяется, как для каждого пользователя, так и для каждой файловой системы. Если у вас несколько разделов, то квоты нужно определить для каждого раздела, в котором пользователь намеревается создавать файлы.

Я слышал, что поддержка квотирования встроена в ядро, начиная с версии 1.3.8x, и теперь это часть ядра 2.0.x. Если ваша система не поддерживает квотирование, я настоятельно рекомендую обновить ядро.

В настоящее время, квотирование работает только на файловой системе ext2.

3.1. Ядро

3.2. Программное обеспечение

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

4.1. Настройка ядра

Перенастройте свое ядро и добавьте туда поддержку квотирования.:

4.2. Установка программного обеспечения

Программное обеспечение для квотирования находится по адресу

4.3. Включение квотирования во время загрузки

Золотое правило: всегда включайте квотирование после того, как файловые системы перечисленные в /etc/fstab, установлены, иначе квотирование не будет работать. Я рекомендую включать квотирование в конце скрипта загрузки системы, или, если хотите, сразу после установки файловых систем.

4.4. Изменение /etc/fstab

Разделы, на которых не включено квотирование, выглядят следующим образом: Для включения поддержки квотирования, напишите "usrquota" в четвертом поле, где написано "defaults" (для выяснения подробностей прочтите руководство к fstab). Замените "usrquota" на "grpquota", если вам нужна поддержка квотирования групп пользователей в файловой системе. Если вам нужна поддержка квотирования пользователей и их групп в файловой системе, то:

4.5. Создание "quota.user" и "quota.group"

4.6. Перезагрузка

Теперь перезагрузите систему.

Запомните, что теперь для установления квотирования на каталоги вам потребуется произвести шаги 4, 5, и 6.

Эта операция выполняется, при помощи команды edqouta (man edquota).

Перед этим я обычно запускаю команду qoutacheck с параметрами -avug, чтобы файловая система точно знала, что и кем используется. Впрочем, это не обязательный шаг, а просто привычка.

5.1. Определение квот для конкретного пользователя

Например. У меня в системе есть пользователь bob. Команда "edqouta -u bob" запускает текстовый редактор (определенный в переменной окружения $EDITOR) для редактирования квот пользователя bob для каждого раздела, на котором включено квотирование:

"blocks in use" это общее количество блоков (килобайт), используемых пользователем на этом разделе.

"inodes in use" это общее количество файлов, принадлежащих пользователю.

5.2. Определение квот для конкретной группы

В моей системе есть группа games. "edquota -g games", снова запускает текстовый редактор для редактирования квот группы games:

5.3. Установка одинаковых квот для множества пользователей

Для быстрой установки квот, скажем для 100 пользователей, на те же значения, что и для пользователя bob, я должен определить ему квоты, а затем запустить:

если вы используете оболочку csh и идентификаторы пользователей (UID), то последние начинаются с 500.

В добавок к edqouta вы еще должны ознакомиться с тремя понятиями: мягкие ограничения, жесткие ограничения и льготный период.

5.4. Мягкие ограничения

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

5.5. Жесткие ограничения

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

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

Льготный период (grace period) - это количество времени после превышения мягких ограничений, в течении которого пользователю позволено использовать дисковое пространство, если оно не превышает жесткий лимит. Он определяется в секундах (seconds), минутах (minutes), часах (hours), днях (days), неделях (weeks) или месяцах (months). Проверить его можно при помощи команды "edquota -t":

Можете изменить число дней на любое разумное значение. Лично я использую 7 дней (или 1 неделю).

6.1. Quotacheck

Quotacheck используется для сканирования дискового пространства и обновления файла "quota.user". Я рекомендую запускать его во время загрузки системы или периодически через cron (скажем, каждую неделю).

6.2. Repquota

Repquota выводит общий отчет по квотированию файловой системы. Пример:

6.3. Quotaon и Quotaoff

Quotaon используется для включения подсчета квот; quotaoff для выключения. На самом деле, оба файла похожи между собой и запускаются во время запуска, и выключения системы соответственно.

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

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

Установка пакета quota

Как и полагается в таких случаях, все важные системные инструменты доступны для всех популярных дистрибутивов Linux по-умолчанию в их стандартных репозиториях. Нужно их просто установить. Так, для Ubuntu достаточно выполнить команду:

В других дистрибутивах для установки могут использоваться другие менеджеры пакетов и системы управления пакетами (СУП), могут также и отличаться наименования пакетов. Однако, ключевым словом для поиска инструмента квотирования в любой системе Linux является «quota». Метод настройки системы квотирования для разных дистрибутивов также принципиально не отличается.

Модули ядра для работы системы квотирования

Для работы системы квотирования в Linux необходима её поддержка ядром с помощью специальных модулей ядра. Обычно они установлены по-умолчанию в базовой поставке дистрибутива. Однако не лишним будет всё же это проверить:

Здесь используется утилита find и команда uname -r (определяет версию активного системного ядра), которая просматривает каталог /lib/modules/ и ищет требуемые модули. Как видно, оба необходимых модуля установлены.

Понятно, что версия ядра из приведённого вывода может отличаться в других дистрибутивах, поэтому и используется команда uname -r в составе запроса команды find. В случае, если модули не будут найдены, нужно установить пакет linux-image-extra-virtual:

После этого нужно снова выполнить предыдущую команду find, чтобы убедиться, что нужные модули были установлены.

Настройка конфигурации fstab

Для того, чтобы для определённой ФС было возможно квотирование, её (ФС) необходимо определённым образом монтировать, передавая для этого специальные параметры. Для задания таких параметров (и не только) существует файл /etc/fstab . Его нужно отредактировать, например с помощью nano:

Содержимое fstab может быть, например, таким:

Чтобы настроить монтирование, например всей корневой ФС (/) в режиме работы квотирования, необходимо отредактировать соответствующую строку, заменив поле «default» параметрами «usrquota» и «grpquota»:

При задании параметров, если их несколько очень важно перечислять их через запятую и без пробелов. Как можно догадаться, новые параметры позволяют соответствующей ФС, т. е. для которой они определены, работать в режиме квотирования для пользователей (usrquota) и для групп – grpquota. Необязательно использовать их вместе, по необходимости можно задействовать только один из них.

Теперь необходимо перемонтировать корневую ФС:

Необходимо также и убедиться в том, что перемонтирование было произведено с требуемыми параметрами. Для этого можно посмотреть содержимое файла /proc/mounts , используя команды cat и grep:

Как видно, корневая ФС (/) смонтирована с требуемыми параметрами «usrquota» и «grpquota». Теперь необходимо включить и настроить саму систему квотирования.

Включение системы квотирования

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

В результате будут созданы следующие файлы:

Но пока система квотирования не обрабатывает сами квоты, поскольку они пока не заданы. Теперь-то и можно их настроить.

Настройка квот и отчёты

Для настройки квот существуют две команды: edquota и setquota. Первая позволяет задавать настройки квот в текстовом редакторе, установленном по-умолчанию, вторая — без него, указанием соответствующих аргументов самой команды. Для более глубокого понимания стоит рассмотреть сначала задание квоты с помощью команды edquota, например для пользователя john:

Будет открыт текстовый редактор для редактирования следующего содержимого:

Как можно видеть, здесь приводятся данные о пользователе, для которого нужно настроить квоты, а также сами ограничения для блоков (blocks) и индексов (inodes), каждому из которых соответствует мягкое (soft) и жёсткое (hard) ограничение. Мягкое ограничение можно временно превышать. По истечении этого временного периода пользователь должен вернуться к разрешённым пределам (т. е. освободить дисковое пространство или удалить лишние файлы и каталоги), иначе ограничение будет распознаваться как жёсткое. Ограничения для блоков подразумевают объёмы дискового пространства в этих самых блоках. Ограничения по индексам не позволяют пользователю работать с определённым количеством каталогов и файлов, превышающим заданный лимит.
Обычно 1 блок составляет 1 килобайт данных. В данном примере для пользователя john установлена квота в 40 килобайт на устройстве /dev/vda1, а пределы для soft и hard отключены значением «0». Теперь можно задать для пользователя john квоты, определив, например значения soft и hard для блоков:

Если теперь сохранить и закрыть файл, то можно проверить сделанные изменения для пользователя john командой:

Disk quotas for user john (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/vda1 40K 100M 110M 13 0 0

Следующая команда setquota, как уже было отмечено, позволяет задавать квоты без работы в текстовом редакторе:

В результате пользователю john будут назначены квоты: мягкая — 200 мегабайт и жёсткая — 220 мегабайт. Если использовать опцию -g, то квоты будут задаваться для указанной группы. Это применимо как к edquota, так и к setquota. Следует также отметить, что задание параметров для индексов (в данном случае «0 0») обязательно, даже если они отключены или не изменяются.

Для задания «мягкого» периода, в течение которого пользователь должен вернуться в указанные для него пределы нужно использовать опцию -t, например:

В результате будет задан период отсрочки для блоков и индексов продолжительностью 864000 секунд, т. е. 10 дней. Обязательно нужно указывать оба параметра, даже если нужно настроить только один из них. Значения отсрочек будут заданы для всех пользователей.
Для просмотра отчётов по использованию пользователями квот нужно выполнить команду:

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: