磁盘配额(quota):

限制某用户建立大文件或多文件把磁盘空间耗尽,把inode耗尽.

基于两种模式user和group级,常用的是user级.


应用:在文件服务器上做配额,磁盘配额只能给分区做。

LINUX磁盘配额:可以针对用户或者组(主组),针对容量(block)或者文件个数(inode)做配额

     软限制:可以超过,超过时会报警,过了一定期限(7)也会变成硬限制

     硬限制:不可超过

用户:usrquota

组:  grpquota



1.让分区支持配额quota

  临时挂载

#mount  -o remount,usrquota,grpquota  /data

  永久挂载

#vi   /etc/fstab              

   /dev/sdax  /data   ext3   defaults,usrquota,grpquota  0 0      

 #mount -o remount /data

 查看挂载情况:

#mount |grep /data

2.生成配额数据库文件

(1)首先关闭selinux:

 #setenforce 0

(2)配置磁盘配额

 #quotacheck  -cvmug /data          

 注意:如查没权限,则看权限和 setenforce 0 临时关闭 selinux)

(3)查看data目录,是否生成以下文件          

  #ll /data          

  aquota.group       aquota.user

 3.启用配额     (quotaoff /data 关闭磁盘配额)

   #quotaon -v /data


  # quotaon -vug/data--启用户和组的配额,并显示详细信息  

  # quotaon -vu /data

  # quotaon -vg /data

  # quota -v--启用所有分区的磁盘配额

  # quotaoff -vug /data--关闭配额



  4.设置用户/组的配额


  edquota -u cw01

blocks        soft            hard        inodes    soft  hard/dev/sda6                         0              10000      20000          0            20       30

所用块数量        大小硬限制          文件个数              个数硬限制

或使用命令设置配额        setquota -u cw01 10000 20000 0 0 /data

    setpuota -g cw

    edpuota -p   cw01 cw02         把cw01的配额复制给cw02

    +++++++++++++++++++++++++++++

    使用脚本设置配额:

  新建用户 for a in $(seq 1 10)

                do

                useradd -g upl upl$a

                echo "upl$a" |passwd --stdin upl$a >> /tmp/useradd_passwd.txt  2&>1

                chage -d 0 upl$a

                done

   _________________________

for i in $(seq 1 6)

do

setquota -u test$i 100000 200000 0 0 /data

done

cat /etc/passwd | tail -n6 | cut -d: -f1

#for a in $( cat /etc/passwd | tail -n6 | cut -d: -f1)

>do

>setquota -u  $a 100000 200000 0 0 /data

>done

++++++++++++++++++++++++++++++++++++++++++=


5.测试配额

# mkdir /data/test_quota

# chmod 777 /data/test_quota/


# su - test1

# dd if=/dev/zero of=/data/test_quota/a bs=1M count=5

# dd if=/dev/zero of=/data/test_quota/b bs=1M count=5

sda6: warning,user block quota exceeded--超过软限制


# dd if=/dev/zero of=/data/test_quota/c bs=1M count=5

# dd if=/dev/zero of=/data/test_quota/d bs=1M count=5

dd: writing `/data/test_quota/d': Disk quota exceeded --超过硬限制


测试文件个数:

[root@instructor ~]# setquota -u test3 10000 20000 5 6  /data

[root@instructor ~]# su test3

[test3@instructor root]$ cd

[test3@instructor ~]$ touch /data/test_quota/{aa,bb,cc,dd}

[test3@instructor ~]$ cd /data/test_quota/

[test3@instructor test_quota]$ touch aaa

[test3@instructor test_quota]$ touch aaaa

sda5: warning, user file quota exceeded.

[test3@instructor test_quota]$ touch aaaaa

sda5: write failed, user file limit reached.

touch: cannot touch `aaaaa': Disk quota exceeded


# repquota -uv /data--报告对应分区所有用户的配额使用情况

[root@d3 cron]# repquota -uv /data

*** Report for user quotas on device /dev/sda7

Block grace time: 7days; Inode grace time: 7days

                       Block limits                File limits

User            used    soft    hard  grace    used  soft  hard  grace

----------------------------------------------------------------------

root      --      24       0       0              3     0     0      

cw01      ++   15000   10000   15000  6days       8     4     8  6days


Statistics:

Total blocks: 7

Data blocks: 1

Entries: 2

Used average: 2.000000