磁盘配额
如果对用户使用的磁盘分区不加限制,磁盘空间课鞥会被某些用户很快用完,那么,就有必要加以限制。
那么就要使用磁盘配额(磁盘限额)
磁盘配额是系统管理员用来监控和限制用户或组对磁盘空间的使用情况的工具。它可以保证所有用户都拥有自己独立的文件系统空间,确保用户使用系统空间的公平性和安全性。
1.使用磁盘限额的基本条件
①针对分区(也即独立的文件系统):只有分区才有磁盘限额的说法
②需要内核支持
③ root无效,只能限制一般的用户
④分区格式 (要求格式化为ext4文件系统类型)
⑤管理员权限
2.磁盘限额的几个基本概念
①硬限制(hard limit):指的是每个用户或组可拥有的磁盘空间或文件的绝对数量,每个用户或组不得超出的磁盘使用限额。
②软限制(soft limit):一个用户在文件系统可拥有的最大磁盘空间和最多文件数量,在某个宽限期内可以暂时超过这个限制。(指每个用户或组在日常运行中应该被限制的磁盘使用限额。)
③宽限时间(grace period):默认为7天。如果7天后,用户使用磁盘空间的数量仍然超出软限制,则系统将会禁止此用户帐号。要重新激活帐号,必须由系统管理员来进行。
3.用户或组使用磁盘空间的限制有以下两个方面:
- 限制用户或组可以拥有的inode数(文件数),每个文件都有一定的大小,文件数受限制,所占用的磁盘空间的大小自然就受到了限制。
–限制分配给用户或组的磁盘块的数目(以千字节为单位的磁盘空间)。磁盘块受限制,占用的磁盘空间同样受到了限制。
磁盘限额的相关命令:
磁盘配额的操作演示:
打开磁盘配额:
quotaon /sdb1/
但出现如下报错:
所以下面就记录一下命令,截图是视频的:
下面要对用户dong进行配额限制:
(因为配额对root是无效的)
edquota -u dong
blocks表示文件的大小,0表示禁用
soft是软限制,改为10,表示10k
hard是硬限制,改为20,表示20k
inodes表示文件的个数,不能超过多少个文件
后一个soft软限制改为4,硬限制hard改为6(说明硬限制最多不能超过6个文件)
然后:wq保存退出
切换用户,切换到dong:su dong
进到sdb1中:
cd /sdb1/
新建文件:
dd if=/dev/zero of=/sdb1/test bs=1k count=11
(文件大小软限制建为11k)
有warming提示超出限制,不过超出的是软限制,硬限制没有超,所以还是可以读入写出
此时再创建一个:
dd if=/dev/zero of=/sdb1/test bs=1k count=10
这个10再加上面的11,就是21,会超出磁盘限制
回车,提示出错,超出磁盘限额,说明磁盘限额生效了
接下来看文件个数的限制:
现在在sdb1下,然后输入 ls
查看,显示目前已有 test 和 test1 两个文件
之前软限制设置为4,现在再创建两个文件:1和2
touch 1 2
是允许的
此时再创建一个3
touch 3
就会有warming提示超过限制,不过此时是超过软限制,所以3该是成功创建了
此时再创建文件4和5
touch 4 5
会提示无法创建5,超出磁盘限额
输入 ls
,看到4是成功创建了的,但5不行
此时共有6个文件:1、2、3、4、test、test1
切换回root账号
su
输入:
repquota -a
会显示报告
关闭磁盘配额:
quotaoff /sdb1/
知识点:
设置磁盘配额的命令:
编辑磁盘配额的命令:
(1)edquota (2)setquota
查看磁盘配额的命令:
(3)quota (4)repquota
扫描文件系统,生成quota日志文件aquota.user和aquota.group文件:
(5)quotacheck
统计磁盘配额信息:
(6)quotastats
给用户发警告:
(7)warnquota
开启磁盘配额的命令:
(8)quotaon
关闭磁盘配额的命令:
(9)quotaoff
(1)edquota
进行磁盘限额的最常用配置程序,它会打开编辑器vi让我们对用户或者组群的磁盘配额进行设置。其语法格式如下:
#edquota [-p protoname] [-u | g] [username | groupname] [-t]
参数说明:
-u:设置用户磁盘限额,这是默认参数。
-g:设置群组磁盘限额。
-p:套用指定用户或者群组的磁盘配额限制。
-t:设置宽限时间。
举例:
#edquota -u sjh
#edquota –t
#edquota -p sjh -u sjh222
(2)setquota
通过命令行对用户或群组的磁盘限额进行设置。
#setquota [-u|-g] 名称 block-soft block-hard inode-soft inode-hard filesystem-name
参数说明:
-u:设置用户磁盘限额,这是默认参数。
-g:设置群组磁盘限额。
-p:套用指定用户或者群组的磁盘配额限制。
-t:设置宽限时间。
举例:
#setquota -u sjh 102400 204800 0 0 /home
#setquota -t 5 5 /home
(3)quota
单一用户或者组群的quota报表
查询单个用户或单个组群磁盘空间的限制和已经使用的空间。其语法格式如下:
#quota [-uvs] [username]
#quota [-gvs] [groupname]
参数说明:
-u:显示用户的磁盘空间限制。
-g:显示群组的磁盘空间限制。
-v:显示每个用户在文件系统中的quota值。
-s:使用1024为倍数来指定单位,会显示如M之类的单位。
举例:
#quota -uvs sjh
#quota -gvs root
(4)repquota
针对文件系统的限额做报表
报告磁盘空间配额的状况,明确显示出每位用户或每个组群已使用多少空间。
#repquota -a [ugvs]
-a:直接到/etc/mtab查询具有quota标志的文件系统,并报告quota的结果。
-v:输出的数据将含有文件系统相关的详细信息。
举例:
#repquota -uvs /home
#repquota -augvs
(5)quotacheck
扫描文件系统生成quota日志文件
扫描所有挂接到系统上的分区,并在各分区的文件系统根目录下产生quota的日志文件:aquota.user和aquota.group。
举例:
#quotacheck -avug
#quotacheck -avug -mf
#tacheck -u /home
#quotacheck -uv /home
#quotacheck -cmug /home
(6)quotastats
显示与磁盘配额有关的统计信息。
举例:
#quotastats
(7)warnquota
对超过限额者发出警告信
为超过限额的用户发送邮件,它会在后台自动运行。
举例:
#warnquota
(8)quotaon
打开磁盘配额限制。
举例:
#quotaon /home
#quotaon –avug
(9)quotaoff
关闭磁盘配额限制。
举例:
#quotaoff /home
关闭磁盘配额功能之后,必须使用命令 #quotacheck -cmug /home更新aquota.user和aquota.group文件,再使用quota -u sjh或者repquota -u /home查看,此时可以看到为用户设置的磁盘限额已经清除。
磁盘配额——举例
举例:为/home目录设置磁盘限额,Linux系统中已经存在普通用户sjh,设置sjh的软限制为100M,硬限制为200M,宽限时间为14天。
实践流程1(确保文件系统支持):
(1)查看/home是不是独立的文件系统(也即独立的磁盘分区)。
命令:mount | grep home
或者df -h /home
(我输入第一个没反应)
(2)查看/home是不是支持quota功能,ext4文件系统肯定支持quota功能,下面开启对quota的支持。
如果只是想在本次开机中实验quota,那么可以使用如下的命令来手动加入quota的支持:
mount -o remount,usrquota,grpquota /home
(显示这个,所以算了……)
然后使用命令:mount | grep home
确认开启了对quota的支持。
如果想让/home永久支持quota功能,需要修改/etc/fstab文件,在原来的defaults选项后面添加字符“,usrquota,grpquota
”启用quota功能。
实践流程2(新建quota配置文件):
#quotacheck -avug
#ls -l /home/a* //查看/home下是否已经生成aquota.user和aquota.group文件。
实践流程3(quota启动与限制值设置):
#quotaon -avug //打开磁盘限额功能。
该命令打开了/etc/mtab中已定义磁盘限额的所有分区的磁盘限额功能。
#edquota -u sjh //在vi中将block的soft设置为102400,hard设置为204800
#edquota -t //在vi中将block的宽限时间设置为14天。
实践流程4(quota限制值的报表):
#quota -uvs sjh
#repquota -auvs
实践流程5(测试与管理):
测试一:利用sjh的身份,创建一个150M的大文件,并查看quota的结果。
#su - sjh
$dd if=/dev/zero of=bigfile bs=1M count=150
#repquota -auvs
测试二:利用sjh的身份,再创建一个100M的大文件,让总容量超过200M。
$dd if=/dev/zero of=bigfile2 bs=1M count=100
$du -sm
200M //果然达到极限。
#warnquota //使用warnquota命令同时给超过磁盘配额的用户和root发邮件,用户使用mail命令接收邮件。
#mail
下面开始清理sjh的磁盘空间,将大文件bigfile和bigfile2删除,然后查看空间使用情况:
#quota -uvs sjh
实践流程6(quota关闭):
#quotaoff -a
#quota -uvs sjh
#quotacheck -cmug /home //此条命令更新aquota.user和aquota.group文件
#quota -uvs sjh
#repquota -auv //再次查看时,sjh的配额限制已经被清除