Порядок действий для создания ограничений Настройка разделов Включение режима квотирования Просмотр информации об ограничениях Настройка ограничений Изменение интервала времени для «мягкого» ограничения Проверка работы режима квотирования Прототипы ограничений Добавление режима квотирования в автозагрузку Отключение режима квотирования
Окружение
Система diskquota обеспечивает механизм для управления используемым дисковым пространством. Ограничения могут быть установлены как для каждого пользователя в отдельности, так и для любой или всех файловых систем.
diskquota
Система ограничений (quota) будет предупреждать пользователей, когда они превысят предоставленный им лимит, но будет позволять использовать некоторое дополнительное пространство для текущей работы. Система ограничений (quota system) является частью ядра LINUX.
quota
quota system
Вы можете подробнее ознакомиться с управлением дисковыми квотами, просмотрев наши обучающие видео:
на RuTube — Управление дисковыми квотами;
в Яндекс.Дзен — Управление дисковыми квотами;
в VK Видео — Управление дисковыми квотами.
На наших каналах вы также сможете найти много другой полезной информации.
Команда quota позволяет просмотреть любые ограничения дискового пространства для каждого пользователя.
Доступны два типа ограничений, которые могут быть наложены на пользователя (или группу). Обычно, если используется одно из ограничений, то второе также будет использоваться. Ограничение может быть установлено как на все дисковое пространство (blocks) пользователя, которое используется этим пользователем, так и на число файлов (inodes), которыми он может владеть.
blocks
inodes
Quota предоставляет информацию на ограничения, которые были установлены системным администратором на каждую из областей, использующуюся в данный момент. Ограничения по inodes и blocks накладываются как на UID (идентификатор пользователя), так и на GID (идентификатор группы).
Quota
Если пользователь входит в группу, которая превысила предоставленное ей ограничение, тогда он не сможет использовать дисковое пространство (по GID), даже если он все еще может использовать это дисковое пространство как пользователь (по UID).
Для определения каждого типа ограничения используется 4 основных параметра:
используемые в данный момент ресурсы;
"мягкое" ограничение (softlimit);
softlimit
"жесткое" ограничение (hardlimit);
hardlimit
промежуток времени, по истечении которого "мягкое" ограничение интерпретируется как "жесткое".
"Мягкое" ограничение определяет максимальное количество блоков размером 1 КБ, на которое пользователь может превысить установленное ограничение. После превышения пользователем предоставленного ему "мягкого" ограничения (softlimit) устанавливается время, по истечении которого "мягкое" ограничение становится "жестким" (hardlimit). По умолчанию срок этого периода истекает через 7 дней. В этот период времени пользователь может удалить ненужные ему файлы, после чего вновь может использовать "мягкое" ограничение до момента истечения указанного промежутка времени. По истечении указанного промежутка времени "мягкое" ограничение становится "жестким", и пользователю больше не предоставляются ресурсы для создания новых файлов.
"Жесткое" ограничение не может быть превышено ни при каких обстоятельствах. Если пользователь пытается превысить такое ограничение, то он получает сообщение о невозможности сделать это. При этом ядро возвращает код ошибки EDQUOT.
EDQUOT
Для того чтобы установить систему ограничений дискового пространства (quota) в РЕД ОС, системному администратору необходимо выполнить следующий алгоритм действий:
1. Выбрать файловую систему, на которую будут накладываться ограничения.
2. Разрешить (включить) систему ограничений.
3. Провести проверку файловой системы на ограничения дискового пространства.
4. Провести проверку ограничений дискового пространства как для пользователей, так и для групп.
5. Установить ограничения для пользователей и групп.
В первую очередь требуется определить, на какую файловую систему необходимо наложить ограничения. Чаще всего ограничения накладываются на файловую систему, в которой располагаются домашние каталоги пользователей, или на файловую систему, смонтированную в каталог /usr и доступную пользователям для записи.
Для того чтобы разрешить ограничения на дисковое пространство на необходимой файловой системе, отредактируйте файл /etc/fstab, добавив к указанной системе опции для ограничения дискового пространства (как для пользователей, так и для групп).
Для этого перейдите в сеанс пользователя root:
su -
Здесь и далее команды будут выполняться с правами суперпользователя root, если не указано иное.
Откройте на редактирование файл /etc/fstab:
nano /etc/fstab
Предварительно рекомендуется создать резервную копию:
cp /etc/fstab /etc/fstab_backup
Для выбранной файловой системы установите поддержку квотирования. Отредактированный файл /etc/fstab может иметь вид:
/dev/mapper/ro_redos-root / ext4 defaults,usrquota,grpquota 0 0 UUID=fe48bb2c-c4b6-4b90-9dc6-9c29abfe0cc2 /boot ext4 defaults 1 2 /dev/mapper/ro_redos-swap none swap defaults 0 0
где:
usrquota – включает ограничение дискового пространства для пользователей (userquota) на данном устройстве;
usrquota
grpquota – включает ограничение дискового пространства для групп (groupquota) на данном устройстве.
grpquota
Для применения внесенных изменений перезагрузите систему:
reboot
Если опции usrquota и grpquota используются без указания конкретных значений (=), файлы ограничений (quotafile) будут храниться в корневом каталоге каждой файловой системы, в которой используются ограничения на дисковое пространство.
=
quotafile
Файл, называемый aquota.user, будет использоваться для ограничений пользователей; файл aquota.group будет использоваться для ограничений групп.
Администратор системы также может самостоятельно определить файлы ограничений. Например, строка usrquota=/usr/adm/quotasrc.user установит файл ограничений для пользователей с именем quotarc.user в каталоге /usr/adm. Важно отслеживать допустимую длину строки в файле /etc/fstab (подробную информацию см. в справочной странице man getmntent).
usrquota=/usr/adm/quotasrc.user
man getmntent
В некоторых случаях (чаще всего после некорректной перезагрузки системы и/или во время первого включения ограничений на дисковое пространство) записи, содержащиеся в файле ограничений, должны быть проверены на целостность фактического числа блоков и файлов, выделенных для пользователя. Для выполнения этой операции может быть использована команда quotacheck. Данную команду необязательно выполнять для неподмонтированных файловых систем или на файловых системах, на которых отключено ограничение на дисковое пространство.
quotacheck
Для проверки файловой системы на число блоков, используемых пользователем, а также для установки и изменения всех файлов ограничений (quotafiles), выполните команду:
quotacheck -favugm
Указанную команду допускается использовать в сценариях для автоматического запуска после перезагрузки системы. Данная программа не поддерживает одновременную параллельную проверку нескольких файловых систем.
Для активации ограничений на дисковое пространство в системе выполните команду:
quotaon -avug
Обратите внимание, что установленные таким способом ограничения на дисковое пространство перестают действовать после перезагрузки системы. Для настройки автоматического запуска режима квотирования необходимо выполнить дополнительную настройку. Подробную информацию см. в п. «Добавление режима квотирования в автозагрузку».
Запуск команды quota для проверки используемых ограничений любого пользователя и команды repquota для проверки используемого пространства и ограничений для всех пользователей на данной файловой системе может производиться только с правами суперпользователя root.
repquota
Для отображения информации об ограничениях, наложенных на всех пользователей, необходимо выполнить команду:
repquota -ua
Вывод команды будет представлен в виде таблицы с приблизительно следующим содержанием:
*** Report for user quotas on device /dev/mapper/ro_redos-root Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 9565596 0 0 279939 0 0 sssd -- 1300 0 0 12 0 0 gdm -- 1080 0 0 122 0 0 tcpdump -- 32 0 0 8 0 0 user -- 1366156 0 0 1765 0 0
Для отображения информации об ограничениях, наложенных на группы, необходимо выполнить команду:
repquota -ga
*** Report for group quotas on device /dev/mapper/ro_redos-root Block grace time: 7days; Inode grace time: 7days Block limits File limits Group used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 9408772 0 0 279887 0 0 daemon -- 4 0 0 1 0 0 sssd -- 1512 0 0 14 0 0 gdm -- 1084 0 0 123 0 0 tcpdump -- 32 0 0 8 0 0 user -- 1366192 0 0 1766 0 0
Для редактирования/наложения ограничений необходимо использовать утилиту edquota.
edquota
Для редактирования ограничений дискового пространства для конкретного пользователя необходимо использовать команду edquota с опцией -u. Для редактирования ограничений дискового пространства для группы необходимо использовать команду edquota с опцией -g.
-u
-g
Например:
edquota -u user
где user – имя пользователя, для которого просматриваются/редактируются ограничения.
user
Содержимое конфигурации будет иметь вид:
Disk quotas for user user (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/mapper/ro_redos-root 1366192 0 0 1767 0 0
Редактировать необходимо только значение, указанное в столбцах hard или soft. По умолчанию размер ограничения указывается в килобайтах (КБ).
hard
soft
Для каждой файловой системы, имеющей ограничение на дисковое пространство, отображается две графы – для blocks и для inodes.
Столбец blocks указывает, какое число блоков может быть выделено для данного пользователя (или группы).
Столбец inodes указывает, какое число inode (файлов, устройств, поименованных каналов и т.д.) может быть выделено для данного пользователя (или группы).
При редактировании конфигураций откроется текстовый редактор, используемый в системе по умолчанию (vim). Для изменения текстового редактора необходимо задать переменную окружения EDITOR в файле ~/.bashrc. Например, для использования по умолчанию текстового редактора nano необходимо выполнить команды:
EDITOR
echo "export EDITOR=nano" >> ~/.bashrc source ~/.bashrc
Как было указано выше столбец soft означает "мягкое" ограничение (softlimit), при котором пользователь или группа имеют некоторый интервал времени (по умолчанию равный 7 дням), в течение которого они могут превысить указанное значение. Данный интервал времени можно изменить с помощью команды:
7 дням
edquota -t
указав собственные значения для столбцов Block grace period и Inode grace period:
Block grace period
Inode grace period
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/mapper/ro_redos-root 7days 7days
В случае если пользователь (или группа) не удаляет ненужные файлы в течение указанного периода времени, то ограничение переходит в разряд "жестких".
Столбец hard означает "жесткое" ограничение. "Жесткое" ограничение является максимальным значением, которое может использовать пользователь (или группа) на данной файловой системе. Пользователь или группа не может иметь больше файлов, чем указано в hard.
Для проверки работы установленных для пользователя (или группы) ограничений необходимо с правами этого пользователя (или пользователя, входящего в указанную группу) выполнить команду создания файла, размер которого превышает установленную квоту:
dd if=/dev/zero of=/home/user/test bs=102400 count=10
Если установленные ограничения работают, выполнение команды должно завершиться ошибкой вида:
dm-0: write failed, user block limit reached. dd: ошибка записи '/home/user/test': Disk quota exceeded 1+0 записей получено 0+0 записей отправлено 0 байт скопировано, 0,000773754 s, 0,0 kB/s
В некоторых случаях может потребоваться указать для нескольких пользователей (или групп) одинаковые ограничения на дисковое пространство в выбранной файловой системе. Для этого можно создать прототип одного из пользователей (или групп), который будет затем использоваться для применения ограничений ко всем остальным.
Для создания прототипа необходимо выполнить команду вида:
edquota -u <имя_пользователя/группы_который_станет_прототипом>
и определить ограничения на дисковое пространство.
Затем с помощью команды вида:
edquota -p <имя_прототипа> <целевой_объект>
отредактировать ограничения для всех остальных пользователей.
Например, для того чтобы в качестве ограничений дискового пространства (quota) для пользователя test использовались ограничения, наложенные на пользователя user, необходимо выполнить команду:
edquota -p user test
Для проверки ограничений дискового пространства для пользователя (или группы) используется утилита quota, например:
quota -u test
Подробную информацию по использованию утилиты см. в справочной странице:
quota --help
После перезагрузки системы ограничения на использование дискового пространства отключаются. Для того чтобы ограничения действовали постоянно, необходимо создать новый сервисный файл в каталоге системных служб /etc/systemd/system/.
Команды, приведенные в текущем пункте, необходимо выполнять с правами администратора системы или суперпользователя root.
Предварительно необходимо добавить поддержку квотирования файловой системы при загрузке системы. Для этого откройте файл /etc/default/grub:
nano /etc/default/grub
Найдите строку GRUB_CMDLINE_LINUX=, в которой будут указаны параметры, передаваемые ядру при загрузке, и добавьте в конец строки параметры для квот:
GRUB_CMDLINE_LINUX=
GRUB_CMDLINE_LINUX="... usrquota,grpquota"
Сохраните внесенные изменения и обновите конфигурацию GRUB:
grub2-mkconfig -o /boot/grub2/grub.cfg
После настройки конфигурации GRUB необходимо создать системную службу для активации квотирования. В приведенном ниже примере будет создан файл с именем my-quotas.service (имя службы можно изменить):
nano /etc/systemd/system/my-quotas.service
В файл службы добавьте следующее содержимое:
[Unit] Description=Autostart Service of Quotas After=local-fs.target [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/sbin/restorecon /<путь_к_файлам>/aquota.{user,group} ExecStart=/usr/sbin/quotaon -a [Install] WantedBy=multi-user.target
Сохраните изменения и закройте редактор.
Для корректного запуска службы my-quotas.service отключите режим квотирования (если он включен в системе), выполнив команду:
quotaoff -a
Перезапустите конфигурацию системных служб:
systemctl daemon-reload
Далее запустите и добавьте в автозагрузку созданную службу my-quotas.service:
systemctl enable --now my-quotas.service
Проверьте статус службы:
systemctl status my-quotas.service
В статусе должно отображаться active (exited).
Для проверки работы необходимо перезапустить систему и выполнить проверку работы установленных ограничений согласно п. «Проверка работы ограничений».
Для отключения примененных ограничений на использование дискового пространства и/или файлов для пользователя (или группы) необходимо выполнить команду:
Проверку отключенного режима квотирования можно выполнить согласно п. «Проверка работы ограничений».
Дата последнего изменения: 21.05.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.