Пошагово разберем процесс установки ограничений на использование дискового пространства в системах Linux. Какой дистрибутив — не важно. Процесс немного различается для файловых систем XFS и EXT4/остальных — мы разберем оба варианта.
Установка пакета для управления квотами выполняется из репозитория.
а) для систем на базе RPM (Red Hat, CentOS):
yum install quota
б) для систем на базе deb (Debian, Ubuntu):
apt-get install quota
Для возможности управлять квотами для определенного раздела необходимо его смонтировать с соответствующими опциями. Для файловых систем XFS и не XFS (например, ext) эти опции различаются:
И так, чтобы добавить нужные опции для включения квотирования, откроем файл fstab:
vi /etc/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.
Перемонтируем наши разделы:
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 с помощью файла fstab, результат будет нулевым — в опциях монтирования мы будем наблюдать noquota, например:
/dev/sda on / type xfs (rw,relatime,attr2,inode64,noquota)
Для включения опции квотирования необходимо отредактировать загрузчик. Для этого открываем файл:
vi /etc/default/grub
Находим строку 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
Перезагружаем компьютер:
shutdown -r now
После перезагрузки мы должны наблюдать такую картину:
/dev/mapper/vg-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
Квоты включены для корневого раздела с файловой системой XFS.
И так, мы разрешили квоты для разделов. Теперь включаем квоты. Процессы для XFS и остальных файловых систем немного различаются. Мы рассмотрим оба варианта. Так как в нашем примере есть разделы для XFS и Ext, то мы выполним все варианты настроек.
После монтирования раздела с файловой системой XFS автоматически включается квотирование (если была задана соответствующая опция). Проверить состояние можно, войдя в режим экспертного управления квотами:
xfs_quota -x
… и выполнив команду для получения статуса:
Выполним проверку наличия служебных файлов aquota.user и aquota.group — если их нет, команда их создаст автоматически:
quotacheck -favugm
… при наличии разделов с включенной квотой на XFS мы можем увидеть:
quotacheck: Skipping /dev/sdb [/var]
* это нам говорит о том, что команда quotacheck пропускаем раздел с xfs.
Включаем квоту для разделов:
quotaon -avug
Пришло время задать квоты. Они устанавливаются с помощью команды edquota.
Для пользователя, вводим команду:
edquota -u admins24
* где admins24 — имя пользователя, для которого будет задана квота.
В открывшемся редакторе можно задать ограничение на использование разделов, для которых включена квота:
Disk quotas for user admins24 (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
* где:
* в данном примере мы задали жесткую квоту для пользователя admins24 в 10 Мб на /dev/sda (корневой раздел) и 20 Мб на /dev/sdb (/var).
Для группы, задаем квоту так:
edquota -g mail
Как и в случае с пользователем, откроется редактор, с помощью которого можно задать квоту:
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 admins24 ivanov
* в данном примере мы скопируем настройку квотирования, которая применяется к admins24 на другого пользователя ivanov.
Как было упомянуто выше, мягкие ссылки являются мягкими только в течение периода отсрочки. Данный период по умолчанию равен 7 дням. Его можно задать командой edquota с ключом -t:
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 дней — на количество файлов.
Ограничения настроены. Проверим…
Чтобы посмотреть отчет об используемом пространстве и установленных квотах, вводим команду:
repquota -us /
* для отчета корневого раздела только по пользовательским (u) квотам в режиме удобного чтения (s).
… и:
repquota -g /var
* для отчета по разделу /var для групп.
Мы увидим что-то на подобие:
*** Report for user quotas on device /dev/sdaBlock grace time: 7days; Inode grace time: 7days Block limits File limitsUser 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 admins24 — 20K 0K 10240K 8 0 0 rpc — 0K 0K 0K 2 0 0 ntp — 4K 0K 0K 3 0 0 …
* как видим, это отчет по использованию раздела /. Мы видим, каким пользователем сколько занято дискового пространства и видим, что для нашего пользователя admins24 установлена квота в 10 Мб (10240 Кб).
И так, мы настроили для пользователя admins24 ограничение на использование дискового пространства. Попробуем превысить данный лимит. Заходим в консоль под нужным пользователем:
su – admins24
… и вводим:
dd if=/dev/zero of=/tmp/tmp_admins24_file bs=1024000 count=100
* команда должна создать файл на 100 Мб в каталоге tmp.
Однако, система вернет сообщение:
dd: ошибка записи «/tmp/tmp_admins24_file»: Превышена дисковая квота11+0 записей получено10+0 записей отправлено скопировано 10240000 байт (10 MB), 0,223768 c, 45,8 MB/c
Квота работает.
Иногда, необходимо установить квоту в рамках определенной программы или каталога.
Однако, квоты так не работают и нет возможности задать их для определенного каталога или программы. Но это не означает, что выхода нет.
Чаще всего, нет необходимости задавать квоту на всю систему — нужно только ограничение размера директории. В данной ситуации нам нужно примонтировать диск к нужной директории и задать квоту на примонтированный раздел.
Как правило, речь в контексте samba идет о ограничения на использование шары. Для этого необходимо каждую шару поместить на отдельный раздел, каждый со своей квотой.
Также в файловом сервере samba есть возможность настройки квотирования на уровне программного обеспечения. В конфигурационном файле при настройке шары добавим:
[share] … vfs objects = default_quota default_quota:uid = 1022 default_quota:uid nolimit = no …
* в данном примере мы задаем квоту на каталог share. Данная квота должна быть такой же, как у системного пользователя с uid 1022. Таким образом, системные квоты должны быть настроены.
Для samba есть также параметр max disk size, который не является ограничением, а просто показывает для других программ максимальный объем доступного пространства.
Настраивая vsftpd, мы также должны позаботиться о том, чтобы каталоги с FTP были на разделах с установленными квотами. Другими словами — вопрос также решается с применением пакета quota.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies