Внедрение дисковых квот и управление ими в 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.

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *