Как известно, Linux - это многопользовательская операционная система.
Это значит, что на одном компьютере могут работать несколько человек
одновременно. Каждый из них имеет свою домашнюю директорию, которая
находятся в разделе /home. Многие администраторы для /home создают
отдельный раздел на жестком диске. Следовательно, что мы имеем? Есть
отдельный раздел диска фиксированного размера и есть несколько
пользователей, которые могут им пользоваться. Здесь возникает вопрос.
А как разделить это пространство между всеми пользователями? Как
застраховаться от ситуации, когда пользователь захочет перенести в
свой раздел всю коллекцию фильмов или музыки? Для решения этой
проблемы в Linux и существуют квоты.
Установка дисковых квот.
Для того, чтобы проделать все нижеописанное, утилита quota должна быть
установлена на вашем компьютере. Бинарные пакеты существуют для всех
распространенных дистрибутивов.
В Debian-производных дистрибутивах установка с помощью утилиты apt-get
выглядит так:
$ sudo apt-get install quota
Все. Никаких дополнительных пакетов не требуется.
Теперь, как я уже упоминал выше, допустим, у нас есть папка /home,
смонтированная на отдельном разделе жесткого диска, скажем /dev/sda8,
размером 20Гб, и два пользователя - serhiy и nadiia с домашними
директориями /home/serhiy/ и /home/nadiia. И что я хочу сделать?
Правильно, ограничим пользователя nadiia всего 50 мегабайтами.
Приступим.
1. Загрузитесь в однопользовательский режим. Поскольку директория
/home будет перемонтирована, то мы должны застраховаться от того, что
другие пользователи могут потерять свои данные.
#init 1
(этого можно и не делать, если вы уверены, что за компьютером больше
никто кроме вас не работает)
2. Отредактируйте файл /etc/fstab/:
$sudo vi /etc/fstab/
добавив usrqouta к опциям раздела /home.
Вот так это выглядит у меня:
/dev/sda8 /home ext3 defaults,usrquota 0 2
3. Перемонтируйте раздел /home:
$ sudo mount -o remount /home
4. Создайте файлы aquota.user и/или aquota.group. Файлы должны быть
созданы в самой верхней директории раздела. В нашем случае это /home.
Поскольку я хочу ограничить квотами лишь пользователей, файл
aquota.group я создавать не буду.
5. Разрешаем linux читать файл aquota.user. Это делается с помощью
команды quotackeck. Будьте готовы к тому, что будет выведена ошибка,
как показано ниже. Это связано с тем, что файл был создан вручную, а
не командами qouta. Также будет сказано об отсутствии файла для групп.
Ничего страшного в этом нет
$ sudo quotacheck -vagum
quotacheck: WARNING - Quotafile /home/aquota.user was probably truncated. Can't save quota settings...
quotacheck: Scanning /dev/sda8 [/home] quotacheck: Old group file not found. Usage will not be substracted.
done
quotacheck: Checked 5265 directories and 74403 files
6. Задайте квоты для пользователей, используя команду edquota
$sudo edquota -u nadiia
Эта команда запустит редактор, установленный по умолчанию (переменная
EDITOR) (в моем случае это редактор mc -mcedit):
Disk quotas for user nadiia (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda8 16 0 0 5 0 0
(Если используемый по умолчанию редактор вам не нравится, всегда можно
его изменить, запустив в консоли export EDITOR=vi. Вместо vi запишите
удобный для вас редактор)
В приведенном выше файле:
Blocks : Место, используемое пользователем в блоках длиной 1kB.
inodes : Число используемых пользователем файлов
Soft Limit : Максимальное количество блоков/файлов, которое
пользователь может иметь на данном разделе. Если используется период
отсрочки (grace period), то вместо жесткого ограничения, пользователь
нарушивший данные требования, получит лишь сообщение об этом. Значение
0 отключает данную опцию.
Hard Limit : Максимальное количество блоков/файлов, которое
пользователь может иметь на данном разделе даже с установленным
периодом отсрочки. Это жесткое ограничение, которое пользователь не
может превысить.
Ограничим пользователя всего 50-ю мегабайтами (приблизительно).
Disk quotas for user nadiia (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda8 16 50000 0 5 0 0
7. Теперь можно выйти из однопользовательского режима (если вы
работали в нем), набрав
#init 5
Все. Теперь пользователь nadiia не может превысить 50Mb.
Другие команды quota.
Изменяем период отсрочки:
$sudo edquota -t
Эта команда установит период отсрочки для всех пользователей. Период
отсрочки - это период, во время которого опция soft period будет лишь
предупреждать, но не ограничивать. Могут быть использованы секунды,
минуты, часы, дни, недели и месяцы (нужно вписать на английском языке
seconds, minutes, hours, days, weeks и months ) Так выглядит запуск
этой команды у меня:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda8 7days 7days
Редактирование квот для групп:
$sudo edquota -g
Регулярная проверка квот:
Полезно регулярно выполнять quotacheck. Это можно реализовать, добавив
задание в файл crontab
0 3 * * 0 /sbin/quotacheck -vagu
(частоту выполнения задания можно выставить, используя синтаксис cron)
Отчет об квотах:
Команда repquota показывает суммарный отчет по квотам на файловой
системе. У меня отчет выглядит следующим образом:
$ sudo repquota /home
Report for user quotas on device /dev/sda8
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
root -- 131312 0 0 15 0 0
serhiy -- 18774192 0 0 79512 0 0
sshd -- 14512 0 0 137 0 0
nadiia -- 16 50000 0 5 0 0
Для более подробной информации обращайтесь к страницам man. Также
рекомендую почитать перевод Quota mini-HOWTO.
Источники:
Disk Quotas in GNU/Linux explained
Quota mini-HOWTO
File system quota
923 Прочтений • [Дисковые квоты в Linux (disk quota limit linux debian)] [08.05.2012] [Комментариев: 0]