【LINUX】-- 高级文件系统管理
这是本人第一次写博客,若有什么错误的地方或者不对的地方,还请各位不吝赐教!!!
一、磁盘配额的概念
由于Linux是一个多用户管理的操作系统,而Linux默认情况下并不限制每个用户使用磁盘空间的大小,假如某个用户疏忽或者恶意占满磁盘空间,将导致系统磁盘无法写入甚至崩溃;为了保证系统磁盘的有足够的剩余空间,我们需要对用户和组进行磁盘空间使用限制。
磁盘配额限制类型:
1. 限制用户和组对磁盘空间的使用量
2. 限制用户和组在磁盘内创建文件的个数
磁盘配额限制级别:
- 软限制:低级限制,此限制可以突破,突破时会被警告,超出部分会有宽限天数,宽限天数到期后超出部分被清空,软限制不能超过硬限制
- 硬限制:绝对限制,此限制不会被突破,达到指定限制后无法使用更多空间
- 宽限天数:当有数据超过软限制后,超出部分会被计时,宽限天数到期后超出部分数据将被清空,宽限天数默认是7天
注:磁盘配额是针对分区进行设置的,无法实现“某用户在系统中共计只能使用50MB磁盘空间”只能设置某用户在/home分区能使用30M这样的限制。切记:磁盘配额是针对分区的!
二、磁盘配额开启条件
内核是否支持磁盘配额?
#grep "CONFIG_QUOTA" /boot/config-2.6.32-431.el6.x86_64
磁盘配额相关命令是否安装?
#rpm –q quota
三、磁盘配额实验规划
准备足够大小的分区,要远大于实验的需求空间
创建实验用户和组
用户:cj、bd、xz、
组:thot
磁盘配额规划
thot:硬:500M 软:450M 文件数不限制
cj: 硬:50M 软:40M 硬:10个 软:8个
bd: 硬:250M 软:200M 文件数不限制
xz: 硬:250M 软:200M 文件数不限制
宽限天数修改为8天
四、磁盘配额实验流程
- 查看系统是否支持磁盘配额
#grep "CONFIG_QUOTA" /boot/config-2.6.32-431.el6.x86_64
2. 查看分区的挂载属性是否满足
dumpe2fs –h /dev/sdb1 | grep "Default mount options"
查看结果中是否包含usrquota、grpquota两个挂载属性?
如果没有两个挂载属性,则需要重新挂载并添加两个属性,并写入自动挂载
3. 创建分区、用户、用户组
分区大小要远大于实验要求大小,避免影响实验结果
用户:cj、bd、xz
组:thot
注:创建用户时,指定thot为初始组
4. 生成用户和组的配置文件
quotacheck 选项 分区名
-a 扫描/etc/mtab文件中所有启用磁盘配额功能的分区。如果加入此参数,命令后面就不需要加入分区名了
-u 建立用户配额的配置文件,即生成aquota.user
-g 建立组配额的配置文件,即aquota.group
-v 显示扫描过程
-c 清除原有的配置文件,重新建立新的配置文件
注:若报错没有权限生成文件,则需要关闭SELinux
5. 编辑配置文件、设置指定限制大小
edquota 选项 用户名或组名
-u 用户名
-g 组名
-t 设定宽限时间
-p 复制磁盘配额规则,不需要每一个用户或者组都手动设置一遍
# edquota -p 模板用户 -u 目标用户
注:配置文件中所写大小默认单位KB
6. 启动和关闭磁盘配额
启动:
quotaon 选项 分区名
-a 根据/etc/mtab文件启动所有分区的磁盘配额(不写分区名)
-u 启动用户的磁盘配额
-g 启动组的磁盘配额
-v 显示启动过程信息
关闭:
quotaoff 选项 分区名
-a 根据/etc/mtab文件关闭所有分区的磁盘配额(不写分区名)
-u 关闭用户的磁盘配额
-g 关闭组的磁盘配额
-v 显示启动过程信息
7. 查看磁盘配额的信息
查询指定用户和组的配额:
quota 选项 用户或组名
-u 用户名
-g 组名
-v 显示详细信息
-s 以常见单位显示大小
8. 查询指定分区的磁盘配额:
repquota 选项 分区名
-u 查询用户配额
-g 查询组配额
-v 显示详情
-s 以常见单位显示
9. 验证磁盘配额是否生效
切换到执行用户,以预设用户身份进行文件创建(su)
测试工具:
dd 生成指定大小的文件(dd命令详解见附件)
dd if=/dev/zero of=/分区名/testfile bs=1M count=60
注意:用户的测试需要切换到指定用户身份,而组磁盘配额的验证需要?
10. 非交互设置磁盘配额
setquota -u 用户名 软(容) 硬(容) 软(数) 硬(数) 分区名
注:同样,这样的非交互式的命令更适合写入脚本,而且,假如有很多用户的磁盘配额配置相同也可以用复制来实现。