检查配额包

如果您正在使用一个桌面系统,那么您可能无法安装配额包,因为配额不是普通的默认桌面系统安装的。使用 dpkg 或者 rpm 确认您是否安装了包,如清单 3。

清单 3. 检查配额包

# On Debian-based systems
ian@pinguino:~$ dpkg -l quota
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  quota          4.00~pre1-3    implementation of the disk quota system

# On systems that use RPM
[ian@echidna ~]$ rpm -q quota
quota-3.17-11.fc13.x86_64
如果您没有如本文所述安装配额包,在安装页 “学习 Linux,101:Debian 包管理” 和 学习 Linux,101:RPM 和 YUM 包管理 获取帮助。

配额的启用

添加配额支持到 /etc/fstab

启用配额的下一步是根据您是否想实现用户配额、组配额,或者两者兼有,添加适当选项到 /etc/fstab 的文件系统定义。XFS 文件系统也支持项目配额。

编写时,启用配额的选项不是集中记录在一个明显的手册页中。表 1 显示了可用的选项,以及它们适用的配额系统类型。

表 1. /etc/fstab 中的配额选项

选项 适用于

使用

usrquota 所有类型

启用用户配额

usrjquota=filename vfsv0

启用日志化的用户配额;需要一个配额数据库文件名(通常为 aquota.user)和 jqfmt 选项的规格

uquota xfs

相当于 usrquota

grpquota 所有类型

支持组配额

grpjquota=filename vfsv0

启用日志化组配额;需要一个配额数据库文件名(通常为 aquota.group)和 jpfmt 选项的规格

gquota xfs

相当于 grpquota

prjquota xfs

启用项目配额

pquota xfs

相当于 prjquota

jqfmt=format vfsv0

当 usrjquota 或者 grpjquota 被指定时使用的配额格式;目前只有 vfsv0 是受支持的格式

quota vfsold,vfsv0

相当于 usrquota

noquota vfsold,vfsv0

不启用配额

uqnoenforce xfs

启用用户配额审计,但是不能启用强制措施

gqnoenforce xfs

启用组配额审计,但是不能启用强制措施

pqnoenforce xfs

启用项目配额审计,但是不能启用强制措施

我们使用一个 ext4 分区和一个 XFS 分区进行演示。我们将会在这些文件系统中添加用户和组配额,这样您就可以看到配额如何在两个不同的文件系统中运行。我们的 /etc/fstab 输入如清单 4 所示。

清单 4. 启用 /etc/fstab 中的配额支持

/dev/sda7  /quotatest/ext4  ext4    defaults,usrquota,grpquota          1 2
/dev/sda8  /quotatest/xfs   xfs     defaults,usrquota,grpquota          1 2

 

重新安装文件系统

编辑 /etc/fstab 和添加配额之后,您需要重新安装文件系统。对 XFS 文件系统来说,配额数据是文件系统元数据的一部分。对其他文件系统来说,用户配额信息存储在文件系统 root 的 aquota.user 文件,组配额也同样存储在 aquota.group。版本 1 配额使用 quota.user 和 quota.group。对这些文件系统来说,重新安装完文件系统之后,您必须创建配额文件,并启用配额进行检测。quotacheck 命令检查所有文件系统上的配额,如果 aquota.user 和 aquota.group 文件不存在,就会创建所需的 aquota.user 和 aquota.group 文件。它还能修复损坏的配额文件。查看手册页获得更多信息。

以下是通常和 quotacheck 命令一起使用的部分常用选项:

-a or --all

检查所有安装在 /etc/mtab(除了 NFS 文件系统)的文件系统

-c or --create-files

忽略当前的配额文件。运行新的扫描,将结果写到磁盘

-u or --user

检查用户配额(默认的)

-g or --group

检查组配额

-v or --verbose

Verbose 输出

清单 5 显示了在我们新安装的文件系统上运行 quotacheck 命令的结果。如果您没有使用 -a 选项,就必须指定您想要检查的文件系统。

清单 5. 创建 vfsold 和 vfsv0 的配额数据库文件

[root@echidna ~]# quotacheck -augvc
quotacheck: Skipping /dev/sda8 [/quotatest/xfs]
quotacheck: Your kernel probably supports journaled quota but you are not using it.
Consider switching to journaled quota to avoid running quotacheck after an unclean
shutdown.
quotacheck: Scanning /dev/sda7 [/quotatest/ext4] done
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Checked 2 directories and 1 files
quotacheck: Old file not found.
quotacheck: Old file not found.


请注意,来自 quotacheck 命令的警告建议我们转而使用日志化的配额。将 /dev/sda7 上 ext4 文件系统 /etc/fstab 中的选项由

defaults,usrquota,grpquota

改为

defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,就能完成此变更。

还需要注意的是,XFS 文件系统可由 quotacheck 命令跳过,因为 XFS 配额结构包含在元数据和日志中。


相关内容