何时用配额
- 多用户共享服务器:防止一个人把磁盘吃满
- 共享 web 主机:每个用户限定容量
- 容器 / 虚拟用户:边界明确
启用文件系统配额
ext4 / xfs 都支持配额,但要挂载时启用。
修改 /etc/fstab 的 mount 选项:
UUID=... /home ext4 defaults,usrquota,grpquota 0 2
usrquota = 启用用户配额;grpquota = 启用组配额。
sudo mount -o remount /home # 重新挂载使生效
mount | grep /home # 验证带了 usrquota
装工具
sudo apt install quota
初始化配额数据库
sudo quotacheck -cum /home # 创建用户配额数据库
sudo quotacheck -cgm /home # 创建组配额数据库
sudo quotaon /home # 开启
给用户设配额
sudo edquota -u alice
打开 vim 编辑:
Disk quotas for user alice (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 1234 0 0 56 0 0
字段:
| 列 | 含义 |
|---|---|
blocks |
当前已用块数(KB) |
soft(块) |
软限制——超过会警告 |
hard(块) |
硬限制——超过不能再写 |
inodes |
当前已用文件数 |
soft / hard |
文件数软 / 硬限制 |
例:给 alice 限定 5G 软 / 6G 硬:
soft = 5000000 hard = 6000000
(单位是 1KB 块)
看用户当前配额
sudo quota -u alice
# Disk quotas for user alice (uid 1001):
# Filesystem blocks quota limit grace files quota limit grace
# /dev/sda2 5234 5000000 6000000 156 0 0
看整体报告
sudo repquota -a
# 看所有用户的配额使用情况
宽限期(grace)
软超过后给的"缓冲期",到期还没降下来 → 等同硬限制。
sudo edquota -t
# Filesystem Block grace period Inode grace period
# /dev/sda2 7days 7days
批量设置
很多用户配额一致时:
# 把 alice 的配额复制给 bob、carol、david
sudo edquota -p alice bob carol david
关闭配额
sudo quotaoff /home
然后修改 fstab 移除 usrquota / grpquota,重新 mount。
替代方案
LVM thin pool / 容器 cgroups / 文件系统级 quota(XFS 项目配额)—— 不同场景各有套路。通用最简方案就是 quota。
下一篇:RAID 基础。