Поиск по сайту:

Как установить квоты файловой системы (диска) в Ubuntu


Квота файловой системы — это стандартная встроенная функция ядра Linux. Квоты определяют объем места, который должен иметь файл для поддержки действий пользователя. Дисковые квоты также ограничивают количество файлов, которые пользователь может создать в системе.

Файловые системы, поддерживающие систему квот, включают xfs, ext2, ext4 и ext3, и это лишь некоторые из них. Назначение квот специфично для файловой системы и для каждого пользователя. В этой статье содержится все, что вам нужно знать о работе с файловой системой квот в многопользовательской среде Ubuntu.

Предполагается, что вы используете систему Ubuntu с пользователем (tecmint) с правами sudo. Идеи, изложенные здесь, могут работать в любом дистрибутиве Linux, если вы используете правильную технику реализации.

Шаг 1. Установка квоты в Ubuntu

Чтобы квоты были готовы и пригодны к использованию, установите инструмент командной строки quota с помощью команды apt, но перед этим необходимо обновить пакеты системного программного обеспечения.

sudo apt update

Теперь используйте следующую команду, чтобы установить пакет quota в Ubuntu.

sudo apt install quota

Нажмите Y, а затем ENTER, чтобы начать процесс установки.

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

quota --version

Шаг 2. Установка модуля Quota Kernel

Для тех, кто использует облачную виртуальную систему, в установке Ubuntu по умолчанию могут отсутствовать модули ядра, поддерживающие использование квоты. Вы должны подтвердить использование инструмента поиска и убедиться, что два модуля, quota_v1 и quota _v2, находятся внутри каталога /lib/modules.

find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'

Это должно быть результатом выполнения приведенной выше команды.

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

sudo apt install linux-image-extra-virtual

Вы получите нужные модули, необходимые для реализации квот.

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

Чтобы квоты были активны в конкретной системе, ее необходимо смонтировать с соответствующими параметрами квот. Это можно сделать, обновив запись файловой системы, найденную в файле /etc/fstab.

sudo nano /etc/fstab

Вы должны быть готовы отредактировать файл соответствующим образом. Разница между файлом fstab и файлом рабочего стола заключается в том, как / или корневая файловая система представляет все дисковое пространство. Замените строку (/), указывающую на корневую систему, используя строки ниже.

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0

Строки изменятся, чтобы сделать доступными userquota и grpquota. Вы можете оставить тот, который не является частью окончательной конфигурации. Если в fstab есть какие-то параметры, добавьте новые параметры в конце строки. При добавлении разделяйте новые элементы запятой, но без пробелов между ними.

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

sudo mount -o remount /

ПРИМЕЧАНИЕ: убедитесь, что между параметрами в /etc/fstab нет пробелов, чтобы избежать подобных ошибок.

mount: /etc/fstab: parse error

Проверка использования новых параметров при монтировании файловой системы в файле /proc/mounts выполняется с помощью grep. Команда показывает запись корневой файловой системы в файле.

sudo cat /proc/mounts | grep ' / '

В выводе вы можете увидеть два варианта, которые мы настроили. Пришло время включить систему квот.

Шаг 4. Включение дисковых квот в Ubuntu

Сначала вам необходимо запустить команду quotacheck.

sudo quotacheck -ugm /

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

Вот определение параметров:

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

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

ls /
Пример вывода
aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

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

Теперь мы готовы включить квоту в корневой файловой системе (/) с помощью следующей команды.

sudo quotaon -v /

Шаг 5. Настройте квоты для одного пользователя

Мы можем использовать команды edquota и setquota, чтобы установить их для пользователей или групп.

Использование edquota

Команды edquota редактируют квоты. Например, мы можем редактировать квоту, принадлежащую пользователю tecmint, используя:

sudo edquota -u tecmint

Использование опции -u указывает, что квота принадлежит пользователю. Используйте опцию -g, если вам нужно отредактировать квоту, принадлежащую группе. Команда откроет файл в текстовом редакторе по вашему выбору.

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

ПРИМЕЧАНИЕ. Использование блоков не показывает, как оно может меняться в зависимости от различных факторов, например от сообщения о них инструмента командной строки. В рамках контекстных квот в Ubuntu мы можем предположить, что один блок равен одному килобайту дискового пространства.

Используя приведенную выше командную строку, пользователь будет использовать 2032 блока, что соответствует 2032 КБ пространства в /dev/sda1. Значение 0 отключает как мягкие, так и жесткие ограничения.

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

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

Мы можем обновить квоту блоков tecmint, установив мягкий предел 100 МБ и 110 МБ для жесткого ограничения.

После редактирования закройте файл и проверьте настройки ограничения квоты нового пользователя с помощью команды quota.

sudo quota -vs tecmint

ПРИМЕЧАНИЕ. Чтобы предоставить пользователям возможность анализировать свои квоты без вызова команды sudo, им необходимо предоставить доступ для чтения файлов квот во время этап создания на четвертом этапе. Один из простых способов сделать это — создать группу пользователей и предоставить группе доступ, чтобы вы могли добавлять в нее пользователей.

Использование setquota

setquota обновляет информацию о квоте с помощью одной команды без какой-либо интерактивной настройки. Для команды требуется имя пользователя и настройка как мягких, так и жестких ограничений, которые будут использовать блок и индексный дескриптор. Вам также необходимо будет объявить файловую систему, которую будет использовать квота.

sudo setquota -u tecmint 200M 220M 0 0 /

Команда удваивает ограничения квоты на основе блоков до 200 мегабайт и 220 мегабайт. Два 0 0 указывают, что как жесткие, так и мягкие ограничения не установлены. Это требование, даже если нет необходимости устанавливать квоты на основе индексных дескрипторов.

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

sudo quota -vs tecmint

Шаг 6. Создание отчетов о квотах

При создании отчета о квотах должно быть указано использование всеми пользователями. Используется команда repquota.

sudo repquota -s /

Вывод выше представляет собой отчет о корневой файловой системе /. -s указывает repquota выдавать результаты в удобочитаемом формате.

Время отсрочки блокировки по умолчанию составляет 7 дней. Столбец отсрочки предупреждает пользователя о количестве дней до отказа в доступе к ресурсному диску.

Шаг 7. Установите льготные периоды настройки

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

sudo setquota -t 864000 864000 /

Команда указывает блоку и индексному дескриптору установить льготный период 864000 секунд, что эквивалентно 10 дням. Настройка повлияет на всех пользователей, поэтому значения необходимо задавать даже тогда, когда блоки и индексные дескрипторы использоваться не будут. Значение времени должно быть в секундах.

Подтвердите изменения и посмотрите, вступили ли они в силу, с помощью команды:

sudo repquota -s /

Распространенные сообщения об ошибках

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

Вышеуказанная ошибка встречается часто, если вы пытаетесь включить квоты с помощью команды qoutaon перед попыткой проверить состояние квоты с помощью команды quotacheck.

quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.

Эта ошибка сообщает администратору, что ядро не поддерживает ее или что на вашем компьютере установлена неправильная версия (у нас есть quota_v1 и quota_v2). Для Ubuntu такие ошибки типичны для облачного виртуального сервера.

Исправьте ошибку, установив пакет Linux-image-extra-virtual с помощью команды apt.

quota: 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

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

Заключение

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

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