пятница, 28 декабря 2012 г.

Дисковые квоты (quota)


Дисковые квоты (quota)


План:

1. Необходимые знания
2. Введение и цели
3. Установка программ и подготовка разделов
4. Вы - администратор
5. Вы - пользователь
6. Используемая литература



1. Необходимые знания


Для наилучшего понимания необходимо прочитать следующие статьи:
Установка программ, управление пакетами и системные обновления (apt, dpkg)
Инструменты администратора
Работаем с накопителями (fdisk, mount)



2. Введение и цели


Существует очень удобная, но не часто используемая системными администраторами функция - управление дисковыми квотами, с помощью которых можно назначать пользователям системы порог использования дискового пространства, который превысить пользователь не сможет. Причем ограничение может быть указано как в байтах, так и в количестве файлов. Будь то 50 мегабайт, или 999 файлов, или совокупно (1000 мегабайт + 243 файла). Это может быть очень удобно при настройке хостинг-сервера (доступ к данным идёт через протокол ftp), либо файлового хранилища (например, samba), когда переполнение диска одним из пользователей затруднит работу другим пользователям. Это своего рода административная мера, регламентирующая объем информации, которую пользователь может хранить на сервере.

Наша цель - научиться:
- определять, для каких разделов чаще всего нужно использовать квотирование;
- определять, для каких разделов какое квотирование включено;
- включать нужное квотирование для нужных нам разделов;
- понимать, чем отличается мягкий лимит от твердого, и что такое период отсрочки;
- определять, какой период отсрочки нам подходит и назначать его;
- назначать порог использования пространства для каждого пользователя/группы на разделе;
- видеть состояние использования пользователями/группами пространства в системе;
- находить все файлы, которые заполняют выделенное нам (или нами) пространство;
- подсчитать их количество, размеры и суммарный объем;

Определение, для каких разделов чаще всего нужно использовать квотирование

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



3. Установка программ и подготовка разделов


Нам необходимо установить пакет quota. При установке создаётся файл инициализации /etc/init.d/quota. Этот скрипт вызывается системой при включении и выключении компьютера. Он включает и соответственно выключает квотирование - слежение за квотами.

Определить, для каких разделов какое квотирование включено
# quotaon -pa
group quota on / (/dev/disk/by-uuid/92bdbf3f-ef6b-4404-93e9-0be1926ce1c8) is off
user quota on / (/dev/disk/by-uuid/92bdbf3f-ef6b-4404-93e9-0be1926ce1c8) is on

Включать нужное квотирование для нужных нам разделов

Чтобы на каком-либо разделе включить возможность слежения за квотами, необходимо этот раздел смонтировать с опциями монтирования usrquota и/или grpquota, в зависимости от того, квоты для кого мы собираемся устанавливать - для пользователей, для групп или и для тех и для тех.
# mount|grep quota
/dev/md127 on / type reiserfs (rw,notail,acl,usrquota)




4. Вы - администратор


понимать, чем отличается мягкий лимит от твердого, и что такое период отсрочки

Soft Limit: Максимальное количество блоков/инодов, которое пользователь может иметь на данном разделе. Если используется период отсрочки (grace period), то вместо жесткого ограничения, пользователь нарушивший данные требования, получит сообщение об этом (в файл /var/mail/user), включится счетчик grace time. Значение 0 отключает данную опцию.
Hard Limit: Максимальное количество блоков/инодов, которое пользователь может иметь на данном разделе даже с установленным периодом отсрочки. Это жесткое ограничение, которое пользователь не может превысить. Значение 0 отключает данную опцию.
Grace time: Период отсрочки - это период, во время которого система будет лишь предупреждать, но не ограничивать. Могут быть использованы секунды, минуты, часы, дни, недели и месяцы (нужно вписать на английском языке seconds, minutes, hours, days, weeks и months ). Значение 0 отключает данную опцию.
Blocks: Количество блоков - место, используемое пользователем в блоках длиной 1kB.
inodes: Количество инодов - число файлов/каталогов владельцем которых является пользователь/группа

Определять, какой период отсрочки нам подходит и назначать его

Период отсрочки изначально равен 7 дням. Он действует только если вы решили использовать магкие лимиты.
Для того, чтобы определить наиболее подходящий период отсрочки, нужно ответить на один вопроса:
1) зачем вы решили использовать мягкие лимиты
2) понимаете ли вы специфику хранящихся на сервере пользовательских данных
К примеру, если период отсрочки задан = 7 дней, то пользователи 7 дней смогут привышать свои мягкие лимиты.
По истечению данного периода пользователи не смогут записывать новые данные, пока не удалят достаточный объем информации, чтобы суммарный объем информации стал меньше мягкого лимита, не смотря на то, что он будет меньше жесткого лимита.
Жесткие лимиты пользователи превысить не могут ни при каких обстоятельствах.
Редактирование периода отсрочки
# sudo edquota -t


Назначать порог использования пространства для каждого пользователя/группы на разделе

Увоты можно ввести в режиме текстового редактора либо одной командой для одного пользователя/группы.
# edquota -u user

Назначаем квоты для точки монтирования "/" пользователю user на размер файлов (мягкий лимит в 40Мб, жесткий 50Мб), лимиты на количество инодов не устанавливаем.
# setquota -u user 40000 50000 0 0 /

Установленные квоты пользователю user копируем для пользователя user1
# setquota -p user user1


Видеть состояние использования пользователями/группами пространства в системе

# repquota -vagu

*** Report for user quotas on device /dev/disk/by-uuid/92bdbf3f-ef6b-4404-93e9-0be1926ce1c8
Block grace time: 00:05; Inode grace time: 7days
 Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 701557 0 0 31525 0 0
user1 +- 47167 40000 50000 00:05 10 0 0
user +- 47167 40000 50000 none 10 0 0

Разберем вывод.
Согласному данному выводу, user1 превысил мягкое ограничение (47167>40000), и у него период отсрочки 00:05 (5 минут). Превысил он мягкое ограничение только что, так как его период отсрочки равен глобальному периоду отсрочки (Block grace time: 00:05). В течение этого периода пользователь user1 может свободно использовать выделенное ему пространство (hard limit). Через минуту, если он не освободит необходимое пространство (выйдет из штрафной зоны), его период отсрочки станет 00:04. Когда этот период полностью истечет, он станет равен none - нет периода отсрочки. Так вышло с пользователем user. После того, как период отсрочки истек пользователь не сможет использовать пространство более чем soft limit. Ему придётся удалить часть данных, чтобы used стало меньше чем soft limit. После чего он снова сможет записать данные в объеме не более hard limit.[/quote]



5. Вы - пользователь


Находить все файлы, которые заполняют выделенное нам (или нами) пространство

# quota -s --hide-device --show-mntpoint
Disk quotas for user user (uid 1000):
 Filesystem space quota limit grace files quota limit grace
 / 35892K 0K 50000K 8 0 0

35892K - используемый объем на точке монтирования "/" пользователем, который выполнил команду
50000K - жесткий лимит объема (hard limit) на этом устройстве для пользователя, который выполнил команду
8 - количество файлов пользователя
Найдём эти восемь файлов, принадлежащих пользователю user и хранящихся только на устройстве (разделе), примонтированном в "/"
# find / -mount -user user
/home/user
/home/user/file
/home/user/.bashrc
/home/user/.bash_logout
/home/user/.bash_history
/home/user/.profile
/home/user/.cache
/home/user/.cache/motd.legal-displayed

Каталоги тоже считаются, как файлы. По-этому нельзя установить лимит на количество каталогов, без ограничения количества файлов.

Подсчитать их количество, размеры и суммарный объем

Подсчитаем количество этих файлов/каталогов
# find / -mount -user user|wc -l
8

Подсчитаем общий объем этих файлов
# find / -mount -user user|xargs du -sh
36M /home/user

Посмотрим объем каждого из этих файлов
# find / -mount -type f -user user|xargs -l du -h
36M /home/user/file
4,0K /home/user/.bashrc
4,0K /home/user/.bash_logout
4,0K /home/user/.bash_history
4,0K /home/user/.profile
0 /home/user/.cache/motd.legal-displayed

Можно даже их в порядке возрастания объема отсортировать
# find / -mount -type f -user user|xargs -l du -h|sort -h
0 /home/user/.cache/motd.legal-displayed
4,0K /home/user/.bash_history
4,0K /home/user/.bash_logout
4,0K /home/user/.bashrc
4,0K /home/user/.profile
36M /home/user/file

И вывести только последние 2 из этого списка (два наибольших по объему файла). Это на случай, если список очень-очень длинный
# find / -mount -type f -user user|xargs -l du -h|sort -h|tail -n 2
4,0K /home/user/.profile
36M /home/user/file


При этом обратим внимание на то, что непустые файлы занимают минимум 4,0K - это следует из размера блока файловой системы. Увидеть его можно с помощью утилиты stat
# stat -f /
 File: "/"
 ID: bd0c28accc1add3e Namelen: 255 Type: reiserfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 1918900 Free: 1733601 Available: 1733601
Inodes: Total: 0 Free: 0

Если же нам нужно для общего развития увидеть реальный размер файла (в байтах)
# find / -mount -type f -user user|xargs -l wc -c|sort -h
0 /home/user/.cache/motd.legal-displayed
20 /home/user/.bash_history
220 /home/user/.bash_logout
675 /home/user/.profile
3486 /home/user/.bashrc
36700160 /home/user/file

Сравним с общим размером занимаемых этими файлами блоков (в килобайтах)
# find / -mount -type f -user user|xargs -l du|sort -h
0 /home/user/.cache/motd.legal-displayed
4 /home/user/.bash_history
4 /home/user/.bash_logout
4 /home/user/.bashrc
4 /home/user/.profile
35875 /home/user/file




6. Используемая литература


Организация дисковых квот в Linux
Дисковые квоты в Linux

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

Отправить комментарий