Внедрение дисковых квот и управление ими в Linux (пошаговое руководство)
В этом уроке мы поговорим о дисковых квотах.
Вступление
Теперь дисковые квоты являются очень ценным инструментом управления при администрировании многопользовательской системы Linux.
Проблема в том, что Linux — настоящая многопользовательская операционная система.
Один или два пользователя этой системы могут полностью использовать все дисковое пространство, доступное в файловой системе.
Это особенно актуально сегодня, когда пользователи нередко загружают из Интернета очень большие музыкальные файлы и даже большие файлы фильмов.
Теперь вы можете удержать этих пользователей от использования большего, чем их справедливая доля дискового пространства в системе, с помощью дисковых квот.
И эти квоты устанавливают ограничения на пространство, чтобы указать, сколько места разрешено использовать конкретному пользователю.
Например, вы можете указать с помощью этих квот, что пользователю разрешено использовать только определенный объем дискового пространства, или вы можете ограничить количество файлов, которые им разрешено создавать, установив квоту на количество Inode, которые они разрешено употреблять.
Теперь квоты можно настроить либо на временное разрешение пользователям превышать лимиты, либо вы можете указать, что им вообще не разрешено превышать эти лимиты.
Установка пакета квот
Чтобы реализовать квоты в файловой системе Linux, вам сначала необходимо установить пакет квот в вашей системе.
Некоторые дистрибутивы устанавливают этот пакет как часть базовой установки.
Сейчас я использую операционную систему CentOS 8, и в ней уже установлен пакет Quota.
# rpm -qa | grep quota
quota-4.04-10.el8.x86_64
Однако мой опыт показывает, что большинство дистрибутивов этого не делают, и вам придется устанавливать его отдельно после того, как вся система будет установлена и настроена.
Чтобы узнать, была ли уже установлена квота в вашей системе, вы можете использовать соответствующую утилиту управления пакетами для вашего дистрибутива, чтобы узнать, установлен ли пакет квоты.
И если он не был установлен, вам нужно использовать yum
или apt-get
выйти, достать и установить.
Если вы работаете на машине Linux на базе Debian и не имеете установленной квоты, вы можете установить ее с помощью следующей команды.
# sudo apt-get update
# sudo apt-get install quota
и если вы находитесь на RPM
машина на базе Linux, такая как Redhat или CentOS, вы можете установить ее с помощью следующей команды.
# yum -y install quota
Теперь, когда этот пакет установлен, вам нужно выполнить несколько задач, чтобы установить квоты.
Давайте посмотрим, что они из себя представляют.
Включение квот в файловой системе
Первое, что нам нужно сделать, это зайти в нашу /etc/fstab
файл конфигурации в системе, где мы хотим установить квоты, открыть его в текстовом редакторе и добавить эти два параметра в наши параметры монтирования. usrquota
а также grpquota
.
Предлагаемое чтение: Как создать дисковые разделы (MBR) в Linux
Здесь я включаю квоту на /dev/sdc1
раздел.
# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Jan 24 10:20:39 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=b119d862-07b7-4842-a6ea-cd2da64f8eae / xfs defaults 0 0
UUID=e9f23f2d-118e-4a5e-94ab-b08afb78a3be /boot ext4 defaults 1 2
UUID=d3e3cc9a-6c24-4d58-9d33-4aeaa2eef5d1 swap swap defaults 0 0
/dev/sdc1 /mydata ext4 defaults,usrquota,grpquota 0 0
Перемонтирование файловых систем
Теперь, прежде чем они вступят в силу, /etc/fstab
файл необходимо перечитать, вероятно, самый простой способ сделать это — просто перезагрузить систему.
Вы можете запустить следующую команду, чтобы перезапустить систему.
# shutdown -r
Или вы можете перемонтировать файловую систему, используя следующую команду.
# mount -o remount /dev/sdc1
Предлагаемое чтение:
Включение квоты в файловой системе (временный метод)
Если вы хотите временно включить квоту в файловой системе, введите следующую команду.
# mount -o remount,usrquota,grpquota /mydata/
Создание файлов базы данных квот
Затем после перезагрузки системы вам необходимо создать файлы квот.
Вы делаете это с помощью команды, которую видите здесь.
# quotacheck -amvug
Сейчас quotacheck
Команда просканирует файловую систему и установит, как выглядит текущее использование диска, а также создаст наши файлы квот.
Попробуем разобраться во всех вариантах, которые мы используем с quotacheck
команда.
-a
— Проверить все файловые системы-m
— Проверить всю смонтированную файловую систему-v
— Работайте в подробном режиме-u
— Проверить файлы пользователей-g
— Проверить файлы группы
Когда quotacheck
команда завершена, вы увидите два файла, созданные в точке монтирования устройства в вашей файловой системе, которая aquota.group
а также aquota.user
.
Здесь я установил /dev/sdc1
раздел в /mydata
каталог и, как вы можете видеть, были созданы файлы квот.
# ls /mydata/
aquota.group aquota.user lost+found
И это важно, потому что, если эти два файла не существуют, мы не сможем создать квоты в этой файловой системе.
Включение квот
Теперь, если эти два файла на месте, следующее, что нам нужно сделать, это включить квоты в файловой системе.
Мы делаем это с помощью quotaon
команда с -a
а также -v
параметры.
# quotaon -av
/dev/sdc1 [/mydata]: group quotas turned on
/dev/sdc1 [/mydata]: user quotas turned on
Отчетность по дисковым квотам
После того, как эта команда была запущена, вы можете просмотреть текущее дисковое пространство, используемое всеми пользователями в вашей системе, используя repquota
команда с -a
а также -v
параметры.
Когда вы запускаете эту команду, на экране отображается отчет, показывающий, сколько места занимает каждый пользователь, и вы можете увидеть это прямо здесь.
# repquota -av
*** Report for user quotas on device /dev/sdc1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
helpdesk -- 2048 0 0 2 0 0
linuxadmin -- 4096 0 0 4 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000
Как видите, у нас есть root
пользователь, у нас есть helpdesk
пользователь и пользователь с именем linuxadmin
.
В этом отчете вы можете увидеть такой символ (--
) перед каждым пользователем.
Если предел одного из blocks
а также inodes
превышено, то здесь (--
) вы получите +
Индикация.
Из двух дефисов (--
), Первый -
представляет предел блока, а второй -
представляет предел inode.
Этот отчет также показывает, сколько дискового пространства они использовали здесь и сколько инодов использовал каждый пользователь.
Теперь обратите внимание, что здесь у нас есть столбцы с именем soft
а также hard
.
Это квоты, установленные для каждого пользователя.
Теперь вы заметите, что все квоты установлены на 0
Это означает, что для каждого пользователя не настроены квоты, которые нам нужно изменить.
Назначение дисковых квот для пользователей и групп
Вы создаете эту квоту для пользователя, используя команды, показанные здесь.
Назначение квот на пользователя
Мы входим edquota -u
за которым следует имя пользователя, для которого мы хотим создать квоту.
В этом случае я решил создать дисковую квоту для helpdesk
Пользователь.
# edquota -u helpdesk
По сути, это откроет vi
редактор и загрузите файл квоты для указанного пользователя.
Disk quotas for user helpdesk (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdc1 2048 0 0 2 0 0
Что вам нужно сделать, так это указать, какие квоты вы хотите установить.
У нас есть blocks
квота и у нас есть inode
квоты, которые мы можем установить.
Теперь под blocks
он сообщает нам, сколько в настоящее время потреблено, и inode
сообщает нам, сколько Inode было использовано в этой файловой системе для этого конкретного пользователя.
Так что не беспокойтесь об этих параметрах.
Что нас действительно беспокоит, так это soft
а также hard
параметры или inodes
и для blocks
.
Вы можете заменить эти нули (0
) с номером, и вы можете установить soft
а также hard
квота на blocks
и soft
а также hard
квота на inodes
.
Теперь имейте в виду, что soft
квоты могут быть временно превышены на время, но hard
квоты, с другой стороны, вообще не могут быть превышены.
Итак, когда мы устанавливаем block
quota мы указываем, сколько блоков на диске пользователю разрешено использовать.
А если вы посчитаете, то сможете выяснить, сколько места соответствует количеству blocks
.
В inode
квота, с другой стороны, указывает, сколько файлов пользователь может владеть в этой файловой системе.
Итак, давайте установим квоту для службы поддержки.
Disk quotas for user helpdesk (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdc1 2048 10000 15000 2 800 1000
После внесения необходимых изменений нажмите кнопку ESCAPE
кнопку на клавиатуре, затем введите :wq!
и нажмите ENTER
кнопку, чтобы сохранить изменения.
Подтверждение конфигурации квот
Чтобы проверить, настроена ли квота, вы можете выполнить следующую команду.
# quota helpdesk
Disk quotas for user helpdesk (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdc1 2048 10000 15000 2 800 1000
Копирование квот от одного пользователя другому
Теперь, прежде чем мы продолжим, имейте в виду, что если у вас много пользователей в системе, этот процесс может занять некоторое время.
Вход и редактирование квот для каждого отдельного пользователя.
Если у всех пользователей в вашей системе очень похожие квоты, которые вы хотите установить, другими словами, block
и inode
квоты, которые вы хотите установить, практически одинаковы для нескольких пользователей.
Вы можете пройти через этот процесс здесь, используя edquota
команда для установки квоты для одного пользователя в системе, а затем вы можете использовать edquota -p
затем скажите, пожалуйста, скопируйте квоты, установленные для этого пользователя, и скопируйте их этому другому пользователю.
Шаг № 1 Установите квоту для одного пользователя
Здесь я устанавливаю квоту для пользователя службы поддержки.
# edquota -u helpdesk
isk quotas for user helpdesk (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdc1 2048 10000 15000 2 800 1000
Шаг № 2 Скопируйте квоты от одного пользователя другому.
Синтаксис:
edquota -p source_user destination_user
Итак, давайте применим квоту, которую мы установили для helpdesk
пользователь более linuxadmin
Пользователь.
# edquota -p helpdesk linuxadmin
Как видите, котировки были применены, и, если вы заметили, настройки квот для обоих пользователей одинаковы.
Disk quotas for user linuxadmin (uid 1005):
Filesystem blocks soft hard inodes soft hard
/dev/sdc1 4096 10000 15000 4 800 1000
Итак, в основном вам нужно отредактировать файл только один раз, а затем скопировать квоты, установленные для всех других пользователей. Так намного быстрее.
Назначение квот на группу
Другой способ обойти эту проблему — установить квоты для групп, а не для отдельных пользователей.
Таким образом, вы можете поместить всех пользователей, для которых требуются одинаковые квоты, в одну группу.
И тогда вы можете использовать эту команду edquota -g
за которым следует имя группы, чтобы установить квоту для группы, которая затем будет автоматически применяться ко всем членам этой группы.
В этом примере я устанавливаю квоту для группы под названием developer
.
# edquota -g developer
Когда вы это сделаете, вы увидите в основном тот же интерфейс, что и здесь, вы просто устанавливаете квоты для имени группы вместо имени пользователя.
Disk quotas for group developer (gid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sdc1 0 10000 15000 0 800 1000
Управление льготным периодом
Теперь, прежде чем мы закончим, нам нужно поговорить об управлении льготным периодом.
Теперь льготный период — это время, в течение которого конечному пользователю разрешено превышать soft
установленный вами предел квоты.
По умолчанию пользователи могут превышать soft
квота на максимум 7
дней.
Если вам не нравится этот льготный период, вы можете его изменить.
Это делается с помощью следующей команды.
# edquota -t
Когда вы запускаете эту команду, вы видите этот интерфейс прямо здесь.
Для данной файловой системы вы можете указать, что такое льготный период блока и какой льготный период inode, и снова вы можете видеть, что по умолчанию он установлен на 7 дней.
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/sdc1 7days 7days
Если вы хотите быть короче или длиннее, вы можете ввести это значение здесь.
Изменим льготный период на 10 дней.
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/sdc1 10days 10days
Как только вы закончите, вы можете проверить свои новые квоты, снова выполнив ту же команду, которую мы запускали ранее.
Примечание: В следующем отчете будет отображаться отчет об использовании диска для всех (опция -a
) файловые системы с квотами
# repquota -av
*** Report for user quotas on device /dev/sdc1
Block grace time: 10days; Inode grace time: 10days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
helpdesk -- 2048 10000 15000 2 800 1000
linuxadmin -- 4096 10000 15000 4 800 1000
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000
На этот раз вы заметите, что в выводе команды кое-что изменилось.
И обратите внимание, что теперь у моего пользователя службы поддержки есть мягкие и жесткие ограничения для моих block
использование, у меня также есть soft
а также hard
установлен предел для моего inode
использование эффективно.
helpdesk
теперь квота установлена на /dev/sdc1
.
Итак, на данный момент моя система теперь защищена от лишнего дискового пространства.
Чтобы проверить отчет о квотах конкретной файловой системы, вы можете выполнить следующую команду.
Здесь я проверяю отчет о квотах /mydata
файловая система.
# repquota /mydata/
*** Report for user quotas on device /dev/sdc1
Block grace time: 10days; Inode grace time: 10days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
helpdesk -- 2048 10000 15000 2 800 1000
linuxadmin -- 4096 10000 15000 4 800 1000
Включение и отключение квот
Если вы хотите включить или отключить квоты, вы можете это сделать.
Введите следующую команду, чтобы отключить квоту для всех пользователей и групп.
# quotaoff -vaug
/dev/sdc1 [/mydata]: group quotas turned off
/dev/sdc1 [/mydata]: user quotas turned off
Выполните следующую команду, чтобы отключить квоты только для пользователей.
# quotaoff -vau
/dev/sdc1 [/mydata]: user quotas turned off
Вы можете использовать следующую команду, чтобы отключить квоты только для групп.
# quotaoff -vag
/dev/sdc1 [/mydata]: group quotas turned off
Следующая команда включит квоту для всех пользователей и групп.
# quotaon -vaug
/dev/sdc1 [/mydata]: group quotas turned on
/dev/sdc1 [/mydata]: user quotas turned on
Чтобы включить квоты для определенной файловой системы, например /mydata
используйте следующую команду.
# quotaon -vug /mydata
Получите дополнительную информацию о дисковых квотах.
Заключение
Я надеюсь, что теперь вы хорошо понимаете, как реализовать дисковые квоты и управлять ими в Linux.
Если у кого-то есть какие-либо вопросы о том, что мы рассмотрели в этом руководстве, не стесняйтесь спрашивать в разделе комментариев ниже, и я постараюсь ответить на них.