NOTE
Linux 磁盘配额 Quota
整理 Linux Quota 磁盘配额配置、检查、启用与用户限制方法。
Quota 概述
磁盘配额表示给用户能使用的磁盘容量进行限制。由于 Linux 是一个多人多工的操作系统,磁盘可能会被多个用户所使用,可能会存在单一用户占用大量磁盘空间的情况。为避免这种情况发生,需要使用磁盘配额功能对单一用户能使用的磁盘空间进行限制。
Quota 的功能主要为以下两点:
- 限制 inode:限制创建文件的数目
- 限制 block:限制文件的磁盘容量大小
分为两类限制:
soft(软限制):到达这个限制值之后,不会立刻限制用户的磁盘使用,会先警告用户已经到达了 soft 限制。若在宽限时间(grace time)内,没有将容量恢复到 soft 以下,则会直接用 soft 限制替代 hard 限制。hard(硬限制):达到限定值后立刻限制磁盘的使用
Quota 的具体使用
安装
# CentOS
sudo yum install quota
# Debian
sudo apt install quota
启用文件系统级的配额支持
需要修改文件系统的挂载选项,在 /etc/fstab 文件中为指定分区添加 usrquota(用户配额选项)和 grpquota(组配额选项),再重新挂载磁盘。
注意:操作时最好先备份配置文件以免出现问题。
具体流程如下:
# 原始内容:
UUID=xxxxxxxxxxxxxxxx / ext4 defaults 0 1
# 修改为:
UUID=xxxxxxxxxxxxxxxx / ext4 defaults,usrquota,grpquota 0 1
保存后执行如下指令重新挂载磁盘:
mount -o remount /
注意:
ext4使用更高级的日志配额功能不需要此步骤。
创建配额数据库
sudo quotacheck -cug /
参数解析:
| 参数 | 解析 |
|---|---|
-c | 创建配额数据库(覆盖式创建) |
-u | 检查用户配额 |
-g | 检查组配额 |
然后就可以在配置配额的文件夹下看到 quota.user 和 quota.group 文件了。
注意:
ext4文件系统使用更高级的日志配额功能不需要此步骤。
设置配额规则
设置配额规则
setquota -[u/g] [username/groupname] <block-soft> <block-hard> <inode-soft> <inode-hard> <filesystem>
例如:
setquota -u user1 512000 1048576 0 0 /home
单位为 KB。
设置宽限时间
edquota -t
管理和查询配额
查看用户配额
quota -uvs username
-u:打印用户配额信息-v:打印详细信息-s:人类可读输出
生成配额报告文件
repquota -augs
-a:所有信息-u:用户配额信息-g:组配额信息-s:人类可读输出
关闭配额
quotaoff <filesystem>