Как установить квоты файловой системы в Debian 10

Вступление

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

В этом уроке мы установим инструменты командной строки для создания и проверки дисковых квот, а затем установим квоту для примера пользователя.

Предпосылки

В этом руководстве предполагается, что вы вошли на сервер Debian 10 с пользователем без полномочий root с поддержкой sudo, как описано в https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian- 10 [Начальная настройка сервера с Debian 10].

Приемы, описанные в этом руководстве, обычно должны работать с дистрибутивами Linux, отличными от Debian, но могут потребовать некоторой адаптации.

Шаг 1 - Установка инструментов квот

Чтобы установить и проверить квоты, нам сначала нужно установить инструменты командной строки квот, используя + apt +. Давайте обновим наш список пакетов, затем установим пакет:

sudo apt update
sudo apt install quota

Вы можете проверить, установлены ли инструменты, запустив команду + quota + и запросив информацию о ее версии:

quota --version
OutputQuota utilities version .
. . .

Хорошо, если ваш вывод показывает немного другой номер версии.

Затем мы обновим параметры + mount + нашей файловой системы, чтобы включить квоты в нашей * корневой * файловой системе.

Шаг 2 - Обновление параметров монтирования файловой системы

Чтобы активировать квоты в определенной файловой системе, нам нужно смонтировать ее с указанием нескольких параметров, связанных с квотами. Мы делаем это путем обновления записи файловой системы в файле конфигурации + / etc / fstab +. Откройте этот файл в вашем любимом текстовом редакторе сейчас:

sudo nano /etc/fstab

Содержимое файла будет похоже на следующее:

/ И т.д. / Fstab

# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e    ext4    errors=remount-ro   0   1

Этот файл + fstab + взят с виртуального сервера. Вероятно, настольный или портативный компьютер будет выглядеть несколько иначе + fstab +, но в большинстве случаев у вас будет файловая система + / + или * root *, которая представляет все ваше дисковое пространство.

Обновите строку, указывающую на корневую файловую систему, добавив следующие параметры:

/ И т.д. / Fstab

# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e   /   ext4    errors=remount-ro   0   1

Вы добавите новые опции в конец любых существующих опций, обязательно разделив их запятыми и без пробелов. Вышеуказанные изменения позволят нам включить в файловую систему как пользовательские (+ usrquota +), так и квоты на основе групп (+ grpquota +). Если вам нужен только один или другой, вы можете пропустить неиспользованную опцию.

Переустановите файловую систему, чтобы новые параметры вступили в силу:

sudo mount -o remount /

Мы можем проверить, что новые опции использовались для монтирования файловой системы, посмотрев файл + / proc / mounts +. Здесь мы используем + grep +, чтобы показать только запись корневой файловой системы в этом файле:

cat /proc/mounts | grep ' / '
Output/dev/vda1 / ext4 rw,relatime,quota,,,errors=remount-ro,data=ordered 0 0

Обратите внимание на два варианта, которые мы указали. Теперь, когда мы установили наши инструменты и обновили параметры файловой системы, мы можем включить систему квот.

Шаг 3 - Включение квот

Прежде чем наконец включить систему квот, нам нужно вручную запустить команду + quotacheck + один раз:

sudo quotacheck -ugm /

Эта команда создает файлы + / aquota.user n и` + / a quota.group`. Эти файлы содержат информацию об ограничениях и использовании файловой системы, и они должны существовать, прежде чем мы включим мониторинг квот. Параметры + quotacheck +, которые мы использовали:

  • * + u +: * указывает, что должен быть создан пользовательский файл квоты

  • * + g +: * указывает, что файл квоты на основе группы должен быть создан

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

Если вам не нужно включать квоты для пользователей или групп, вы можете отключить соответствующую опцию + quotacheck +.

Мы можем проверить, что соответствующие файлы были созданы, перечислив корневой каталог:

ls /
Output  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  sys  usr  vmlinuz
  boot  etc  initrd.img  lib             lost+found  mnt    proc  run   srv   tmp  var  vmlinuz.old

Если вы не включили параметры + u + или + g + в команду + quotacheck +, соответствующий файл будет отсутствовать. Теперь мы готовы включить систему квот:

sudo quotaon -v /
Output/dev/vda1 [/]: group quotas turned on
/dev/vda1 [/]: user quotas turned on

Наш сервер сейчас контролирует и применяет квоты, но мы еще не установили их! Далее мы установим дисковую квоту для одного пользователя.

Шаг 4 - Настройка квот для пользователя

Есть несколько способов установить квоты для пользователей или групп. Здесь мы рассмотрим, как устанавливать квоты с помощью команд + edquota + и + setquota +.

Использование + edquota + для установки квоты пользователя

Мы используем команду + edquota + для ed it quota s. Давайте отредактируем наш пример * sammy * пользовательской квоты:

sudo edquota -u

Опция + -u + указывает, что это квота + user +, которую мы будем редактировать. Если вы хотите отредактировать квоту группы, используйте вместо нее опцию + -g +.

Это откроет файл в текстовом редакторе по умолчанию, аналогично тому, как + crontab -e + открывает временный файл для редактирования. Файл будет выглядеть примерно так:

Disk quotas for user  (uid 1001):
 Filesystem                   blocks       soft       hard     inodes     soft     hard
 /dev/vda1                        24          0          0          7        0        0

Здесь перечислены имя пользователя и + uid +, файловые системы, для которых включены квоты, а также использование и ограничения на основе block- и inode. Установка квоты на основе inode ограничит количество файлов и каталогов, которые может создать пользователь, независимо от объема дискового пространства, которое они используют. Большинству людей нужны блочные квоты, которые ограничивают использование дискового пространства. Это то, что мы настроим.

