其他分享
首页 > 其他分享> > 磁盘管理高级进阶-磁盘配额(CenOS7.X)

磁盘管理高级进阶-磁盘配额(CenOS7.X)

作者:互联网

Linux是一个多用户管理的操作系统,磁盘配额是为了防止某用户疏忽或者恶意占满磁盘空间,而导致磁盘崩溃。

  1. 磁盘配额限制类型

通过

对用户/组进行磁盘空间使用量的限制(data block)
对用户/组进行磁盘空间创建文件个数的限制(inode)

来满足磁盘配额的效果

  1. 磁盘配额限制界别

    1.软限制:低级限制,此限制可以突破,突破时会被警告

    2.硬限制:绝对限制,此限制不会被突破,达到指定限制后无法使用更多空间

    3.宽限天数:允许用户在每个文件系统指定的宽限期内超过他们的软限制。一旦宽限期过期,软限制将作为硬限制强制执行。

    注意:磁盘配额是针对分区的
    
  2. 磁盘配额实验规划

    2.1准备足量的空间大小的分区

    2.2 添加磁盘、修改分区表类型、分区、格式化、挂载
    参考分区步骤

    2.3创建实验的用户和组
    用户:laow、laos、laom、
    组:old

    2.4磁盘配额规划
    old: 硬:500M 软:450M 文件数不限制
    laow: 硬:50M 软:40M 硬:10个 软:8个
    laos: 硬:250M 软:200M 文件数不限制
    laom: 硬:250M 软:200M 文件数不限制

开始磁盘配额

  1. 磁盘开启条件

    首先确认一下内核是否支持磁盘配额

[root@xxx ~]# :grep "CONFIG_QUOTA" /boot/config-3.10.0-957.el7.x86_64
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y   #表示支持状态

在查看一下quota命令是否安装

[root@xxx ~]# :rpm -q quota
quota-4.01-19.el7.x86_64       #这里会显示版本
  1. 查看分区的挂载是否开启了磁盘配额功能

    查看结果是否有usrquota,grpquota这两个属性

[root@xxx ~]# :mount | grep /dev/sdc1
/dev/sdc1 on /disk/guazai4 type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
如果没有,那么我们需要去/etc/fstab中配置

在这里插入图片描述
如果已经在fstab中挂载了,我们mount -a 是没有用
这种情况,我们使用 mount -ao remount就可以实现更新挂载

或者输出重定向也可以
[root@xxx ~]# echo "/dev/sdb1 /movie xfs defaults,usrquota,grpquota 0 0" >> /etc/fstab
[root@localhost ~]# mount -a 
mount -a  是在我们没有在fatab中做任何挂载,通过echo来实现挂载,我们在mount -a就可以

配置完成后,我们再次mount | grep /dev/sdc1查看一下。

  1. 创建用户及用户组

    用户:laow、laos、laom
    组:old
    顺便设置密码

[root@xxx /boot]# :groupadd old
You have new mail in /var/spool/mail/root
[root@xxx /boot]# :useradd -g old laow
[root@xxx /boot]# :useradd -g old laos
[root@xxx /boot]# :useradd -g old laom
You have new mail in /var/spool/mail/root
[root@xxx /boot]# :echo "123123" | passwd --stdin laow
Changing password for user laow.
passwd: all authentication tokens updated successfully.
You have new mail in /var/spool/mail/root
[root@xxx /boot]# :echo "123123" | passwd --stdin laos
Changing password for user laos.
passwd: all authentication tokens updated successfully.
[root@xxx /boot]# :echo "123123" | passwd --stdin laom
Changing password for user laom.
passwd: all authentication tokens updated successfully.
注意:创建用户时,所有人都指定old为初始组
  1. 设置用户/组的磁盘限额信息
    格式:xfs_quota -x -c (-u/g)'limit bsoft=容量 bhard=容量 isoft=文件数 ihard=文件数 用户/组 ’ 分区
    参数:
    -x:专家模式
    -c:用来指定后续规则作为quota命令的参数(若不指定默认以交互式进行)
    limit:设置限制的命令
    容量:bsoft(软) bhard(硬)
    文件数:isoft(软) ihard(硬)
