From: Kosta Kudrin <cola@tcsb.perm.su>
Newsgroups: fido7.ru.linux
Date: Mon, 6 Feb 1999 13:01:37 +0000 (UTC)
Subject: Организация дисковых квот в Linux
Данная статья представляет собой перевод статьи /usr/doc/quota.txt с
некоторыми добавками.
В большинстве компьютерных систем, дисковое пространство не
бесконечно. Система diskquota обеспечивает механизм для управления
используемым дисковым пространством. Ограничения могут быть
установлены для каждого пользователя в отдельности, для любой или для
всех файловых систем. Система ограничений (quota) будет предупреждать
пользователей когда они превысят свой дозволенный лимит, но будет
позволять иcпользовать некоторое дополнительное пространство для
текущей работы. Система ограничений (quota system) является частью
ядра LINUX , и может быть включена в ядро при конфигурировании
системы. Этот документ будет описывать как пользователи могут
исользовать систему ограничений и как система ограничений
(quota-system) может быть настроена системным администратором.
Обзор ограничений дискового пространства для пользователей.
Для большинства пользователей, дисковые ограничения будут жизненно
важными. Команда quota(1) позволяет просмотреть любые ограничения
дискового пространства для каждого пользователя.
Доступны два типа ограничений , которые могут быть наложены на
пользователя, обычно если используется одно из ограничений то и второе
тоже будет использоваться. Ограничение может быть установлено как на
все дисковое пространство пользователя , которое используется этим
пользователем так и на число файлов (inodes) которыми он может
владеть. Quota обеспечивает информацию на ограничения , которые были
установлены системным администратором, на каждую из областей, которые
используются в данный момент. Ограничения по inodes и block
накладываются как на uid (идентификатор пользователя) так и на gid
(идентификатор группы). Так если вы входите в группу , которая
превысила , наложенное на нее ограничение ,то вы не сможете
использовать дисковое пространство даже если вы все еще можете
использовать его как пользователь.
Существуют четыре числа для каждого ограничения:
- используемое в данное время ограничение;
- "мягкое" ограничение (softlimit);
- "жесткое" ограничение (hardlimit);
- и промежуток времени , после истечения которого
"мягкое" ограничение интерпретируется как "жесткое";
"Мягкое" ограничение определяет число блоков размером 1Кбайт ,которое
пользователь is expected to remain below. "Жесткое" ограничение не
может быть превышено ни каким образом. Если пользователь пытается
превысить данное число , то он получает сообщение о невозможности
сделать это. При этом ядро возвращает код ошибки EDQUOT.
После того как пользователь превысит доступное для него "мягкое"
ограничение (softlimit) устанавливается время , после истечения
которого "мягкое" ограничение становиться "жестким" (hardlimit).
Обычно срок истечения этого периода истекает после 7 дней (1 неделя)
(От Kosta: Хм! У меня сложилось такое впечатление , что данный
промежуток времени определен десятью минутами). В этот период времени
пользователь может удалить ненужные ему файлы после чего он вновь
может использовать "мягкое" ограничение до момента истечения
указанного промежутка времени. После истечения указанного промежутка
времени "мягкое" ограничение становиться "жестким" ограничением и у
пользователя больше нет ресурсов для создания новых файлов.
Настройка системы ограничений дискового пространства. (quota)
Для того чтобы установить систему ограничений дискового пространства
(quota) в ОС Linux системному администратору необходимо сделать
несколько шагов:
* Произвести конфигурацию ядра системы;
* Выбрать файловую систему ,на которую будут накладываться
ограничения;
* Разрешить (включить) систему ограничений;
* Произвести проверку файловой системы на ограничения дискового
пространства;
* Произвести проверку ограничений дискового пространства как для
пользователей так и для групп;
* Запретить ограничения для пользователей и групп;
* Ограничения на NFS файловой системе.
Конфигурация ядра
Перед тем как вы начнете использовать систему ограничений дискового
пространства (quota) вам необходимо скомпилировать новое ядро с
поддержкой данной системы. Это достигается с помощью выбора опции
quota support в разделе filesystem при конфигурировании ядра. (Если вы
хотите так же что бы система ограничений дискового пространства
работала и с сервером samba , то вам необходимо скомпиировать данный
сервер с поддержкой quota. Достигается это с помощью раскоментирования
соответствующей строки в файле Makefile ). После конфигурирования ядра
вам необходимо произвести компиляцию ядра. Данная операция может быть
осуществлена с помощью следующей последовательности команд:
[cola:]root# make dep;make zlilo;make modules;make modules_install;lilo
Выбор файловой системы , на которую будут накладываться ограничения.
После того как собрано новое ядро с поддержкой ограничений дискового
пространства (quota), вам необходимо перезагрузить машину что бы было
загружено новое ядро. После чего вам придется решить на какую файловую
систему необходимо наложить ограничения (quotas). Чаще всего
ограничения накладываются на файловую систему , в которой
располагаются домашние каталоги пользователей или на файловую систему
, которая смонтирована в каталог /usr и пользователи имеют право
записывать на нее информацию. Для того чтобы разрешить ограничения на
дисковое пространство на необходимой файловой системе вы должны
отредактировать файл /etc/fstab добавив к указанной системе опции для
ограничения дискового пространства (как для пользователей так и для
групп).
Зарезервированное слово "usrquota" ,в поле опций, включает ограничение
дискового пространства (quotas) для пользователей (userquota) на
данном устройстве. Зарезервированное слово "grpquota" включает
ограничение дискового пространства для групп (groupquota) на данном
устройстве. Во то время когда вы используете опции "usrquota" и
"grpquota" без '=' , то ваши файлы ограничений (quotafile) будут
находится в корневом каталоге каждой файловой системы , в которой
используются ограничения на дисковое пространство. Файл называемый
"quota.user" будет использоваться для ограничений пользователей , а
файл "quota.group" будет использоваться для ограничений групп. Однако
вы сами можете определить ваши файлы ограничений. Например строка
"usrquota=/usr/adm/quotasrc.user" установит файл ограничений для
пользователей в каталоге /usr/adm , который будет называться
"quotarc.user". Однако будьте внимательны , и отслеживайте длину
строки в файле /etc/fstab (смотрите ее определение в файле mntent.h)
Разрешение ограничений на дисковое пространство (quotas).
Периодически (в основном после некорректной перезагрузки системы и во
время первого разрешения ограничений на дисковое пространство) записи
, содержащиеся в файле ограничений должны быть проверены на
целостность действительного числа блоков и файлов выделенных для
пользователя. Для выполнения этой операции может быть использована
команда quotacheck(8). Данную команду необязательно выполнять для
неподмонтированных файловых систем или файловых системах ,на которых
отключено ограничение на дисковое пространство (quotas). Для проверки
файловой системы на число блоков используемых пользователем , а так же
для установки и изменения всех файлов ограничений (quotafiles)
выполните команду:
quotacheck -avug.
Вы можете вставить данную команду в один из rc скриптов и запускать ее
на файловой системе так же как и fsck , только тогда , когда не
установлен флаг fastreboot. Данная программа не поддерживает
одновременную параллельную проверку нескольких файловых систем.
Для того чтобы включить систему ограничений на дисковое пространство
на вашем компьютере добавьте строку /usr/bin/quotaon -avug в один из
ваших /etc/rc файлов. Данная команда будет включать поддержку
ограничений дискового пространства во время загрузки вашей системы.
Это хороший путь автоматизировать включение данной системы без вашего
вмешательства. (Примечание: В Debian 1.3 (2.0) данная команда
выполняется из скрипта названного /etc/init.d/quota).
Проверка файловой системы на ограничения дискового пространства (quotas).
Только суперпользователь может использовать команду quota (8) для
проверки используемых ограничений любого пользователя , и команду
repquota (8) для проверки используемого пространства и ограничений для
всех пользователей на данной файловой системе. Просто запустите
программу quotacheck -avug и файлы ограничений будут автоматически
изменены , а так же будет изменена таблица , которая используется
ядром системы.
Файл ограничений имеет размер 2Мб (несмотря на то что ни один из
пользователей может не иметь ограничений). Пожалуйста не беспокойтесь
об этом , и не тревожьте сообщениями об этом ,авторов quot'ы. На самом
деле этот файл не занимает много места на диске , так как все нулевые
блоки не располагаются на диске.
Для того чтобы получить информацию об ограничениях , наложенных на
всех пользователей необходимо выполнить команду
[cola:]root# repquota -ua
после чего на экране можно будет видеть таблицу , в которой указаны
ограничения , наложенные на каждого пользователя. Содержимое экрана
после выполнения выше приведенной команды может иметь вид:
Block limits File limits
User used soft hard grace used soft hard grace
root -- 487082 0 0 12147 0 0
daemon -- 399 0 0 2 0 0
news -- 626 0 0 46 0 0
www -- 156 0 0 1 0 0
andrey -- 6 0 0 1 0 0
vera -- 885 0 0 8 0 0
admin -- 643 0 0 12 0 0
test1 +- 1587 1 0 none 1 0 0
cola +- 345 1 0 none 94 0 0
ifmail +- 3030 1 0 none 794 0 0
Для получения информации о группах необходимо выполнить команду
repquota -ga .
Определение ограничения дискового пространства для пользователя или группы.
Для редактирования ограничения дискового пространства необходимо
использовать программу edquota (8). Для редактирования ограничений
дискового пространства для конкретного пользователя необходимо
использовать программу edquota с опцией -u , а для группы необходимо
использовать ту же программу , но с опцией -g.
Редактировать необходимо только число , которое следует за словом hard
или soft.Например ,после выполнения команды
[cola:]root# edquota -u cola
содержимое экрана может иметь вид:
Quotas for user cola:
/dev/hdb3: blocks in use: 345, limits (soft = 1, hard = 0)
inodes in use: 94, limits (soft = 0, hard = 0)
После чего вы можете изменит значения , указанные после слов hard и
soft. При редактировании используется редактор , который указывается в
переменной окружения EDITOR.
Для каждой файловой системы , имеющей ограничение на дисковое
пространство вы видите две строки. Слово soft означает что на данную
файловую систему наложено "мягкое" ограничение (softlimit) , при этом
пользователь или группа имеют некоторый интервал времени (grace
period), в течении которого они могут превысить указанное значение.
Данный интервал времени можно изменить с помощью команды edquota -t
Например ,после выполнения команды
[cola:]root# edquota -t
содержимое экрана может иметь вид:
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hdb3: block grace period: 10 minutes, file grace period: 10 minutes
После чего вы можете изменить значения , указанные по умолчанию. По
умолчанию используется значение определенное в файле <LINUX quota.h>.
Если пользователь или группа не удалят лишних файлов в течении
указанного периода времени , то данные файлы переходят в разряд
"жестких" ограничений (hardlimit). (If they don't remove it within
there graceperiod it is counted as a hardlimit.) Слово hard означает ,
что на данную файловую систему наложено "жесткое" ограничение. Жесткое
ограничение является максимальным значением , которое может иметь
пользователь или группа на данной файловой системе.
Пользователь/группа не может иметь больше файлов или inodes чем
указано в hard).
Строка
/dev/hdb3: blocks in use: 345, limits (soft = 1, hard = 0)
сообщает какое число блоков может быть выделено для данного
пользователя или группы. Если размер бока 1024 байт (1Кбайт) (что
является для многих дистрибутивов Linux значением по умолчанию) , то
можно с легкостью манипулировать ограничениями на дисковое
пространство редактируя значения , указанные в строке blocks.
Строка
inodes in use: 94, limits (soft = 0, hard = 0)
сообщает какое число inode (файлов, устройств,поименованных
каналов(pipes) и т.д.) может быть выделено для данного пользователя
или группы.
В большинстве случаев вам приходится иметь группу пользователей ,
которые должны иметь одинаковые ограничения на дисковое пространство ,
на указанной файловой системе. Самый быстрый путь отредактировать
ограничения на дисковое пространство для этих пользователей
заключается в создании прототипа одного из пользователей или группы
для всех других. Вам нужно с помощью команды
edquota -u <имя_пользователя/группы_который_станет_прототипом>
отредактировать ограничения на дисковое пространство , после чего с
помощью команды edquota -p <имя_прототипа> * отредактировать
ограничения для всех оставшихся пользователей. Вот и все! Теперь вам
не надо редактировать значения для каждого пользователя отдельно.
Например , для того чтобы в качестве ограничений дискового
пространства (quota) для пользователя ola использовались ограничения ,
наложенные на пользователя cola вам необходимо выполнить команду
[cola:]root# edquota -p cola ola
Проверка ограничений дискового пространства для пользователя и группы.
Для проверки ограничений дискового пространства для пользователя и
группы используется программа quota.
- файловых системах , которые не имеют включенными ограничения на
дисковое пространство (quota)
- файловых системах на , которых вы уже установили систему ограничения
дискового пространства , но на которых еще не занят ни один блок.
Используйте опцию -q для просмотра файловых систем , на которых
превышено значение "мягкого" (softlimit) и "жесткого" (hardlimit)
ограничения.
Опция -g дает вам возможность просмотреть все ограничения , которые
наложены на группы , членом которых вы являетесь.
Например , с помощью команды
[cola:]root# quota -u cola
вы можете получить информацию об ограничениях дискового пространства ,
которые наложены на пользователя cola. Содержимое экрана после
выполнения данной команды может иметь вид:
Disk quotas for user cola (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb3 345* 1 0 none 94 0 0
Как запретить ограничения дискового пространства для пользователя или
группы.
Если вы захотели запретить ограничения ,наложенные на какого то
пользователя или на группу , то вам необходимо воспользоваться
программой edquota для редактирования значений hard и soft. Установите
эти значения в 0. После чего для данного пользователя или группы не
будет существовать ограничений на дисковое пространство , и он/она
сможет создавать неограниченное количество файлов (ограниченное только
дисковым пространством).
Ограничения на NFS файловой системе.
Для того чтобы иметь ограничения дискового пространства на
NFS-файловой системе вам необходимо установить quota на сервере , но
она не нужна у клиента. Клиент может получить информацию об
ограничениях с помощью команды quota , которая посылает запрос к
rquotad(8) серверу , который должен быть запущен на файл сервере , на
котором вы монтируете FNS-каталог. Вам не нужно устанавливать флаги
usrquota или grpquota для монтирования NFS-дисков. Вместо этого
установите auota на своем файловом сервере и запустите на нем из
rc-файла сервер rpc.rquotad.
ОТ ПЕРЕВОДЧИКА:
Для получения полной информации по системе quota читайте руководство
пользователя (man). Если вас интересует русскоязычное руководство
можете поискать его на сервере http://t37.nevod.perm.su/linux или спросить у
меня. К сожалению некоторых пользователей Linux , я не стал переводить
детали работы quota на более низком уровне. Я думаю эта информация
будет интересна только программистам , а они всегда смогут найти ее в
оригинале статьи и в исходных текстах ядра.
_________________________________________________________________
6 Февраля 1999 года.
829 Прочтений • [Организация дисковых квот в Linux (quota limit disk fs linux)] [08.05.2012] [Комментариев: 0]