Каждый тип квоты позволяет вам установить как soft limit, так и hard limit. Когда пользователь превышает мягкое ограничение, они превышают квоту, но им не мешают сразу же занять больше места или inode. Вместо этого предоставляется некоторая свобода действий: по умолчанию у пользователя есть семь дней, чтобы вернуть себе использование диска ниже мягкого предела. В конце семидневного льготного периода, если пользователь все еще превышает мягкий предел, он будет рассматриваться как жесткий предел. Жесткий лимит менее простителен: все создание новых блоков или инодов немедленно прекращается, когда вы достигаете указанного жесткого лимита. Это ведет себя так, как будто на диске совершенно недостаточно места: запись не удастся, временные файлы не будут созданы, и пользователь начнет видеть предупреждения и ошибки при выполнении обычных задач.

Давайте обновим нашего пользователя * sammy *, чтобы иметь квоту блока с мягким ограничением в 100 МБ и жестким ограничением в 110 МБ:

Disk quotas for user  (uid 1001):
 Filesystem                   blocks       soft       hard     inodes     soft     hard
 /dev/vda1                        24                        7        0        0

Сохраните и закройте файл. Чтобы проверить новую квоту, мы можем использовать команду + quota +:

sudo quota -vs
OutputDisk quotas for user  (uid 1001):
    Filesystem   space   quota   limit   grace   files   quota   limit   grace
     /dev/vda1     24K                       7       0       0

Команда выводит наше текущее состояние квоты и показывает, что наша квота равна «+ 100M », а наш предел - « 110M +». Это соответствует мягким и жестким пределам соответственно.

Использование + setquota + для установки квоты пользователя

В отличие от + edquota +, + setquota + будет обновлять информацию о квоте нашего пользователя в одной команде, без интерактивного шага редактирования. Мы определим имя пользователя и мягкие и жесткие ограничения для квот на основе блоков и индексов, и, наконец, файловую систему, к которой будет применена квота:

sudo setquota -u  200M 220M 0 0 /

Приведенная выше команда удвоит ограничения квот на основе блоков * sammy * до 200 мегабайт и 220 мегабайт. +0 0 + для мягких и жестких пределов на основе Inode указывает, что они остаются неустановленными. Это необходимо, даже если мы не устанавливаем никаких квот на основе индексов.

Еще раз, используйте команду + quota для проверки вашей работы:

sudo quota -vs
OutputDisk quotas for user  (uid 1001):
    Filesystem   space   quota   limit   grace   files   quota   limit   grace
     /dev/vda1     24K    200M    220M               7       0       0

Теперь, когда мы установили некоторые квоты, давайте выясним, как создать отчет по квотам.

Шаг 5 - Генерация отчетов о квотах

Чтобы сгенерировать отчет о текущем использовании квоты для всех пользователей в определенной файловой системе, используйте команду + repquota +:

sudo repquota -s /
Output*** 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      --    981M      0K      0K          35234     0     0
nobody    --   7664K      0K      0K              3     0     0
ntp       --     12K      0K      0K              3     0     0
_apt      --      8K      0K      0K              2     0     0
debian    --     16K      0K      0K              4     0     0

В этом случае мы создаем отчет для файловой системы + / + * root *. Команда + -s + говорит + repquota + использовать по возможности удобочитаемые числа. В списке есть несколько системных пользователей, для которых, вероятно, не установлены квоты по умолчанию. Наш пользователь * sammy * указан внизу, с использованными суммами и мягкими и жесткими ограничениями.

Также обратите внимание на льготное время блока : обратный вызов 7days + и столбец + grace +. Если наш пользователь превысил мягкое ограничение, столбец ` grace +` покажет, сколько времени у него осталось, чтобы вернуться к пределу.

На следующем шаге мы обновим льготные периоды для нашей системы квот.

Шаг 6 - Настройка льготного периода для излишков

Мы можем настроить период времени, в течение которого пользователю разрешено плавать выше мягкого предела. Мы используем команду + setquota + для этого:

sudo setquota -t 864000 864000 /

Приведенная выше команда устанавливает время отсрочки блока и inode равным 864000 секунд или 10 дней. Этот параметр применяется ко всем пользователям, и оба значения должны быть указаны, даже если вы не используете оба типа квоты (блок против инод).

Обратите внимание, что значения _ должны быть указаны в секундах.

Снова запустите + repquota +, чтобы убедиться, что изменения вступили в силу:

sudo repquota -s /
OutputBlock grace time: ; Inode grace time:
. . .

Изменения должны быть немедленно отражены в выходных данных + repquota +.

Заключение

В этом руководстве мы установили инструменты командной строки + quota +, настроили блочную квоту для одного пользователя и сгенерировали отчет об использовании квот в нашей файловой системе.

Приложение: Распространенные сообщения об ошибках, связанных с квотами

Ниже приведены некоторые распространенные ошибки, которые вы можете видеть при настройке и управлении квотами файловой системы.

quotaon Outputquotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

Это ошибка, которую вы можете увидеть, если попытаетесь включить квоты (используя + quotaon +) перед выполнением начальной команды + quotacheck +. Команда + quotacheck + создает файлы + aquota + или + quota +, необходимые для включения системы квот. См. Ссылку: # step-3-% E2% 80% 93-enable-quotas [Шаг 3] для получения дополнительной информации.

quota Outputquota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory

Это ошибка, которую вы увидите, если вы запустите + quota + и ваш текущий пользователь не будет иметь права на чтение файлов квот для вашей файловой системы. Вы (или ваш системный администратор) должны будете соответствующим образом настроить права доступа к файлу или использовать + sudo + при запуске команд, которым требуется доступ к файлу квоты.

Чтобы узнать больше о разрешениях Linux, включая владение пользователями и группами, прочитайте An Введение в разрешения Linux]

Related