Linux磁盘配额需依次启用文件系统支持、修改fstab、remount、quotacheck -c创建数据库、quotaon激活;缺任一环均导致失效,且仅对新写入文件生效。

Linux 用户磁盘配额(Quota)不是开箱即用的功能,必须手动启用文件系统支持、编辑配置、初始化数据库并开启服务——跳过任一环节都会导致 quotaon 失败或 repquota 显示空白。
如何确认文件系统已启用 quota 支持
内核虽默认支持 quota,但具体挂载的分区必须在 /etc/fstab 中显式启用。常见错误是只改了配置却没重新挂载,或用了不支持 quota 的文件系统(如 exFAT、NTFS)。
- 检查当前挂载选项:
mount | grep " /home "(注意空格分隔),输出中应含usrquota或grpquota - 若缺失,在
/etc/fstab对应行的挂载参数列(第4列)追加usrquota,grpquota,例如:/dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 2 - 立即生效需重新挂载:
sudo mount -o remount /home;若提示“busy”,先确保无人在/home下操作,或重启后自动生效
为什么 quotacheck -avug 报错 “No filesystem mounted with quota option”
这是最常卡住的一步:命令找不到带 quota 标志的挂载点。它不看 /etc/fstab 是否写了,只认当前 mount 输出结果。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 运行
mount确认目标分区(如/home)确实以usrquota方式挂载 - 若刚改完
/etc/fstab但没remount,quotacheck必然失败 - 第一次运行必须加
-c创建初始数据库:sudo quotacheck -cavug(-c创建aquota.user/aquota.group文件) - 数据库文件默认生成在挂载点根目录下(如
/home/aquota.user),权限应为root:root 600;若被误删,需再次quotacheck -c
edquota -u username 编辑后不生效?检查这三处
edquota 只写入数据库,不自动激活限制。用户写入行为是否受控,取决于 quota 服务是否运行及内核是否监听。
- 必须开启 quota 检查:
sudo quotaon -avug;若报错 “Cannot find quota file on /home [/dev/sdb1]”, 说明aquota.user不存在或路径不对 - 配额单位是
KB(非 MB/GB),软限制(soft limit)允许临时超额,但需在宽限期(grace period)内回落,否则自动锁死;硬限制(hard limit)一旦触及立即拒绝写入 - 测试时用普通用户执行:
dd if=/dev/zero of=~/testfile bs=1M count=500,再看quota -u username输出是否反映新用量;注意:只有新写入的文件才计入配额,已有文件不受 retroactive 限制
常见陷阱与兼容性注意
ext4 默认支持 quota,但 XFS 需用 xfs_quota 工具链,命令和数据库格式完全不同;LVM 逻辑卷上启用 quota 要确保在 LV 层而非 PV 层挂载并配置。
- SELinux 启用时可能阻止 quota 操作,临时测试可
sudo setenforce 0排查 -
repquota -a只显示已启用 quota 的挂载点,且要求对应aquota.user文件存在且可读 - 容器环境(如 Docker)中,宿主机 quota 对容器内用户无效,需在容器挂载时单独配置或使用 cgroups v2 限速替代
- 配额对 root 用户默认不生效(除非显式设置
edquota -u root),这是设计行为,不是 bug
真正麻烦的从来不是命令记不住,而是 quotaon 成功返回却看不见限制效果——这时候大概率是 quotacheck -c 漏了,或者用户正在写的目录不在 quota 控制的挂载点下(比如家目录软链接到了 /data,而 quota 只开了 /home)。

















