认识
官网: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