一、磁盘配额(quota)概述
在 Linux 系统中,由于是多人多任务环境,所以会有很多人共同使用一个磁盘空间的情况发生。如果其中少数几个使用者大量的占用磁盘空间的话,那势必会压缩其他用户的使用权力,因此,管理员应该适当的限制硬盘的容量给用户,以妥善分配系统资源。 需要安装 quota 包。
1.Quota 的规范设定项目
(1)容量限制(block) 此方法较为常见
(2)文件数量限制(inode)
2.柔性劝导与硬性规定(soft/hard)
不管是 inode 还是 block 限制,分别都有两个限制值,即 soft 与 hard。通常 hard 限制比 soft 要高。
例如,若限制项目为 block,可以限制 hard 为 500M,而 soft 为 400M。那么,用户使用量绝对不可以高于 500M,一旦超过,系统会锁住该用户的磁盘使用权,用户需自行删除一些无用的文件以减少磁盘使用量。若用户在用量低于 400M 时,可以正常使用。若用户使用量介于 400M~500M 之间,则每次用户登入系统时,系统会发出磁盘即将爆满的警告信息,且会给予一个宽限时间(grace time),默认 7 天,若 7 天内使用者将用量降至 400M 以下,则宽限时间会停止,否则超过 7 天后系统将以 400M 作为硬性规定(取代500M)限制,锁住用户的磁盘使用权
二、磁盘配(Quota)的设置
1.涉及命令
(1)quotacheck 命令:扫描文件系统并建立 Quota 的记录文件
1> 格式:quotacheck [选项] [挂载点目录]
2> 常用选项:
-a:扫描所在 /etc/mtab 内,含有 quota 支持的文件系统,加上此参数后可不写挂载点目录。
-u:针对用户扫描文件与目录的使用情况,建立 aquota.user 文件
-g:针对组扫描文件与目录的使用情况,建立 aquota.group 文件
-v:显示扫描过程的详细信息
-f:强制扫描文件系统,并写入新的 quota 配置文件(危险)
-M:强制以读写的方式扫描文件系统(只在特殊情况下才会使用)
常用选项组合:quotacheck -avug
(2)quotaon/quotaoff 命令:启动/关闭 quota 服务
1> 格式:quotaon/quotaoff [选项] [挂载点目录]
2> 常用选项:
-a:根据 /etc/mtab 内的文件系统设定启动有关的 quota 服务,若不加此参数,需在后面指定文件系统
-u:针对用户启动 quota (aquota.user)
-g:针对组启动 quota (aquota.group)
-v:显示启动过程的详细信息
启动/关闭全部用户及组的 quota 服务:quotaon/quotaoff -avug
启动/关闭某一文件系统的用户 quota 服务:quotaon/quotaoff -uv 挂载点目录
(3)edquota 命令:edit quota,编辑用户、组的限值与宽限时间
1> 格式:edquota [选项] [用户] [组]
2> 常用选项:
-u:后面跟用户,可以直接进入 quota 的编辑界面去设定该用户的限制值
-g:后面跟组,可以直接进入 quota 的编辑界面去设定该组的限制值
-t:可以修改宽限时间
-p:复制前一个设置的范本到下一个用户或组
(4)setquota 命令:命令限定 quota 限额
1> 格式:
setquota [-u|-g] [用户|组] [block(soft)] [block(hard)] [inode(soft)] [inode(hard)] [文件系统]
(5)quota 命令:单一用户或组的 quota 报表
1> 格式:quota [选项] [用户 | 组] |
2> 常用选项:
-u:后面跟用户,显示出该用户的 quota 限制值,若不跟用户则显示执行者的 quota 限制值
-g:后面跟组,限制该组的 quota 限制值
-v:显示每个用户在文件系统的 quota 值
-s:人性化单位显示
(6)repquota 命令:针对文件系统的限制配额做报表
1> 格式:repquota [选项] [参数]
2> 常用选项:
-a:查找 /etc/mtab 中具有 quota 标志的文件系统,并报告 quota 的结果
-u:显示出用户的 quota 限值(默认显示此值)
-g:显示出某个群组的 quota 限制值
-v:显示文件系统的详细信息
-s:人性化显示单位
三、磁盘配额示例
实验描述:
新添加 10G 硬盘 /dev/sdb,格式化为 ext4 格式的文件系统(xfs不支持),将 /home 内容备份,挂载此硬盘到 /home 下,恢复原 /home 下的数据。新增 5 个用户(user1-5),属组均为 gtest,要求对 /home 下的磁盘空间进行磁盘配额设置,要求如下:
5 个用户(user1-5)每个用户磁盘用来不超过 500M,当达到 400M 时进行提醒,若 14 天后还未处理磁盘空间将进行锁定。
gtest 组磁盘用来不超过 1500M,达到 1200M 时提醒。
1.安装 quota,备份 /home/ 下的数据,格式化文件系统,挂载,增加 quota 服务,拷贝原数据。
[root@huyouba1 ~]# yum -y install quota
echo "/dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 0" >>/etc/fstab
2.新增 5 个用户(user1-5),属组为 gtest
3.扫描文件系统并建立 Quota 记录文件
4.启动 quota 服务
5.编辑用户、组的限制值与宽限时间
[root@huyouba1 ~]# edquota -u user1
[root@huyouba1 ~]# edquota -p user1 -u user2
[root@huyouba1 ~]# edquota -p user1 -u user3
[root@huyouba1 ~]# edquota -p user1 -u user4
[root@huyouba1 ~]# edquota -p user1 -u user5
配置组限制
[root@huyouba1 ~]# edquota -g gtest
注意:修改 quota 限值时的单位为 Kb
[root@huyouba1 ~]# edquota -t
6.查看 quota 报表
(1)查看 user1 的 quota 报表
发现此时增加 grace,但没有数据,因为我们此时使用量未达到 soft 值(400M)
(2)查看 gtest 组的 quota 报表
(3)查看文件系统的限额报表
7.测试
(1)测试 user1 磁盘使用量达到 450M
发现此时查看磁盘配额报表,user1 后面出现了宽限时间倒数,还剩 13 天。
(2)测试 user2 磁盘使用量达到 500M,尝试写入 501M 内容
此时,user1 在 13 天之内还可以正常写入文件,user2 则无法写入任何文件。
8.使用 setquota 命令修改 user2 的磁盘配额,block(soft)=550M block(hard)=650M
9.关闭 quota 服务
[root@huyouba1 ~]# quotaoff -ug /home/
[root@huyouba1 ~]# quotaoff -a