磁盘配额
磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制的一个功能。他可以通过用户和组进行配额管理的,对用户管理是基于属主来判断的,针对组是基于文件属组来判断的。
实现步骤
- 加载磁盘配额功能:
磁盘配额功能在有的系统上不是默认开启的,需要到/etc/fstab下增加挂载选项去加载,内容如下:
UUID=96b500b7-133d-4a57-8f4a-1149bcd6f302 /app ext4 defaults,usrquota,grpquota 0 0 #增加defaults后的两个选项,usrquota表示启用用户配额,grpquota表示启用组配额
然后mount -o remount /app
重新挂载,并查看,如下:
[root@feng ~]# mount -o remount /app
[root@feng ~]# mount | grep "/app"
/dev/sdb1 on /app type ext4 (rw,usrquota,grpquota)
- 生成磁盘配额数据库
用quotacheck -cug命令来生成数据库,选项c为创建,u为用户配额,g为组配额:
[root@feng app]# quotacheck -cug /app #生成数据库
[root@feng app]# ls
aquota.group aquota.user lost+found #aquota.user为用户配额数据库,aquotagroup为组配额数据库
注意:如果这一步提示权限拒绝了,问题可能为selinux拒绝,尝试修改selinux策略。
- 开启配额功能
用quotaon命令来开启
[root@feng app]# quotaon -p /app #查看quota状态
group quota on /app (/dev/sdb1) is off
user quota on /app (/dev/sdb1) is off
[root@feng app]# quotaon /app #开启
[root@feng app]# quotaon -p /app
group quota on /app (/dev/sdb1) is on #成功
user quota on /app (/dev/sdb1) is on
- 设置磁盘配额
方法有两种:交互式界面的edquota命令和非交互式命令seetquota.
edquota:用edquota feng
进入feng用户的配额交互界面
Disk quotas for user feng (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 102400 204800 0 0 0 0
blocks显示的是已经使用了多少大小了,按照块表示,一个块1024,和分区创建时候的块无关
soft表示软上限,可以超过,不过达到时间期限就不能超过了,这里给feng用户的软上限为100M
hard表示硬上限,这里给的为200M
inodes表示已经使用的节点号
后边的soft和hard表示文件个数的软和硬上限
保存退出,就成功了,用repquota
命令可以查看:
[root@feng app]# repquota -vs /app
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 101M 0 0 3 0 0
feng -- 0 100M 200M 0 0 0
用setquota命令:
[root@feng app]# setquota -u test1 102400 204800 0 0 /app #设置test1用户配额
[root@feng app]# repquota -vs /app
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 101M 0 0 3 0 0
feng -- 0 100M 200M 0 0 0
test1 -- 0 100M 200M 0 0 0 #成功
验证
切换到feng用户环境,并创建文件验证,如下:
[root@feng app]# su - feng #切换到feng用户下
[feng@feng ~]$ cd /app #到设置配额的/app下
[feng@feng app]$ dd if=/dev/zero of=file1 bs=1M count=201 #创建大小为201M的文件
sdb1: warning, user block quota exceeded. #提示使用超过配额
sdb1: write failed, user block limit reached.
dd: 正在写入"file1": 超出磁盘限额
...
[feng@feng app]$ ll -h file1 #创建出来文件为正好200M
-rw-rw-r--. 1 feng feng 200M 6月 18 10:57 file1
配额成功。