「Quota」- 磁盘配额 | Quota Subsystem

认识

官网:https://docs.kernel.org/filesystems/quota.html

Quota subsystem allows system administrator to set limits on used space and number of used inodes (inode is a filesystem structure which is associated with each file or directory) for users and/or groups. 简而言之,磁盘配额,其用于限制用户或者组在指定的分区上可用的磁盘空间或文件个数。

组成

检查内核是否支持磁盘配额

性质

用户配额和组配额

既可以对 User 进行配额,也可以对 Group 进行配额。

磁盘容量限制和文件个数限制

既可以限制用户的可用磁盘空间,也可以限制用户可创建的文件数。

软限制和硬限制

软限制为一个告警界限,达到软限制后,用户将收到警告。

硬限制是真正的限制,达到这个限制之后,用户就不能在使用磁盘。

宽限时间

当用户已使用空间介于软限制和硬限制之间,用户收到警告,但是只警告指定的天数,这个天数就是“宽限时间”。如果在宽限时间内,用户不处理(比如删除文件以减少已使用空间),则到达宽限时间后,用户可用空间直接降到软限制的大小。

注意事项

  • 只能限制普通用户和组,不能用于限制 root 用户;
  • 只能针对于分区;
  • 既可以限制用户占用的磁盘空间大小,也可以限制用户占用的文件个数;

配置磁盘配额

以分区 /dev/sda1 为例。并假设 /dev/sda1,挂载在 /mnt/quota/ 中。我们的目标是限制 www 用户使用的磁盘空间及创建的文件数。

首先你需要进入 /dev/sda1 的挂载目录 /mnt/quota/ 中。

#1 开启分区的磁盘配额功能

以 usrquota、grpquota 挂载分区:mount -o remount,usrquota,grpquota /dev/sda1

#2 创建磁盘配额配置文件

创建初始化的磁盘配额文件:quotacheck -avug

此时会在 /mnt/quota/ 中创建 aquota.user、aquota.group 这两个文件。

#3 设置用户的磁盘配额

用户和组的磁盘配额信息分别保存在 aquota.user、aquota.group 这两个文件中,但是不能直接编辑它们,需要使用 edquota(8)命令进行编辑。

例如,我们要限制 www 用户的可用磁盘空间和创建文件个数:edquota -u www

上述命令会打开 vi 编辑器进行编辑。输出中有七个列,分别是:文件系统、已使用块数、软限制、硬限制、已使用 inode 数、软限制、硬限制。

#4 修改宽限时间

如果要修改宽限时间,则执行:edquota -t

依旧是启动 vi 编辑器进行编辑。

#5 启动磁盘配额

配置完成后,执行 quotaon -vug /mnt/quota/ 来启动磁盘配额。

如果要关闭磁盘配额,则可以使用 quotaoff(8)命令。

#6 磁盘配额查询

如果要查看磁盘配额的使用情况,可以使用 quota 命令:quota -vsu www

或者 repquota 命令:reqquota -augvs

#7 磁盘配额测试

测试就是测试,创建文件进行测试即可。

非交互式配置

在脚本中,如果要使用磁盘配额实现自动化,就不能使用 edquota 等命令,而应该使用 setquota 命令。

参考

《细说 Linux 系统管理》
鸟哥的 Linux 私房菜 /第十四章、磁碟配額(Quota)與進階檔案系統管理
Ubuntu quota format not supported in kernel