- Настройка дисковых квот в Linux
- Установка пакета quota
- Настройка раздела
- Корневая директория (/) + XFS
- Включение квот
- Ext и другие
- Установка квот
- Квоты пользователей
- Квоты для групп
- Копирование квот
- Настройка периода отсрочки
- Просмотр и проверка квот
- Отчет по квотам
- Проверка
- Другие квоты
- Квота на директорию
- Квоты в samba
- Квоты в vsftpd
- Настройка пользовательских квот файловой системы в Linux
- Установка пакета quota
- Модули ядра для работы системы квотирования
- Настройка конфигурации fstab
- Включение системы квотирования
- Настройка квот и отчёты
- Заключение
Настройка дисковых квот в Linux
Пошагово разберем процесс установки ограничений на использование дискового пространства в системах Linux. Какой дистрибутив — не важно. Процесс немного различается для файловых систем XFS и EXT4/остальных — мы разберем оба варианта.
Установка пакета quota
Установка пакета для управления квотами выполняется из репозитория.
а) для систем на базе RPM (Red Hat, CentOS):
yum install quota
б) для систем на базе deb (Debian, Ubuntu):
apt-get install quota
Настройка раздела
Для возможности управлять квотами для определенного раздела необходимо его смонтировать с соответствующими опциями. Для файловых систем XFS и не XFS (например, ext) эти опции различаются:
- Для XFS — uquota (для пользователей) и/или gquota (для групп).
- Для 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.
Перемонтируем наши разделы:
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).
Квоты для групп
Для группы, задаем квоту так:
Как и в случае с пользователем, откроется редактор, с помощью которого можно задать квоту:
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 есть возможность настройки квотирования на уровне программного обеспечения. В конфигурационном файле при настройке шары добавим:
[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.
Источник
Настройка пользовательских квот файловой системы в Linux
Квоты на использование файловой системы — очень важный инструмент, позволяющий распределять ресурсы, собственно, файловой системы (ФС) между пользователями. Квоты являются ограничительными мерами, без которых любой пользователь довольно быстро может занять всё дисковое пространство системы, нарушив таким образом штатный режим её работы. В целях предотвращения таких неприятностей и управления квотами в Linux существует специальный инструмент quota.
Установка пакета quota
Как и полагается в таких случаях, все важные системные инструменты доступны для всех популярных дистрибутивов Linux по-умолчанию в их стандартных репозиториях. Нужно их просто установить. Так, для Ubuntu достаточно выполнить команду:
В других дистрибутивах для установки могут использоваться другие менеджеры пакетов и системы управления пакетами (СУП), могут также и отличаться наименования пакетов. Однако, ключевым словом для поиска инструмента квотирования в любой системе Linux является «quota». Метод настройки системы квотирования для разных дистрибутивов также принципиально не отличается.
Модули ядра для работы системы квотирования
Для работы системы квотирования в Linux необходима её поддержка ядром с помощью специальных модулей ядра. Обычно они установлены по-умолчанию в базовой поставке дистрибутива. Однако не лишним будет всё же это проверить:
Здесь используется утилита find и команда uname -r (определяет версию активного системного ядра), которая просматривает каталог /lib/modules/ и ищет требуемые модули. Как видно, оба необходимых модуля установлены.
Понятно, что версия ядра из приведённого вывода может отличаться в других дистрибутивах, поэтому и используется команда uname -r в составе запроса команды find. В случае, если модули не будут найдены, нужно установить пакет linux-image-extra-virtual:
После этого нужно снова выполнить предыдущую команду find, чтобы убедиться, что нужные модули были установлены.
Настройка конфигурации fstab
Для того, чтобы для определённой ФС было возможно квотирование, её (ФС) необходимо определённым образом монтировать, передавая для этого специальные параметры. Для задания таких параметров (и не только) существует файл /etc/fstab . Его нужно отредактировать, например с помощью nano:
Содержимое fstab может быть, например, таким:
Чтобы настроить монтирование, например всей корневой ФС (/) в режиме работы квотирования, необходимо отредактировать соответствующую строку, заменив поле «default» параметрами «usrquota» и «grpquota»:
При задании параметров, если их несколько очень важно перечислять их через запятую и без пробелов. Как можно догадаться, новые параметры позволяют соответствующей ФС, т. е. для которой они определены, работать в режиме квотирования для пользователей (usrquota) и для групп – grpquota. Необязательно использовать их вместе, по необходимости можно задействовать только один из них.
Теперь необходимо перемонтировать корневую ФС:
Необходимо также и убедиться в том, что перемонтирование было произведено с требуемыми параметрами. Для этого можно посмотреть содержимое файла /proc/mounts , используя команды cat и grep:
Как видно, корневая ФС (/) смонтирована с требуемыми параметрами «usrquota» и «grpquota». Теперь необходимо включить и настроить саму систему квотирования.
Включение системы квотирования
Перед тем, как включать квотирование, необходимо создать соответствующие файлы конфигурации и инициализировать конфигурационные параметры. Это позволяет сделать следующая команда:
В результате будут созданы следующие файлы:
- /aquota.user – его создание определяется опцией -u;
- /aquota.group – создаётся опцией -g;
Опция «-m» выполняет отключение перемонтирования ФС в режиме «только для чтения», что очень полезно для корректного выполнения команды quotacheck. Естественно, опции «-u» и «-g» можно использовать независимо, исходя из условий задачи и не указывать их, если какая-то из из них не требуется. Символ «/» указывает, что это корневая ФС.
Теперь можно включить квотирование:
Но пока система квотирования не обрабатывает сами квоты, поскольку они пока не заданы. Теперь-то и можно их настроить.
Настройка квот и отчёты
Для настройки квот существуют две команды: edquota и setquota. Первая позволяет задавать настройки квот в текстовом редакторе, установленном по-умолчанию, вторая — без него, указанием соответствующих аргументов самой команды. Для более глубокого понимания стоит рассмотреть сначала задание квоты с помощью команды edquota, например для пользователя john:
Будет открыт текстовый редактор для редактирования следующего содержимого:
Как можно видеть, здесь приводятся данные о пользователе, для которого нужно настроить квоты, а также сами ограничения для блоков (blocks) и индексов (inodes), каждому из которых соответствует мягкое (soft) и жёсткое (hard) ограничение. Мягкое ограничение можно временно превышать. По истечении этого временного периода пользователь должен вернуться к разрешённым пределам (т. е. освободить дисковое пространство или удалить лишние файлы и каталоги), иначе ограничение будет распознаваться как жёсткое. Ограничения для блоков подразумевают объёмы дискового пространства в этих самых блоках. Ограничения по индексам не позволяют пользователю работать с определённым количеством каталогов и файлов, превышающим заданный лимит.
Обычно 1 блок составляет 1 килобайт данных. В данном примере для пользователя john установлена квота в 40 килобайт на устройстве /dev/vda1, а пределы для soft и hard отключены значением «0». Теперь можно задать для пользователя john квоты, определив, например значения soft и hard для блоков:
Если теперь сохранить и закрыть файл, то можно проверить сделанные изменения для пользователя john командой:
Disk quotas for user john (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/vda1 40K 100M 110M 13 0 0
Следующая команда setquota, как уже было отмечено, позволяет задавать квоты без работы в текстовом редакторе:
В результате пользователю john будут назначены квоты: мягкая — 200 мегабайт и жёсткая — 220 мегабайт. Если использовать опцию -g, то квоты будут задаваться для указанной группы. Это применимо как к edquota, так и к setquota. Следует также отметить, что задание параметров для индексов (в данном случае «0 0») обязательно, даже если они отключены или не изменяются.
Для задания «мягкого» периода, в течение которого пользователь должен вернуться в указанные для него пределы нужно использовать опцию -t, например:
В результате будет задан период отсрочки для блоков и индексов продолжительностью 864000 секунд, т. е. 10 дней. Обязательно нужно указывать оба параметра, даже если нужно настроить только один из них. Значения отсрочек будут заданы для всех пользователей.
Для просмотра отчётов по использованию пользователями квот нужно выполнить команду:
Опция «-s» позволяет выводить данные в «человекопонятном» формате.
Заключение
В заключение нужно ещё раз отметить, как важно использование инструмента квот для распределения ресурсов системы для пользователей. Настройка же квотирования, как можно видеть, особого труда не вызывает — всё довольно логично.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник