1、 Quota的概念:磁盘配额,目的是限定用户在磁盘分区上所能使用的空间大小。
2、 Quota的一般用途:
针对WWW Server,限制没人的网页空间容量
针对Mail Server,每个人的邮件空间限制
针对file Server,限制每个人可用的网络硬盘空间
除了以上网络服务器限制的情况,还可以针对以下情况进行限制:
限制某一群组所能使用的最大磁盘配额
针对群组内的用户进行再次限制
以link的方式进行磁盘配额限制,针对某些无法做Quota的目录,可以link到其他目录
3、 Quota的使用限制
仅能针对整个filesystem,即只能对整个分区做限制,如果一个分区配置了Quota,则整个分区下的目录都会有影响
Linux内核必须支持Quota,Centos 5.X的版本预设支持Quota,如果自行编译内核,注意要把Quota功能编译进去
Quota的记录文件:Kernel 2.6.XX 的核心版本使用的默认档案是aquota.user和aquota.group
只对一般使用者有效,对root用户无法配置Quota
4、 Quota的规范设定项目:
容量限制或者档案数量限制(block或inode):
限制inode用量:可以管理使用者可以建立的“档案数量”
限制block用量:管理用户磁盘容量的限制(较常使用方式)
5、 柔性劝导和硬性规定(soft/hard):
一般soft值要比hard设定值小,soft相当于警告阈值,比如:某用户soft设定值为400M,而hard设定值则为500M
Hard:表示使用者的用量绝对不会超过此值,超过则锁定该用户的磁盘使用权;
Soft:表示用户使用量低于此值时,可以正常使用磁盘,若高于此值并低于hard值时,系统会发磁盘将满的警告信息,且给予一个宽限时间(grace time)。如果用户在宽限期倒数期间,将磁盘占用量降低到soft值之下,则宽限期停止计时,恢复正常使用。
宽限时间(Gracetime):
如果用户的磁盘使用量在soft值和hard值之间,则系统会自动启动宽限时间倒计时,宽限时间一般设定为七天,如果用户七天之内没用把磁盘使用量降低到soft之下,则soft值会取代hard值来作为磁盘的Quota限制。
6、 Quota配置范例:
目的与账号:五个账号为一组,分别为:myquota1、myquota2、myquota3、myquota4和myquota5,密码均为password,这五个账号所属的初始群组为myquotagrp,账号其他属性默认。
账号的磁盘容量限制:五个用户的磁盘使用量hard值设定为150MB,soft值设定为100MB。
群组的限额:设定myquotagrp群组所能使用的磁盘容量为500MB,所以,如果前面四个用户每个占用120MB磁盘容量,最后一个用户只能使用20MB磁盘容量了。
宽限时间的限制:宽限时间默认为7天,这里可以修改为14天宽限期。
在做Quota配置之前先使用简单的shell脚本添加用户和群组,如下:
#!/bin/bash #使用脚本创建quota实验的用户和群组 groupadd myquotagrp for username in myquota1 myquota2 myquota3 myquota4 myquota5 do useradd –g myquotagrp$username echo “password” | passwd--stdin $username done |
以下是Quota配置流程:
配置文件系统支持Quota
Quota需要在整个文件系统上配置,所以要先确定配置的目录是否是以整个文件系统挂载的,比如/home目录,使用df –h /home可以检查是否是独立的文件系统
[root@localhost /]# df -h home Filesystem Size Used Avail Use% Mounted on /dev/sda6 3.9G 313M 3.4G 9% /home [root@localhost /]# |
确定支持Quota之后,可以使用两种方式配置文件系统的Quota功能:
临时支持Quota,重新挂载文件系统或重启后Quota功能消失:
执行命令:mount –o remount,usrquota,grpquota /home |
命令中usrquota表示支持用户quota,grpquota表示支持群组quota
使用如下命令可以显示结果:
[root@localhost /]# mount | grep home /dev/sda6 on /home type ext3 (rw,usrquota,grpquota) [root@localhost /]# |
文件系统永久支持Quota,需要把quota功能写入到fstab配置文件中:
在fstab文件中/home行,defaults后面添加usrquota和grpquota,中间使用逗号隔开
[root@localhost /]# cat /etc/fstab LABEL=/ / ext3 defaults 1 1 LABEL=/tmp /tmp ext3 defaults 1 2 LABEL=/opt /opt ext3 defaults 1 2 LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 LABEL=/usr /usr ext3 defaults 1 2 |
建立Quota记录文件
Quota会分析整个文件系统,将每个用户(群组)所拥有的档案总数与总容量写入文件系统顶层目录(本例/home目录)下的记录文件中(aquota.user和aquota.group),然后再比较记录文件中的限制值来规范用户或群组的磁盘用量。可以使用quotacheck命令扫描文件系统并建立Quota的记录文件,命令用法如下:
quotacheck[-avugfM] [/mount_point] 选项与参数: -a:扫描/etc/mtab内,所有支持quota的分区,加此参数后,/mount_point可不写 -u:针对用户扫描档案与目录的使用情况,会建立aquota.user记录文件 -g:针对群组扫描,会建立aquota.group -v:显示扫描过程的信息 -f:强制扫描文件系统,并写入新的quota配置文件(危险) -M:强制以读写的方式扫描文件系统,只有特殊情况下使用 |
本例中,使用命令:quotacheck –avug 命令即可。执行命令后,会在/home目录下产生aquota.user和aquota.group文件,这两个文件不是普通的文本文件,不可以手动添加或者修改。
Quota启动、关闭和限制值设定
配置文件生成后,就可以启动quota了。
启动quota的命令:quotaon
关闭quota的命令:quotaoff
quotaon [-avug] [/mount_point] 选项与参数: -u:针对使用者启动quota(aquota.user) -g:针对群组启动quota(aquota.group) -v:显示启动过程的相关信息 -a:根据/etc/mtab内的设定启动quota,加上-a不需要mount_point |
本例中使用quotaon –augv命令即可启动用户和群组的quota功能。第一次启动quota时需要使用此命令,以后/etc/rc.d/rc.sysinit脚本会自动执行此命令。
edquota:编辑账号/群组的限值与宽限时间
edquota的语法如下:
edquota [-u username] [-g groupname] edquota –t ##修改宽限时间 edquota –p 范本账号–u 新账号 选项与参数: -u:后面跟账号,进入quota编辑界面(vi)设定用户的限制值; -g:后面跟组名,设定组的限制值 -t:修改宽限时间 -p:复制范本。范本账号设定值会复制给新账号; |
比如,设置用户myquota1的限定值如下:
[root@localhost /]# edquota -u myquota1 Disk quotas for user myquota1 (uid 503): Filesystem blocks soft hard inodes soft hard /dev/sda6 123072 100000 150000 9 0 0 ~ |
如上图,修改用户myquota1的限定值,只需要修改blocks后面的soft和hard值即可。数值单位为KB,默认数值为0,表示没有限制的意思。
如果其他几个用户限定值一样,可以通过复制范本(myquota1范本)的方式设置:
edquota –p myquota1 –u myquota2 edquota –p myquota1 –u myquota3 edquota –p myquota1 –u myquota4 |
更改群组的限定值和宽限时间:
edquota –g myquotagrpedquota -t |
Quota限制值的报表
Quota的报表主要有两种模式,一是针对每个用户或群组的quota命令,另外一个是针对整个文件系统的repquota命令。
quota:单一用户或群组的quota报表
#quota [-uvs] [username] #quota [-gvs] [groupname] 选项与参数: -u:加username表示该用户的限制值,不加username表示当前用户限制值 -g:加groupname表示该群组的限制值 -v:显示每个用户在filesystem的限制值 -s:使用1024为倍数指定单位,显示M的单位 |
本例中,用户的限制值显示命令如下:
[root@localhost /]# quota -uvs myquota1 myquota2 Disk quotas for user myquota1 (uid 503): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 121M* 100000 147M 13days 9 0 0 Disk quotas for user myquota2 (uid 504): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 121M* 100000 147M 13days 9 0 0 [root@localhost /]# |
repquota:针对文件系统的限额做报表
#repquota –a [-vugs] 选项与参数: -a:直接查找/etc/mtab文件中有quota配置的文件系统,并报告结果; -v:输出更详细的filesystem的相关信息; -u:显示用户的quota限值(这是默认值); -g:显示出个别群组的quota限值; -s:以M,G为单位显示结果; |
测试与管理:
测试myquota1用户的限制值设定效果
在myquota1用户下,使用dd命令创建大文件,测试quota配置效果。
warnquota:对超过限额者发出警告信
warnquota通过/etc/warnquota.conf配置文件,找出磁盘用量超出soft值的用户,通过emai发送警告信息到用户的邮箱。warnquota默认需要手动执行。如果需要自动执行,可以在/etc/cron.daily目录下创建warnquota文件,添加内容:/usr/sbin/warnquota,并且修改权限:chmod 755 /etc/cron.daily/warnquota
setquota:直接通过命令修改限额(不用vi模式),适用于写入脚本中
用法:setquota [-u|-g] 名称block(soft) block(hard) inode(soft) inode(hard) 文件系统
比如:要设置myquota5用户的限额,命令: setquota -u myquota5 100000 150000 0 0 /home