Как ограничить папку по размеру linux

Ограничение размера каталога

Доброго времени суток! У меня важний вопрос. Есть файловий сервер под Debian Lenny 5.0.3. Вопрос, как роставить ограничение размера каталогов пользователей?

Например: /data/public/user1 = 800Mb; /data/public/user2 = 200Mb; и т.д.

P.S. «Quota» не катит, для него надо пересобираь ядро, а сервер виключать нельзя. Болше в гугле ничо не нашол.

Сделать нужного размера файлек, вбить туда фс и замаунтить на луп?
Криво, некрасиво и ужасно, но варианты с фьюсами ещё ужаснее.

P.S. «Quota» не катит, для него надо пересобираь ядро, а сервер виключать нельзя. Болше в гугле ничо не нашол.

Уважаемый, вы с какого дуба упали?

Достаточно лишь установить пакет quota и опцию монтирования раздела usrquota (для ext3).

>>Сделать нужного размера файлек, вбить туда фс и замаунтить на луп?

А как потом менять?

# 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.

Достаточно лишь установить пакет quota и опцию монтирования раздела usrquota (для ext3).

примонтировать в каталог раздел нужного размера

> А для reiserFS? То же самое

P.S. «Quota» не катит, для него надо пересобираь ядро

А нечего было отключать поддержку 🙂

Тоже.
Перемонтировать не забываем.

mount -no remount c нужными опциями применить их на лету

Если /data/public/user1 положить на LVM то можно менять размер раздела и FS в онлайне

Источник

Настройка дисковых квот в Linux

Пошагово разберем процесс установки ограничений на использование дискового пространства в системах Linux. Какой дистрибутив — не важно. Процесс немного различается для файловых систем XFS и EXT4/остальных — мы разберем оба варианта.

Установка пакета quota

Установка пакета для управления квотами выполняется из репозитория.

а) для систем на базе RPM (Red Hat, CentOS):

yum install quota

б) для систем на базе deb (Debian, Ubuntu):

apt-get install quota

Настройка раздела

Для возможности управлять квотами для определенного раздела необходимо его смонтировать с соответствующими опциями. Для файловых систем XFS и не XFS (например, ext) эти опции различаются:

  1. Для XFS — uquota (для пользователей) и/или gquota (для групп).
  2. Для ext и других — usrquota (для пользователей)и/или grpquota (для групп).

И так, чтобы добавить нужные опции для включения квотирования, откроем файл fstab:

Находим настройку для монтирования раздела, на который необходимо установить квоту и добавим нужные опции:

/dev/sda / ext4 defaults ,usrquota,grpquota 0 0
/dev/sdb /var xfs defaults ,uquota,gquota 0 0

* в данном примере мы добавили опции usrquota и grpquota для устройства /dev/sda, примонтированного в качестве корневого раздела / с файловой системой ext. А также опции uquota и gquota для устройства /dev/sdb (монтируется в /var с файловой системой xfs). Если необходимо включить квоту только для пользователей или групп, оставляем соответствующие опции.
* существуют и другие опции, например, jqfmt нужна для указания формата квоты при использовании журналирования. Подробнее описано в таблице Опции системы квот в файле /etc/fstab сайта IBM.

Перемонтируем наши разделы:

Читайте также:  Transferring videos from windows to iphone

mount -o remount /

mount -o remount /var

Проверим, что нужные нам разделы теперь смонтированы с опциями квотирования:

mount | grep quota

Мы увидим, примерно, следующее:

/dev/sda on / type ext4 (rw,relatime, quota,usrquota,grpquota ,data=ordered)
/dev/sdb on /var type xfs (rw,relatime,attr2,inode64, usrquota,grpquota )

Квоты включены для разделов.

Корневая директория (/) + XFS

При попытке включить квоту для корневой директории XFS с помощью файла fstab, результат будет нулевым — в опциях монтирования мы будем наблюдать noquota, например:

/dev/sda on / type xfs (rw,relatime,attr2,inode64, noquota )

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

Находим строку GRUB_CMDLINE_LINUX и дописываем в нее rootflags=uquota,gquota — в моем случае получилось так:

.
GRUB_CMDLINE_LINUX=»crashkernel=auto rd.lvm.lv=vg/root rd.lvm.lv=vg/swap rhgb quiet floppy.allowed_drive_mask=0 rootflags=uquota,gquota »
.

