linux基础学习之磁盘配额

 RHEL 的磁盘配额由linux 内核提供,可以对用户或者群组限定配额,但不能对uid 为0 的

root 权限账户使用,只能针对分区或者说文件系统,不能针对目录,对文件大小和数量rhel
提供两种磁盘配额的限制。
 
区块配额(block quota ):
区块配额代表以该用户或者群组在文件系统上拥有的文件的大小总和作为限制条件,单位为
KB,我们设置wing 在/home/文件系统上的区块配额为10240,那就表示在/home/文件系统上,
所有拥有者为wing 的文件大小总和必须小于或等于10240KB,也就是10MB。
 
索引节点配额(inode quota):
索引节点配额也拿过来限制用户或群组在文件系统上课使用多少个索引节点(index
node,inode ),也就是文件数量的总和。例如wing 在/home/文件系统上的索引节点配额为
100,代表wing 仅能再/home/文件系统上简历100 个(含)以下的文件。
如果同时定义区块配额与索引节点配额,将会以最先到达的限制为主。
 
软性限制(soft limit):
这是用户配额的警告上限,如果用户超出了软性限制,则rhel 会提醒用户已经超出配额了,
并允许在限期(grace period)内,继续使用文件系统。
 
硬性限制(hard limit ):
用户可使用的绝对上限,只要超过硬性限制,rhel 就会立即禁止用户使用任何磁盘空间。
 
限期:
假设用户超过软性限制,但尚未超过硬性限制,则只要在限期内,rhel 还是会允许用户继续使
用磁盘空间的,但一旦到了限期,即使仍未超过硬性限制,rhel 也会强制禁止用户使用文件
系统,rhel 会等到使用者把文件系统的使用率降低到软性限制后,才从新计算限期,默认的
限期为7 天。
 
若区块配额和节点配额同时做了配置,则谁先达到限制谁生效;
linux磁盘配额,大概需要4个步骤
1、确认内核支持
2、磁盘分区在挂载的时候支持quota
3、初始化或者更新磁盘配额数据库
4、指定磁盘配额规则
5、开启磁盘配额
 
 
一:确认内核支持
一般情况下,安装的系统都是支持磁盘配额的,除非重新编译过内核;确认内核是否支持quota的方法
[root@shaonian ~]# cat /boot/config-2.6.18-308.el5 |grep -i quota #config-2.6.18-308.el5为所使用内核的配置文件
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_QUOTA=y
CONFIG_QUOTACTL=y
 
二:磁盘分区在挂载的时候支持quota
在挂载的磁盘分区时候 ,使用-o usrquota,grpquota使挂载的分区具有用户磁盘配额属性和用户组磁盘配额属性;如果对于已经挂载的分区,remount重新挂载更新一下挂载分区的属性
[root@shaonian ~]# mount
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda5 on /data5 type ext3 (rw) #默认挂载的没有磁盘配额属性
/root/rh5.iso on /rh5 type iso9660 (rw,loop=/dev/loop0)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
 
[root@shaonian ~]# mount -o remount,usrquota,grpquota /dev/sda5 #重新挂载分区使其具有磁盘配额属性
[root@shaonian ~]# mount
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda5 on /data5 type ext3 (rw,usrquota,grpquota) #已经具有磁盘配额属性
/root/rh5.iso on /rh5 type iso9660 (rw,loop=/dev/loop0)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
三:初始化或者更新磁盘配额数据库
对于支持磁盘配额的分区来说,在分区的跟目录下应该有对应的数据库;新挂载的分区,没有这个数据库文件,需要初始化分区的磁盘配额数据库
[root@shaonian data5]# quotacheck -vug /dev/sda5
当在目录下看到有两个文件aquota.group和quota.usr就表示已经完成
quotacheck的几个参数说明
-v 显示详细信息
-u 用户磁盘配额数据
-g 用户组磁盘配额数据库
还有两个参数
-a 对所有支持磁盘配额的分区初始化数据库;如果加此参数,这后面的分区不用指定
-c 重新创建磁盘配额数据库(之前存在的磁盘配额数据库会丢失,意思就是之前做过磁盘配额,指定的规则什么的都会被清空)
 
