第九章 磁盘配额  
  9.1. 配置:/etc/fstab,quotacheck,edquota  
  9.2. 管理:repquota,quotacheck,quotaoff,quotaon  
     
 

9.1. 配置磁盘配额

   要实现磁盘配额,请使用以下步骤:

9.1.1 启用配额:/etc/fstab

编辑/etc/fstab文件,给需要配额的文件系统添加 usrquota 和(或)grpquota 选项。在下面的例子中,/home 文件系统上启用了用户和组群配额。

LABEL=/           /               ext3    defaults        1 1
LABEL=/boot       /boot           ext3    defaults        1 2
none              /dev/pts        devpts  gid=5,mode=620  0 0
LABEL=/home       /home           ext3    defaults,usrquota,grpquota 1 2
none              /proc           proc    defaults        0 0
none              /dev/shm        tmpfs   defaults        0 0
/dev/hda2         swap            swap    defaults        0 0
/dev/cdrom        /mnt/cdrom      udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0          /mnt/floppy     auto    noauto,owner,kudzu 0 0

9.1.2 重新挂载该文件系统:umount, mount。

添加了 userquota 和 grpquota 选项后,重新挂载每个相应 fstab 条目被修改的文件系统。如果某文件系统没有被任何进程使用,使用 umount 命令后然后用 mount 命令来重新挂载这个文件系统。如果某文件系统正在被使用,要重新挂载该文件系统的最简捷方法是重新引导系统。
 

9.1.3 创建配额文件:quotacheck。

quotacheck命令检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘用量的表。

要在文件系统上创建配额文件( aquota.user 和 aquota.group ),使用 quotacheck 命令的 -c 选项。在 /home 目录下创建配额文件:

quotacheck -acug /home

-a 选项意味着在 /etc/mtab 中所有挂载了的非 NFS 文件系统都会被检查来决定是否启用了配额。 -c 选项指定每个启用了配额的文件系统都应该创建配额文件, -u 选项指定检查用户配额, -g 选项指定检查组群配额。 如果 -u 或 -g 选项被指定,只有用户配额文件被创建。如果只指定了 -g 选项,只有组群配额文件会被创建。

文件被创建后,运行以下命令来生成每个启用了配额的文件系统的当前磁盘用量表:

quotacheck -avug

所用选项如下:

  • a — 检查所有启用了配额的在本地挂载的文件系统
  • v — 在检查配额过程中显示详细的状态信息
  • u — 检查用户磁盘配额信息
  • g — 检查组群磁盘配额信息

9.1.4 为每用户分配配额:edquota,quota。

使用 edquota 命令分配磁盘配额。要为用户配置配额,以根用户身份在 shell 提示下执行以下命令:

edquota username

为每个你想实现配额的用户执行该步骤。执行 edquota testuser 命令后,系统默认的编辑器中就会有如下显示:

Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 440436 0

第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数。随后的两列用来设置用户在该文件系统上的软硬块限度。inodes 列显示了用户当前使用的内节点数量。最后两列用来设置用户在该文件系统上的软硬内节点限度。

硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期(grace period)。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。

如果以上值中的任何一个被设置为 0,那个限度就不会被设置。在文本编辑器中,改变限额。如:

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

要校验用户的配额是否被设置,使用以下命令:

quota testuser

9.1.5 为每组群分配配额:edquota,quota

还可以根据组群来分配配额,例如,要为 devel 组群设置组群配额,使用以下命令(在设置组群配额前,该组群必须存在):

edquota -g devel

以上命令在文本编辑器中显示现存的组群配额:

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

修改限度,保存文件,然后配置配额。

要校验组群配额是否被设置,使用以下命令:

quota -g devel
 

9.1.6 为文件系统分配配额:edquota,quota

要根据每个启用了组群的文件系统来分配配额,使用以下命令:

edquota -t

和另一个 edquota 命令相似,这个命令也会在文本编辑器中打开当前的文件系统配额:

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/hda3                     7days                  7days

改变块过渡期或内节点过渡期,保存对文件的改变,然后退出文本编辑器。  

 
     
  9.2. 管理磁盘配额repquota,quotacheck,quotaoff,quotaon

    查看配额是否被超出并确保配额的正确性,根据用户类型按需要调整用户的配额。

9.2.1 报告磁盘配额:repquota

创建磁盘用量报告需要运行 repquota 工具。例如, repquota /home 命令会生成以下输出:

*** Report for user quotas on device /dev/hda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      36       0       0              4     0     0
tfox      --     540       0       0            125     0     0
testuser  --  440400  500000  550000          37418     0     0

要查看所有启用了配额的文件系统的磁盘用量,使用以下命令:

repquota -a

这份报告虽然看起来很简单,有几点仍需要做一下说明。显示在每个用户后面的 -- 是一种判断用户是否超出其块限度或内节点限度的快速方法。如果任何一个软限被超出,相应的 - 行就会被 + 代替;第一个 - 代表块限度,第二个代表内节点限度。

grace 列通常是空白。如果某个软限被超出,这一列就会包含过渡期中的剩余时间。如果过渡期已超过了,其中就会显示 none 。

9.2.2 保持配额的正确性:quotacheck

当某文件系统没有被完整地卸载(如,由于系统崩溃),这就有必要运行 quotacheck 。 不过,即便系统没有崩溃, quotacheck 也可以被定期经常运行。定期运行以下命令来保持配额的正确性:

quotacheck -avug

要定期运行它的最简单方法是使用 cron 。以根用户身份,你既可以使用 crontab -e 命令来调度定期的 quotacheck ,也可以在以下目录之一内放置一个运行 quotacheck 的脚本(使用最时候你需要的间隔期间):

  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.weekly
  • /etc/cron.monthly

最精确的配额统计数据可以在所分析的文件系统没有被活跃使用时获得。因此,cron 任务应该在文件系统被最少使用时调度。如果这一时间在使用配额的文件系统中并不统一,则使用多个 cron 任务在不同的时间为每个文件系统运行 quotacheck 。

9.2.3 启用和禁用:quotaoff,quotaon

把配额设置为 0 可以禁用配额。也可以使用以下命令来关闭用户和组群配额:

quotaoff -vaug

如果 -u 或 -g 选项没有被指定,只有用户配额被禁用。如果只指定了 -g 选项,只有组群配额会被禁用。

要重新启用配额,使用带有同样选项的 quotaon 命令。

例如,要为所有文件系统启用用户和组群配额:

quotaon -vaug

要为指定文件系统(如 /home )启用配额:

quotaon -vug /home

如果 -u 或 -g 选项没有指定,那么仅用户配额会被启用。如果只指定了 -g 选项,仅组群配额会被启用。