一、EXT文件磁盘配额
管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
即可对用户存储文件数量做限制,也可对用户存储文件大小做限制
配额说明:
1.配额只能针对普通用户和用户组,root不能限制
2.配额只能针对分区,不能针对某个目录
3.即可限制block,也可以限制inode
前提条件:
1.查看内核是否支持:
grep CONFIG_QUOTA /boot/config-3.10.0-514.el7.x86_64
2. 查看系统安装是否quota工具:
rpm -qa | grep quota
二、磁盘配额建立
1.实现永久挂载的同时需要为文件系统添加支持配额的选项
vim /etc/fstab
/dev/sdb1 /mnt/ext4 ext4 defaults,usrquota,grpquota 0 0
usrquota:针对用户做磁盘限额
grpquota:针对组做磁盘限额
(两个选项根据需要进行选择)
2.在分区中生成配额文件quota.user和quota.group
1)先统计一下当前的磁盘中已经被占用的空间和文件数量,然后生成配额文件。
2)在你开启配额前磁盘里已有的文件数据都不会计入计算。
3)在你开启磁盘配额后,用户建立的文件和数据才会被进行计算,达到设定值才会进行限制。
命令:quotacheck -augcv
#检查已有的文件资源,同时生成配额文件
#命令执行后,会新建出两个文件
选项说明:
-a 扫描/etc/mtab中所有启用配额的分区
-u 扫描磁盘计算用户所占用的文件数,生成aquota.user文件
-g 扫描磁盘计算组所占用的文件数,生成aquota.group文件
-c 创建配额文件aquota.user和aquota.group
-v 显示扫描过程
-m 强制以读写方式扫描文件系统,和-M类似,一般在扫描根分区使用
-f 强制扫描文件系统,并写入新的配置文件。一般在扫描新添加的硬盘分区使用。执行后,会检查所有支持磁盘配额的分区,如果分区之前有配置配额,开启又关闭,再次开启会有配置文件被更新
3.设置配额信息
edquota 选项 用户名或组名
-u:编辑用户的配额信息
edquota -u tom
-g:为组编辑配额信息
-p user1 user2:将user1的配额设置复制给user2
-t:设置宽限时间
设置配额信息共有六个字段
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 40960 51200 0 8 10
前三个字段表示针对文件空间限制,后三个字段表示针对文件数量限制(0表示没有限制)
第一个字段表示用户在文件系统中已占用的空间统计
第二个字段表示用户创建文件时,文件空间的警告阈值,超过数值则提示,单位KB(软限制一般为提醒,小于硬限制即可,不设置或者超过硬限制都无意义)
第三个字段表示用户的空间限制,最大使用的磁盘空间,单位KB
第四个字段表示用户已创建文件的数量统计
第五个字段表示用户在文件系统中创建文件的数量警告阈值,超过数量则提示
第六个字段表示用户创建文件的数量限制,最大创建文件数量
以上六个字段,主要针对2,3,5,6做设置
非交互设定用户磁盘限额
setquota -u 用户名 容量软限制 容量硬限制 个数软限制 个数硬限制 分区名
4.开启/关闭磁盘配额
quotaon/quotaoff 选项 分区名
选项:
-a
-a表示开启/关闭配额功能所有分区
-u
启动/关闭用户的磁盘配额
-g
启动/关闭组的磁盘配额
-p 设备名
查看设备是否开启磁盘配额
5.查看配额信息
quota -uv 用户名
只查看用户的配额信息
quota -gv 组名
只查看组的配额信息
-v 查看详细信息
三、实验演示
1.切换用户
su – tom
2.进入限额的文件系统挂载点下
cd /mnt/ext4
3.建立文件,每个文件30M
(如果权限不够,使用root账号更改文件夹权限777
[tom@localhost ext4]$ dd if=/dev/zero of=test1 bs=1M count=30
继续复制……
复制到第三个文件时,超过了软限制,系统发出了警告信息
复制到第四个文件时,超过了硬限制,只复制了10M
这个文件夹对于tom用户来说,只允许使用100M的空间。
同理,对于文件个数的测试使用下面的命令:
touch file {1..10}
#建立名为file的文件:从1到10
同样出现警告和报错
实验扩展:
同时对用户和用户组进行配额限制,用户组的配额用完,用户没用完,用户也不能创建文件
同时对用户和用户组进行了配额限制,用户的配额用完,用户组的配额用完,本用户不可以创建文件,其它在组中的用户可以创建
四、XFS磁盘配额
1.XFS的优势
XFS既可以对用户进行限制,又可以对目录进行配额限制,对目录进行的限制对root用户也生效
2.xfs_quota选项
-x:启用专家模式,后续才能加入-c的命令参数
-c:直接调用管理命令,如limit,report等
管理命令
Print:单纯列出目前主机内的文件系统参数等数据
df:与原本的df 一样的功能,可加上-b(block),-i(inode),-h(加上单位)等
report:查询目前的磁盘配额信息
state:说明目前支持磁盘配额的文件系统的信息,有没有使用相关选项等
[root@localhost ~]# xfs_quota -x -c "state"
User quota state on /mnt/xfs (/dev/sdb2)
Accounting: ON
Enforcement: ON
Inode: #67 (2 blocks, 2 extents)
#上面四行说的是有启动User的磁盘限制
Group quota state on /mnt/xfs (/dev/sdb2)
Accounting: ON
Enforcement: ON
Inode: #68 (2 blocks, 2 extents)
#上面四行说的是有启动Group的磁盘限制
Project quota state on /mnt/xfs (/dev/sdb2)
Accounting: OFF
Enforcement: OFF
Inode: #68 (2 blocks, 2 extents)
#上面四行说的是没有开启project的磁盘限制
Blocks grace time: [7 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
#上面三行显示的是grace time的天数
五、步骤
1.挂载的同时需要为文件系统添加支持配额的选项
/dev/sdb2 /mnt/xfs xfs defaults,usrquota(uquota,quota),grpquota(gquota),prjquota(不可与grpquota同时存在) 0 0
配额限制即可通过mount指令,一次性添加,也可写入fstab,永久使用设备启用配额,需要将文件系统重载
umount /mnt/xfs;mount -a(或mount -o remount /mnt/xfs)
2.验证参数识别
mount | grep “/dev/sdb2”
3.对quotaxfs用户设置配额
xfs_quota -x -c "limit [-u|-g|-p] bsoft=60M bhard=80M isoft=8 ihard=10 name" /mountpoint
如果成功配置,这里不会出任何信息,我们可以通过查询配额信息来确认是否配置成功。
4.查询配额信息
xfs_quota -x -c "report [-u|-g|-p]bih" /mountpoint
可以看到自己的配置已经设置成功
5.设置gracetime
Xfs_quota -x -c “timer [-u | -g | -p][-bir] Ndays”
设置完毕后可以通过 [root@localhost ~]# xfs_quota -x -c "state"来进行查看
Blocks grace time: [7 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
六、实验测试
与上面的EXT磁盘配额实验测试过程相同
但不同的是,在超过软限制时,系统不会报警。超过硬限制,才会报错。
七、对单一目录进行限制(普通用户和root都会受到影响)
1.在/etc/fstab中为文件系统添加支持目录配额的选项:prjquota
(要注意:prjquota和grpquota是不能在一个文件系统中同时存在的,所以要把之前设置的grpquota删除)
[root@localhost ~]# vim /etc/fstab
/dev/sdb2 /mnt/xfs xfs defaults,usrquota,prjquota 0 0
2.重新挂载
[root@localhost ~]# umount /dev/sdb2
[root@localhost ~]# mount /dev/sdb2
3.可以查看文件选项
[root@localhost ~]# xfs_quota -x -c "print" /dev/sdb2
4.目录的设置
目录的设置必须指定一个【选项名称、选项标识符】来规范,还必须使用特定的两个配置文件
例如:我打算规范/mnt/xfs目录,其选项名称为myquotaproject,识别码为6,这些都是自己指定的。
/mnt/xfs是我当前文件系统的挂载点
1)指定方案识别码与目录的对应在/etc/projects
(注意:/etc/projects目录之前并不存在,但必须指定到这个目录中)
[root@localhost~]# echo "6:/mnt/xfs" >> /etc/projects
2)规范方案名称与标识符的对应在/etc/projid
[root@localhost~]# echo "myquotaproject:6" >> /etc/projid
3)初始化方案名称
[root@localhost ~]# xfs_quota -x -c "project -s myquotaproject"
4)可以看一下目录里都有哪些设置
5) 设置目录限制
[root@localhost ~]# xfs_quota -x -c "limit -p bsoft=200M bhard=300M isoft=15 ihard=20 myquotaproject" /mnt/xfs
6)查看目录限制配额情况
[root@localhost ~]# xfs_quota -x -c "report -pbih" /mnt/xfs
7)测试
对于目录磁盘配额的设置,任何用户都会被限制,root用户也无法逾越
八、xfs_quota扩展命令
1.暂时取消quota文件限制功能
[root@localhost ~]# xfs_quota -x -c "disable [-u|-g|-p]" /mnt/xfs
查看变化
[root@localhost xfs]# xfs_quota -x -c "state" /mnt/xfs
2.开启quota文件限制功能
[root@localhost xfs]# xfs_quota -x -c "enable [-u|-p|-g]" /mnt/xfs
3.永久关闭quota文件限制功能
xfs_quota -x -c "off [-u|-p|-g]" /mountpoint
off完全关闭配额限制,如想重开需卸载再重新挂载才能启动,如果无需执行remove,不建议使用off,一般disable即可
4.删除配额限制
remove必须在off下才可以执行,删除配额限制
xfs_quota -x -c "remove [-u|-p|-g]" /mountpoint
xfs_quota -x -c "report -phb" /mountpoint
删除后,就显示不出来相关配置的情况了