Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/article.php on line 21

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 218

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 192

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 169
Квотирование - Сайт Дениса Колисниченко
 

Смотрим плавность хода с помощью BMW Rheingold

Всем знакома ситуация, когда двигатель немного "троит", но пропусков зажигания нет...

Дельта синхронизация без облака

Ранее мы показывали разные способы синхронизации криптодиска между ПК и Android-устройством.

Дельта-синхронизация крипто-дисков

Существуют разные способы зашифровать "облако". Один из них - поместить в облако крипто-диск. В предыдущей статье мы писали, почему это не всегда удобно.

Облачный хостинг VDS за 2 минуты

Настоящий облачный VDS-хостинг от UltraVDS: тестируем производительность

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


Денис Колисниченко

Во многих книгах, посвященных Linux'у, я так и не нашел подробного описания процесса квотирования. Максимум, что я нашел - "для ограничения дискового пространства используется команда quota". Может быть я плохо искал, но разбираться пришлось самому.

Ограничение РґРёСЃРєРѕРІРѕРіРѕ пространства (квотирование)  само РїРѕ себе является очень полезной возможностью, так как жесткий РґРёСЃРє Сѓ нас РЅРµ резиновый... Это РЅРµ столь важно РїСЂРё примении Linux РІ непрофессиональных целях, РЅРѕ РєРѕРіРґР° РІС‹ являетесь провайдером, значимость РєРІРѕС‚ значительно возрастает.

Кстати, возможность квотирования, которая была изначально заложена в ОС UNIX и была реализована в самых первых ее версиях, в Windows NT появилась только с выходом пятой версии в 2000-м году, т.е. в Windows 2000.

РћР±Р·РѕСЂ РєРІРѕС‚.

Команда quota позволяет просмотреть ограничения дискового пространства пользователя.Ограничения, как правило, устанавливаются системным администратором. Существуют два типа ограничения - ограничение на количество файлов (inodes) и ограничение использования дискового пространства (blocks) . Если установлены оба ограничения, то они будут использоваться одновременно.

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

Для каждого ограничения характерны четыре числа:

  1. ограничение, которое используется в данный момент
  2. "мягкое" ограничение (softlimit)
  3. "жесткое" ограничение (hardlimit)
  4. время, по истечении которого мягкое ограничение будет интерпретироваться как жесткое

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

РџСЂРё истечении определенного времени (обычно 7 дней) РјСЏРіРєРѕРµ ограничение переходит РІ жесткое. Р—Р° это время пользователь должен удалить ненужные ему файлы Рё после этого РѕРЅ может использовать это же время РјСЏРіРєРѕРµ ограничение.  

Настройка квот

Для поддержки ограничений прежде всего нужно настроить ядро. Для этого нужно включить quota support в меню Filesystem при конфигурировании ядра, а потом перекомпилировать ядро. О конфигурировании ядра вы можете прочитать в статье "Конфигурирование ядра"

Обычно нужно перейти в каталог /usr/src/linux и выполнить команду make menuconfig

Затем введите последовательность команд make dep; make bzImage; make modules; make modules_install Последние две нужно вводить в случае если вы хотите перекомпилировать модули. Не забудьте ввести команду lilo. (перед этим нужно немного подправить файл /etc/lilo.conf если вы этого не сделали раньше).

Если при загрузке ядра на вы видите сообщение Turning on user and group quotas for local filesystems ,

значит, ваше ядро уже поддерживает квоты.

Теперь нужно определить РЅР° какую файловую систему необходимо наложить ограничения. Обычно это /home (домашние каталоги пользователей), /usr (пользователи имеют право записывать информацию РІ этот каталог) Рё, возможно,  /var.

Отредактируйте файл /etc/fstab


/dev/hda1               /               ext2    defaults
/dev/hda4               /home           ext2    defaults,usrquota
/dev/hda5               /usr            ext2    defaults,usrquota,grpquota
none                    /proc           proc    defaults

