配额并不是把quota包装好就会自动起作用,真正要生效,得按顺序把三件事做完整:先改挂载选项,再初始化数据库,最后启用配额。这三步少一步都不行;不然的话,执行quota -u username时,结果基本只会一直显示“none”。

配额不是装完 quota 就自动生效的,必须按顺序完成挂载选项修改、数据库初始化、配额启用三步,缺一不可;否则 quota -u username 永远显示 “none”。
确认文件系统类型和 quota 工具是否就绪
先看目标分区用的是 ext4 还是 xfs —— 两者配额机制完全不同,混用会静默失败:
- 运行
df -T /home,检查Type列输出是ext4还是xfs - 执行
quota -V,若提示 command not found,需安装:
Ubuntu/Debian:运行sudo apt install quota;CentOS/RHEL:运行sudo yum install quota - 对 xfs 分区,还需额外安装
xfsprogs:sudo apt install xfsprogs或sudo yum install xfsprogs - ext4 系统要确认内核支持:
grep CONFIG_QUOTA /boot/config-$(uname -r)输出中应含y或m
修改 /etc/fstab 并重挂载(ext4 和 xfs 写法不同)
配额由挂载选项控制,写错名字或位置会导致完全不生效:
- ext4 分区:在对应行第四字段(挂载选项)末尾加
,usrquota,例如:/dev/sda1 /home ext4 defaults,usrquota 0 2 - xfs 分区:必须用
,uquota(不是usrquota),否则mount -o remount不报错但配额无效:UUID=abc123 /home xfs defaults,uquota 0 0 - 改完立即执行
sudo mount -o remount /home,不能只靠重启 - 验证是否生效:
mount | grep '/home'输出中必须出现usrquota(ext4)或uquota(xfs)
初始化 aquota.* 数据库(ext4)或用 xfs_quota 初始化(xfs)
这两个文件是二进制数据库,不是文本配置,手动 touch/chmod 是常见误操作:
- ext4:
进入挂载点目录(如cd /home),运行sudo quotacheck -cugm /home
执行后检查:ls -lh aquota.*应是非零字节文件;若为 0 字节,可能是 SELinux 阻止写入,临时关掉:sudo setenforce 0 - xfs:
不用创建 aquota.* 文件,直接运行sudo xfs_quota -x -c 'print' /home初始化
再用sudo xfs_quota -x -c 'limit bsoft=51200 bhard=102400 alice' /home设限(单位 KB) - 别跳过这步:没有有效数据库,
edquota或xfs_quota limit的设置全无效
启用 quotaon 并用 edquota 设置限制(ext4)
启用和设限是两个独立动作,只做其一等于没做:
- 运行
sudo quotaon /home启用;验证:sudo quotaon -p应显示user quota on /home ... is on - 运行
sudo edquota -u alice,编辑器中填数值单位是 KB,不是 MB:
例如软限 50MB → 填51200,硬限 100MB → 填102400 - 不要用
setquota一键设置:它绕过编辑器校验,输错单位(比如填50当 50KB)会导致用户刚建家目录就触发配额拒绝写入 - 测试前务必切到目标用户:
su - alice,再往/home/alice写文件;查用量用quota -u alice,别用du
最容易被忽视的,往往就是单位(KB)和初始化顺序这两个细节:quotacheck 一定要先于 quotaon 执行,而且必须确保成功生成非空的 aquota.*;xfs 下的 uquota 也不能误写成 usrquota;另外,所有操作都建立在挂载点路径精确匹配的前提上,斜杠多一个或少一个,都可能直接失效。