linux文件系统配额绑定uid/gid/project id而非路径,硬限制(bhard)为不可突破绝对值,需对应启用uquota/gquota/prjquota;超限写入立即报“disk quota exceeded”。

Linux 文件系统配额不是“给目录设限额”,而是绑定到用户(UID)、组(GID)或项目 ID(Project ID),在文件系统层面强制拦截写入行为。硬限制一旦达到,任何新数据写入都会立即失败并报错 Disk quota exceeded,不依赖进程、服务或定时扫描。
按用户限制(UID 绑定)
适用于为运维、开发等独立账号分配专属空间上限。
- 确保挂载选项含
usrquota(ext4)或uquota(XFS):mount | grep /home # 查看是否含 usrquota/uquota
若无,编辑
/etc/fstab,在对应行添加,usrquota或,uquota,再执行:mount -o remount /home
- 初始化配额数据库:
- ext4:
quotacheck -cugm /home(生成aquota.user) - XFS:
xfs_quota -x -c 'scan -u' /home
- ext4:
- 设置硬限(例如 2 GB):
- ext4:
setquota -u alice 0 2097152 0 0 /home(单位 KB) - XFS:
xfs_quota -x -c 'limit -u bhard=2g alice' /home
- ext4:
- 验证:
quota -u alice或xfs_quota -x -c 'report -u -h' /home
按用户组限制(GID 绑定)
适合多人共享目录(如 /data/team-dev),统一管控总用量。
- 挂载时启用
grpquota(ext4)或gquota(XFS) - 将目标目录归属该组,并设
g+s保证新建文件继承组:chgrp -R devteam /data/team-dev && chmod -R g+s /data/team-dev
- 初始化:
- ext4:
quotacheck -cugm /data - XFS:
xfs_quota -x -c 'init' /data(推荐,自动识别组)
- ext4:
- 设组硬限(例如 10 GB):
- ext4:
setquota -g devteam 0 10485760 0 0 /data - XFS:
xfs_quota -x -c 'limit -g bhard=10g devteam' /data
- ext4:
- 查看:
repquota -g /data或xfs_quota -x -c 'report -g' /data
按目录限制(Project ID,仅 XFS)
真正实现“按路径控制”,但需手动分配唯一 project ID。
- 挂载必须启用
prjquota(不能混用 uquota/gquota) - 为目录设置 ID(如 101):
xfs_io -c 'projid 101' /data/project-docs
- 初始化:
xfs_quota -x -c 'scan -p' /data - 设限:
xfs_quota -x -c 'limit -p bhard=5g 101' /data - 注意:此处
limit -p后跟的是数字 ID,不是目录名或项目名
软限制与宽限期(通用)
软限制允许临时超限,但需在宽限期内回落,否则被锁。
- 修改宽限期(ext4/XFS 均支持):
edquota -t
进入后可为 block 和 inode 分别设置天数(默认 7 天)
- 软限设置方式与硬限类似,仅把
bhard换成bsoft,数值略低即可
不复杂但容易忽略











