1、  Quota的概念:磁盘配额,目的是限定用户在磁盘分区上所能使用的空间大小。

2、  Quota的一般用途:

  • 针对WWW Server,限制没人的网页空间容量

  • 针对Mail Server,每个人的邮件空间限制

  • 针对file Server,限制每个人可用的网络硬盘空间

     

    除了以上网络服务器限制的情况,还可以针对以下情况进行限制:

  • 限制某一群组所能使用的最大磁盘配额

  • 针对群组内的用户进行再次限制

  • link的方式进行磁盘配额限制,针对某些无法做Quota的目录,可以link到其他目录

3、  Quota的使用限制

  • 仅能针对整个filesystem,即只能对整个分区做限制,如果一个分区配置了Quota,则整个分区下的目录都会有影响

  • Linux内核必须支持QuotaCentos 5.X的版本预设支持Quota,如果自行编译内核,注意要把Quota功能编译进去

  • Quota的记录文件:Kernel 2.6.XX 的核心版本使用的默认档案是aquota.useraquota.group

  • 只对一般使用者有效,对root用户无法配置Quota

4、  Quota的规范设定项目:

  • 容量限制或者档案数量限制(blockinode:

  • 限制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配置范例:

  • 目的与账号:五个账号为一组,分别为:myquota1myquota2myquota3myquota4myquota5,密码均为password,这五个账号所属的初始群组为myquotagrp,账号其他属性默认。

  • 账号的磁盘容量限制:五个用户的磁盘使用量hard值设定为150MBsoft值设定为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表示支持用户quotagrpquota表示支持群组quota

使用如下命令可以显示结果:

[root@localhost /]# mount | grep home

/dev/sda6 on /home type ext3 (rw,usrquota,grpquota)

[root@localhost /]# 

  • 文件系统永久支持Quota,需要把quota功能写入到fstab配置文件中:

fstab文件中/home行,defaults后面添加usrquotagrpquota,中间使用逗号隔开

[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.useraquota.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.useraquota.group文件,这两个文件不是普通的文本文件,不可以手动添加或者修改。


  • Quota启动、关闭和限制值设定

配置文件生成后,就可以启动quota了。

  • 启动quota的命令:quotaon

  • 关闭quota的命令:quotaoff

quotaon [-avug] [/mount_point]

选项与参数:

-u:针对使用者启动quotaaquota.user

-g:针对群组启动quotaaquota.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后面的softhard值即可。数值单位为KB,默认数值为0,表示没有限制的意思。

如果其他几个用户限定值一样,可以通过复制范本(myquota1范本)的方式设置:

edquota –p myquota1 –u myquota2

edquota –p myquota1 –u myquota3

edquota –p myquota1 –u myquota4

更改群组的限定值和宽限时间:

edquota –g myquotagrp
edquota -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