📽 前言
在多用户共享 Linux 服务器的场景下,如何防止某个用户占满整个磁盘空间,影响系统稳定性?这时 quota
工具就扮演了重要角色。
本篇博客将基于 Ubuntu 系统,详细记录如何使用 quota
工具对用户进行磁盘空间限制,包括启用磁盘配额、设置软硬限制、理解宽限期 (grace period) 等核心操作。
📌 什么是磁盘配额(Disk Quota)?
磁盘配额机制可以限制:
- 某个用户或用户组的 磁盘使用空间(blocks)
- 某个用户或用户组的 文件/目录数量(inodes)
并且支持:
- 设置软限制(soft limit):允许超限一段时间
- 设置硬限制(hard limit):绝对不能超过
- 设置宽限期(grace period):超限后的缓冲时间
🧱 一、安装 quota 工具
sudo apt update
sudo apt install quota
📂 二、启用配额支持的挂载点(如 /home
)
1. 编辑 /etc/fstab
,加入挂载参数:
nano /etc/fstab
UUID=xxx /home ext4 defaults,usrquota 0 2
如果要限制用户组,可以加 grpquota
:
defaults,usrquota,grpquota
2. 重新挂载文件系统:
sudo mount -o remount /home
3. 初始化 quota 数据库:
sudo quotacheck -cum /home
4. 启用 quota 功能:
sudo quotaon /home
👤 三、设置用户磁盘限制
sudo edquota -u 用户名
编辑示例:
Filesystem blocks soft hard inodes soft hard
/dev/sda1 20000 1610612736 60000 100 0 0
说明:
blocks
单位为 KB,指该用户目前占用空间量soft
:单位为 KB,软限制(可超限一段时间)hard
:单位为 KB,硬限制(绝对不允许超过)inodes
:已有文件数量soft
:软限制文件数量hard
:硬限制文件数量
⏳ 四、设置宽限期(Grace Period)
sudo edquota -t
示例:
Filesystem Block grace period Inode grace period
/dev/mapper/LVM-home 7minutes 7days
Block grace period
block限制的宽限期Inode grace period
inode限制的宽限期- 单位可以为seconds,minutes,hours,days
🔍 五、查看配额使用情况
查看当前用户:
quota -u 用户名
查看所有用户配额(需要 root):
sudo repquota -a
输出示例:
*** Report for /dev/sda1 ***
User used soft hard grace files soft hard grace
hehf 22000 50000 60000 100 0 0
🧲 六、配额行为测试逻辑
- 超过 soft limit:允许写入,进入宽限期;
- 宽限期内未恢复:宽限期过后 将强制禁止写入;
- 超过 hard limit:立即禁止写入,无宽限期。
你可以设置 soft=50MB, hard=60MB, grace=2min 来演练此逻辑。
🌟 七、实用配置建议
目标 | 配置建议 |
---|---|
用户不能超限 | soft = hard |
允许短期爆发写入 | soft < hard + grace period |
不限制文件数 | inode soft = 0, hard = 0 |
📁 附录:常用命令速查表
命令 | 功能 |
---|---|
sudo apt install quota | 安装 quota 工具 |
sudo edquota -u 用户 | 设置用户配额 |
sudo edquota -t | 设置宽限期 |
sudo quotaon /home | 启用 quota |
sudo quotacheck -cum /home | 初始化数据库 |
quota -u 用户 | 查看配额使用 |
repquota -a | 查看所有用户配额 |
💬 欢迎交流
如果你在使用 quota 时遇到任何问题,欢迎留言交流,也欢迎转载本文到其他平台帮助更多 Linux 用户。