Нам нужно установить квоту по умолчанию для всех пользователей. Из того, что я вижу man 8 xfs_quota
, вы можете устанавливать квоты только для отдельных пользователей. Мне нужно установить квоту, которая применяется ко всем, без необходимости перечислять каждого пользователя.
Не уверен, как вы это пропустили, если вы читали справочную страницу.
limit [ -gpu ] bsoft=N | bhard=N | isoft=N | ihard=N | rtbsoft=N | rtb‐
hard=N -d | id | name
Set quota block limits (bhard/bsoft), inode count limits
(ihard/isoft) and/or realtime block limits (rtbhard/rtbsoft).
The -d option (defaults) can be used to set the default value
that will be used, otherwise a specific user/group/project name
or numeric identifier must be specified.
Итак, вы установите квоту по умолчанию, например:
# xfs_quota -x -c 'limit bsoft=1g bhard=1g -d' /home
Я хочу добавить сюда кое-что, что, я надеюсь, поможет другим людям с той же проблемой.
У меня есть единственная файловая система XFS, смонтированная с uquota. У меня есть несколько пользователей, использующих файловую систему, которых я хочу ограничить, и один единственный суперпользователь (назовем ее «Лиза»), которого я НЕ хочу ограничивать. У меня также есть база данных postgres (принадлежит пользователю "postgres"), которую я не хочу ограничивать.
Я обнаружил, что на странице руководства xfs_quota несколько не хватает описания того, как на самом деле работают ограничения по умолчанию, и я не мог найти никаких ресурсов где-либо еще, так что это то, что я обнаружил.
Установите пределы по умолчанию ...
xfs_quota -x -c 'limits bsoft=45G bhard=50g -d' /myxfs
Потрясающе. Все квоты установлены, и любой новый пользователь, который входит в систему, автоматически получит лимит по умолчанию. Теперь я исключу своего суперпользователя и postgres из значения по умолчанию, явно установив для них значение 0.
xfs_quota -x -c 'limits bsoft=0 bhard=0 lisa' /myxfs
xfs_quota -x -c 'limits bsoft=0 bhard=0 postgres' /myxfs
Сейчас получу отчет ...
xfs_quota -x -c 'report -h' /myxfs
User quota on /myxfs (/dev/sdc1)
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 22.3G 45G 50G 00 [------]
postgres 59.1G 0 0 00 [------]
lisa 13.4T 0 0 00 [------]
Выглядит отлично! Правильно? Неправильно! Несмотря на этот отчет, и postgres, и lisa по-прежнему ограничены и все еще используют ограничения по умолчанию. Как только я попытаюсь написать что-нибудь от имени любого из пользователей и снова запустить отчет ...
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 22.3G 45G 50G 00 [------]
postgres 59.1G 45G 50G 00 [------]
lisa 13.4T 45G 50G 00 [------]
настройки вернулись!
Чтобы обойти это, вы должны установить ограничения для пользователей, которых вы не хотите ограничить ненулевым значением. Поэтому установите что-нибудь очень высокое. Я установил свой на PB.
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 22.3G 45G 50G 00 [------]
postgres 59.1G 1000T 1000T 00 [------]
lisa 13.4T 1000T 1000T 00 [------]
Это предотвращает ограничение моего суперпользователя и базы данных postgres, сохраняя при этом лимит 50G по умолчанию для всех остальных пользователей.
Несколько замечаний:
Надеюсь, это кому-то поможет.
Изменить: вы можете отобразить больше UID, указав верхний предел. Например.
xfs_quota -x -c 'report -U 50000 -h' /storage/1
User quota on /myxfs (/dev/sdc1)
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
#0 22.3G 50G 75G 00 [------]
#26 59.1G 1000T 1000T 00 [------]
#1000 13.4T 1000T 1000T 00 [------]
#2615 55.9G 0 0 00 [------]
#2705 207.4M 0 0 00 [------]
#2707 168.1G 50G 75G 00 [-none-]
#2718 178.5M 50G 75G 00 [------]
#16661 245.9M 0 0 00 [------]
#18806 0 50G 75G 00 [------]
#24403 2.5M 0 0 00 [------]
#24583 100K 50G 75G 00 [------]
#26153 4.1G 50G 75G 00 [------]
#26618 40K 0 0 00 [------]
#26765 320K 50G 75G 00 [------]
#27175 15.1G 50G 75G 00 [------]
#27189 2.5M 50G 75G 00 [------]
Потрясающие!