Q1、什么是quota?有什么作用?
简单来说就是:
磁盘配额是用来限制用户和用户组的磁盘使用额度,可以理解为限制该用户、用户组在该分区下使用的文件大小、文件数量。而这个操作就需要quota来实现。
Q2、限制的类型
- 限制 inode 用量:可以管理使用者可以创建的“文件数量”;
- 限制 block 用量:管理使用者磁盘容量的限制,较常见为这种方式。
柔性劝导与硬性规定 (soft/hard):
不管是 inode/block ,限制值都有两个,分别是 soft 与hard。 通常 hard 限制值要比 soft 还要高。举例来说,若限制项目为 block ,可以限制 hard为 500MBytes 而 soft 为 400MBytes。这两个限值的意义为:
- hard:表示使用者的用量绝对不会超过这个限制值,以上面的设置为例, 使用者所能使用的磁盘容量绝对不会超过 500MBytes ,若超过这个值则系统会锁住该用户的磁盘使用权;
- soft:表示使用者在低于 soft 限值时 (此例中为 400MBytes),可以正常使用磁盘,但若超过 soft 且低于 hard 的限值 (介于 400~500MBytes 之间时),每次使用者登陆系统时,系统会主动发出磁盘即将爆满的警告讯息, 且会给予一个宽限时间 (grace time)。不过,若使用者在宽限时间倒数期间就将容量再次降低于 soft 限值之下, 则宽限时间会停止。
- 会倒数计时的宽限时间 (grace time):
刚刚上面就谈到宽限时间了!这个宽限时间只有在使用者的磁盘用量介于 soft 到 hard 之间时,才会出现且会倒数的一个咚咚! 由于达到 hard 限值时,使用者的磁盘使用权可能会被锁住。为了担心使用者没有注意到这个磁盘配额的问题, 因此设计了 soft 。当你的磁盘用量即将到达 hard 且超过 soft 时,系统会给予警告,但也会给一段时间让使用者自行管理磁盘。
以上面设置的例子来说,假设你的容量高达 450MBytes 了,那七天的宽限时间就会开始倒数, 若七天内你都不进行任何删除文件的动作来替你的磁盘用量瘦身, 那么七天后你的磁盘最大用量将变成 400MBytes (那个 soft 的限制值),此时你的磁盘使用权就会被锁住而无法新增文件了。
注意:ETX文件系统只有ETX4支持配额限额操作
一、ext4的磁盘配额设置
测试运行环境CentOS 7.9虚拟机
配置步骤:
1、 关闭selinux
systemctl stop sellinux
systemctl disable sellinux
sestatus -v //查看selinux状态在这里插入代码片
注意:设置完成后需要重启生效
2、 创建一个磁盘分区
以/dev/sdc为例,创建/dev/sdc1分区(如果将现有的磁盘分区进行配额限额操作,跳过此步骤,直接执行4)
[root@localhost ~]# fdisk /dev/sdc
3、 格式化磁盘分区
(如果将现有的磁盘分区进行配额限额操作,跳过此步骤,直接执行4)
[root@localhost ~]# mkfs.ext4 /dev/sdc1
4、 修改/etc/fstab文件,对所选文件系统进行激活配额选项
[root@localhost ~]# vim /etc/fstab
进入编辑器后在末尾添加如下所示代码○1,或者在已有的文件系统(如/home)defaults,后面添加usrquota,grpquota.○2
5、 刷新挂载信息
[root@localhost ~]# mount -av
6、 查看挂载信息
[root@localhost ~]# mount | grep “目录“
7、 开启quota功能
由于ext4文件系统,quota功能默认是不开启的,需要创建磁盘配额的配置文件(aquota.user 和 aquota.group),才可以去启动quota功能,使用 quotacheck 命令
-v:显示扫描过程
-u:针对扫描用户的情况建立aquota.user
-g:针对扫描组的情况建立aquota.group
[root@localhost ~]# quotacheck -ug ##u表示创建用户配额 ,g表示创建用户组额
8、 创建新用户
9、 给用户配置磁盘配额限额
[root@localhost ~]# edquota -u user03
10、让用户配额和主配额生效 quotaon 选项分区名
[root@localhost ~]# quotaon -ug /home/utest
11、进入测试
[root@localhost ~]# su – user03
[user03@localhost ~] $ dd if=/dev/zero of=123.img bs=1M count=200
• dd:复制
• if=/dev/zero:从zero中拿取容量,即将指定文件中写入“0”
• of=文件路径:将的容量写入设置配额磁盘下的文件中
• bs=N:每次写多少容量,默认单位为字节,可带单位K,M
• count=N:一共写入几次
12、再次回到root用户模式,edquota -u user 查看目前用量
[root@localhost ~]# edquota -u user
----配置结束
二、xfs的磁盘配额设置
测试运行环境Suse 15 SP3虚拟机
本次以/home目录这个xfs文件系统为例进行操作
1、 创建用户
useradd -d /home/user03 -m user03
2、 确定目标目录(本次/home)文件系统格式
(这里对已有的文件系统进行操作,不需要在创建磁盘分区和格式化了,如有需要请参考ETX4磁盘配额限额章节相关操作)
3、 进入挂载目录。设置自动挂载
vim /etc/fstab
4、 刷新挂载
可以看到/home目录已经支持quota功能
5、 列出目前系统的各的文件系统,以及文件系统的 quota 挂载参数支持
xfs_quota -x -c "指令" [挂载点]
选项与参数:
-x :专家模式,后续才能够加入 -c 的指令参数喔!
-c :后面加的就是指令,这个小节我们先来谈谈数据回报的指令
指令:
print :单纯的列出目前主机内的文件系统参数等数据
df :与原本的 df 一样的功能,可以加上 -b (block) -i (inode) -h (加上单位) 等
report:列出目前的 quota 项目,有 -ugr (user/group/project) 及 -bi 等数据
state :说明目前支持 quota 的文件系统的信息,有没有起动相关项目等
说明:
User quota state on /home (/dev/mapper/centos-home)
Accounting: ON # 有启用计算功能
Enforcement: ON # 有实际 quota 管制的功能
Inode: #1568 (4 blocks, 4 extents) # 上面四行说明的是有启动 user 的限制能力
Group quota state on /home (/dev/mapper/centos-home)
Accounting: ON
Enforcement: ON
Inode: #1569 (5 blocks, 5 extents) # 上面四行说明的是有启动 group 的限制能力
Project quota state on /home (/dev/mapper/centos-home)
Accounting: OFF
Enforcement: OFF
Inode: #1569 (5 blocks, 5 extents) # 上面四行说明的是 project 并未支持
Blocks grace time: [7 days 00:00:30] # 下面则是 grace time 的项目
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
6、 设置配额限额
xfs_quota -x -c “limit [-ug] b[soft|hard]=N i[soft|hard]=N name”
xfs_quota -x -c “timer [-ug] [-bir] Ndays”
选项与参数:
limit :实际限制的项目,可以针对 user/group 来限制,限制的项目有
bsoft/bhard : block 的 soft/hard 限制值,可以加单位
isoft/ihard : inode 的 soft/hard 限制值
name : 就是用户/群组的名称啊!
timer :用来设置 grace time 的项目喔,也是可以针对 user/group 以及 block/inode 设置
7、 设置grace time
xfs_quota -x -c “timer -ug -b 14days” /home
xfs_quota -x -c “state” /home
8、 进入测试
su – user04
dd if=/dev/zero of=123.img bs=1M count=200
超出最大限额报错
9、 返回root查看容量使用情况
xfs_quota -x -c “report -ubh” /home
----配置结束