
Red Hat Linux磁盘配额软限制警告实验
XFS 文件系统不支持实时配额警告(这个在 xfs_quota
的帮助手册里面的 BUGS
有说到),要想实现XFS文件系统的配额警告,可以通过 warnquota
发送邮件实现,下文会细说。ext4 则可以实时进行配额警告。
这里所说的配额警告是指用户超过软限制时,向用户发送警告
说明:本文中用于实验的用户的用户名为 user31
ext4文件系统配额警告
这并不是本文主要实验的方向,只是为了和 XFS
文件系统的配额警告进行对比
实验环境准备
在本部分,实验的分区为 /dev/sdb2 ,挂载在 /test2 下
将分区格式化为 ext4
文件系统
1 | mkfs.ext4 /dev/sdb2 |
新建一个目录 /test2
用于挂载
1 | mkdir /test2 |
开始实验
挂载,并同时开启配额
1 | mount -o quota /dev/sdb2 /test2 |
查看挂载结果
1 | mount | grep "/dev/sdb2" |
结果:
1 | /dev/sdb2 on /test2 type ext4 (rw,relatime,seclabel,quota,usrquota) |
括号里面有 usrquota
即可
为实验用户 user31 分配配额
1 | edquota user31 |
运行这个命令后,会打开一个编辑器,内容如下:
1 | Disk quotas for user user31 (uid 1002): |
将里面的 第二个 soft
和 hard
分别改为 5 和 7 ,这一步是将文件个数软限制设置为5,硬限制设置为7:
1 | Disk quotas for user user31 (uid 1002): |
然后保存退出
接着登录实验用户 user31
,然后进入目录/test2
1 | su user31 |
此时新建5个文件
1 | touch {1,2,3,4,5} |
这个时候还没超过软限制,没有警告
再新建一个文件
1 | touch 6 |
此时实验用户 user31
创建的文件个数已经超过软限制个数,所以在上面这条命令运行完后会弹出警告信息
1 | sdb2: warning, user file quota exceeded. |
XFS文件系统配额警告
实验环境准备
在本部分,实验的分区为 /dev/sdb1 ,挂载在 /test31 下
将分区格式化为 XFS
文件系统
1 | mkfs.xfs /dev/sdb1 |
新建一个目录 /test31
用于挂载
1 | mkdir /test31 |
开始实验
挂载,并同时开启配额
1 | mount -o uquota /dev/sdb1 /test31 |
查看挂载结果
1 | mount | grep "/dev/sdb1" |
结果:
1 | /dev/sdb1 on /test31 type xfs (rw,relatime,seclabel,attr2,inode64,usrquota) |
括号里面有 usrquota
即可
为实验用户 user31
分配配额,将其文件数的软限制设置为5,硬限制设置为7
1 | xfs_quota -x -c 'limit -u isoft=5 ihard=7 user31' /test31 |
查看结果
1 | xfs_quota -x -c 'report -i /test31' |
运行完后会显示:
1 | User quota on /test31 (/dev/sdb1) |
实验用户对应的 Soft
和 Hard
分别为 5
和 7
就成功了
接着登录实验用户 user31
,然后进入目录/test31
1 | su user31 |
新建五个文件
1 | touch {1,2,3,4,5} |
然后再新建一个
1 | touch 6 |
此时已经超过了软限制设置的个数,可以通过以下命令查看
1 | xfs_quota -x -c 'report -i /test31' |
1 | User quota on /test31 (/dev/sdb1) |
Grace
不再是虚线了,就证明已经超越了软限制设置的个数,并且进入了宽限时期的倒计时
但是,在新建第六个文件后,实验用户 user31
并没有收到任何警告信息
我们通过 man
命令查看 xfs_quota
的帮助手册
1 | man xfs_quota |
往下滑,找到 BUGS
部分
里面是这样写到的:
BUGS
Quota support for filesystems with realtime subvolumes is not yet implemented, nor is
the quota warning mechanism (the Linux warnquota(8) tool can be used to provide simi‐
lar functionality on that platform).
所以,XFS文件系统是不支持实时配额警告的,但是里面有提到可以使用 warnquota
实现警告,下面来尝试使用 warnquota
使用 warnquota 通过邮件进行配额警告
warnquota 命令需要安装包quota-warnquota
,而且使用 warnquota 需要 mailx
和 sendmail
,如果上面所提到的都没有安装的话,需要先使用 yum
安装一下
1 | yum install -y mailx sendmail quota-warnquota |
编辑mailx的配置文件
如果之前没有配置过 mailx ,请先配置好 mailx
1 | vim /etc/mail.rc |
默认配置不需要改,在末尾添加发送邮件的配置即可,以QQ邮箱为例:
1 | set [email protected] |
参数说明如下:
set from:发送邮件后显示的邮件发送方
set smtp:各大厂商的邮件服务器
set smtp-auth-user:发件人邮箱
set smtp-auth-password:发件邮箱的授权码,而不是你的密码,这里需要注意
set smtp-auth:动作为登录
关于授权码的获取,以QQ邮箱为例:
打开电脑端QQ邮箱官网,然后登录你的账号,接着点击 设置
-> 账号
下滑找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
接着开启这个服务,点击 继续获取授权码
即可获取到授权码
配置好后,发送一封邮件测试
命令格式
1 | echo "邮件内容" | mail -s "邮件主题" 要发送的邮箱 |
例如
1 | echo "test" | mail -s "mailx-test" xxxx@xxx |
查看邮箱收件箱:
有这封邮件就是成功了
配置sendmail
编辑 /etc/aliases
文件
1 | vim /etc/aliases |
在最后一行加上
1 | user31: xxx@xxx |
为实验用户 user31
指定邮箱
配置 warnquota
编辑 /etc/warnquota.conf
里面的具体参数说明可以参考下方链接:
warnquota.conf: configuration for warnquota - Linux Manuals (5) (systutorials.com)
这里只修改几个参数
1 | FROM = "xxx@xxx" |
说明:
将 FROM,SUPPROT,SIGNATURE 都改为了上面 mailx
配置的 发件邮箱
在 CC_TO
,PHONE
前面加了 #
号将其 注释
配置好后,直接运行 warnquota
命令
1 | warnquota |
等待命令运行完毕,就可以在上面为实验用户 user31
指定的邮箱中收到一封邮件
由于在前面 ext4 的实验中,并没有删除超出的文件,也没有指定 warnquota
检查的文件系统,所以 /dev/sdb1
(XFS) 和 /dev/sdb2
(ext4)的超额情况一起通过邮件发送过来了。
关于 warnquota
命令的更多参数可以参考下方链接:
warnquota:向超过配额的用户发送邮件 - Linux 手册 (8) (systutorials.com)
值得注意的是,warnquota
需要通过管理员 主动执行,所以它并不是在用户一超过软限制时就发送邮件提醒。于是,它通常通过 cron
配置定时任务来运行。