Linux磁盘配额必须按顺序完成四步:启用usrquota挂载选项、运行quotacheck生成aquota.user、执行quotaon启用、用edquota设置限额;缺一步则quota -u显示“none”。

确认目标分区已启用 usrquota 挂载选项
配额不是全局开关,而是绑定在具体挂载点上的。运行 mount | grep /home(把 /home 替换为你实际路径),输出中必须含 usrquota;否则所有后续操作都无效。
若缺失:编辑 /etc/fstab,在对应行第4列(挂载选项)末尾追加 ,usrquota,例如:/dev/sdb1 /home ext4 defaults,usrquota 0 2
然后执行 sudo mount -o remount /home 生效。
注意:XFS 文件系统需用 xfs_quota,不走这套流程;ext4 不支持 mount -o quota 临时启用,必须写进 /etc/fstab 并 remount。
quotacheck -cugm /path 必须成功生成 aquota.user
这个命令不是“检查是否超限”,而是扫描文件系统并生成配额数据库文件:aquota.user(用户)和 aquota.group(组)。它们必须存在、大小非零、属主为 root、权限为 600。
常见失败原因:
- 路径写错(比如用了
/home/username而不是/home) - 权限不足(
quotacheck需要读取整个分区的 inode,建议用sudo) - 挂载选项未生效(先确认上一步的
mount输出)
不要手动 touch 或 chmod 这两个文件——quotacheck 会自动设置正确权限和属主。
用 edquota -u username 编辑软硬限制时只改前两行
edquota -u username 打开的是 vi 临时编辑器,里面两行分别对应:
- 第一行:
blocks(磁盘空间,单位 KB) - 第二行:
inodes(文件数量)
每行三个字段:软限制、硬限制、宽限期(单位天,默认 7)。例如设 500MB 软限 + 512MB 硬限:512000 524288 7
改错行(比如把 inodes 行数字填到 blocks 行)会导致限制完全不生效。
编辑保存后不会立即生效,必须配合 quotaon;若之后用 setquota 覆盖,edquota 的修改会被冲掉。
quota -u username 显示 none 就说明根本没启用
这不是配置错了,是前面某步彻底失败了。典型原因有:
-
/etc/fstab没加usrquota或 remount 失败 -
aquota.user文件不存在或为空(ls -l /home/aquota.user看一眼) - 没运行
sudo quotaon -u /home(注意参数是-u,不是-v)
验证是否启用:运行 sudo quotaon -p /home,输出中应含 user quotas: enabled。如果显示 disabled 或报错,回溯检查前三步——顺序不能乱,缺一不可。
最常被忽略的点:配额只对新写入的文件生效,已有数据不计入初始统计;宽限期只对软限制起作用,硬限制一旦触及立即拒绝写入。


















