高级文件系统管理
-
磁盘配额
概念:由于linux是一个多用户管理的操作系统,而linux默认下并不限制每个用户使用磁盘空间的大小,假如某个用户疏忽或者恶意占满空间,将导致系统磁盘无法写入甚至崩溃,为了保证系统磁盘有足够的剩余空间,我们需要对用户和给进行磁盘使用限制(限制用户和组在指定分区上的使用空间和文件数目(inode号数量))
磁盘配额限制类型:
-
限制用户和组对磁盘空间的使用量
-
限制用户和组在磁盘内创建文件的个数
磁盘配额限制级别:
-
软限制 :低级别限制,此限制可以突破,突破时会警告,超出部分会有宽限天数,宽限到期后超出部分被清空,软限制不能超过硬限制
-
硬限制:绝对限制,此限制不会被突破,达到指定限制后无法使用更多的空间
-
宽限天数:当有数据超过软限制后,超出部分会被计时,宽限天数到期后超出部分数据将会被清空,宽限天数默认是7天
注:磁盘配额是针对分区进行设置的,无法实现“某用户在系统中共计只能使用50MB磁盘空间”只能设置某用户在/home分区能使用30M这样的限制。(针对分区的)
盘配额开启条件
内核是否支持磁盘配额?
[root@localhost ~]# grep "CONFIG_QUOTA" /boot/config-3.10.0-693.el7.x86_64
磁盘配额相关命令是否安装?
[root@localhost ~]# rpm -q quota
开启磁盘配额
[root@localhost ~]# vi /etc/fstab
mount -a 重新加载/etc/fstab文件,使新增的挂载生效
注:若之前手动挂载过/dev/sdc1,则执行mount -a 之前先卸掉
磁盘配额实验规划
-
准备足够大小的分区,要远大于实验的需求空间(10G)
-
创建实验用户和组
用户: cj bd xz
组: thot
[root@localhost ~]# groupadd thot
[root@localhost ~]# useradd -g thot cj
[root@localhost ~]# useradd -g thot bd
[root@localhost ~]# useradd -g thot xz
[root@localhost ~]# echo "jueming" | passwd --stdin cj
[root@localhost ~]# echo "jueming" | passwd --stdin bd
[root@localhost ~]# echo "jueming" | passwd --stdin xz
-
磁盘配额规划
thot:软:400M 硬:500M 软:8个 硬:15个
cj: 软: 40M 硬:50M 软:6个 硬:10个
bd: 软:200M 硬:250M 软:4个 硬:8个
xz: 软: 200M 硬:250M 软:4个 硬:8个
-
宽限天数修改为8天
磁盘配额实验流程
-
查看内核是否支持磁盘配额限制
[root@localhost ~]# grep "CONFIG_QUOTA" /boot/config-3.10.0-693.el7.x86_64
CONFIG_QUOTA=y #若查询结果为Y证明支持配额
-
查看配额相关设置工具是否安装
[root@localhost ~]# rpm -q quota #验证quota是否安装
-
分区创建
创建足够大小的分区
创建用户和组
创建用户时指定thot为初始组
-
开启磁盘配额
[root@localhost ~]# vi /etc/fstab
UUID=337a6a0e-68ee-499a-af39-ebe08d42f /sdc/sdc1 ext4defaults,usrquota,grpquota 0 0
mount -a 重新加载/etc/fstab文件,使新增的挂载生效
-
生成磁盘配额配置文件 (必须先关闭selinux)
关闭selinux
[root@localhost ~]# vi /etc/sysconfig/selinux
quotacheck -avug
-a 自动扫描/etc/mtab,根据挂载属性,为所有开启了磁盘配额的分区创建配额文件
-v 显示过程
-u 创建用户配置文件 即生成aqouta.group文件
-g 创建组配置文件 即生成aqouta.user文件
-c 清除原有的配置文件,重新建立新的配置文件
验证是否生成配置文件的方法:
在指定分区的挂载点下:是否生成下两个文件
aqouta.group
aqouta.user
-
编辑配置文件,写入规则
edquota 选项 用户名或组名
-u 用户名
-g 组名
-t 设定宽限时间
-p 复制磁盘配额规则,(将已设置的额度复制给指定用户)
#edquota -p 模板用户 -u 目标用户
注:配置文件中所写大小默认单位KB(可以使用KB,MB/GB/TB等)
[root@localhost ~]# edquota -g thot
[root@localhost ~]# edquota -u cj
[root@localhost ~]# edquota -u bd
[root@localhost ~]# edquota -p bd -u xz
-
启用设置好的配额
quotaon 启用配额
-avug
quotaoff 关闭配额
-avug
[root@localhost ~]# quotaon -avug
-
验证设置的磁盘配额是否生效(查看)
查询指定用户和组的配额
quota 选项
-uvs 用户名 查看指定用户的配额(所有磁盘对此用户的限制)
-gvs 组名 查看指定组的配额
-u 用户名
-g 组名
-v 显示详细信息
-s 以常用单位显示
查询指定分区的配额
repquota 选项
-ugvs 分区名 查看指定分区上,限制了哪些用户和组,以及额度
-u 用户名 查询用户配额
-g 组名 查询组配额
-v 显示详细信息
-s 以常用单位显示
[root@localhost ~]# repquota -ugvs /sdc/sdc1
-
验证额度是否生效
使用普通用户执行验证命令
dd if =/dev/zero of=/sdc/sdc1/* bs=1M count=
1)启用quota磁盘限制
2)给/sdc/sdc1启用acl权限
3)利用ACL赋予thot组rwx权限
[root@localhost ~]# setfacl -m g:thot:rwx /sdc/sdc1
4)测试1:文件大小39M
测试2:文件大小41M(超过软磁盘限额)
测试3:文件大小60M(超过硬磁盘限额)
测试4:bd用户文件大小250M
测试5:直接给xz用户文件大小300M