何时用配额

  • 多用户共享服务器:防止一个人把磁盘吃满
  • 共享 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 基础。