开始或者停止配额检测

要强制实施 vfsold 和 vfsv0 配额检测,您必须使用 quotaon 命令将其启用。常用选项 -a,-g,-u 和 -v 与 quotacheck 命令 有相同意思。类似的,如果您没有指定 -a 选项,就必须指定文件系统。如果只是想要显示配额的开启和关闭,您可以使用 -p 选项。使用 quotaoff 命令关闭配额检测。清单 6 显示了这些命令的例子。

清单 6. 开始 vfsold 和 vfsv0 配额的配额检查

[root@echidna ~]# quotaon -p /quotatest/ext4/
group quota on /quotatest/ext4 (/dev/sda7) is off
user quota on /quotatest/ext4 (/dev/sda7) is off
[root@echidna ~]# quotaon -uagv
/dev/sda7 [/quotatest/ext4]: group quotas turned on
/dev/sda7 [/quotatest/ext4]: user quotas turned on
[root@echidna ~]# quotaoff -ugv /quotatest/ext4/
/dev/sda7 [/quotatest/ext4]: group quotas turned off
/dev/sda7 [/quotatest/ext4]: user quotas turned off
[root@echidna ~]# quotaon -ugv /quotatest/ext4/
/dev/sda7 [/quotatest/ext4]: group quotas turned on
/dev/sda7 [/quotatest/ext4]: user quotas turned on

对 XFS 文件系统来说,配额检查是默认启动的,除非文件安装了 uqnoenforce,gqnoenforce 或者 pqnoenforce 设置。使用 xfs_quota 命令和 -x(适用于 专家)选项控制 xfs 配额。没有 -x 选项,您显示配额信息会受到限制。命令还有一些子命令,包括 help,用于显示可用的子命令清单,state,用于显示整体状况,enable,用于启用配额检测,还有 disable,用于停止。选项 -u、-g 和 -p 分别限制用户、组或项目的行为。使用 -v 获得 verbose 输出。您可以在命令行模式运行命令,命令行中独立的子命令由 -c 选项指明。您可以多次指定多种子命令的该选项。如果您将指定子命令的选项,可能就需要引用命令。清单 7 中显示了一些例子。

清单 7. 开始 xfs 配额的配额检测

[root@echidna ~]# xfs_quota -x
xfs_quota> state
User quota state on /quotatest/xfs (/dev/sda8)
  Accounting: ON
  Enforcement: ON
  Inode: #131 (3 blocks, 3 extents)
Group quota state on /quotatest/xfs (/dev/sda8)
  Accounting: ON
  Enforcement: ON
  Inode: #132 (3 blocks, 3 extents)
Project quota state on /quotatest/xfs (/dev/sda8)
  Accounting: OFF
  Enforcement: OFF
  Inode: #132 (3 blocks, 3 extents)
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
xfs_quota> disable
xfs_quota> quit
[root@echidna ~]# xfs_quota -x  -c "enable -gu -v"  /quotatest/xfs
User quota state on /quotatest/xfs (/dev/sda8)
  Accounting: ON
  Enforcement: ON
  Inode: #131 (3 blocks, 3 extents)
Group quota state on /quotatest/xfs (/dev/sda8)
  Accounting: ON
  Enforcement: ON
  Inode: #132 (3 blocks, 3 extents)
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]


在启动上检查 vfsold 和 vfsv0 配额

虽然不在本文范围内,quotacheck 和 quotaon 命令通常包含在初始化脚本中,这样无论您何时启动系统,都能同时启用配额。Quota Mini HOWTO(见 参考资料 的链接)有额外的信息。如果您使用日志配额,就不需要在启动时运行 quotacheck。

设置配额限制

正如您所见,配额不是通过文件系统 root 中的二进制文件控制,就是通过文件系统元数据控制。为特定用户设置一个配额,要使用 edquota 命令。这个命令会为用户从启用配额的各种文件系统中提取配额信息,创建一个临时文件,并为您打开编辑器来调整配额。通过默认设置,edquota 使用 vi 编辑器。如果您想使用不同的编辑器,设置 EDITOR 或者 VISUAL 变量。编辑用户配额,使用 -u 选项(默认)和一个或者多个用户名。编辑组配额,使用 -g 和一个或者多个组名。

您必须是 root 用户,才可以编辑配额。使用 vi 作为编辑器,显示的信息类似清单 8 所示。

清单 8. 运行 edquota

