XFS 是否支持默认配额?

XFS 是否支持默认配额?

我们需要为所有用户设置一个默认配额。据我从 看到man 8 xfs_quota,您只能为单个用户设置配额。我需要设置一个适用于所有人的配额,而不必逐一列举每个用户。

答案1

如果您确实阅读了手册页,我不确定您怎么会错过这一点。

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

答案2

我在这里补充一些内容,希望能帮助其他遇到同样问题的人。

我有一个使用 uquota 安装的 XFS 文件系统。有多个用户使用该文件系统,我想限制他们的使用量,还有一个超级用户(我们称她为“lisa”),我不想限制她的使用量。我这里还有一个 postgres 数据库(由用户“postgres”拥有),我不想限制它的使用量。

我发现 xfs_quota 手册页在默认限制如何实际工作方面缺少描述,并且在其他任何地方都找不到任何资源,所以这就是我发现的。

设置默认限制...

xfs_quota -x -c 'limits bsoft=45G bhard=50g -d' /myxfs

太棒了。所有配额都已设置,任何新登录的用户都将自动获得默认限制。现在我将通过将其限制明确设置为 0 来将我的超级用户和 postgres 排除在默认限制之外。

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 [------]

惊人的!

相关内容