Ключевые слова:linux, quota, fs, limit, (найти похожие документы)
From: Иван Песин <ipesin at post.Lviv.UA>
Newsgroups: Russian Linux Gazette
Date: Mon, 14 Jan 2004 14:31:37 +0000 (UTC)
Subject: Перевод на русский Quota mini-HOWTO
Оригинал: http://gazette.linux.ru.net/rus/articles/quota_mini-howto.html
Quota mini-HOWTO
Ralf van Dooren r.vdooren@snow.nl
v0.5, 2003-08-09
Перевод на русский: (c) Иван Песин <ipesin at post.Lviv.UA>
Этот документ описывает работу с квотами в системе Linux, установку
квот для пользователей и групп и использование дополнительных команд
управления квотами. Документ предназначен для пользователей,
работающих с ядрами 2.x (последняя версия ядра, на котором проверялась
работа с квотами -- 2.4.21).
Присылайте коментарии и замечания мне, на адрес r.vdooren at snow.nl.
Я буду признателен.
1. Что такое квота?
* 1.1 Для чего нужны квоты?
* 1.2 Текущее состояние системы квотирования на Linux
2. Требования для квот
* 2.1 Ядро
* 2.2 Программное обеспечение квот
3. Настройка квот: установка и конфигурация
* 3.1 Патч ядра
* 3.2 Переконфигурируйте ваше ядро
* 3.3 Скомпилируйте и установите программное обеспечение квот
* 3.4 Измените ваши системные скрипты для проверки и активации
квот при загрузке
* 3.5 Изменение /etc/fstab
* 3.6 Активация системы квотирования
* 3.7 Добавление quotacheck в crontab
4. Настройка квотирования: утилиты
* 4.1 Назначение квоты отдельному пользователю
* 4.2 Назначение квоты отельной группе
* 4.3 Назначение одинаковых квот большому количеству
пользователей
* 4.4 Мягкий лимит
* 4.5 Жесткий лимит
* 4.6 Период отсрочки
5. Дополнительные команды квотирования
* 5.1 Quotacheck
* 5.2 Repquota
* 5.3 Quotaon and Quotaoff
_________________________________________________________________
1. Что такое квота?
1.1 Для чего нужны квоты?
Квотирование позволяет задавать ограничения по двум параметрам
дисковых хранилищ: число индексных дескрипторов, которыми может
владеть пользователь или группа, и число блоков диска, доступных
пользователю или группе.
Идея квотирования заключается в ограничении дискового пространства,
доступного пользователю. Тем самым пресекается его возможность занять
все дисковое пространство системы. Квоты назначаются на основе
пользователя и файловой системы. Если имеется более одной файловой
системы, доступной пользователю, квотирование должно быть настроено на
каждой из них. Для управления и автоматизации работы с квотами
существует хороший набор утилит.
1.2 Текущее состояние системы квотирования на Linux
В последнее время в реализацию механизма квотирования были внесены
значительные изменения. Теперь существуют два разных варианта
настройки. Утилиты работают как и раньше, но есть разница в
используемых файлах. Данный документ описывает настройку и работу с
новым вариантом квотирования. Поскольку этот новый механизм еще не
включен в ядро, нам придется его пропатчить. Мы опишем процесс
установки патча и пакета linuxquota. Если у вас уже установлено ПО для
квотирования, то, быть может, все равно нужно будет установить ПО, а
возможно и нет. Можете написать мне, если у вас возникли вопросы. Я
постараюсь позже включить в этот документ обзор дистрибутивов Linux с
их реализациями квотирования.
2. Требования для квот
2.1 Ядро
Исходный код ядер 2.x доступен на сайте http://www.kernel.org.
Пожалуйста, для уменьшения трафика пользуйтесь ближайшим к вам
зеркалом. Если у вас свежая версия утилиты tar, вы можете загрузить
сжатый файл .bz2.
Разархивируйте ядро:
cd /usr/src
tar jxvf /path/to/linux-2.4.21-tar.bz2 - для ядра, сжатого bzip2 -
tar zxvf /path/to/linux-2.4.21-tar.gz - для ядра, сжатого gzip -
ln -s /usr/src/linux-2.4.21 /usr/src/linux
2.2 Программное обеспечение квот
В зависимости от используемого дистрибутива Linux у вас может быть уже
установлено ПО квотирования. Программное обеспечение квотирования
активно разрабатывается, а свежая версия ПО доступна на SourceForge.
Домашняя страница проекта находится по адресу
http://www.sourceforge.net/projects/linuxquota
3. Настройка квот: установка и конфигурация
3.1 Патч ядра
Загрузите патч ядра :
ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/
Выберите версию вашего ядра и загрузите патч. Пропатчте ваше ядро
командой 'patch'. Если для вашего ядра есть несколько патчей,
обязательно накладывайте их в нужном порядке.
Вы можете использовать этот скрипт ( Я полагаю, что загруженные патчи
находятся в /tmp/quota/, а ядро разархивировано в каталог
/usr/src/linux) :
#!/bin/sh
gunzip /tmp/quota/*.gz
cd /usr/src/linux
COUNT=`ls -1 /tmp/quota/*.diff | wc -l`
for I in `seq 1 $COUNT`
do
patch -p1 < /tmp/quota/quota-2.4.21-$I-*.diff
done
3.2 Переконфигурируйте ваше ядро
Переконфигурируйте ваше ядро и добавьте поддержку квот.
С помощью `make menuconfig` или `make xconfig` найдите параметр
поддержки квот в меню Filesystems. Можно, при необходимости, указать
дополнительные параметры, например поддержку 32-битных UID.
Сохраните конфигурацию и скомпилируйте ядро. Убедитесь, что при
загрузке будет выбрано новое ядро, поддерживающее квоты.
3.3 Скомпилируйте и установите программное обеспечение квот
Для того, чтобы использовать все возможности новой системы квот, вам,
вероятно, будет нужно загрузить новый пакет утилит работы с квотами.
Его можно загрузить по приведенному выше адресу.
После загрузки выполните:
$ gzip -dc <downloaded file> | tar xvf
$ cd quota-tools (укажите каталог, в котором находятся утилиты)
$ ./configure
$ make
$ su
# make install
3.4 Измените ваши системные стартовые скрипты для проверки и активации квот при
загрузке
Вот пример:
# Проверить и активировать квоты.
if [ -x /usr/sbin/quotacheck ]
then
echo "Checking quotas. This may take some time."
/usr/sbin/quotacheck -avug
echo " Done."
fi
if [ -x /usr/sbin/quotaon ]
then
echo "Turning on quota."
/usr/sbin/quotaon -avug
fi
Золотое правило гласит: активируйте квоты после того, как смонтируются
все файловые системы из файла /etc/fstab, иначе квоты работать не
будут. Я рекомендую включать квоты сразу после монтирования файловых
систем в инициализационном скрипте.
3.5 Изменение /etc/fstab
Разделы, на которых еще не разрешено квотирование, выглядят примерно
так:
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults 1 1
Для того, чтобы включить поддержку квотирования на файловой системе,
добавьте ключ "usrquota" в четвертое поле, содержащее слово"defaults"
(за подробностями обращайтесь к man fstab).
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota 1 1
Замените ключ "usrquota" на "grpquota", если вам нужна поддержка квот
для групп.
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,grpquota 1 1
Нужна поддержка квотирования пользователей и групп на одной файловой
системе? Пожалуйста.
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1
3.6 Активация системы квотирования
Для активации системы квотирования нужно перезагрузить систему, тогда
внесенные изменения вступят в силу. Загрузится ядро с поддержкой квот
и выполнятся измененные инициализационные скрипты. При первом запуске
quotacheck сгенерирует необходимые файлы для поддержания баз данных
квотирования.
3.7 Добавление quotacheck в crontab
Полезно регулярно выполнять quotacheck. Например, раз в неделю. Для
этого добавьте следующую строку в файл crontab:
0 3 * * 0 /sbin/quotacheck -avug
4. Настройка квотирования: утилиты
Эта операция выполняется с помощью команды edquota (за подробной
информацией обращайтесь к команде `man edquota`).
4.1 Назначение квоты отдельному пользователю
Рассмотрим пример. В моей системе есть пользователь с именем bob.
Команда "edquota -u bob" запустит редактор vi (или любой другой,
указанный в переменной окружения $EDITOR) для редактирования квот
пользователя bob на каждом разделе, для которого разрешено
квотирование:
Quotas for user bob:
/dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500)
inodes in use: 356, limits (soft = 1000, hard = 1500)
"blocks in use" -- это общее количество блоков (в килобайтах)
использованных пользователем на разделе.
"inodes in use" -- общее число использованных пользователем на разделе
и-нод.
4.2 Назначение квоты отдельной группе
Теперь допустим у нас имеется группа games. Команда "edquota -g games"
снова откроет нам редактор vi для редактирования квоты для группы
games:
Quotas for group games:
/dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
inodes in use: 1454, limits (soft = 3000, hard = 4000)
4.3 Назначение одинаковых квот большому количеству пользователей
Чтобы быстро установить квоты, скажем, для ста пользователей, равные
установленной квоте для пользователя bob, я отредактирую вручную
информацию bob'а, после чего выполню:
edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`
здесь я полагаю, что вы пользуетесь командным интерпретатором csh, а
пользовательские UID начинаются со значения 500.
В дополнение к edquota существуют три термина, с которыми вам нужно
познакомиться: "мягкий лимит", "жесткий лимит" и "период отсрочки"
(Soft Limit, Hard Limit, Grace Period).
4.4 Мягкий лимит
Мягкий лимит задает максимальное значение использования пространства
файловой системы для пользователя. В комбинации с периодом отсрочки
работает как граничная черта, за которой пользователь получает
предупреждение о превышении своей квоты.
4.5 Жесткий лимит
Жесткий лимит работает только при заданном периоде отсрочки. Он задает
абсолютный максимум использования пространства файловой системы
пользователем.
4.6 Период отсрочки
Редактируемый с помощью команды "edquota -t", период отсрочки -- это
период времени, после которого мягкий лимит принудительно ограничивает
доступное пространство файловой системы для пользователя. Интервал
времени можно указывает в секундах, минутах, часах, днях, неделях и
месяцах [ sec(onds), min(utes), hour(s), day(s), week(s), month(s) ].
Вот, что вы увидите в результате выполнения команды "edquota -t":
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda2: block grace period: 0 days, file grace period: 0 days
Измените часть строки, содержащую "0 days" на любой подходящий вам
промежуток времени. Лично я предпочитаю 7 дней (или 1 неделю).
5. Дополнительные команды квотирования
5.1 Quotacheck
Quotacheck используется для сканирования файловой системы на предмет
ее использования и обновления файла "aquota.user", содержащего данные
об использованном пользователями пространстве. Я рекомендую выполнять
quotacheck при загрузке и периодически как задание для cron (скажем,
каждую неделю?).
5.2 Repquota
Repquota генерирует суммарный отчет по квотам на файловой системе.
Ниже приведен пример отчета repquota:
# repquota -a
Block limits File limits
User used soft hard grace used soft hard grace
root -- 175419 0 0 14679 0 0
bin -- 18000 0 0 735 0 0
uucp -- 729 0 0 23 0 0
man -- 57 0 0 10 0 0
user1 -- 13046 15360 19200 806 1500 2250
user2 -- 2838 5120 6400 377 1000 1500
5.3 Quotaon and Quotaoff
Утилита quotaon используется для включения системы квот, тогда как
quotaoff для ее отключения. Фактически оба файла подобны. Они
выполняются при старте и завершении работы системы.
Copyright (c) 2003, Ralf van Dooren
народ, Вы вообще на дату сообщения смотрели?
не знаю как там сейчас в 2.4, а в 2.6 квотирование давно присутствует, да и помнится мне в 2.4 с какой-то версии тоже.