第 4 章 GFS2 配额管理

文件系统配额是用来限制某个用户或者组群使用的文件系统空间。在设置前用户或组群没有配额限制。当使用 quota=onquota=account 选项挂载 GFS2 文件系统时,GFS2 会跟踪每个用户和组群使用的空间,即使没有设定限制也是如此。GFS2 以互动的方式更新配额信息,因此系统崩溃并不需要重建配额使用。

为防止性能下降,GFS2 节点只会定期同步配额文件更新。模糊配额核算可让用户或组群稍微超过其设定的限制。为最小化这种情况,GFS2 会在接近硬配额限制时动态缩短同步周期。

注意

GFS2 支持标准 Linux 配额工具。要使用这个功能,您需要安装 quota RPM。这是在 GFS2 中管理配额的首选方法,应该在所有使用配额的 GFS2 新部署中使用。

有关磁盘配额的详情,请查看以下命令的man 页:

  • quotacheck
  • edquota
  • repquota
  • quota

4.1. 配置 GFS2 磁盘配额

要为 GFS2 文件系统实现磁盘配额,请执行三个步骤:

实现磁盘配额的步骤如下:

  1. 使用强制模式或者计数(accounting)模式设置配额。
  2. 使用当前块使用信息初始化配额数据库文件。
  3. 分配配额策略。(在计数模式中不强制这些策略。)

在以下小节中会详细讨论这些步骤的具体内容。

4.1.1. 在强制或者计数模式下设置配额

在 GFS2 文件系统中,默认会禁用配额。要为文件系统启用配额,请使用指定的 quota=on 选项挂载文件系统。

要挂载启用配额的文件系统,在集群中创建 GFS2 文件系统资源时,为 options 参数指定 quota=on。例如:以下命令指定正在创建的 GFS2 Filesystem 资源将使用启用配额挂载。

# pcs resource create gfs2mount Filesystem options="quota=on" device=BLOCKDEVICE directory=MOUNTPOINT fstype=gfs2 clone

可以跟踪磁盘用量,并在不强制限制和警告值的情况下为每个用户和组群保持配额核算。为此,请使用指定的 quota=account 选项挂载文件系统。

要挂载禁用配额的文件系统,在集群中创建 GFS2 文件系统资源时,为 options 参数指定 quota=off

4.1.2. 创建配额数据库文件

挂载每个启用了配额的文件系统后,该系统就可以使用磁盘配额。但是,文件系统本身尚未准备好支持配额。在下一步中运行 quotacheck 命令。

quotacheck 命令检查启用了配额的文件系统,并为每个文件系统构建一个当前磁盘使用情况的表。该表被用于更新磁盘用量的操作系统副本。另外,还会更新文件系统的磁盘配额文件。

要在文件系统上创建配额文件,请使用 quotacheck 命令的 -u-g 选项;必须指定这两个选项以便初始化用户和组配额。例如,如果为 /home 文件系统启用配额,请在 /home 目录中创建文件:

# quotacheck -ug /home

4.1.3. 为每个用户分配配额

最后一步是使用 edquota 命令分配磁盘配额。请注意,如果您以计数模式挂载文件系统(指定了 quota=account 选项),则不强制配额。

要为一个用户配置配额,在 shell 提示符中以 root 用户执行以下命令:

# edquota username

为每个需要配额的用户执行这个步骤。例如,如果为 /home 分区(以下示例中的 /dev/VolGroup00/LogVol02)启用了配额,并且执行了命令 edquota testuser,则在编辑中显示为系统默认设置:

Disk quotas for user testuser (uid 501):
Filesystem                blocks     soft     hard    inodes   soft   hard
/dev/VolGroup00/LogVol02  440436        0        0
注意

edquota 使用由 EDITOR 环境变量定义的文本编辑器。要更改编辑器,请将 ~/.bash_profile 文件中的 EDITOR 环境变量设为您选择的编辑器的完整路径。

第一列是启用了配额的文件系统的名称。第二列显示目前该用户使用的块数。下面的两列是为该用户在文件系统中设定软限制和硬限制。

软块限制定义可以使用的最大磁盘空间量。

硬块限制是用户或者组群可以使用的绝对最大磁盘空间量。达到这个限制后,就无法再使用其他磁盘空间。

GFS2 文件系统并不为内节点维护配额,因此这些列不适用于 GFS2 文件系统,并为空。

如果值为 0,则代表没有设定那个限制。在文本编辑器中更改限制。例如:

Disk quotas for user testuser (uid 501):
Filesystem                blocks     soft     hard    inodes   soft   hard
/dev/VolGroup00/LogVol02  440436   500000   550000

要验证是否为该用户设定了配额,使用以下命令:

# quota testuser

您也可以使用 setquota 命令从命令行设置配额。有关 setquota 命令的详情,请查看 setquota(8)手册页。

4.1.4. 为每个组群分配配额

配额可以针对单独组群进行分配。请注意:如果您使用计数模式挂载文件系统(指定 account=on 选项),则不强制配额。

要为 devel 组设置组配额(在设置组群配额前必须存在组配额),请使用以下命令:

# edquota -g devel

这个命令在文本编辑器中显示该组群的现有配额:

Disk quotas for group devel (gid 505):
Filesystem                blocks    soft     hard    inodes   soft   hard
/dev/VolGroup00/LogVol02  440400       0        0

GFS2 文件系统并不为内节点维护配额,因此这些列不适用于 GFS2 文件系统,并为空。修改限制后保存文件。

要验证是否设定了组群配额,使用以下命令:

$ quota -g devel