1.配额是针对分区的
当Linux根分区的磁盘空间耗尽时,Linux系统将无法再建立新的文件,从而出现服务程序崩溃、系统
无法启动等故障现象,为了避免此问题,我么可以设置磁盘配额功能,对用户在指定文件系统中使用
磁盘空间、文件数量进行限制,防止用户占用大量的磁盘空间,从而保持我们的系统存储空间可以稳
定使用。
2.磁盘配额术语介绍
磁盘配额对象式硬盘分区,并且要求Linux内核支持磁盘配额技术。
磁盘配额只对一般用户有效,对管理员来说是没有任何作用效果的。
软限制(soft):最低限制容量,可以被超过,但会有警告信息,超过的部分会保存到宽限时期到期。
硬限制(hard):不能被超过限制条件。
宽限时间:当用户使用的空间超过了软限制但还没达到硬限制,在这个宽限的时间到期前必须将超过的数据降低到软限制以下,(默认是7天),当宽限时间到期,系统将自动清除超过的数据。
quata # 用户查看配额
repquota # 超级用户查看所有人的配额
[root@server ~]# cat /proc/partitions
major minor #blocks name 253 0 10485760
vda 253 1 10484142
vda1 253 16 10485760
vdb 253 17 51200
vdb1 253 18 102400
vdb2 253 19 102400
vdb3 253 20 1
vdb4 253 21 102400
vdb5 11 0 3655680 sr0
[root@server ~]# mkfs.xfs /dev/vdb2 # 确保自己格式化的分区存在
[root@server ~]# mkdir /pub
[root@server ~]# ll -d /pub/
drwxr-xr-x 2 root root 6 Nov 5 06:14 /pub/
[root@server ~]# chmod 777 /pub/
[root@server ~]# ll -d /pub/
drwxrwxrwx 2 root root 6 Nov 5 06:14 /pub/
[root@server ~]# mount /dev/vdb2 /pub/ #将分区挂载到/pub目录下方便使用
[root@server ~]# mount # 可以看到/dev/vdb2是noquota类型的,表示不支持quota
[root@server ~]# umount /pub/
[root@server ~]# mount -o usrquota /dev/vdb2 /pub # 激活配额功能
[root@server pub]# ll -d /pub/ # 查看/pub权限发现有变化,这是因为/pub上挂载的是/dev/vdb2设备,查看到的权限也是设备的,并不是目录本身的权限
drwxr-xr-x 2 root root 6 Nov 5 06:14 /pub/
[root@server ~]# chmod 777 /pub/ # 改变目录的权限方便后面我们写入测试
[root@server pub]# ll -d /pub/
drwxrwxrwx 2 root root 6 Nov 5 06:14 /pub/
[root@server ~]# df
[root@server ~]# mount # usrquota表示支持quota
[root@server ~]# cd /pub/
[root@server pub]# edquota -u student # 设置用户student的配额
[student@server ~]$ dd if=/dev/zero of=/pub/file bs=1M count=10 # 写入10M的数据时候正常被写入了,没有任何报错
dd # 截取命令
if=inputfile # 输入文件
/dev/zero # 无限零设备
of=outputfile # 输出文件
bs=blocksize # 一个块的大小
count=20 # 块的个数
[student@server pub]$ du -sh file # 查看文件大小
10M file
[student@server pub]$ dd if=/dev/zero of=/pub/file bs=1M count=21
[student@server pub]$ du -sh file
20M file
注:写入数据大小小于设定配额的大小时,文件的大小就是自己写入的大小,大于设定的配额大小时,文件的大小是自己设定的最大配额的大小
[root@server pub]# vim /etc/fstab # 设置开机时自动激活额度
10 /dev/vdb2 /pub xfs defaults,usrquota 0 0
[student@server pub]$ quota # 普通用户查看具体配额情况
Disk quotas for user student (uid 1000):
Filesystem blocks quota limit grace files quota limit
grace /dev/vdb2 20480* 0 20480 2 0 0
[root@server pub]# quotaoff /pub/ # 关闭单个磁盘的磁盘配额
[root@server pub]# quotaoff -a # 关闭系统所有已经开启的配额
[root@server pub]# vim /etc/fstab # 删除/etc/fstab中的自动挂载即可