必须启用内核级quota机制:一、在/etc/fstab中为分区添加usrquota选项并remount;二、用quotacheck -cugm生成aquota.user文件;三、运行quotaon启用;四、用setquota -u设软硬限(kb);五、以普通用户身份dd写入测试验证。

直接限制某个用户的磁盘配额,必须启用并配置内核级 quota 机制,不能靠 chown、chmod 或 ulimit 实现。配额生效的前提是:文件系统挂载时带 usrquota 选项、配额数据库已初始化、且 quotaon 已开启。跳过任一环节,edquota 设置的值都只是“写进去了”,但系统根本不会检查。
确认目标分区已启用 usrquota 挂载选项
这是最容易被跳过的前置条件。没加这个选项,后面所有操作都白做。
- 运行
mount | grep "$(df ~ | tail -1 | awk '{print $1}'),看输出里是否含usrquota(注意不是uquota,XFS 用后者) - 若没有,编辑
/etc/fstab,在对应行挂载参数末尾追加,usrquota,例如:/dev/sda3 /home ext4 defaults,usrquota 0 2 - 执行
sudo mount -o remount /home—— 这步必须做,否则改了fstab也不生效 - ext4 系统不支持运行时动态开启配额;XFS 则需用
uquota而非usrquota,命令和路径也不同
初始化配额数据库并启用服务
quotacheck 不是“检查”,而是“生成/更新”二进制配额文件;quotaon 才是真正打开开关的动作。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 先确保目标挂载点(如
/home)下没有残留的aquota.user文件,或已有则先备份:sudo mv /home/aquota.user /home/aquota.user.bak - 运行
sudo quotacheck -cugm /home:-c强制创建新文件,-u处理用户,-g处理组,-m忽略“已挂载”警告(避免报错中断) - 检查是否生成了
/home/aquota.user(权限应为-rw-------),没有则说明quotacheck失败,常见原因是 SELinux 阻止或目录不可写 - 运行
sudo quotaon /home启用;验证是否成功:sudo quotaon -p输出中对应分区状态应为enabled
用 setquota 直接设限,避开 edquota 的 vi 陷阱
edquota 默认调用 vi,新手常卡在不会保存退出;setquota 命令行方式更可控,适合脚本和批量设置。
- 单位全是 KB,别误用 MB:512 MB =
524288KB,1 GB =1048576KB - 命令格式:
sudo setquota -u username block-soft block-hard inode-soft inode-hard /mount/point;若不限制文件数,后两个值填0 - 例如给用户
alice设软限 512 MB、硬限 1 GB:sudo setquota -u alice 524288 1048576 0 0 /home - 宽限期默认 7 天,如需改为 1 天:
sudo edquota -t -u alice,然后修改Block grace period行的天数 -
setquota不会校验用户是否存在,输错用户名也不会报错,务必核对id username确认 UID 存在
验证是否真生效:别只信 quota -u 的输出
quota -u username 显示的是当前配额策略,不代表实时强制力。必须写入测试才能确认系统真的拦住了。
- 切到目标用户(如
su - alice),进入其主目录(cd ~) - 用
dd写一个超限文件:dd if=/dev/zero of=testfile bs=1M count=1200(假设硬限是 1024 MB) - 如果写入中途报
Disk quota exceeded,说明生效;若成功写完,说明配额未启用或挂载点不对 - 注意:root 用户不受配额限制,测试必须用普通用户身份;且写入路径必须在启用了
usrquota的挂载点内(比如/home/alice可以,/tmp不行) -
repquota -a可批量查看所有用户状态,但只显示已扫描过的用户;新用户首次写入前可能显示为0使用量,属正常
配额不是“设完就稳”,它依赖持续维护:每次扩容文件系统后要重跑 quotacheck,重启后要确认 quotaon 是否自动启动(部分发行版需手动加 /etc/rc.local),XFS 和 ext4 的命令与参数差异也容易混用——这些细节不盯住,配额就会悄无声息地失效。










