GPFS配额系统可帮助您控制文件系统中文件和数据块的分配。
GPFS配额可以定义:
- 单个用户
- 用户所属的组
- 单个文件集
在控制单个用户,用户组或单个文件集所需的空间量时,系统管理员将启用配额。 默认情况下,在整个文件系统中强制实施用户和组配额限制。 或者,配额执行的范围可以限制为单个文件集边界。
配额相关任务包括:
- “启用和禁用GPFS配额管理”
- “默认配额”
- “显式确定和修改配额”
- “检查配额”
- “列出配额”
- “激活配额限制检查”
- “停用配额限制检查”
- “修改配额限制检查的范围”
- “创建文件系统配额报告”
- “恢复配额文件”
有关GPFS文件集配额的信息,请参阅“文件集” 。
注释
Windows节点可能包含在使用GPFS配额的群集中。 但是,Windows节点不支持配额命令。
启用和禁用GPFS配额管理
您可以按照本主题中的步骤在新的或现有的GPFS文件系统上启用GPFS配额管理,确定配额值并禁用配额管理。
要在新的GPFS文件系统上启用GPFS配额管理,请执行以下操作:
- 在mmcrfs命令中指定**-Q yes选项。 无论何时挂载文件系统,此选项都会强制自动激活配额。 如果您希望配额限制强制执行的范围基于单个文件集(而不是整个文件系统),还可以在mmcrfs命令上指定--perfileset-quota**选项。
- 挂载文件系统。
- 发出mmedquota或mmsetquota命令以显式设置用户,组或文件集的配额值。 请参阅“明确确定和更改配额” 。
要在现有的GPFS文件系统上启用GPFS配额管理,请执行以下操作:
-
运行mmchfs -Q yes命令。每当挂载文件系统时, 此命令都会强制自动激活配额, 或在新配额设置之后激活所有后续挂载 (如果未挂载文件系统)。 如果您希望配额限制强制的范围基于单个文件集(而不是整个文件系统),还可以在mmcrfs命令上指定–perfileset-quota选项。
如果联机mmchfs -Q yes / no命令因任何原因失败或中断,则必须重新运行mmcheckquota或mmchfs -Q yes / no,以便将使集群中所有节点的配额配置处于一致状态。
随后的所有挂载都将遵循新的配额设置。
注释
在GPFS 4.1中无法在线启用perfileset-quota。
-
使用mmcheckquota命令编译inode和磁盘块统计信息。 请参阅“检查配额” 。获得的值可用于在发出mmedquota或mmsetquota命令时确定实际的配额值。
-
发出mmedquota或mmsetquota命令以显式设置用户,组或文件集的配额值。 请参阅“明确确定和修改配额” 。
一旦启用GPFS配额管理,您可以通过以下方式确定配额值:
- 为所有新用户,用户组或文件集设置默认配额。
- 显式确定或修改用户,用户组或文件集的配额。
- 使用**gpfs_quotactl()**子程序。
要禁用配额管理,请运行mmchfs -Q no命令。 随后的所有挂载都将遵守新的配额设置。
有关完整的使用信息,请参阅“IBM Spectrum Scale:命令和编程参考”中的mmcheckquota命令,mmchfs命令,mmcrfs命令和mmedquota命令。 有关配额的其他信息,请参阅“IBM Spectrum Scale:概念,规划和安装指南”。
默认配额
可以为指定文件系统的新用户,组和文件集设置默认配额限制。 默认配额限制还可以针对指定文件集中的新用户和组在更细粒度级别应用。
当在文件集级别管理默认配额时,这些配额的优先级高于在文件系统级别设置的配额。 如果一个文件集的文件集级缺省值的状态为Initial,则它们将从全局文件集级缺省值继承缺省限制。 新添加的文件集级缺省配额的状态可以是以下之一:
Initial
当文件集被创建时,它将处于这种状态。 文件集下的所有用户和组配额帐户都不会遵循文件集默认值。
Quota on
在稍后创建的文件集下的所有用户和组配额帐户都将遵循文件集配额限制。
Quota off
所有稍后创建的文件集下的用户和组配额帐户都不会遵循文件集配额限制。 如果用户和组有效,用户和组将遵循全局文件集级别的默认设置。 如果这些默认值无效,则状态将为初始状态。
协议的特定默认配额建议:
- 由于协议可能有很大不同的文件集要求,因此不建议在文件集级别使用默认配额。 相反,应根据具体情况为任何和所有协议使用的每个文件集设置明确的配额和限制。
- NFS:准备默认的配额stanza文件模板,并在创建NFS导出时,使用每个文件集默认配额将默认用户或组配额应用于导出路径(假设导出为独立文件集)。
- SMB:准备默认的配额stanza文件模板,并在SMB共享创建时,使用每个文件集默认配额将默认用户或组配额应用于共享路径(假设导出是独立文件集)。
- 对象:IBM建议使用单个独立文件集objectfs作为对象容器。 有关详细信息,请参阅IBM红皮书:IBM Spectrum Scale对象的部署指南。 关于配额,以下是Red paper™的相关部分:
一GPFS配额:指定为特定用户,用户组或文件集的的磁盘空间量和inode数量的上限。 使用OpenStack Swift,不使用GPFS用户配额;相反,系统依靠OpenStack Swift配额提供类似的服务。 但是,仍然可以定义GPFS文件集配额(例如,对于inode,可以限制文件集使用的资源)。 有关详细信息,请参阅第1.3章IBM红皮书的主要概念和术语。
一Swift配额:允许指定帐户(及其后续所有容器)或单个容器可以占用的磁盘空间量或对象数量。Swift配额与GPFS配额之间的交互将在 第6章Swift特性概述和第1.3章IBM Redpaper的关键概念和术语。
一配额:Swift配额允许通过使用Swift配额将特定数量的磁盘容量分配给容器或帐户。 它们还允许限制容器或帐户指定的最大对象数量。 有关详细信息,请参阅第6章IBM红皮书的Swift特性概述。
注释
尽管GPFS配额没有明确地与Swift配额交互,但使用GPFS配额来限制对象存储使用的空间量或inode数量仍然可能很有用。 为此,通过指定对象存储可以使用的最大大小或最大inode使用量,在顶层独立文件集上定义GPFS配额。 有关详细信息,请参阅第6章IBM红皮书的Swift特性概述。
要启用默认配额值:
-
确保文件系统配置正确以使用配额:
a. -Q yes选项必须对文件系统有效 。
b. 要在文件集级别设置默认配额,--perfileset-quota选项也必须有效。
注释
如果**–perfileset-quota有效,则根**文件集下的所有用户和组将不会受默认配额影响,除非它们被明确设置。
在使用mmcrfs命令创建文件系统或使用mmchfs命令更改文件系统属性时指定**-Q yes和–perfileset-quota选项。 使用mmlsfs**命令显示这些配额选项的当前设置。
-
使用mmdefquotaon命令启用默认配额 。
-
通过使用默认配额stanza文件发出mmdefedquota命令,为新用户,组和文件集指定默认配额值。 使用配额stanza文件调用mmsetquota命令可以执行以下操作:
-
在文件系统上设置默认用户配额。
-
在文件系统上设置默认组配额。
-
在文件集上设置默认的perfileset用户配额(如果**–perfileset-quota**有效)。
stanza文件*/tmp/defaultQuotaExample*可能如下所示:
%quota:
device=fs1
command=setDefaultQuota
type=USR
blockQuota=25G
blockLimit=30G
filesQuota=10K
filesLimit=11K
%quota:
device=fs1
command=setDefaultQuota
type=GRP
blockQuota=75G
blockLimit=90G
filesQuota=30K
filesLimit=33K
%quota:
device=fs1
command=setDefaultQuota
type=USR
fileset=fset0
blockQuota=25G
blockLimit=30G
filesQuota=10K
filesLimit=11K
然后发出命令:
# mmsetquota –F /tmp/defaultQuotaExample
-
-
要激活配额检查,请使用mmquotaon命令。
-
要列出配额,请使用mmlsquota命令:
通过发出mmdefquotaoff命令可以禁用默认配额。
有关文件集建议,请参阅“文件集和配额”。
有关完整的使用信息,请参阅“IBM Spectrum Scale:命令和编程参考”中的mmchfs命令,mmcffs命令,mmdefedquota命令,mmdefquotaoff命令,mmdefquotaon命令,mmedquota命令,mmlsfs命令和mmsetquota命令。
配额对不同协议的影响
配额对于不同的协议可能意味着不同的事情。 本节介绍配额如何影响SMB和NFS协议。
配额在文件系统中存储和执行。 有关如何启用和使用配额的详细信息,请参见“管理GPFS配额”。
-
SMB协议和配额
对于SMB客户端,配额可以限制向客户报告的已用空间和可用空间:
一如果设置SMB选项gpfs:dfreequota,则在可用空间查询期间查询当前用户的用户配额和用户主要组的组配额:
-如果达到块限制, 则将可用空间报告为 0, 并且使用当前使用的数据报告共享的大小。
-如果软块配额超出块宽限时间,则将可用空间报告为0,并且使用当前使用的数据报告共享的大 小。
-如果没有超出限制,则根据最低配额限制将可用空间报告为可用空间。
-如果没有配额,则报告从底层文件系统查询的大小和可用空间。
-在每个文件集用户和组配额的情况下,只能从导出的根文件夹查询配额。 如果共享内的子目录位于不同的文件集中,则报告可用空间时不会考虑用户和组配额。
注释
要在报告的可用空间中包含文件集配额,请使用–filesetdf标志(在mmcrfs或mmchfs中)配置基础文件系统。 无法从SMB客户端系统查询或更改单个配额。
-
NFS协议和配额
无法从NFS客户端系统查询或更改单个配额。 用户和组配额不包含在向客户报告的可用空间中。 要将报告的空间中的文件集配额添加到客户端,请使用–filesetdf标志(在mmcrfs或mmchfs中)配置基础文件系统。
-
对象协议和配额
一有两个适用的配额级别:文件系统中的配额(请参阅“管理GPFS配额”一章)以及由Swift管理的配额。
一Swift配额可以用作帐户和容器配额。 配额值设置为帐户和容器元数据条目。 有关更多信息,请参阅OpenStack Swift文档。
一在使用文件系统配额时,必须要考虑Swift存储的所有对象都存储在相同的所有者和拥有组中(swift:swift)。
显式确定和修改配额
使用 mmedquota 命令可以显式确定或更改用户、用户组或文件集的文件系统配额限制。
在为文件系统设置配额限制时, 应考虑文件系统中的副本。请参阅 “列出配额”。
mmedquota命令使用默认编辑器打开一个会话,并提示您对块和inode进行软限制和硬限制。 例如,要为用户jesmith设置用户配额,请输入:
# mmedquota -u jesmith
系统在默认编辑器中显示的信息类似于:
*** Edit quota limits for USR jesmith:
NOTE: block limits will be rounded up to the next multiple block size.
block units may be: K, M, G, T or P, inode units may be: K, M or G.
gpfs0: blocks in use: 24576K, limits (soft = 0K, hard = 0K)
inodes in use: 0, limits (soft = 0K, hard = 0K)
注释
配额限制为零表示没有建立配额限制。
当前(使用中)块和inode使用仅用于显示; 它不能改变。 在建立新配额时,零显示为限制。 如果您要更改现有限制,请替换零或旧值,并根据用户需求和可用资源设置值。 当您关闭编辑器时,GPFS将检查这些值并应用它们。 如果指定了无效值,GPFS将生成错误消息。 如果发生这种情况,请重新输入mmedquota命令。 如果配额限制强制的范围是整个文件系统,则mmedquota会在不同的GPFS文件系统上列出同一用户的所有实例(例如,jesmith)。 如果配额执行是基于每个文件集的,mmedquota会在不同的GPFS文件系统上的不同文件集中列出同一用户的所有实例。
您可能会发现维护配额原型很有帮助,您可以通过名称将其应用于任何用户,组或文件集,而无需手动输入各个值。 这可以很容易地为所有设置相同的限制。 mmedquota命令包含用于命名限制所基于的原型用户,组或文件集的**-p**选项。 -p标志只能用于传播同一文件系统中的文件集的配额。
例如,要将名为blueteam的组中的所有用户的组配额设置为prototeam确定的原型值,请执行:
# mmedquota -g -p prototeam blueteam
在mmedquota命令中使用**-d**选项时,您还可以为指定用户,用户组或文件集重新建立默认配额。
注释
您可以使用mmsetquota命令替代mmedquota命令。
有关完整的使用信息,请参阅*“IBM Spectrum Scale:命令和编程参考*”中的mmedquota命令和mmsetquota命令。
检查配额
mmcheckquota命令计算文件系统的inode和空间使用量,并将收集的数据写入配额文件。
如果满足以下任一条件,则必须使用mmcheckquota命令:
-
配额信息由于节点故障而丢失。
节点故障可能导致用户无法打开文件或拒绝其配额应允许的磁盘空间。
-
疑问值接近配额限制。 要查看疑问值,请使用mmlsquota或mmrepquota命令。
由于疑问值和当前使用情况的总和不得超过硬限制,因此用户,组或文件集可用的实际块空间和文件数可能受到疑问值的限制。 如果疑问值接近配额的很大一部分,请使用mmcheckquota命令来计算丢失的空间和文件。
注释
如果在运行mmrepquota,mmlsquota或mmedquota后显示以下消息,则还建议运行mmcheckquota(在适当的时间段内):
Quota accounting information is inaccurate and quotacheck must be run.
在已挂载的文件系统上发出mmcheckquota命令时,如果配额服务器处理最新和向后信息的组合,则可能会报告疑问值为负值。 这是一个暂时的情况,可能会被忽略。
在启用配额的文件系统正常运行 (不在线运行 mmcheckquota) 期间, 使用数据反映了块和 inodes 的实际使用情况, 即如果删除文件, 您应该看到使用量减少。“怀疑值” 不反映用户已经使用了多少, 它只是配额服务器分配给其客户端的配额量。配额服务器不知道是否已使用分配的金额。唯一的情况是,“怀疑值” 对用户很重要的情况是,使用情况和"怀疑值" 的总和大于用户的配额硬限额。 在这种情况下, 不允许用户分配更多块或 inodes, 除非他将使用率降低。
例如,要检查文件系统fs1的配额并报告计算和记录的磁盘配额之间的差异,请输入:
# mmcheckquota -v fs1
显示的信息显示USR7的配额信息已更正。 由于系统故障,该信息在服务器上丢失,该服务器记录了0个子块和0个文件。 当前的使用数据统计为96个子块和3个文件。 这用于更新配额:
fs1: quota check found the following differences:
USR7: 96 subblocks counted (was 0); 3 inodes counted (was 0)
注释
如果小文件没有为它们分配额外的块,配额使用可能会显示比预期更少的空间使用情况。
有关完整的使用信息,请参阅“IBM Spectrum Scale :命令和编程参考”中的mmcheckquota命令。
列出配额
mmlsquota命令显示文件系统配额限制,默认配额限制和当前使用情况信息。
如果配额限制强制的范围是整个文件系统,则mmlsquota -u或mmlsquota -g将列出不同GPFS文件系统上相同用户或组的所有实例。 如果配额实施基于每个文件集,则mmlsquota -u或mmlsquota -g将列出不同文件系统上不同文件集上相同用户或组的所有实例。
报告时,GPFS配额管理会考虑复制,并确定块和文件使用量是否超出配额限制。 如果启用了数据或元数据复制,则mmlsquota命令和mmrepquota命令报告的值可能会超过由ls,du等命令报告的相应值。 差异取决于复制的级别和复制的文件系统对象的数量。 例如,如果数据块复制设置为2,并且所有文件都已复制,则mmlsquota和mmrepquota命令报告的块使用率将为ls命令报告的使用率的两倍。
当发出mmlsquota命令时,如果配额服务器处理最新和向后信息的组合,则可能会报告"怀疑值"为负值。 这是一个暂时的情况,可能会被忽略。
使用 mmlsquota 命令显示用户、用户组或文件集的配额信息。如果未指定**-g**、-u 或**-j**选项, 则默认情况下, 只显示发出该命令的用户的用户配额。
要显示默认配额信息,请对mmlsquota命令使用**-d**选项。 例如,要显示群集中所有文件系统的用户的默认配额信息,请发出以下命令:
# mmlsquota -d -u
系统显示类似于以下的信息:
Default Block Limits(KB) | Default File Limits
Filesystem type quota limit | quota limit Remarks
fs1 USR 5242880 6291456 | 0 0
Default Block Limits(KB) | Default File Limits
Filesystem type quota limit | quota limit Remarks
fs2 USR no default limits
在此示例中,文件系统fs1显示用户的默认块配额设置:软限制5GB,而硬限制6GB。 对于文件系统fs2,未建立用户的默认配额。
当mmlsquota -d与**-u**,-g或**-j选项结合使用时,将显示默认的文件系统配额。 如果mmlsquota -d未指定-u**,-g或**-j**选项,则会显示默认文件集级配额。
如果发出mmlsquota带**-e选项命令,则配额系统会在返回输出之前从所有节点收集更新的信息。 如果分配了疑问空间的节点在更新配额系统的实际使用情况之前失败, 则此空间可能会丢失。 如果疑问空间的数量接近配额的很大一部分,请运行mmcheckquota**命令来计算丢失的空间。
要收集并显示有关名为blueteam的组的更新配额信息,请指定**-g和-e**选项:
# mmlsquota -g blueteam -e
系统显示类似于以下的信息:
Block Limits | File Limits
Filesystem type KB quota limit in_doubt grace | files quota limit in_doubt grace
Disk quotas for group blueteam (gid 100):
fs1 GRP 45730 52000 99000 1335 none | 411 580 990 19 none
有关完整的使用信息,请参阅“IBM Spectrum Scale :命令和编程参考”中的mmlsquota命令。
激活配额限制检查
可以为用户,组,文件集或这三者的任意组合激活配额限制检查。
在创建文件系统时,通过在创建(mmcrfs -Q yes)或更改(mmchfs -Q yes)GPFS文件系统时指定配额选项(-Q yes),可以在挂载文件系统时自动激活配额。创建文件系统时, 默认情况下没有激活配额,因此如果您希望激活配额,则必须指定此选项。
如果发出mmquotaoff命令禁用配额限制检查,则可通过mmquotaon命令重新打开。 指定文件系统名称以及是否要激活用户,组或文件集配额。 如果您希望激活所有三个文件集配额(用户,组和文件集),则仅指定文件系统名称。 配额恢复后,发出mmcheckquota命令统计inode和空间使用情况。
例如,要激活文件系统fs1上的用户配额,请输入:
# mmquotaon -u fs1
要确认更改,请输入:
# mmlsfs fs1 -Q
系统显示的输出类似于:
flag value description
---- -------------- -----------------------------------------------------
-Q user Quotas enforced
有关完整的使用信息,请参阅“IBM Spectrum Scale :命令和编程参考”中的mmquotaon命令和mmlsfs命令 。
停用配额限制检查
在正常操作期间, 不需要停用配额强制。您可能必须停用配额强制执行的唯一原因是, 在节点失败期间, 由于配额信息丢失, 用户被拒绝其配额应允许的分配。
如果发生这种情况,请在重新激活配额以调整分配数据后使用mmcheckquota命令。当禁用配额执行时,磁盘空间和文件分配将不考虑限制。
mmquotaoff命令用于停用配额限制检查。 指定文件系统名称以及是否要取消激活用户,组或文件集配额或这三者的任意组合。 如果您希望停用所有类型的配额,请仅指定文件系统名称。
例如,要仅停用文件系统fs1上的用户配额,请输入:
# mmquotaoff -u fs1
要确认更改,请输入:
# mmlsfs fs1 -Q
系统显示的输出类似于:
flag value description
---- -------------- --------------------
-Q group;fileset Quotas enforced
有关完整的使用信息,请参阅“IBM Spectrum Scale :命令和编程参考”中的mmquotaoff命令和mmlsfs命令 。
更改配额限制检查的范围
配额激活时确定配额执行的范围。 默认情况下,在整个文件系统中强制实施用户和组配额限制。 或者,配额执行的范围可以限制为单个文件集边界。
可以使用mmchfs命令更改配额执行的范围,并根据需要指定**–perfileset-quota或–noperfileset-quota**选项。
在更改配额执行范围后,必须运行mmcheckquota以正确更新配额使用信息。
创建文件系统配额报告
您可以让GPFS使用mmrepquota命令为文件系统准备配额报告。
配额报告列出:
-
使用的文件数量
-
使用的磁盘空间量
-
当前配额限制
-
有疑问配额 (已分配磁盘空间但目前未计算)
-
允许超过软限制的宽限期
-
配额是否已显式设置 (e), 是文件系统级别 (d_fsys) 上的默认值, 是文件集级别 (d_fset) 的默认值, 还是初始值 (i)
条目类型还指示是否为文件系统启用默认配额(默认打开或默认关闭)。
指定是否只在 mmrepquota 命令中列出用户配额信息(-u标志),组配额信息(-g标志)或文件集配额信息(-j标志)。缺省情况是汇总所有三个配额。 如果未指定**-e**标志,则可能显示负数使用值, 因为配额服务器可能处理最新和向后级别信息的组合。请参阅 “列出配额”。
如果配额限制强制的范围是整个文件系统,mmrepquota -u或mmrepquota -g将列出不同GPFS文件系统上的所有用户或组。 如果配额实施基于每个文件集,mmrepquota -u或mmrepquota -g将列出不同文件系统上不同文件集上的相同用户或组的所有实例。
要列出群集中所有文件系统的组配额 (-g 选项), 并打印带有标题行 (-v 选项) 的报表, 请输入:
# mmrepquota -g -v -a
系统显示类似于以下内容的信息:
*** Report for GRP quotas on fs1
Block Limits | File Limits
Name type KB quota limit in_doubt grace | files quota limit in_doubt grace entryType
system GRP 25088 0 0 209120 none | 32 0 0 1078 none default on
usr GRP 435256 0 0 199712 none | 11 0 0 899 none d_fsys
有关完整的使用信息,请参阅“IBM Spectrum Scale :命令和编程参考”中的mmrepquota命令 。
恢复配额文件
用于恢复GPFS配额文件的方法取决于GPFS的版本。
以下是恢复GPFS配额文件的三种情景。
-
文件系统版本低于4.1.0.0。
在情景1中,可以通过复制可见配额文件直接备份配额文件,然后使用mmcheckquota命令进行恢复。 新指定的备份配额文件将从普通文件传输到配额文件(元数据)。 旧的配额文件从元数据转换为“正常”文件,因此可以删除这些旧的配额文件。
-
文件系统版本是4.1.0.0或更高版本,但低于4.1.1.0。
在情景2中,使用mmcheckquota命令无法恢复配额文件。
-
文件系统版本是4.1.1.0(或更高版本)。
在情景3中,可以使用mmcheckquota命令来恢复配额文件。 使用mmcheckquota --backup命令备份配额文件。 您可以从以前的备份配额文件恢复配额文件。 mmcheckquota命令将指定备份配额文件中的数据复制到“不可见”配额文件。 您无法查看或删除原始配额文件。 您只能删除指定的备份配额文件。
有关恢复GPFS配额文件的三种方案的其他详细信息如下。
在情景1和3中:
-
用户,组和文件集配额文件可以从原始配额文件的备份副本中恢复。 恢复配额文件时,备份文件必须位于GPFS文件系统的根目录中。
在情景1中,如果原始配额文件的备份副本不存在,则会在发出mmcheckquota命令时创建空文件。
在情景3中,mmcheckquota命令不执行任何操作并打印一个错误 。
-
通过使用带有适当选项的mmcheckquota命令,可以从备份副本中恢复用户,组或文件集文件。
-
要从备份文件userQuotaInfo恢复文件系统fs1的用户配额文件,请输入:
# mmcheckquota -u userQuotaInfo fs1
此命令必须脱机运行 (即没有挂载至任何节点)。
-
这将恢复为文件系统设置的用户配额限制,但使用信息不会是最新的。 要将使用信息转换为当前值,必须重新发布该命令:
# mmcheckquota fs1
在情景1中,如果要取消所有配额配置,然后重新初始化它,请按照下列步骤操作:
-
删除已损坏的现有配额文件。
a.禁用配额管理:
# mmchfs fs1 -Q no
b.删除user.quota,group.quota和fileset.quota文件。
-
启用配额管理。
a.发出以下命令:
# mmchfs fs1 -Q yes
-
通过发出mmedquota命令或mmdefedquota命令重新建立配额限制。
-
通过发出mmcheckquota命令来收集当前的配额使用情况值。
在情景2中,配额文件不在外部存在。 因此,请使用mmbackupconfig和mmrestoreconfig来恢复配额配置。
有关完整的使用信息,请参阅“IBM Spectrum Scale :命令和编程参考”中的mmcheckquota命令,mmdefedquota命令和mmedquota命令 。