Linux中限制目录树实际大小需通过磁盘配额实现:①用户配额(按属主)、②组配额(按属组)、③XFS项目配额(真正按目录,需pquota)。三者均统计真实磁盘块占用,非逻辑文件大小。

Linux 系统中限制“目录树的实际大小”,本质是控制该目录下所有文件占用的真实磁盘空间(block),而非逻辑文件大小。这正是磁盘配额(quota)机制的核心能力之一——但它不直接按目录限制,而是按用户或组限制。所谓“限制目录树大小”,实际是通过将该目录归属到特定用户/组,并对其启用配额来实现的。
下面分三类场景说明怎么做:
用用户配额限制归属该用户的整个目录树
适用于:目录属于单一用户(如 /home/alice/project),你想限制 alice 在该文件系统中所有数据(含此目录)的总空间。
-
确保目标分区(如
/home)已启用usrquotasudo sed -i '/\/home/s/defaults/defaults,usrquota/' /etc/fstab sudo mount -o remount /home
-
初始化配额数据库
sudo quotacheck -cuv /home sudo quotaon /home
-
设置用户
alice的 block 限制(例如软限 2GB、硬限 3GB)sudo setquota -u alice 2097152 3145728 0 0 /home
单位是 KB;
0 0表示不设 inode(文件数)限制
linux-sysadmin下载Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
验证
quota -u alice
用组配额限制多个用户共享的目录树
适用于:一个项目目录(如 /srv/myapp)由 devteam 组成员共同维护,需限制整个组的空间使用总量。
- 将目录属组设为
devteam,并确保所有写入者属于该组(配合setgid)sudo chgrp devteam /srv/myapp sudo chmod g+s /srv/myapp
- 启用
grpquota并设置组限额# 修改 fstab 添加 grpquota → remount → quotacheck -cvg → quotaon sudo setquota -g devteam 5242880 6291456 0 0 /srv
此例限制
devteam在/srv分区最多用 5GB(软)/6GB(硬)
用 XFS 项目的目录级配额(真正按目录限制)
⚠️ 仅 XFS 文件系统支持,无需绑定用户/组,直接对目录生效。
- 确认挂载时启用了
pquota(或prjquota)mount | grep /data # 应含 pquota
- 创建项目 ID 并关联目录
echo "100:/data/applog" | sudo tee -a /etc/projects echo "mylog:100" | sudo tee -a /etc/projid sudo xfs_quota -x -c 'project -s mylog' /data
- 设定该项目的 block 限制
sudo xfs_quota -x -c 'limit -p bsoft=2g bhard=3g mylog' /data
- 查看效果
sudo xfs_quota -x -c 'report -h -p' /data
注意:XFS 项目配额统计的是该目录树下所有文件实际占用的块,包括子目录、硬链接指向的内容(只计一次)、稀疏文件的真实分配块——这与
du -s行为一致,也最贴近“目录树实际大小”的语义。
不复杂但容易忽略

















