FastNetMon

Показаны сообщения с ярлыком Linux quota. Показать все сообщения
Показаны сообщения с ярлыком Linux quota. Показать все сообщения

понедельник, 23 августа 2010 г.

Отключение квот в Debian

Временами бывает, что квоты вешают сервер при загрузке (или просто тормозят загрузку после горячего ребута), поэтому, если они не нужны, то наиболее простое решение - отключить их вовсе.

Это можно сделать так (отключаем демона квот):
update-rc.d -f quota remove

Также еще стоит отредактировать /etc/fstab и там также отключить квоты.

После этого потребуется перезагрузка:
shutdown -r now

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

Что это такое? Это расширенный формат классических Linux квот с поддержкой журналирования, который призван помочь избежать долгих пересчетов всех блоков на диске при горячей перезагрузке.

понедельник, 15 февраля 2010 г.

Управление лимитами дискового пространства для пользователей на Debian Linux

Для начала пару слов о том, что такое квоты. Это способ ограничить различных linux пользователей в занимаемом ими дисковом пространстве. Квоты бывают двух типов - для пользователя (usrquota) либо для группы (grpquota). Также у квот есть два подтипа - мягкие и жесткие. Первые можно превышать (но недолго, не более 7 дней), а вот жесткие превышать нельзя в принципе. Также есть еще лимиты уровня блоков и уровня inode (ограничение на число файлов), стандартным является тот, кто уровня блоков.

Ставим необходимое ПО:
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