1.磁盘为什么要进行配额----因为磁盘内的资源不是无限的,不给磁盘做限额就会导致一些不平衡的事情发生,所以我们要做配额
2.磁盘的限制对象
磁盘限制可以对系统中的普通用户和用户组生效,一般也只会针对这两个。
注意:磁盘限制对root用户是无效的,只有root才可以对其他用户进行限额
3.所应用的场景
一般多适用于网络存储空间有限的比如:网盘、云盘、邮件服务器、公司的共享服务器等场景
4.那磁盘配额能限制什么呢
inode----限制用户或用户组创建文件的个数
block----限制用户或用户组能够使用的磁盘空间的大小
补充:限制分为硬限制和软限制还有宽限时间
硬限制:是不可逾越的限制,如果超过这个限制系统会告诉你不能超过该限制,并且会把超过限制的部分给删除掉,无法创建
软限制:你是可以超过这个限制的,并不影响使用,但是超过这个限制系统就会给你发送警告信息了
宽限时间:当你超过软限制并没有超过硬限制,就会启动这个机制,一旦启动这个机制,你就会在规定时间内叫你删除超过软限制的部分,如果在规定时间内没有执行操作,那么软限制就会变成硬限制
介绍完磁盘配额理论部分,我们来看看实际操作怎么做
首先先检查你的内核版本支不支持这个操作
在/boot/目录下有很多文件或目录,找到以conf开头的config-3.10.0-693.el7.x86_64 这个文件
执行grep -i quota /boot/config-3.10.0-693.el7.x86_64
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_XFS_QUOTA=y
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y
回显这样就是差不多可以
不同的文件系统磁盘配额的设置方式大致一样,但是还是有一点差别以xfs和ext4举例
xfs文件系统格式化
格式 :xfs_quota -x -c "limit -u/g bsoft=N bhard=N usrname/grpname" quota path
对用户设置磁盘配额
#首先把磁盘挂载起来,选中文件系统为xfs xfs文件系统支持磁盘配额的属性user)quota g(组group)quota
mkfs.xfs /dev/sdb1
#查看文件系统是否支持磁盘配额 举例我们磁盘挂载到/data目录下
mount | grep /data(挂载的文件夹或者磁盘)
/dev/sdb1 on /data type xfs (rw,relatime,seclabel,attr2,inode64,noquota) 可以看到没有我所说的两个属性,这时我们就添加这两个属性
mount -o remount,uquota,gquota /dev/sdb1 /data
-o 是选项,可以添加属性挂载、remount 重新挂载
#添加完成后我们可以重新查看一下属性
mount | grep /data
/dev/sdb1 on /data type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota) 可以看到已经添加上去了
#我们可以设置开机自挂载
vim /etc/fstab
/dev/sdb1 /data xfs defaults,uquota,gquota 0 0
#创建用户来测试看有没有被限制
useradd p1
useradd p2
修改用户密码 这里用非交互式的
echo 1 | passwd --stdin p1
echo 1 | passwd --stdin p2
#到这我们就可以看看用户磁盘配额状态
xfs_quota -x -c 'report -uibh' /data
User quota on /data (/dev/sdc1)
Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 0 0 0 00 [------] 3 0 0 00 [------]
设置对用户的限额
xfs_quota -x -c 'limit -u isoft=7 ihard=10 quota1 ' /data
isoft 设置inode的软限制
ihard 设置inode的硬限制
做完这些我们可以去测试
再给测试文件目录添加文件时注意普通用户是否有写入权限,不然是测试不了的
chmod 777 /data
切换用户进行测试
su - p1
[quota1@client ~]$ cd /data # 一定要切换到做了配额的目录下在操作
[quota1@client data]$ touch test{1..8}.txt
[quota1@client data]$ touch test{9,10}.txt
[quota1@client data]$ touch test11.txt
touch: 无法创建"test11.txt": 超出磁盘限额
组的跟用户相差不多,就是要把用户放在同一组,设置配额就把u改成g
ext4的配额
首先先下载配额工具
yum -y install quota
前几步上xfs一样,查看有没有属性没有就添加进去
#到不一样的地方了
ext4配额是需要生成quota数据库的,就用我们刚刚下载的工具
quotacheck -acgu
-a 所有分区(已支持配额)
-c 创建
-g 组
-u 用户
#启动磁盘配额
quotaon -avug
如果你要查看磁盘配额情况就使用下面命令查看
quota -uvs user1
修改宽限时间
quota常用命令
1) 临时禁用quota
xfs_quota -x -c "disable -up" /data
xfs_quota -x -c "state" /data 检查quota状态
2) 临时启用quota
xfs_quota -x -c "enable -up" /data
3) 完全关闭quota
xfs_quota -x -c "off -up" /data
4) 删除quota限制(无法恢复)
xfs_quota -x -c "off -up" /data
xfs_quota -x -c "remove -p" /data
xfs_quota -x -c "limit -u isoft=0 ihard=0 quota1" /data 将配额值设为0(无配额限制)