磁盘配额就是对用户在指定文件系统中使用的磁盘空间、文件数量进行限制,为了防止个别用户恶意或无意间占用大量磁盘空间,避免在服务器中出现类似磁盘空间不足的问题。
用到的工具是:quota软件包,还需要文件系统以支持配额功能的方式挂载
1.磁盘配额限制的对象:系统中的用户账号、组账号,作用范围是指定的文件系统(分区)内有效
2.磁盘配额的限制类型:磁盘容量的限制和文件数量的限制
3.磁盘配额的限制方法:软限制和硬限制,其中软限制是指在固定的宽限期限(默认7天,可以使用命令:edquota -t来调整宽限期限)内允许暂时超过这个限制,但系统会给出警告提示;硬限制就是当达到限制值时,系统会直接禁止继续写入数据,硬限制应大于软限制,否则软限制将失效
一.设置磁盘配额实例:
案例环境和需求:公司准备在Internet中搭建邮件服务器,面向全国各地的员工提供电子邮箱空间,由于用户众多,邮件存储需要大量的空间,考虑到扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到/mailbox目录下),并且要求管理员通过磁盘配额的方式限制员工的邮箱空间,要求员工张三最多可以使用500M磁盘空间,并且文件数不能超过100个。
操作步骤如下:
根据需求,我们先要扩容并构架LVM逻辑卷,请参考《磁盘和文件系统管理(三)LVM应用实例》,今天主要设置磁盘配额
创建好LVM逻辑卷后,我们对磁盘进行配额管理
1.准备工作,查看quota软件是否安装,如果未安装,请从红帽系统光盘中安装
2.挂载文件系统(注意:此时挂载的文件系统需要支持配额功能)
使用vi编辑器,编辑/etc/fstab,在里面将文件系统设置为开机自动挂起并且增加了两个选项,usrquota和grpquota,以便支持对用户和组实现配额功能,然后重启系统查看是否已经挂载好文件系统
重启后,对自动挂载好的"/mailbox"目录赋予777的权限
3.检查磁盘配额并生成配额文件(这里需要注意selinux)
命令:quotacheck -augcv
-a:表示扫描所有分区
-u和-g:分别表示检测用户和组配额信息
-c:创建新的配额文件
-v:显示详细信息
说明:上图中是未成功生成配额文件,我们需要先关闭selinux,等启动磁盘配额功能后再开启selinux
临时关闭命令:setenforce 0 开启命令:setenforce 1
4.设置配额(对用户做配额限制选项为"-u" 后加用户名,如需对某个组做配额限制,选项"-g"后加组名)
如公司要求对张三进行限制
命令:edquota -u zhangsan
Filesystem:表示本行配置记录对应的文件系统(分区),就是配额的作用范围
blocks:用户当前已经使用的磁盘容量,默认单位是KB,由edquota程序自动计算,无需修改
第三列的soft:对应磁盘容量的软限制数值,0为默认不限制
第四列的hard:对应磁盘容量的硬限制数值,0为默认不限制
inodes:用户当前已经拥有的文件数量,默认单位个数,也是由edquota程序自动计算,无需修改
第六列的soft:对应磁盘容量的软限制数值,0为默认不限制
第七列的hard:对应磁盘容量的硬限制数值,0为默认不限制
说明:这里可以看到我将用户张三磁盘容量的软限制设置为400M,硬限制为500M;文件数量软限制为80个,硬限制是100个。软限制一定要小于硬限制,否则软限制将失效。
5.启动和关闭文件系统的配额功能(实验中我们需要将配额功能启动)
启动命令:quotaon -ugv /文件系统(-u代表对用户、-g代表对组)
关闭命令:quotaoff -ugv /文件系统
6.验证磁盘配额功能
(1)磁盘容量验证
软限制:我们可以看到当触发软限制的时候依然可以写入,只是会有一条警告信息
硬限制:当我们触发硬限制的时候,数据将无法再写入,警告会显示超出磁盘限额
说明:命令dd if=/dev/zero of=/mailbox/test bs=10M count=40表示向/mailbox目录下写入一个名为test的测试文件,大小为400M(共40次,每次是10M)
(2)文件数量验证
为了模拟文件数量的限制,我这里写了一个创建文件的脚本
软限制:执行脚本后,我们看到文件个数超过80个后依然可以存入,只是给出一个警告信息
硬限制:将脚本修改一下,改成创建110个文件,这时再执行脚本,我们发现超过100个文件将无法存入
这样,我们就可以在工作中通过磁盘配额的方式来给公司员工进行限制了