磁盘配额(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