[root@xxx /disk/guazai4]# :xfs_quota -x -c 'limit bsoft=40m bhard=50m isoft=8 ihard=10 laow' /dev/sdc1
[root@xxx /disk/guazai4]# :xfs_quota -x -c 'limit bsoft=200m bhard=250m isoft=0 ihard=0 laos' /disk/guazai4
[root@xxx /disk/guazai4]# :xfs_quota -x -c 'limit bsoft=200m bhard=250m isoft=0 ihard=0 laom' /disk/guazai4
[root@xxx /disk/guazai4]# :xfs_quota -x -c 'limit -g bsoft=450m bhard=500m isoft=0 ihard=0 old' /disk/guazai4
  1. 启动磁盘配额

启动格式:quotaon 选项 分区名称

-u	启动用户的磁盘配额	
-g	启动组的磁盘配额
-v	显示启动过程信息
[root@xxx /boot]# :quotaon -ugv /dev/sdc1
quotaon: Enforcing group quota already on /dev/sdc1
quotaon: Enforcing user quota already on /dev/sdc1

关闭:quotaoff 选项 分区名称
参数一样

[root@xxx /boot]# :quotaoff -ugv /dev/sdc1
Disabling group quota enforcement on /dev/sdc1
/dev/sdc1: group quotas turned off
Disabling user quota enforcement on /dev/sdc1
/dev/sdc1: user quotas turned off
You have new mail in /var/spool/mail/root
[root@xxx /boot]# :quotaon -ugv /dev/sdc1
Enabling group quota enforcement on /dev/sdc1   #再次启动,提示会变
/dev/sdc1: group quotas turned on
Enabling user quota enforcement on /dev/sdc1
/dev/sdc1: user quotas turned on
  1. 查看磁盘配额信息

查询用户或组的配额:quota 选项 用户或组名

-u	用户名
-g	组名
-v	显示详细信息
-s	以常见单位显示大小
常见组合:-uvs      -gvs
拿laow举例
[root@xxx /boot]# :quota -uvs laow        #显示laow的磁盘配额详细信息
Disk quotas for user laow (uid 1019): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdc1      0K  40960K  51200K               0       8      10        

还可以通过查询指定分区来看磁盘配额

查询指定分区的磁盘配额:repquota 选项 分区名
   
-u	查询用户配额
-g	查询组配额
-v	显示详情
-s	以常见单位显示
可以同时查看用户和组    组合:   -ugvs
[root@xxx ~]# :repquota -ugvs /dev/sdc1
*** Report for user quotas on device /dev/sdc1
Block grace time: 7days; Inode grace time: 7days
                        Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      0K      0K      0K              3     0     0       
laow      -+      0K  40960K  51200K             10     8    10  6days
laos      +-    250M    200M    250M  6days       1     0     0       
laom      --    200M    200M    250M              1     0     0       

*** Status for user quotas on device /dev/sdc1
Accounting: ON; Enforcement: ON
Inode: #67 (3 blocks, 2 extents)

*** Report for group quotas on device /dev/sdc1
Block grace time: 7days; Inode grace time: 7days
                        Space limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      0K      0K      0K              3     0     0       
old       --    450M    450M    500M             12     0     0       

*** Status for group quotas on device /dev/sdc1
Accounting: ON; Enforcement: ON
Inode: #68 (2 blocks, 2 extents)

到这里我们的磁盘配额信息已经完成,可以进行验证

切换普通用户,进行文件创建,测试容量大小以及文件数是否被限制
注意:我们的普通用户一定要对挂载目录有权限
     chmod   777  目录
  1. 测试容量大小

通过dd命令

格式:dd  if=数据来源  of=数据目标  bs=块大小  count=块数量
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为bytes个字节(可自定义单位)。
count=blocks:拷贝块的数量,块大小等于bs指定的大小。(多少个)

1.1用户限额测试

