Назад | Перейти на главную страницу

Поддерживает ли XFS квоты по умолчанию?

Нам нужно установить квоту по умолчанию для всех пользователей. Из того, что я вижу 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 по умолчанию для всех остальных пользователей.

Несколько замечаний:

  • Пользователь root (или UID 0) никогда не ограничивается xfs_quota (согласно странице руководства)
  • Если вам интересно, почему в моем отчете не отображаются другие пользователи, это потому, что я экспортирую их через NFS, и хотя ограничения работают, и я вижу их на клиенте, по умолчанию на сервере об этом не сообщается.

Надеюсь, это кому-то поможет.

Изменить: вы можете отобразить больше 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 [------]

Потрясающие!