Quota用来配置磁盘限额,既可以对用户做限制,也可以对用户组做限制。这两者可以单独配置,也可以同时使用——比如既限制某个用户,又限制他所在的组。
不少管理员第一次接触Quota,往往是在配置Samba PDC、需要对用户设置磁盘限额的时候。没接触之前,总觉得这东西很玄乎;但亲手捣鼓一两次之后,概念清晰了,自然也就轻车熟路——配置Quota其实没那么复杂。
下面以OpenBSD 3.8为例,简略说明如何对用户和用户组设置Quota。整个过程基本分四个步骤:
1. 确认内核支持
如果使用的是系统默认的GENERIC内核,那么Quota功能已经内置——默认的内核配置文件中已经包含了"option QUOTA"。如果没有,需要在配置文件里加上这一行,然后重新编译安装内核。编译内核的具体步骤,可参考OpenBSD FAQ5:Building the System from Source。
2. 标记需要Quota的分区
假如要对/home目录做限额,就在/etc/fstab中加上userquota和groupquota标记。例如:
/dev/wd0a / ffs rw 1 1
/dev/wd0d /home ffs rw,nodev,nosuid,userquota,groupquota 1 2
做好标记后,系统启动时(前提是rc.conf中check_quotas=YES)会在/home目录下自动生成两个文件:user.quota和group.quota,用来保存磁盘限额信息。当然也可以指定这两个文件的位置,比如:
userquota=/var/quotas/user.quota,groupquota=/var/quotas/group.quota
3. 配置Quota
Quota提供了一系列工具,这里介绍最常用的几个。
设置用户Quota
以用户bibby为例,直接运行:
# edquota bibby
系统会在默认编辑器($EDITOR)中打开类似这样的配置:
Quotas for user bibby:
/home: KBytes in use: 16, limits (soft = 0, hard = 0)
inodes in use: 7, limits (soft = 0, hard = 0)
这里有几个概念需要搞清楚:
- KByte:磁盘容量,单位KB。
- soft(软限制):达到或超过该值时,系统会发出警告,但用户仍然可以继续使用磁盘。
- hard(硬限制):真正的“天花板”。一旦达到硬限制,用户就无法再写入任何数据。
- inode:文件和目录的数量。每个文件或目录占用一个inode。如果限制了inode,即使磁盘容量还有剩余,用户也无法创建新文件或目录。实际使用中,更多是对磁盘容量做限制,inode限制用得较少。
例如,为bibby设置2MB的软限制和3MB的硬限制,inode不做限制,配置如下:
Quotas for user bibby:
/home: KBytes in use: 16, limits (soft = 2048, hard = 3072)
inodes in use: 7, limits (soft = 0, hard = 0)
设置组Quota
命令格式类似:
# edquota -g GROUP
4. 打开Quota功能
要让系统启动后自动启用Quota,需要在/etc/rc.conf中将check_quotas设置为YES(系统默认就是YES):
check_quotas=YES
也可以手动开启:
# quotaon -a
这个命令会根据/etc/fstab中的标记,对相应分区启用磁盘限额。查看自己的限额可以使用quota命令,查看某个用户的限额用quota -u USER。输出示例:
$ quota
Disk quotas for user bibby (uid 1000):
Filesystem KBytes quota limit grace files quota limit grace
/home 16 2048 3072 7 0 0
输出中间出现了"grace"字段,这是“宽限期”(Grace Period)。假设宽限期设为3天,用户超过软限制后,如果在3天内没有清理超限的文件,之后将无法再使用任何磁盘空间(甚至可能导致无法登录)。设置宽限期使用命令:
# edquota -t
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/home: block grace period: 0 days, file grace period: 0 days
本例对宽限期不做限制。默认情况下,只要在fstab中做了标记,系统启动就会自动启用Quota。如果需要关闭,可以运行:
# quotaoff -a
附:几个常用的小工具
- edquota:前面已经用过。常用变体:
- 设置用户Quota:edquota -u USER
- 设置组Quota:edquota -g GROUP
- 将用户bibby的配置复制给其他用户(如michael和lee):edquota -p bibby michael lee - repquota:报告分区的Quota使用情况。用法:
repquota /quota/path,例如repquota /home。 - quotaon/quotaoff:开启/关闭Quota功能。