laow用户这里磁盘配额为50M.我们使用laiw用户输入一个60M的文件
[laow@xxx ~]$ :dd if=/dev/zero of=/disk/guazai4/laow.txt bs=1M count=60
dd: error writing ‘/disk/guazai4/laow.txt’: Disk quota exceeded
51+0 records in       #被限额了。只能输入50M
50+0 records out
52428800 bytes (52 MB) copied, 0.0424156 s, 1.2 GB/s

1.2组限额测试

因为实验规划
	laow:	硬:50M		软:40M		
    laos:	硬:250M	软:200M	
    laom:	硬:250M	软:200M		
    old:   硬:500M	软:450M
    三个用户相加的硬限额大于所属组硬限额的大小
    看一下测试效果
[laos@xxx ~]$ :dd if=/dev/zero of=/disk/guazai4/laos.txt bs=1M count=250
250+0 records in
250+0 records out
262144000 bytes (262 MB) copied, 4.03898 s, 64.9 MB/s
[laos@xxx ~]$ :ll -h /disk/guazai4/
total 300M
-rw-r--r--. 1 laos old 250M Apr 22 00:03 laos.txt
-rw-r--r--. 1 laow old  50M Apr 21 23:48 laow.txt
[laos@xxx ~]$ :su - laom
Password: 
[laom@xxx ~]$ :dd if=/dev/zero of=/disk/guazai4/laom.txt bs=1M count=250
dd: error writing ‘/disk/guazai4/laom.txt’: Disk quota exceeded
201+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 4.28356 s, 49.0 MB/s
[laom@xxx ~]$ :ll -h /disk/guazai4/
total 500M
-rw-r--r--. 1 laom old 200M Apr 22 00:04 laom.txt
-rw-r--r--. 1 laos old 250M Apr 22 00:03 laos.txt
-rw-r--r--. 1 laow old  50M Apr 21 23:48 laow.txt
我们最后配置的laom用户的配额受到了限额(给了250M,只能输入200M),优先被组所限额
  1. 测试文件数

    我们删除刚才输入给laow用户的文件
    使用laow用户在挂载文件中,创建20个子文件,看一下效果
    
[laow@xxx /disk/guazai4]$ :rm -rf laow.txt 
[laow@xxx /disk/guazai4]$ :touch {0..20}.txt
touch: cannot touch ‘10.txt’: Disk quota exceeded
touch: cannot touch ‘11.txt’: Disk quota exceeded
touch: cannot touch ‘12.txt’: Disk quota exceeded
touch: cannot touch ‘13.txt’: Disk quota exceeded
touch: cannot touch ‘14.txt’: Disk quota exceeded
touch: cannot touch ‘15.txt’: Disk quota exceeded
touch: cannot touch ‘16.txt’: Disk quota exceeded
touch: cannot touch ‘17.txt’: Disk quota exceeded
touch: cannot touch ‘18.txt’: Disk quota exceeded
touch: cannot touch ‘19.txt’: Disk quota exceeded  
touch: cannot touch ‘20.txt’: Disk quota exceeded
[laow@xxx /disk/guazai4]$ :ll                      #因为实验规格化:	laow:硬:10个	软:8个                              
total 460800                                       #我们创建了20个就会被磁盘限额,限制数量  
-rw-r--r--. 1 laow old         0 Apr 22 00:08 0.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 1.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 2.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 3.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 4.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 5.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 6.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 7.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 8.txt
-rw-r--r--. 1 laow old         0 Apr 22 00:08 9.txt
-rw-r--r--. 1 laom old 209715200 Apr 22 00:04 laom.txt
-rw-r--r--. 1 laos old 262144000 Apr 22 00:03 laos.txt
因为实验规格化:	laow:硬:10个	软:8个
我们创建了20个就会被磁盘限额,限制数量

补充:修改磁盘限额

命令:edquota 选项 用户/组

-u:修改用户的限额配置
-g:修改组的限额配置
[root@xxx /]# :edquota -u laow

Disk quotas for user laow (uid 1019):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdc1                         0      40960      51200         10        8       10

直接修改对应的容量或文件数即可

标签:进阶,xxx,quota,dev,CenOS7,laow,磁盘,txt,root
来源: https://blog.csdn.net/weixin_46669463/article/details/105678851