На всякий случай, сохраним конфигурационный файл загрузчика:

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

. и применим настройки grub:

grub2-mkconfig -o /boot/grub2/grub.cfg

После перезагрузки мы должны наблюдать такую картину:

mount | grep quota

/dev/mapper/vg-root on / type xfs (rw,relatime,attr2,inode64, usrquota,grpquota )

Квоты включены для корневого раздела с файловой системой XFS.

Включение квот

И так, мы разрешили квоты для разделов. Теперь включаем квоты. Процессы для XFS и остальных файловых систем немного различаются. Мы рассмотрим оба варианта. Так как в нашем примере есть разделы для XFS и Ext, то мы выполним все варианты настроек.

После монтирования раздела с файловой системой XFS автоматически включается квотирование (если была задана соответствующая опция). Проверить состояние можно, войдя в режим экспертного управления квотами:

. и выполнив команду для получения статуса:

Ext и другие

Выполним проверку наличия служебных файлов aquota.user и aquota.group — если их нет, команда их создаст автоматически:

. при наличии разделов с включенной квотой на XFS мы можем увидеть:

quotacheck: Skipping /dev/sdb [/var]

* это нам говорит о том, что команда quotacheck пропускаем раздел с xfs.

Включаем квоту для разделов:

Установка квот

Пришло время задать квоты. Они устанавливаются с помощью команды edquota.

Квоты пользователей

Для пользователя, вводим команду:

edquota -u dmosk

* где dmosk — имя пользователя, для которого будет задана квота.

В открывшемся редакторе можно задать ограничение на использование разделов, для которых включена квота:

Disk quotas for user dmosk (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda 20 0 10M 8 0 0
/dev/sdb 0 0 20M 0 0 0

  • Filesystem — дисковое устройство, для которого устанавливается квота.
  • blocks — текущее количество используемых пользователем блоков.
  • первый soft — мягкая квота на объем данных (при ее превышении отправляется уведомление по почте, а после периода отсрочки, который по умолчанию составляет 7 дней, мягкая квота становится жесткой).
  • первый hard — жесткая квота на объем данных (при ее превышении дальнейшая запись будет запрещена).
  • inodes — текущее количество файлов, используемых пользователем.
  • второй soft — мягкая квота на количество файлов (при ее превышении отправляется уведомление по почте).
  • второй hard — жесткая квота на количество файлов (при ее превышении дальнейшая запись будет запрещена).

* в данном примере мы задали жесткую квоту для пользователя dmosk в 10 Мб на /dev/sda (корневой раздел) и 20 Мб на /dev/sdb (/var).

Квоты для групп

Для группы, задаем квоту так:

Читайте также:  Драйвер для видеокарты nvidia geforce 820m для windows 10 64 bit

Как и в случае с пользователем, откроется редактор, с помощью которого можно задать квоту:

Disk quotas for group mail (gid 12):
Filesystem blocks soft hard inodes soft hard
/dev/sda 0 0 30M 6 0 0
/dev/sdb 0 0 40M 0 0 0

* в данном примере мы зададим квоту для группы в 30 Мб на /dev/sda (корневой раздел) и 40 Мб на /dev/sdb (/var).

Копирование квот

Мы также можем копировать квоты для пользователей. Для этого используется та же команда edquota с ключом -p:

edquota -p dmosk ivanov

* в данном примере мы скопируем настройку квотирования, которая применяется к dmosk на другого пользователя ivanov.

Настройка периода отсрочки

Как было упомянуто выше, мягкие ссылки являются мягкими только в течение периода отсрочки. Данный период по умолчанию равен 7 дням. Его можно задать командой edquota с ключом -t:

В открывшемся окне задаем новые значения:

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/mapper/vg-root 8days 9days
/dev/sdb 8days 9days

* в данном примере мы задали 8 дней для квот на дисковое пространство и 9 дней — на количество файлов.

Просмотр и проверка квот

Ограничения настроены. Проверим.

Отчет по квотам

Чтобы посмотреть отчет об используемом пространстве и установленных квотах, вводим команду:

* для отчета корневого раздела только по пользовательским (u) квотам в режиме удобного чтения (s).

* для отчета по разделу /var для групп.

Мы увидим что-то на подобие:

*** Report for user quotas on device /dev/sda
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
root — 2862M 0K 0K 115k 0 0
polkitd — 0K 0K 0K 2 0 0
tss — 8K 0K 0K 2 0 0
postfix — 4K 0K 0K 38 0 0
chrony — 4K 0K 0K 3 0 0
dmosk — 20K 0K 10240K 8 0 0
rpc — 0K 0K 0K 2 0 0
ntp — 4K 0K 0K 3 0 0
.

* как видим, это отчет по использованию раздела /. Мы видим, каким пользователем сколько занято дискового пространства и видим, что для нашего пользователя dmosk установлена квота в 10 Мб (10240 Кб).

Проверка

И так, мы настроили для пользователя dmosk ограничение на использование дискового пространства. Попробуем превысить данный лимит. Заходим в консоль под нужным пользователем:

dd if=/dev/zero of=/tmp/tmp_dmosk_file bs=1024000 count=100

* команда должна создать файл на 100 Мб в каталоге tmp.

Однако, система вернет сообщение:

dd: ошибка записи «/tmp/tmp_dmosk_file»: Превышена дисковая квота
11+0 записей получено
10+0 записей отправлено
скопировано 10240000 байт (10 MB), 0,223768 c, 45,8 MB/c

Другие квоты

Иногда, необходимо установить квоту в рамках определенной программы или каталога.

Однако, квоты так не работают и нет возможности задать их для определенного каталога или программы. Но это не означает, что выхода нет.

Квота на директорию

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

Квоты в samba

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

Также в файловом сервере samba есть возможность настройки квотирования на уровне программного обеспечения. В конфигурационном файле при настройке шары добавим:

Читайте также:  Xerox 6705 драйвер windows 10

[share]
.
vfs objects = default_quota
default_quota:uid = 1022
default_quota:uid nolimit = no
.

* в данном примере мы задаем квоту на каталог share. Данная квота должна быть такой же, как у системного пользователя с uid 1022. Таким образом, системные квоты должны быть настроены.

Для samba есть также параметр max disk size, который не является ограничением, а просто показывает для других программ максимальный объем доступного пространства.

Квоты в vsftpd

Настраивая vsftpd, мы также должны позаботиться о том, чтобы каталоги с FTP были на разделах с установленными квотами. Другими словами — вопрос также решается с применением пакета quota.

Источник

quota или как ограничить размер папки

Всем заранее спасибо за участие! Вопрос таков: Необходимо ограничить размер общей папки, сейчас это реализуется разбиеним на партиции, но хотелось бы решить это проще. Квота ставиться на юзеров и группы. Если юзер входит в несколько групп, сколько он запишет в папку? Как сумма всех квот на группы в которые он входит? Как разрешить такую ситуацию, может кто знает?

Re: quota или как ограничить размер папки

А поставь квоту на юзера.

Re: quota или как ограничить размер папки

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

Re: quota или как ограничить размер папки

Создается группа тех, кто пишет в эту папку и право на запись дается только этой группе. То есть просто chown root.gruppa10 papka. И квоту на группу gruppa10 и все ok, при условии что root туда не начнет писать.

Re: quota или как ограничить размер папки

А если пользователь входит в другие группы (а так всегда и есть), на которые тоже есть свои квоты, как будет считаться общий размер квоты, записываемый этим пользователем. Или, если квота считается как сумма файлов, имеющих группу, на которую она установлена, то тогда надо чтобы все файлы в этой папке создавались именно с этой группой, но это ведь не так. А интересно, как вообще квота считается?

Re: quota или как ограничить размер папки

Есть еще папки куда может писать эта GRUPPA10? Если есть — будет считаться все, тогда вопрос решается опять же созданием НОВОЙ группы, которая может писать ТОЛЬКО В ЭТУ ПАПКУ. Тогда получается — квота на группу скажем GRUPPA876 и писать она может только в одну папку — не ошибешься.

Re: quota или как ограничить размер папки

Все же не совсем понятно. Пусть я создал группу 10 и папку share.В папку share могут писать только члены группы 10. Ставлю квоту на группу. Но если хотя бы один из членов группы 10 входит в другую группу 20 (а так и есть), на которую есть своя квота, то он сможет записать в папку share файл размером = квота 10 + квота 20. Если же его не включить в группу 20, то он не сможет уже никуда записать, если закончится квота группы 10.

Re: quota или как ограничить размер папки

Нет. Группа 20 не имеет права на запись в папку share. Туда буду писаться файлы только принадлежащие группе 10 пока не исчерпают ее квоту.

Источник

Оцените статью