Простое квотирование директорий в Linux

()

Необходимость квотирования отдельно взятых директорий в Linux, на мой взгляд, очевидна — зачастую бывает потребность в ограничении объёма пронстранства для хранения чего-либо, которая не основывается на методе определения порогов квоты для пользователей или групп, а на общем объёме самой директории. К счастью, у нас уже имеются под руками все необходимые средства для реализации этой нетривиальной, но подчас очень востребованной задачи предложенным ниже способом.

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

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

Для начала, нам нужно создать каталог для точки монтирования нашего образа ФС.

mkdir -p /mnt/quotadir

Далее, необходимо создать сам образ файловой системы и указать его объём (count)
dd if=/dev/zero of=/mnt/quota.img bs=1024 count=100000

Следующим щагом произвести «форматирование» файлового образа, создав на нём необходимую нам ФС.
mkfs.ext3 /mnt/quota.img

И наконец, подключить созданный нами образ в нужную точку монтирования.
mount -o loop /mnt/quota.img /mnt/quotadir

Всё! Более ничего не требуется! Мы осуществили всё, что требовалось.

И, наконец, если имеется необходимость в постоянном монтировании созданного нами образа, это необходимо сделать в файле /etc/fstab

/mnt/quota.img   /mnt/quota       ext3    loop            1 2

Не смотря на то, что файловая система на которой хранится нужная нам информация заключается а файле-образе, тем не менее, это всё-таки файловая система, над которой мы можем совершать вполне привычные действия, например, такие как:

Увеличение или уменьшение объёма ФС, тем самым изменяя объём самого хранилища
resize2fs -p quota.img 1000M

Проверка целостности файловой системе привычным нам способом
e2fsck -f quota.img

И многое другое!

Ключевые слова: квотирование, квота, quota.

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

MooSE 2009-11-18 19:30:26 (#)

Кстати удобная тема. всё настолько очевидно и просто. жалко я в своё время до этого не додумался...

morbo 2009-11-19 08:25:22 (#)

А по-моему отдаёт душком. Ограничишь размер одного каталога, юзер в другом нагадит. Уж лучше ограничить общий объём данных юзера, чем извращаться костылями.

А ограничивать размер каталога можно задав принадлежность каталога группе и ограничив размер файлов для группы. В группу включить только необходимых пользователей.

Elias137 2009-11-19 08:57:01 (#)

2morbo: Эта задача преимущественно была реализована для людей, использующих ресурсы Samba на сервере в организации для централизованного хранения и работы с файлами.

Кроме того, дефолтное квотирование, как мне думается, подразумевает наличие определенных средств и действий. Например, файловая система на которой производится квотирование должна иметь соответствующие опции.

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

Anonymous 2009-11-27 12:32:27 (#)

Самое то для фтп спасибо за вариант

Anonymous 2009-11-30 13:58:16 (#)

Этот вариант существенно снизит быстродействие. Лучше использовать LVM и монтировать не loopbak-устройство, а логический том LVM.

Кроме большего быстродействия появится дополнительное удобство в добавление места. Для файловой системы XFS добавление места будет выглядеть примерно так:

#lvresive volume_group\logical_volume-home --size +10G
#xfg_growfs /home

Anonymous 2009-11-30 13:59:57 (#)


#lvresize volume_group\logical_volume-home --size +10G
#xfs_growfs /home

Anonymous 2011-02-27 22:59:25 (#)

А можно использовать другое расширение ну кроме как .img то есть любое ?
И после монтирования появляется в том каталоге куда я монтирую папочка с именем lost+found так куда надо лить файлы в эту папочку или в сам каталог куда при монтировано ? если в каталог куда при монтировано то значит эту папку можно попросту удалить, на дальнейшую работу это не влияет ?

MooSE 2011-02-28 00:48:02 (#)

Цитата:

А можно использовать другое расширение ну кроме как .img то есть любое ?
И после монтирования появляется в том каталоге куда я монтирую папочка с именем lost+found так куда надо лить файлы в эту папочку или в сам каталог куда при монтировано ? если в каталог куда при монтировано то значит эту папку можно попросту удалить, на дальнейшую работу это не влияет ?


Полное непонимание темы. ИМХО.

Расширение - вообще любое.

Папочку удаляйте - всё равно создастся обратно. Читать хотя бы тут

Anonymous 2011-02-28 03:06:11 (#)

Спасибо за ответ, я уже разобрался и в тему въехал.
Вот только на FreeBSD у меня лично не получилось, говорит не знаю такую команду как mkfs, повидемому надо другую использовать команду, кто знает какую подскажите пожалуйста.

MooSE 2011-02-28 09:41:49 (#)

Цитата:

Вот только на FreeBSD у меня лично не получилось, говорит не знаю такую команду как mkfs, повидемому надо другую использовать команду, кто знает какую подскажите пожалуйста.


newfs? :)

Anonymous 2011-02-28 19:05:36 (#)

newfs quota.img
newfs: /dev/quota.img: could not find special deuice

MooSE 2011-03-01 01:18:40 (#)

всего один запрос к гуглу подсказал решение:

Создаём файл образа:
dd if=/dev/zero of=/root/20M.img bs=1M count=20

Создаём loopback-устройство:
mdconfig -a -t vnode -f 20M.img

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

Создаём файловую систему:
newfs /dev/md0

Создаём папку:
mkdir -p /mnt/quota

Монтируем:
mount /dev/md0 /mnt/quota

Anonymous 2011-03-02 00:02:59 (#)

Попробовал :
localhost# mdconfig -a -f vnode -f quote.img
mdconfig: could not open vnode: No such file or directory

Не хочет, ладно покопаюсь есче может все токи смогу решить проблему сам.. если что то выйдет отпишусь и расскажу что делал.. если кому интересно будет...

MooSE 2011-03-02 20:48:49 (#)

mdconfig -a -t vnode -f quote.img

Anonymous 2011-06-16 18:07:11 (#)

спасибо большое! Красивое решение!
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE