Linux中不能直接对目录设配额,必须绑定文件系统;XFS可通过prjquota按目录树设项目配额,ext4仅支持用户/组配额且需独立挂载点。

Linux 中不能直接对“目录”设置磁盘配额,配额机制是按文件系统(即挂载点)绑定的,不是按目录路径生效的。但你可以通过两种方式实现“限制某个目录下的磁盘使用”效果:一种是把该目录所在的分区单独挂载并启用配额;另一种是使用 XFS 文件系统的 project quota(项目配额),它支持按目录树(directory tree)进行配额控制。
方法一:为挂载点启用用户/组配额(适用于 ext4、XFS)
这是最通用的做法,前提是你能将目标目录设为独立挂载点:
- 确保目标目录(如
/data/project-a)是一个独立挂载的文件系统(例如/dev/sdb1挂载到/data) - 编辑
/etc/fstab,在对应行的挂载选项中添加usrquota(用户)或grpquota(组),例如:/dev/sdb1 /data ext4 defaults,usrquota 0 2 - 执行
sudo mount -o remount /data重新挂载 - 运行
sudo quotacheck -cugm /data(ext4)或sudo xfs_quota -x -c 'quotacheck -avug' /data(XFS)生成配额数据库 - 启用配额:
sudo quotaon /data(ext4)或sudo xfs_quota -x -c 'quotaon -avug' /data(XFS) - 最后用
edquota -u username或xfs_quota -x -c 'limit -u bsoft=5G bhard=6G username' /data设置具体限制
方法二:XFS 项目配额(真正按目录限制)
XFS 支持 project quota,可为任意目录树分配独立配额,无需独占整个分区:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 确认文件系统为 XFS,并在
/etc/fstab挂载选项中加入prjquota(如:/dev/sdc1 /shared xfs defaults,prjquota 0 0),然后mount -o remount /shared - 为目录指定 project ID(例如给
/shared/team-alpha分配 ID 100):sudo xfs_quota -x -c 'project -s -d team-alpha' /shared
(需先在/etc/projects和/etc/projid中定义映射) - 设置该项目的配额:
sudo xfs_quota -x -c 'limit -p bsoft=10G bhard=12G isoft=5000 ihard=6000 team-alpha' /shared - 此后所有写入
/shared/team-alpha及其子目录的文件,都计入该项目配额统计
注意:ext4 不支持目录级配额
ext4 文件系统仅支持用户(usrquota)和组(grpquota)维度的配额,无法按目录划分。若强行想用 ext4 实现类似效果,唯一办法是:把该目录变成一个独立挂载的 loop 设备或逻辑卷(LVM),再对其启用配额——但这属于变通方案,运维成本高,不推荐日常使用。
验证与查看
设置后可用以下命令检查:
- 用户配额:
quota -u username或xfs_quota -x -c 'report -uh' /mountpoint - 项目配额(XFS):
xfs_quota -x -c 'report -pbh' /shared - 实时用量:
xfs_quota -x -c 'df -h' /shared

