Слово "usrquota" означает ограничение пространства для пользователей на данном устройстве, а "grpquota" - для групп. Если вы пишите "usrquota" ("grpquota") без "=", то файлы ограничений находятся в корневом каталоге каждой файловой системы, для которой используются ограничения на дисковое пространство. Обычно эти файлы называются quota.user и quota.group для квот пользователей и для групп соответственно. Вы сами можете указать какие файлы нужно использовать для определения квот, например "usrquota=/quotas/user.quota". Старайтесь не указывать слишком длинный путь.

Проверка ограничений

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

# quotacheck -avug

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

Для того, чтобы включить систему ограничений при загрузке операционной системы, добавьте команду quotaon -avug в сценарии загрузки системы.

Только root имеет право использовать команды, связанные СЃ квотированием. Команда quota, как уже было выше отмечено, используется для проверки используемых ограничений любого пользователя,  Р° команду repquota - для проверки используемого пространства Рё ограничений для всех пользователей РЅР° данной файловой системе. РџСЂРё запуске программы quotacheck -avug Р±СѓРґСѓС‚ автоматически изменены файлы РєРІРѕС‚, Р° также будет изменена таблица СЏРґСЂР°. Файлы РєРІРѕС‚ имеют размер 2РњР±, даже если РЅРё РѕРґРёРЅ РёР· пользователей РЅРµ использует РєРІРѕС‚.

Для того, чтобы получить информацию РѕР± ограничениях, наложенных РЅР° пользователя (РіСЂСѓРїРїСѓ) выполните команду repquota -ua   (repquota -ga)

                        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 
user      +-    1024       1       0   none       1     0     0 
den       +-    1024       1       0   none      94     0     0 
operator  +-    1024       1       0   none      94     0     0 
ifmail    +-    3030       1       0   none     794     0     0 
  

Определение ограничений

Для этого существует команда edquota. Для ограничения дискового пространства пользователя нужно использовать команду quota с параметром -u, а для определения квот для группы - с параметром -g После выполнения этой команды будет запущен редактор, который указан в переменной окружения $EDITOR, для редактирования квот. Редактировать нужно только число , которое следует за словом hard или soft.

# equota -u den Quotas for user den: /dev/hda4: blocks in use: 345, limits (soft = 1, hard = 0)     inodes in use: 94, limits (soft = 0, hard = 0)

Перед выполнением этой команды выполните две эти команды: quotacheck -u <filesystem> quotaon -u <filesystem> Например: quotacheck -u /mnt/ext2 quotaon -u /mnt/ext2

Данные команды необходимы для создания файлов quota.user и quota.group В противном случае при редактировании ограничений пользователей (групп) вы получите сообщение о том, что данные файлы не существуют.

Для каждой файловой системы, на которую наложены квоты, вы увидите две строки. Слово soft означает, что на данную файловую систему наложено "мягкое" ограничение, а слово "hard" - "жесткое". При этом пользователь имеет некоторый интервал времени, по истечению которого "мягкое" ограничение перейдет в "жесткое". Данный интервал можно изменить с помощью команды edquota -t

Time units may be: days, hours, minutes, or seconds Grace period before enforcing soft limits for users: /dev/hda4: block grace period: 50 minutes, file grace period: 50 minutes

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

Строка /dev/hda4: blocks in use: 1024, limits (soft = 1, hard = 0) определяет количество блоков, которое может быть выделено для пользователей или группы. Обычно размер блока в Linux составляет 1024 байт. В данном случае ограничение равно 1Мб.

Строка inodes in use: 94, limits (soft = 0, hard = 0) сообщает какое число inode (файлов, устройств, поименованных каналов(pipes)) может быть выделено для данного пользователя или группы.

В большинстве случаев у вас есть группа пользователей, которая должна иметь одинаковые ограничения. Самым быстрым способом редактирования ограничений в этом случае является использование прототипа. С помощью команды # edquota -u <пользователь/группа_который(ая)_станет_прототипом> определить ограничения, а затем с помощью команды # edqouta -p <прототип> пользователь создать квоты для всех оставшихся пользователей. При этом вам не нужно редактировать ограничения отдельно для каждого пользователя/группы.

Например, вам нужно добавить пользователя user, который будет использовать такие же ограничения, что Рё пользователь den: # edquota -p den user  

Р