目的,限制用户磁盘空间占用,例如给用户限制100-150G容量
1.安装磁盘配额工具
sudo apt-get install -y quota
2.备份并修改/etc/fstab文件,使能支持quota
sudo cp /etc/fstab /etc/fstab.bak
vim /etc/fstab #写入如下,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1
UUID=911f7120-b32c-49f2-a6e3-d71880c10ef0 / ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1 0 0
#保存退出
#重新挂载,你是应用在home目录就重新挂载home,其他的一样,因为这里磁盘空间是挂在在home下的,那么我就在fstab中写在home下,这里的uuid就是我的home的挂载uuiid
sudo mount -o remount /home
3生成或更新相关的配额文件。这些文件用于跟踪用户的磁盘使用情况,并实施磁盘配额限制
sudo quotacheck -cugm /home
ls -l /home 查看home下,已经生成了两个文件 [aquota.user 和 aquota.group]
4. 设置空间配额
sudo setquota -u admin 104857600 157286400 0 0 /home # 100 -150GB 单位是KB,自己可以换算
复制现有用户 lison 的磁盘配额设置给新用户,这样比较方便
sudo edquota -p lison -u 用户名
5.查看配额
sudo repquota /home # 查看所有用户配额
sudo quota -uvs admin # 查看单个用户配额,人类可读
============================================
6.立即生效(无需重启)
sudo quotaon -u /dev/sda1
测试用户操作(以admin用户身份)
touch test_file # 应能成功创建
dd if=/dev/zero of=test.img bs=1G count=200 # 应在150GB时被阻断
常用的硬盘配额命令主要有:
quotaon,quotaoff——启动或关闭一个分区的配额服务
quotaon -u /home # 启动
quotaoff -u /home # 关闭
可以通过更改/etc/fstab文件的条目来启动和关闭硬盘配额服务
quota -v(用户可以查询自己的硬盘配额情况)
查看所有超限用户
sudo repquota -a | grep +
方案A:提高硬限制(临时放宽)
sudo setquota -u zack 104857600 200000000 0 0 /dev/sda1
方案B:宽限时间延长(争取处理时间)
sudo setquota -T 14 -u zack /dev/sda1 # 14天宽限期
方案C:豁免特定用户(紧急情况下)
sudo setquota -u zack 0 0 0 0 /dev/sda1 # 完全解除限制
1. 通知用户清理建议
echo “请立即清理超出150GB的数据,否则无法保存新文件” | write zack
2. 提供清理工具
sudo -u zack ncdu /home/zack # 交互式磁盘分析工具
3. 设置自动清理(可选)
find /home/zack -type f -user zack -size +1G -mtime +30 -exec rm -f {} ;
#磁盘配额的宽限期设置详解
#在磁盘配额系统中,宽限期(grace period)是指用户超过软限制(soft limit)后还能继续使用资源的缓冲时间
设置块配额宽限期为14天,文件数配额宽限期为14天,默认的是7天(方法1:全局设置(影响所有用户))
sudo setquota -t 1209600 1209600 /dev/sda1
参数解释:
1209600 = 14天 × 24小时 × 60分钟 × 60秒 = 14天的秒数
只设置zack用户的宽限期(方法2:针对特定用户设置)
sudo setquota -T -u zack 14d 14d /dev/sda1
参数解释:
14d = 14天(支持单位:d=天, h=小时, m=分钟, s=秒)