Disk quotas for user ian (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda7                         0          0          0          0        0        0
  /dev/sda8                         0          0          0          0        0        0
~
~

正如您在清单 8 中所见,edquota 显示了我当前的使用,包括配额启用中的每个文件系统上的 1K 模块和索引节点。对模块和索引节点的使用还有软、硬件上的限制。在这个例子中,它们都是 0,意味着没有配额限制。

软件限制就是一个值,这个值就是用户超过配额时将会收到邮件警告的次数。硬件限制用户不能超过的次数。您可以将模块限制想成用户能够存储的数据量的适当限制,索引节点限制想成文件和目录数的限制。

变更配额限制

您可以更改临时文件中的值,然后保存文件来变更配额限制。如果您不想变更,就不保存直接关闭文件。我们在例子中使用了非常小的限制,这样您就能很容易就见到效果了。假设您想将配额设置为每个测试文件系统上 10MB 的数据和 50 个文件。允许额外 10% 的硬件限制,您可以如清单 9 所示设置值。

清单 9. 设置限制

Disk quotas for user ian (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda7                         0      10240      11264          0       50       55
  /dev/sda8                         0      10240      11264          0       50       55

保存文件,新的配额就会生效。请注意,您对使用的模块或者索引节点值所作出的任何修改都会被忽略。

配额的复制

现在您就要为附加开发人员创建 id。假设您有用户 gretchen 和 tom,而且您希望他们两个都和 ian 有相同的配额。您可以使用 edquota 的 -p 选项,它使用 ian 的配额为其他用户配额的 原型,如清单 10 所示。

清单 10. 从原型设置配额

root@pinguino:~# edquota -p ian gretchen tom

组限制

您还可以根据文件的组所有权,使用 edquota 限制磁盘空间的分配。比如,上面提到的三位开发人员是 development 组的成员。要把组中所有成员所能使用的总量设置为 250MB 和 100 文件,使用命令 edquota -g development 并设置值,如清单 11 所示。

清单 11. 为一个组设置配额

Disk quotas for group development (gid 505):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda7                         4      25600      28160          1      100      110
  /dev/sda8                         0      25600      28160          0      100      110

您可能会想,为什么在 /dev/sda7 的 ext4 文件系统上已经有被使用的模块和索引节点。请回想一下,在清单 2 中,我们使用 chown 和 chmod 来设置所有新文件的默认组为 development 组?这也适用于两个配额数据库文件。您可以将它们改回到 root 的中的值,如清单 12 所示。请保证在关闭配额检查之后进行变更,然后再将它开启。

清单 12. 重新设置配额数据库文件的组所有人


[root@echidna ~]# quotaoff /quotatest/ext4/
[root@echidna ~]# chown :root /quotatest/ext4/aquota.*
[root@echidna ~]# quotaon /quotatest/ext4/


宽限期

用户或者组可能会超出软件限制的 宽限期,默认值为 7 天。宽限期之后,软件限制就会作为硬件限制执行。一旦达到硬件限制,就必须在创建新文件之前删除部分文件。使用 edquota 的 -t 选项设置宽限期。您再一次回到编辑器中,会见到类似清单 13 中的数据。和之前一样,保存变更来更新值。请确保给用户留有足够时间接收警告邮件、相应地删除部分文件。

清单 13. 设置宽限期

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/sda7                     7days                  7days
  /dev/sda8                     7days                  7days

检查配额

没有选项的 quota 命令显示了任何文件系统上激活用户的配额,如果用户在这个系统上有文件,就会在其上设置配额。-v 选项显示了启用配额的所有文件系统的信息。root 用户可以给命令添加一个用户名来查看特定用户的配额。在清单 14 中,我们在 ext4 文件系统上创建一个 1MB 文件,并说明了有无 -v 选项的 quota 命令的使用。

清单 14. 显示配额

[ian@echidna ~]$ dd if=/dev/zero of=/quotatest/ext4/ianfile1 bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00793796 s, 132 MB/s
[ian@echidna ~]$ quota
Disk quotas for user ian (uid 1000):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda7    1024   10240   11264               1      50      55
[ian@echidna ~]$ quota -v
Disk quotas for user ian (uid 1000):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda7    1024   10240   11264               1      50      55
      /dev/sda8       0   10240   11264               0      50      55

根据当前使用的统计数据,您可以看到显示的软硬件配置限制。如果在创建文件之后立刻运行 quota 命令,您就会在短时间内见到略大的模块数显示。清单 15 显示了如果您超过软件限制会出现什么情况,以及如果超过硬件限制会出现什么情况。在这个例子中,我们在已创建的 1MB 中添加 9.5MB 的文件,这很显然超出了软件限制。请注意软件限制如何获得一个星号,除了它表示用户超出配额。还要注意的是,宽限期列标明了用户要在多长时间内解决问题。最后,当我们尝试复制 1MB 文件时,因为它会超出用户 ian 的硬件限制,所以操作失败。

清单 15. 超过配额

[ian@echidna ~]$ dd if=/dev/zero of=/quotatest/ext4/ianfile2 bs=1024 count=9500
9500+0 records in
9500+0 records out
9728000 bytes (9.7 MB) copied, 0.0754223 s, 129 MB/s
[ian@echidna ~]$ quota
Disk quotas for user ian (uid 1000):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda7   10552*  10240   11264   7days       2      50      55
[ian@echidna ~]$ cp /quotatest/ext4/ianfile1 /quotatest/ext4/ianfile3
cp: writing `/quotatest/ext4/ianfile3': Disk quota exceeded

 


相关内容