Ставим необходимое ПО:
apt-get install -y quota quotatool
Теперь для раздела (ну точнее - блочного устройства), на котором нам необходимо использовать квоты нам требуется включить опцию монтирования.
Для этого открываем:
vi /etc/fstab
И ищем там нужный раздел (если их несколько - операцию необходимо проделать для всех), в моем случае он выглядел так:
/dev/md4 /backup2 ext3 defaults 0 0
И добавляем опции монтирования grpquota и usrquota:
/dev/md4 /backup2 ext3 defaults,grpquota,usrquota 0 0
Теперь перемонтируем файловые системы (если же Вы активируете квоты для /, то рекомендую перезагрузиться):
umount -a
mount -a
Теперь для каждой файловой системы непосредственно в ее точке монтирования (у меня это /backup2), где планируется использовать квоты, нам необходимо создать специальные файлы, где будут хранится данные квот.
touch /backup2/aquota.user
touch /backup2/aquota.group
chmod 600 /backup2/aquota.user /backup2/aquota.group
В итоге мы получаем следующую картину, которая свидетельствует об успешной активации квот для заданного раздела:
mount | grep md4
/dev/md4 on /backup2 type ext3 (rw,grpquota,usrquota)
Теперь загружаем модуль поддержки квот в ядро (к слову, почему v2? Ну потому, что есть v1, который оставлен для совместимости со "старым" форматом данных квот):
modprobe quota_v2
Также добавляем модуль в автозагрузку:
echo 'quota_v2' >> /etc/modules
Инициализируем систему квот:
quotacheck -vagum
В ответ будет выдано примерно следующее (на тему журналируемых квот, упомянутых ниже, можете сходить вот сюда):
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: WARNING - Quotafile /backup2/aquota.user was probably truncated. Cannot save quota settings...
quotacheck: WARNING - Quotafile /backup2/aquota.group was probably truncated. Cannot save quota settings...
quotacheck: Scanning /dev/md3 [/backup2]
done
quotacheck: Checked 3 directories and 4 files
Теперь берем подопытного пользователя test и выставляем ему на блоки мягкий лимит в 200 мегабайт и жесткий в 250:
quotatool -u test -b -q 200M -l 250M /backup2
Если при этому вы получаете ошибку:
quotatool: Error while detecting kernel quota version: No such process
То необходимо запустить служебный демон quota:
/etc/init.d/quota start
Текущее использование же квот для определенного раздела можно посмотреть так:
repquota /backup2
Выглядит вывод так:
repquota /backup2/
*** Report for user quotas on device /dev/md4
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 202364 0 0 4 0 0
test -- 28 204800 256000 7 0 0
Также от имени захомутанного юзера можно посмотреть лимит командой:
quota
Которая откликается вот так:
quota
Disk quotas for user test (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/md4 28 204800 256000 7 0 0
Ну и теперь протестируем, попробовав загнать 260 мегабайт вместо отведенных 250:
dd if=/dev/zero of=260mb-file bs=1024 count=260216
md4: warning, user block quota exceeded.
md4: write failed, user block limit reached.
dd: writing `260mb-file': Disk quota exceeded
246493+0 records in
246492+0 records out
252407808 bytes (252 MB) copied, 0.657214 s, 384 MB/s
И теперь все последующие попытки забить место обернутся обломом:
mkdir 1
mkdir: cannot create directory `1': Disk quota exceeded
Ну вот мы и стали чуточку лучше понимать Линукс :)
Источник: http://www.debian-administration.org/articles/47 и http://learnlinux.tsf.org.za/courses/build/sys-admin/ch05s02.html
No comments :
Post a Comment
Note: only a member of this blog may post a comment.