配额生效需三步齐备:/etc/fstab启用usrquota(xfs用uquota)、quotacheck生成非空aquota.user、quotaon开启;xfs则直接用xfs_quota配置,不依赖aquota文件。

quota 显示 “none” 就说明配额根本没生效,不是设置错了,而是前面几步全漏了——挂载选项、配额文件、启用开关,三者缺一不可。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
确认 /etc/fstab 已添加 usrquota 并成功 remount
配额不绑定用户,也不绑定系统,只绑定挂载点。比如你要限/home,就得确保该路径对应分区在 /etc/fstab 里启用了 usrquota:
- 运行 mount | grep /home,输出中必须含 usrquota;若没有,编辑 /etc/fstab,在挂载选项列(第4列)末尾追加 ,usrquota,例如:/dev/sdb1 /home ext4 defaults,usrquota 0 2
- 执行 sudo mount -o remount /home 生效
- 注意:XFS 文件系统要写 ,uquota(不是 usrquota),且不支持临时 -o quota 挂载
quotacheck 必须生成非空的 aquota.user 文件
quotacheck 不是检查用量,是扫描并生成数据库文件。没它,edquota 和 quotaon 全部失效:
- 运行 sudo quotacheck -cugm /home(-c 强制创建,-m 跳过挂载状态检查)
- 然后立刻检查:ls -lh /home/aquota.user,大小必须 > 0;若为空或不存在,常见原因是权限不足、路径写错,或 SELinux 静默拦截(可临时 setenforce 0 排查)
- 别手动 touch 或 chmod 这两个文件——quotacheck 会自动设为 root:root、600quotaon 启用后,edquota 才真正写入限制
edquota -u username 编辑的是内存映射值,但只有 quotaon 开关打开后,这些值才被读取并强制执行:
- 运行 sudo quotaon /home;验证:sudo quotaon -p 应显示 user quota on /home ... is on
- 再运行 sudo edquota -u alice,在 vi 编辑器里改第一行(blocks):两个数字分别是软限和硬限,单位 KB(如 512000 1024000 = 500MB/1000MB),第二行是 inodes 限制
- 宽限期默认 7 天,改第三列即可;保存退出后不会立即生效,需等下次写入触发(或手动 sync)
- 若之后用 setquota 覆盖,edquota 的修改会被冲掉
XFS 用户直接跳过 aquota.*,用 xfs_quota
XFS 不走 ext4 那套流程,不需要aquota.user,也不认 edquota:
- 确保 /etc/fstab 中挂载选项含 ,uquota(不是 usrquota),然后 remount
- 安装 xfsprogs(yum install xfsprogs 或 apt install xfsprogs)
- 进入专家模式:xfs_quota -x -c "limit -u bsoft=500m bhard=1g alice" /home
- 查看:xfs_quota -x -c "report -u" /home
- 宽限期、inode 限制也都在 limit 命令里设,不依赖单独命令
最后提醒一句:宽限期只对软限起作用,硬限一旦触及,立刻拒绝写入——所以测试时别只盯着软限超没超,得真写个大文件试试 dd if=/dev/zero of=test bs=1M count=1050(超硬限时会报 No space left on device)。










