一、 磁盘配额概述
1.1实现磁盘限额的条件
1.需要Linux内核支持
2.安装xfsprogs与quota软件包
1.2Linux磁盘限额的特点
1.作用范围:针对指定的文件系统(分区)
2.限制对象:用户账号、组账号
3.限制类型:磁盘容量、文件数量
4.限制方法:软限制、硬限制
1.3磁盘配额
为什么要做磁盘配额?
Linux系统作为一个多用户的操作系统,在生产环境中,会发生多个用户共同使用一个磁盘的情况,会造成Linux根分区的磁盘空间耗尽,导致Linux系统无法建立新的文件,从而出现服务程序崩溃、系统无法启动等故障现象。
为了避免这种情况,解决方法就是 ,对用户在指定文件系统中使用磁盘空间、文件数量进行限制,防止用户占用大量的磁盘空间,从而保持系统存储空间可以稳定使用。
1.4EXT4和XFS的区别
ext4 文件系统 xfs 文件系统
无法对单一目录 可对单一目录
quota工具 xfs_quota工具
quota默认不开启 默认开启
需要创建配额配置文件 不需要创建配额配置文件
1.5磁盘配额的作用范围
xfs_quota 设置的磁盘配额功能,只在指定的文件系统(分区)内有效,用户使用其他 未设置配额的文件系统时,将不会受到限制
1.6磁盘配额的限制对象
xfs_quota 主要针对系统中指定的用户账号、组账号进行限制,没有被设置限额的用户或组将不受影响。
对组账号设置配额后,组内所有用户使用的磁盘容量、文件数量的总和不能超过限制。
1.7磁盘配额的限制类型
磁盘容量:限制用户能够使用的磁盘数据块(Block)大小,也就是限制磁盘空间大小,默认单位为 KB。
文件数量:限制用户能够拥有的文件个数。在 Linux 操作系统中,每一个文件都有一个对应的数字标记,称为 i 结点(Inode)编号,这个编号在同一个文件系统内是唯一的,因此 xfs_quota 通过限制 i 结点的数量来实现对文件数量的限制。
1.8磁盘配额的限制类型
磁盘容量:限制用户能够使用的磁盘数据块(Block)大小,也就是限制磁盘空间大小,默认单位为 KB。
文件数量:限制用户能够拥有的文件个数。在 Linux 操作系统中,每一个文件都有一个对应的数字标记,称为 i 结点(Inode)编号,这个编号在同一个文件系统内是唯一的,因此 xfs_quota 通过限制 i 结点的数量来实现对文件数量的限制。
1.9磁盘配额的限制方法
软限制:指定一个软性的配额数值(如 480MB 磁盘空间、180 个文件),在固定 的宽限期(默认为七天)内允许暂时超过这个限制,但系统会给出警告信息。
硬限制:指定一个硬性的配额数值(如 500MB 磁盘空间、200 个文件),是绝对 禁止用户超过的限制值,当达到硬限制值时,系统也会给出警告并禁止继续写入数据。硬限制的配额值应大于相应的软限制值,否则软限制将失效。
二、设置磁盘配额
2.1设置系统的磁盘配额可以分为4个步骤:
(1)启动系统的磁盘配额功能
(2)创建qutoa配额文件
(3)设置用户和组群的磁盘配额
(4)启动磁盘限额功能
在 CentOS 系统中,不同的文件系统使用不同磁盘配额配置管理工具。
例如,XFS 文件系统通过 xfs_quota 工具进行管理;EXT3/4 文件系统通过 quota 工具进行管理
磁盘配额要求Linux内核支持磁盘配额技术,centos7默认支持
磁盘配额只对一般用户有效,对管理员(root)来说是没有任何作用限制的
2.2 设置磁盘配额
实验步骤(EXT4):
1、关闭selinux
2、修改/etc/fstab,对所选文件系统激活配额选项
3、重新挂载设备
4、用quotacheck命令生成基本配额文件(xfs跳过)
5、启动磁盘配额功能(xfs跳过)
6、用quota或者xfs_quota对具体用户或者目录设置配额
[root@localhost opt]# rpm -q xfsprogs
xfsprogs-4.5.0-18.el7.x86_64
mount -o usrquota,grpquota /dev/vg01/lv02 /opt #临时带配额参数挂载
vim /etc/fstab //写入 vim/dev/fstab
/dev/vg01/lv02 /opt ext4 defaults,usrquota,grpquota 0 0
由于ext4文件系统,quota功能默认是不开启的,需要创建磁盘配额的配置文件(aquota.user 和 aquota.group),才可以去启动quota功能,使用 quotacheck 命令的 -c 选项
-c:创建磁盘配额的配置文件
-v:显示扫描过程
-u:针对扫描用户的情况建立aquota.user
-g:针对扫描组的情况建立aquota.group
quotacheck -cvug /opt #创建磁盘配额的配置文件
quotaon /opt #开启磁盘配额,开启之前可以先查看是否已经开启了quotaon -p /opt
quotaon 选项 分区名 #开启配置
-a 启动所有分区的磁盘配额
-u 启动用户的磁盘配额
-g 启动组的磁盘配额
-v 显示启动过程信息
-p 查看是否开启了磁盘配额
quotaoff 选项 分区名
-a 关闭所有分区的磁盘配额
-u 关闭用户的磁盘配额
-g 关闭组的磁盘配额
2.3例:设置tom 用户(已经创建好的普通用户)在opt 目录下创建文件的最大容量是10240K 最大文件个数6
edquota -u tom //对tom用户限制
/dev/mapper/vg01/lv02 0 10000 10240 0 5 6
inode:可以创建文件或者目录的数量
block:可以存储的容量大小
soft(软限制):最低限制容量,可以被超过,但会有警告信息,超过的部分会保存到宽限时期到期。一般是硬限制的80%,单位为KB
hard(硬限制):绝对不能被超过限制。达到hard时,系统会禁止继续增加新的文件
宽限时间(一般为7天)单位为KB
当用户使用的空间超过了软限制但还没达到硬限制,在这个宽限的时间到期前必须将超过的数据降低到软限制以下(默认是7天),当宽限时间到期,系统将自动清除超过的数据。
0表示不限制
edquota 选项 用户名或组名 //开启用户的磁盘配额
-u 用户名
-g 组名
-t 设定宽限时间
-p 复制磁盘配额规则,不需要每一个用户或者组都手动设置一遍
1、以tom用户登陆
2、在/opt目录下写入10000K大小的文件(dd if=/dev/zero of=文件路径 bs=1K count=10000)
3、再在/opt目录下写入240K大小的文件
4、因为设置了软限制是10M,所以他会警告
5、再在/opt目录下写入440K大小的文件
6、因为已经超过了硬限制所以会报错已经超出了磁盘配额
7、ll -h /opt 查看一下超出10240的部分没写入
dd:复制
if=/dev/zero:从zero中拿取容量
of=文件路径:将的容量写入设置配额磁盘下的文件中
bs=N:每次写多少容量,默认单位为字节,可带单位K,M
count=N:一共写入几次
2.4查询用户或组的配额
quota 选项 用户或组名
-u 用户名
-g 组名
-v 显示详细信息
-s 以常见单位显示大小
查询文件系统配额
repquota 选项 分区名
-a 查询所有分区的磁盘配额
-u 查询用户配额
-g 查询组配额
-v 显示详情
-s 以常见单位显示
2.5XFS的磁盘配额设置
2.5.1对用户设置配额
1、创建lv03,在/etc/fstab设置挂载参数
vim /etc/fstab
/dev/vg01/lv03 /opt xfs defaults,usrquota,grpquota 0 0
2.设置tom 用户最大容量是80M 最大文件个数8
xfs_quota -x -c ‘limit -u bsoft=50M bhard=80M isoft=6 ihard=8 tom’ /opt/lv03
xfs_quota命令
-x:启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
-c:直接调用管理命令,如limit,report等
管理命令limit后相关:
-u:对用户限制
-g:对组限制
bsoft:磁盘容量软限制
bhard:磁盘容量硬限制
isoft:文件数量软限制
ihard:文件数量硬限制
tom写入90M数据会报错超出磁盘配额限制dd if=/dev/zero of=文件路径 bs=1M count=90
xfs_quota -x -c ‘report -abi’ /opt/lv03 /**/执行report命令,后面跟上挂载点,这样可以列出所有的Project ID以及对应的配额使用情况**
管理命令report后相关:
-u:对用户查看
-g:对组查看
-a:查看所有可用分区的配额使用报告
-b:查看磁盘容量
-i:查看文件数
三、对单一目录设置配额
1、修改lv03,在/etc/fstab设置挂载参数
vim /etc/fstab
/dev/vg01/lv03 /opt xfs defaults,prjquota 0 0
2、卸载lv03重新挂载
umount /dev/vg01/lv03
mount /dev/vg01/lv03
3、创建测试目录
mkdir /opt/lv03/test
4、设置配额
xfs_quota -x -c 'project -s -p /opt/lv03/test 1’
#为目录分配ProjectID 1,-p 后跟path
xfs_quota -x -c ‘limit -p bhard=100m 1’ /opt/lv03
#限制Project 1的配额为100MB
调用project命令创建一个project,再调用limit命令设置配额
xfs_quota -c ‘quota -p 1’ /opt/lv03
#查询某个project的配额使用情况