Linux quotacheck命令:扫描文件系统并建立Quota记录文件

 
其实,磁盘配额(Quota)就是通过分析整个文件系统中每个用户和群组拥有的文件总数和总容量,再将这些数据记录在文件系统中的最顶层目录中,然后在此记录文件中使用各个用户和群组的配额限制值去规范磁盘使用量的。因此,建立 Quota 的记录文件是非常有必要的。

扫描文件系统(必须含有挂载参数 usrquota 和 grpquota)并建立 Quota 记录文件,可以使用 quotacheck 命令。此命令的基本格式为:

[root@localhost ~]# quotacheck [-avugfM] 文件系统

表 1 罗列出了此命令常用的选项以及各自的功能。
表 1 quotacheck命令常用选项及功能
选项 功能
-a 扫瞄所有在 /etc/mtab 中,含有 quota 支持的 filesystem,加上此参数后,后边的文件系统可以不写;
-u 针对使用者扫瞄文件与目录的使用情况,会创建 aquota.user
-g 针对群组扫瞄文件与目录的使用情况,会创建 aquota.group
-v 显示扫瞄的详细过程;
-f 强制扫瞄文件系统,并写入新的 quota 记录文件
-M(大写) 强制以读写的方式扫瞄文件系统,只有在特殊情况下才会使用。

在使用这些选项时,读者只需一起下达 -avug 即可。至于 -f 和 -M 选项,是在文件系统以启动 quota 的情况下,还要重新扫描文件系统(担心有其他用户在使用 quota 中),才需要使用这两个选项。

例如,我们可以使用如下的命令,对整个系统中含有挂载参数(usrquota 和 grpquota)的文件系统进行扫描:

[root@localhost ~]# quotacheck -avug
quotacheck: Scanning /dev/hda3 [/home] 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
done  <--上面三个错误只是说明记录文件尚未创建而已,可以忽略不理!
quotacheck: Checked 130 directories and 107 files <--实际搜寻结果
quotacheck: Old file not found.
quotacheck: Old file not found.
# 若运行这个命令却出现如下的错误信息,表示你没有任何文件系统有启动 quota 支持!
# quotacheck: Can't find filesystem to check or filesystem not mounted with quota option.

[root@localhost ~]# ll -d /home/a*
-rw------- 1 root root 8192 Mar  6 11:58 /home/aquota.group
-rw------- 1 root root 9216 Mar  6 11:58 /home/aquota.user
# 可以看到,扫描的同时,会创建两个记录文件,放在 /home 底下

需要注意的是,此命令不要反复的执行,因为若启动 Quota 后还执行此命令,会破坏原有的记录文件,同时产生一些错误信息。

通过执行 quotacheck 命令,就可以成功创建支持配额的记录文件,读者不要去手动编辑这两个文件,一方面,这两个文件是 Quota 自己的数据文件,并不是纯文本文件;并且在你对该文件系统进行操作时,操作的结果会同步到这两个文件中,因此文件中的数据会发生变化。

通过本节的学习,读者只需要知道,要启动 Quota,需创建两个记录文件,分别为 aquota.group 和 aquota.user,而创建的工作,不是手动编辑的,需要使用 quotacheck 命令。