四:指定磁盘配额规则
需求1:对用户名为shaoniao的账户,在此分区内磁盘限额为告警阀值8M,限额10M
[root@shaonian data5]# edquota -u shaonian
Disk quotas for user shaonian (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda5 0 8000 10000 0 0 0
wq保存退出
五:开启磁盘配额
quotaon -vug /data5
参数说明:
-v 现实详细信息
-u 开启用户磁盘配额
-g 开启用户组磁盘配额
还有两个参数
-a 开启所有支持用户磁盘配额的分区的磁盘配额,如果加此参数,这后面的分区不用指定
-p 单独使用,用来查看分区的磁盘配额有没有开启
六:关闭磁盘配额功能
quotaoff -vug /data5
用法与quotaon一样
六:需求1验证
 
往/data5里写一个9M的文件
[root@shaonian data5]# su - shaonian
[shaonian@shaonian data5]$ dd if=/dev/zero of=aaa bs=1M count=9
sda5: warning, user block quota exceeded. #这里出现了警告
9+0 records in
9+0 records out
9437184 bytes (9.4 MB) copied, 0.0534718 seconds, 176 MB/s
再往里写一个3M的文件
 
[shaonian@shaonian data5]$ dd if=/dev/zero of=bbb bs=1M count=3
sda5: write failed, user block limit reached. #
sda5: write failed, user block limit reached. #
dd: 写入 “bbb”: 超出磁盘限额 #提示已经超出磁盘限额
1+0 records in
0+0 records out
757760 bytes (758 kB) copied, 0.0126434 seconds, 59.9 MB/s
七:需求2及验证
需求2:对于使用磁盘空间大小没有限制,但是最多只能建立15个文件夹,告警阀值为10
1、关闭磁盘配额
quotaoff -vug /data5
rm -rf aaa bbb #删除之前的文件
2、配置磁盘配额规则
[root@shaonian ~]# edquota -u shaonian
 
Disk quotas for user shaonian (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda5 0 0 0 0 10 15
3、开启磁盘配额
quotaon -vug /data5
4、验证
写一个脚本,建立11个文件夹(脚本放在用户的家目录)
#!/bin/bash
for ((i=1;i<=10;i++))
do
mkdir /data5/dir$i
echo "Add /data5/dir$i success"
done
 
执行以后出现警告
[shaonian@shaonian data5]$ ~/mkd.sh
Add dir1 success
Add dir2 success
Add dir3 success
Add dir4 success
Add dir5 success
Add dir6 success
Add dir7 success
Add dir8 success
Add dir9 success
Add dir10 success
sda5: warning, user file quota exceeded. #出现警告
 
Add dir11 success
执行第二个脚本如下
#!/bin/bash
for ((i=11;i<=17;i++))
do
mkdir /data5/dir$i
echo "Add /data5/dir$i success"
done
 
[shaonian@shaonian ~]$ ./mkd2.sh
Add /data5/dir11 success
Add /data5/dir12 success
Add /data5/dir13 success
Add /data5/dir14 success
Add /data5/dir15 success
sda5: write failed, user file limit reached.
mkdir: 无法创建目录 “/data5/dir16”: 超出磁盘限额 #超出磁盘限额,无法新建目录
Add /data5/dir16 success
mkdir: 无法创建目录 “/data5/dir17”: 超出磁盘限额
Add /data5/dir17 success
 
 
 
 
 
对于用户组的磁盘配额,用法一样
其他两个配置:
一:修改限期:
[root@shaonian ~]# edquota -t
 
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda5 7days 7days
~
 
二:复制usr1的限额策略到use2
 
 
edquota -p usr1 usr2 

你可能感兴趣的:(磁盘配额)