linux磁盘配额用于限制用户或组的磁盘空间和文件数量,需在支持配额的ext4/xfs文件系统上启用挂载选项、生成数据库、设置软硬限额并启用服务,最后通过quota或xfs_quota命令验证监控。

Linux磁盘配额(Disk Quota)用于限制用户或用户组对文件系统中磁盘空间和文件数量的使用,防止个别用户占满磁盘导致系统异常。配置需在支持配额的文件系统上启用,并分步设置内核支持、挂载选项、初始化数据库、分配配额等环节。
确认文件系统支持并启用配额挂载
ext4/xfs 等主流文件系统原生支持配额,但需在 /etc/fstab 中显式启用。编辑该文件,在目标分区的挂载选项中添加 usrquota(用户配额)或 grpquota(组配额),xfs 还需额外指定 uqnoenforce 或 uqnoenforce(仅警告不强制)。
- ext4 示例(/home 分区):
/dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 2 - xfs 示例:
/dev/sdb1 /home xfs defaults,uquota,gquota 0 0 - 修改后执行 mount -o remount /home 生效,或重启系统
生成并启用配额数据库
配额信息不存于文件本身,而由独立的配额数据库(aquota.user 和 aquota.group)记录。首次启用需扫描文件系统生成初始数据。
- ext4:运行 quotacheck -cug /home(-c 创建新文件,-u 用户,-g 组)
- xfs:无需 quotacheck,配额由内核自动跟踪;但需用 xfs_quota 工具管理
- 启用配额服务:quotaon /home(ext4)或 xfs_quota -x -c ‘enable -u -g’ /home(xfs)
为用户或组设置具体限额
限额分软限制(soft limit)和硬限制(hard limit),软限制可临时突破(宽限期默认7天),硬限制不可逾越。同时控制磁盘块(KB)和文件数(inode)。
- ext4 使用 edquota -u username 进入交互编辑器,填写 soft/hard 的 blocks(KB)和 inodes 值
- 快速设定(如用户 alice:软限2GB/硬限2.5GB,文件数软限10万/硬限12万):
setquota -u alice 2097152 2621440 100000 120000 /home - xfs 使用 xfs_quota -x -c ‘limit -u bsoft=2g bhard=2.5g isoft=100000 ihard=120000 alice’ /home
验证与日常监控
配额生效后,用户写入超限时会收到“Disk quota exceeded”错误。管理员可通过多种命令查看状态。
- 查单个用户:quota -u username(ext4)或 xfs_quota -x -c ‘report -uh username’ /home(xfs)
- 查所有用户汇总:repquota -a(ext4)或 xfs_quota -x -c ‘report -h’ /home(xfs)
- 查宽限期剩余时间:warnquota(ext4)或 xfs_quota -x -c ‘timer’ /home
- 日志提示:/var/log/messages 中搜索 quota 相关条目,定位违规行为