Red Hat Training

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

第 17 章 磁盘配额

通过实施磁盘配额来限制磁盘空间,配额可在用户消耗太多磁盘空间或分区已满前提醒系统管理员。
可以为单独的用户以及用户组配置磁盘配额。这样便可以将分配给用户特定文件(例如电子邮件)的空间与分配给用户工作的项目的空间分开管理(假设项目有自己的组)。
此外,配额不仅可用来控制所消耗磁盘块的数量,还可以用来控制 inode (包含 UNIX 文件系统中文件信息的数据结构)数。由于 inode 用于包含与文件有关信息,因此允许控制可以创建的文件数。
必须安装 quota RPM 才能实现磁盘配额。
注意
本章适用于所有文件系统,但有些文件系统都有自己的配额管理工具。有关适用的文件系统,请查看相应的描述。
对于 XFS 文件系统,请参阅 第 3.3 节 “XFS 配额管理”
Btrfs 没有磁盘配额,因此不涵盖。

17.1. 配置磁盘配额

要实现磁盘配额,请执行以下步骤:
  1. 通过修改 /etc/fstab 文件,为每个文件系统启用配额。
  2. 重新挂载文件系统。
  3. 创建配额数据库文件,并生成磁盘使用情况表。
  4. 分配配额策略。
在以下小节中会详细讨论这些步骤的具体内容。

17.1.1. 启用配额

过程 17.1. 启用配额

  1. 以 root 身份登录。
  2. 编辑 /etc/fstab 文件。
  3. usrquotagrpquota 或两个选项添加到需要配额的文件系统中。

例 17.1. 编辑 /etc/fstab

例如,要使用文本编辑器 vim,请键入以下内容:
# vim /etc/fstab

例 17.2. 添加配额

/dev/VolGroup00/LogVol00 /         ext3    defaults        1 1
LABEL=/boot              /boot     ext3    defaults        1 2
none                     /dev/pts  devpts  gid=5,mode=620  0 0
none                     /dev/shm  tmpfs   defaults        0 0
none                     /proc     proc    defaults        0 0
none                     /sys      sysfs   defaults        0 0
/dev/VolGroup00/LogVol02 /home     ext3    defaults,usrquota,grpquota  1 2
/dev/VolGroup00/LogVol01 swap      swap    defaults        0 0 . . .
在这个示例中,/home 文件系统同时启用了用户和组配额。
备注
以下示例假定在安装 Red Hat Enterprise Linux 过程中创建了单独的 /home 分区。root (/)分区可用于设置 /etc/fstab 文件中的配额策略。

17.1.2. 重新挂载文件系统

添加 usrquotagrpquota 或两个选项后,重新挂载修改 fstab 条目的每个文件系统。如果文件系统没有被任何进程使用,请使用以下方法之一:
  • 运行 umount 命令,后跟 mount 命令以重新挂载文件系统。有关挂载和卸载各种文件系统类型的具体语法,请参阅 umountmount man page。
  • 运行 mount -o remount file-system 命令(其中 file-system 是文件系统的名称)以重新挂载文件系统。例如,要重新挂载 /home 文件系统,请运行 mount -o remount /home 命令。
如果文件系统当前正在使用,则重新挂载文件系统的最简单方法是重新启动系统。

17.1.3. 创建配额数据库文件

重新挂载每个启用了配额的文件系统后,请运行 quotacheck 命令。
quotacheck 命令检查启用了配额的文件系统,并为每个文件系统构建一个当前磁盘使用情况的表。该表随后用于更新操作系统磁盘使用情况的副本。此外,还会更新文件系统的磁盘配额文件。
注意
quotacheck 命令对 XFS 没有影响,因为磁盘使用量表在挂载时会自动完成。如需更多信息,请参阅 man page xfs_quota (8)

过程 17.2. 创建配额数据库文件

  1. 使用以下命令在文件系统中创建配额文件:
    # quotacheck -cug /file system
  2. 使用以下命令为每个文件系统生成当前磁盘用量表:
    # quotacheck -avug
以下是用于创建配额文件的选项:
c
指定应为每个启用配额的文件系统创建配额文件。
u
检查用户配额。
g
检查组配额。如果只指定 -g,则仅创建组配额文件。
如果未指定 -u-g 选项,则仅创建用户配额文件。
以下选项用于生成当前磁盘用量表:
a
检查所有启用了配额的、本地挂载的文件系统
v
在配额检查进行时显示详细的状态信息
u
检查用户磁盘配额信息
g
检查组磁盘配额信息
quotacheck 完成运行后,与启用的配额(用户或组或两者)对应的配额文件会填充每个启用了配额的本地挂载的文件系统(如 /home )的数据。

17.1.4. 为每个用户分配配额

最后一步是使用 edquota 命令分配磁盘配额。
前提条件
  • 用户必须在设置用户配额前存在。

过程 17.3. 为每个用户分配配额

  1. 要为用户分配配额,请使用以下命令:
    # edquota username
    使用您要为其分配配额的用户替换 username
  2. 要验证是否为该用户设定了配额,使用以下命令:
    # quota username

例 17.3. 为用户分配配额

例如,如果在 /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     37418      0      0
备注
edquota 使用由 EDITOR 环境变量定义的文本编辑器。要更改编辑器,将 ~/.bash_profile 文件中的 EDITOR 环境变量设置为您选择的编辑器的完整路径。
第一列是启用了配额的文件系统的名称。第二列显示目前该用户使用的块数。下面的两列是为该用户在文件系统中设定软限制和硬限制。inodes 列显示用户当前使用的 inode 数。最后两列是为该用户在文件系统中设定软和硬的内节点限制。
硬块限制是用户或者组群可以使用的绝对最大磁盘空间量。达到这个限制后,就无法再使用其他磁盘空间。
软块限制定义可以使用的最大磁盘空间量。然而,与硬限制不同,在一定时间内可以超过软限制。该时间称为 宽限期。宽限期可以用秒、分钟、小时、天、周或月表示。
如果值为 0,则代表没有设定那个限制。在文本编辑器中,更改所需的限制。

例 17.4. 更改限制

例如:
Disk quotas for user testuser (uid 501):
Filesystem                blocks     soft     hard   inodes   soft   hard
/dev/VolGroup00/LogVol02  440436   500000   550000    37418      0      0
要验证是否为用户设定了配额,请使用以下命令:
# quota testuser
Disk quotas for user username (uid 501):
   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
     /dev/sdb    1000*   1000    1000               0       0       0

17.1.5. 为每个组分配配额

配额可以针对单独组群进行分配。
前提条件
  • 组群在设定组群配额前必须已经存在。

过程 17.4. 为每个组分配配额

  1. 要设置组配额,请使用以下命令:
    # edquota -g groupname
  2. 要验证是否设定了组群配额,请使用以下命令:
    # quota -g groupname

例 17.5. 为组分配配额

例如,要为 devel 组设置组配额,请使用以下命令:
# edquota -g devel
这个命令在文本编辑器中显示该组群的现有配额:
Disk quotas for group devel (gid 505):
Filesystem                blocks    soft     hard    inodes    soft    hard
/dev/VolGroup00/LogVol02  440400       0        0     37418       0       0
修改限制后保存文件。
要验证是否设置了组配额,请使用以下命令:
# quota -g devel

17.1.6. 为软限制设置宽限期

如果给定配额有软限制,您可以使用以下命令编辑宽限期(即可以超过软限制的时间):
# edquota -t
此命令适用于针对用户或组的 inode 或块的配额。
重要
虽然其他 edquota 命令针对特定用户或组的配额进行操作,但 -t 选项在每个启用了配额的文件系统中运行。