Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.5. GFS2 配额管理

文件系统配额是用来限制某个用户或者组使用的文件系统空间。在设置前对用户或者组没有配额限制。当使用 quota=on 或者 quota=account 选项时,GFS2 会不断跟踪每个用户或者组使用的空间,即使没有设定限制也是如此。GFS2 以互动的方式更新配额信息,因此系统崩溃并不需要重建配额用量。
为防止性能下降,GFS2 节点只会定时为配额文件更新同步。fuzzy 配额核算可允许用户或者组稍微超过设定的限制。为最小化这种情况,GFS2 会在接近 hard 配额限制时动态缩短同步周期。

注意

从 Red Hat Enterprise Linux 6.1 发行本开始,GFS2 支持标准 Linux 配额工具。要使用这个工具,您需要安装 quota RPM。这是在 GFS2 中管理配额的首选方法,且应该在所有使用配额新部署的 GFS2 中使用。本小节记录了如何使用这些工具管理 GFS2 配额。
在 Red Hat Enterprise Linux 之前的发行本中,GFS2 文件系统中的 gfs2_quota 命令管理配额。有关 gfs2_quota 命令的详情请参考 附录 A, 使用 gfs2_quota 命令执行 GFS2 配额管理

4.5.1. 配置磁盘配额

请使用以下步骤实施磁盘配额:
  1. 设置配额的强制或者计数模式。
  2. 使用当前块使用信息初始化配额数据库文件。
  3. 分配配额策略。(在计数模式中不强制这些策略。)
在以下小节中会详细讨论这些步骤的具体内容。

4.5.1.1. 将配额设定为强制或者计数模式

在 GFS2 文件系统中,默认禁用配额。要为文件系统启用配额,请在挂载文件系统时指定 quota=on 选项。
有可能在没有强制限制和警告值的情况下为每个用户和组跟踪磁盘用量并维护配额核算。要做到这一点,请使用 quota=account 选项挂载文件系统。
用法
要挂载启用配额的文件系统,请在挂载文件系统时使用 quota=on 选项。
mount -o quota=on BlockDevice MountPoint
要在挂载文件系统时即使没有强制配额限制也要使用配额计数维护,则请在挂载文件系统时指定 quota=account 选项。
mount -o quota=account BlockDevice MountPoint
要在挂载文件系统时禁用配额,请使用 quota=off 选项挂载文件系统。这是默认设置。
mount -o quota=off BlockDevice MountPoint
quota={on|off|account}
on - 指定挂载文件系统时启用配额。
off - 指定挂载文件系统时禁用配额。
account - 即使在没有强制配额限制的情况下,也指定根据文件系统维护用户和组的用量统计。
BlockDevice
指定 GFS2 文件系统所在的块设备。
MountPoint
指定要挂载 GFS2 文件系统的目录。
示例
在这个示例中,/dev/vg01/lvol0 中的 GFS2 文件系统被挂载到 /mygfs2 目录中并启用了配额。
mount -o quota=on /dev/vg01/lvol0 /mygfs2
在这个示例中,/dev/vg01/lvol0 中的 GFS2 文件系统被挂载到 /mygfs2 目录中并启用了配额计数,但没有强制。
mount -o quota=account /dev/vg01/lvol0 /mygfs2

4.5.1.2. 创建配额数据库文件

挂载了每个启用了配额的文件系统后,该系统就可以使用磁盘配额。但是该系统本身还不支持配额。下一步就是要运行 quotacheck 命令。
The quotacheck command examines quota-enabled file systems and builds a table of the current disk usage per file system. The table is then used to update the operating system's copy of disk usage. In addition, the file system's disk quota files are updated.
要在该文件系统中创建配额文件,请使用 quotacheck 命令的 -u-g 选项。必须为用户和组指定这两个选项方可进行初始化。如果为 /home 文件系统启用配额,则请在 /home 目录中生成该文件:
quotacheck -ug /home

4.5.1.3. 为每个用户分配配额

最后一步是使用 edquota 命令分配磁盘配额。请注意:如果您使用计数模式挂载文件系统(即指定 quota=account 选项),则不强制使用配额。
请在 shell 提示符后成为 root 用户,并执行以下命令为用户配置配额:
edquota username
为每个需要配额的用户执行这个步骤。例如:如果在 /etc/fstab 中为 /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

4.5.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