Linux磁盘配额可不是拿来就能用的,得严格按照顺序来完成四步操作:首先是启用挂载选项(ext4要加usrquota,XFS则加uquota),接着运行quotacheck -cugm生成aquota.user,然后执行quotaon启用配额,最后通过edquota或setquota来设置KB级的软硬限制。

确认目标分区已启用 usrquota 挂载选项
配额不是全局开关,而是绑定在具体挂载点(如 /home)上的。如果 mount | grep /home 输出里没有 usrquota,后续所有操作都无效。
- 编辑
/etc/fstab,找到对应行(例如/dev/sdb1 /home ext4 defaults),在第4列(挂载选项)末尾追加,usrquota,变成defaults,usrquota - 执行
sudo mount -o remount /home生效;注意:ext4 不支持用-o quota临时挂载,必须写进fstab并 remount - XFS 文件系统要用
,uquota,写成usrquota会被静默忽略
quotacheck -cugm /path 必须成功生成 aquota.user
这个命令不是“检查用量”,而是扫描文件系统并生成配额数据库文件。没它,edquota 和 setquota 都只是改了个寂寞。
- 运行后检查
ls -lh /home/aquota.user—— 文件大小必须 >0 字节;若为 0 或不存在,说明扫描失败 - 常见失败原因:SELinux 阻止写入(临时关掉:
sudo setenforce 0)、权限不足、路径输错(必须是挂载点根目录,不是用户家目录) - 不要手动
touch或chmod这两个文件——它们由系统自动创建,属主为root、权限为600
用 edquota -u username 设置 KB 级软硬限制
单位是 KB,不是 MB,填错会导致限制过早触发(比如填 50 就是 50KB,不是 50MB)。
- 执行
sudo edquota -u alice后,在 vi 编辑器中修改第一行(blocks 行)的前两列:soft和hard值 - 示例:设 500MB 软限 + 512MB 硬限 → 填
512000 524288(因为 1MB = 1024KB) - 第二行(inodes)控制文件数量,一般可留默认或设为
0 0(不限制) - 保存退出后不会立即生效,必须确保
quotaon已启用(见下一步)
quotaon /path 是真正打开配额的开关
很多人以为 edquota 一保存就生效,其实没开 quotaon,quota -u username 永远显示 none。
- 启用:
sudo quotaon /home;验证:sudo quotaon -p /home应看到user quota on /home ... is on - 若仍显示
none,优先检查mount输出是否含usrquota、aquota.user是否存在且非空、quotaon -p是否报错 - 批量设置可用
sudo setquota -u alice 512000 524288 0 0 /home,但要注意单位和参数顺序,输错会直接生效且难回溯
aquota.user 存在且有效、quotaon 已启用。任意一个环节出问题,quota 命令就只会冷冰冰地显示 none。