← 返回主页
NOTE

Linux 磁盘配额 Quota

整理 Linux Quota 磁盘配额配置、检查、启用与用户限制方法。

Quota 概述

磁盘配额表示给用户能使用的磁盘容量进行限制。由于 Linux 是一个多人多工的操作系统,磁盘可能会被多个用户所使用,可能会存在单一用户占用大量磁盘空间的情况。为避免这种情况发生,需要使用磁盘配额功能对单一用户能使用的磁盘空间进行限制。


Quota 的功能主要为以下两点:

  1. 限制 inode:限制创建文件的数目
  2. 限制 block:限制文件的磁盘容量大小

分为两类限制:

  1. soft(软限制):到达这个限制值之后,不会立刻限制用户的磁盘使用,会先警告用户已经到达了 soft 限制。若在宽限时间(grace time)内,没有将容量恢复到 soft 以下,则会直接用 soft 限制替代 hard 限制。
  2. 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.userquota.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>