Настройка пользовательских квот файловой системы в Linux

Квоты на использование файловой системы — очень важный инструмент, позволяющий распределять ресурсы, собственно, файловой системы (ФС) между пользователями. Квоты являются ограничительными мерами, без которых любой пользователь довольно быстро может занять всё дисковое пространство системы, нарушив таким образом штатный режим её работы. В целях предотвращения таких неприятностей и управления квотами в Linux существует специальный инструмент quota.

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

Как и полагается в таких случаях, все важные системные инструменты доступны для всех популярных дистрибутивов Linux по-умолчанию в их стандартных репозиториях. Нужно их просто установить. Так, для Ubuntu достаточно выполнить команду:

$ sudo apt install quota

В других дистрибутивах для установки могут использоваться другие менеджеры пакетов и системы управления пакетами (СУП), могут также и отличаться наименования пакетов. Однако, ключевым словом для поиска инструмента квотирования в любой системе Linux является «quota». Метод настройки системы квотирования для разных дистрибутивов также принципиально не отличается.

Модули ядра для работы системы квотирования

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

$ find /lib/modules/`uname -r` -type f -name '*quota_v*.ko'
/lib/modules/4.15.0-46-generic/kernel/fs/quota/quota_v2.ko
/lib/modules/4.15.0-46-generic/kernel/fs/quota/quota_v1.ko

Здесь используется утилита find и команда uname -r (определяет версию активного системного ядра), которая просматривает каталог /lib/modules/ и ищет требуемые модули. Как видно, оба необходимых модуля установлены.

Понятно, что версия ядра из приведённого вывода может отличаться в других дистрибутивах, поэтому и используется команда uname -r в составе запроса команды find. В случае, если модули не будут найдены, нужно установить пакет linux-image-extra-virtual:

$ sudo apt install linux-image-extra-virtual

После этого нужно снова выполнить предыдущую команду find, чтобы убедиться, что нужные модули были установлены.

Настройка конфигурации fstab

Для того, чтобы для определённой ФС было возможно квотирование, её (ФС) необходимо определённым образом монтировать, передавая для этого специальные параметры. Для задания таких параметров (и не только) существует файл /etc/fstab. Его нужно отредактировать, например с помощью nano:

$ sudo nano /etc/fstab

Содержимое fstab может быть, например, таким:

LABEL=cloudimg-rootfs / ext4 defaults 0 0
LABEL=UEFI /boot/efi vfat defaults 0 0

Чтобы настроить монтирование, например всей корневой ФС (/) в режиме работы квотирования, необходимо отредактировать соответствующую строку, заменив поле «default» параметрами «usrquota» и «grpquota»:

LABEL=cloudimg-rootfs / ext4 usrquota,grpquota 0 0
LABEL=UEFI /boot/efi vfat defaults 0 0

При задании параметров, если их несколько очень важно перечислять их через запятую и без пробелов. Как можно догадаться, новые параметры позволяют соответствующей ФС, т. е. для которой они определены, работать в режиме квотирования для пользователей (usrquota) и для групп – grpquota. Необязательно использовать их вместе, по необходимости можно задействовать только один из них.

Теперь необходимо перемонтировать корневую ФС:

$ sudo mount -o remount /

Необходимо также и убедиться в том, что перемонтирование было произведено с требуемыми параметрами. Для этого можно посмотреть содержимое файла /proc/mounts, используя команды cat и grep:

$ cat /proc/mounts | grep ' / '
/dev/vda1 / ext4 rw,relatime,quota,usrquota,grpquota,data=ordered 0 0

Как видно, корневая ФС (/) смонтирована с требуемыми параметрами «usrquota» и «grpquota». Теперь необходимо включить и настроить саму систему квотирования.

Включение системы квотирования

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

$ sudo quotacheck -ugm /

В результате будут созданы следующие файлы:

  • /aquota.user – его создание определяется опцией -u;
  • /aquota.group – создаётся опцией -g;

Опция «-m» выполняет отключение перемонтирования ФС в режиме «только для чтения», что очень полезно для корректного выполнения команды quotacheck. Естественно, опции «-u» и «-g» можно использовать независимо, исходя из условий задачи и не указывать их, если какая-то из из них не требуется. Символ «/» указывает, что это корневая ФС.
Теперь можно включить квотирование:

$ sudo quotaon -v /

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

Настройка квот и отчёты

Для настройки квот существуют две команды: edquota и setquota. Первая позволяет задавать настройки квот в текстовом редакторе, установленном по-умолчанию, вторая — без него, указанием соответствующих аргументов самой команды. Для более глубокого понимания стоит рассмотреть сначала задание квоты с помощью команды edquota, например для пользователя john:

$ sudo edquota -u john

Будет открыт текстовый редактор для редактирования следующего содержимого:

Disk quotas for user john (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/vda1   40      0    0    13    0    0

Как можно видеть, здесь приводятся данные о пользователе, для которого нужно настроить квоты, а также сами ограничения для блоков (blocks) и индексов (inodes), каждому из которых соответствует мягкое (soft) и жёсткое (hard) ограничение. Мягкое ограничение можно временно превышать. По истечении этого временного периода пользователь должен вернуться к разрешённым пределам (т. е. освободить дисковое пространство или удалить лишние файлы и каталоги), иначе ограничение будет распознаваться как жёсткое. Ограничения для блоков подразумевают объёмы дискового пространства в этих самых блоках. Ограничения по индексам не позволяют пользователю работать с определённым количеством каталогов и файлов, превышающим заданный лимит.
Обычно 1 блок составляет 1 килобайт данных. В данном примере для пользователя john установлена квота в 40 килобайт на устройстве /dev/vda1, а пределы для soft и hard отключены значением «0». Теперь можно задать для пользователя john квоты, определив, например значения soft и hard для блоков:

Disk quotas for user john (uid 1001):
Filesystem blocks soft   hard inodes soft hard
/dev/vda1    40    100M  110M   13    0    0

Если теперь сохранить и закрыть файл, то можно проверить сделанные изменения для пользователя john командой:

$ sudo quota -vs 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, как уже было отмечено, позволяет задавать квоты без работы в текстовом редакторе:

$ sudo setquota -u john 200M 220M 0 0 /

В результате пользователю john будут назначены квоты: мягкая — 200 мегабайт и жёсткая — 220 мегабайт. Если использовать опцию -g, то квоты будут задаваться для указанной группы. Это применимо как к edquota, так и к setquota. Следует также отметить, что задание параметров для индексов (в данном случае «0 0») обязательно, даже если они отключены или не изменяются.

Для задания «мягкого» периода, в течение которого пользователь должен вернуться в указанные для него пределы нужно использовать опцию -t, например:

sudo setquota -t 864000 864000 /

В результате будет задан период отсрочки для блоков и индексов продолжительностью 864000 секунд, т. е. 10 дней. Обязательно нужно указывать оба параметра, даже если нужно настроить только один из них. Значения отсрочек будут заданы для всех пользователей.
Для просмотра отчётов по использованию пользователями квот нужно выполнить команду:

$ sudo repquota -s /
*** Report for user quotas on device /dev/vda1
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
---------------------------------------------------------------
root -- 1696M 0K 0K 75018 0 0
john – 40K 100M 110M 13 0 0 7days

Опция «-s» позволяет выводить данные в «человекопонятном» формате.

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: