磁盘配额管理
由于Linux是一个多用户管理的操作系统,而Linux默认情况下并不限制每个用户使用磁盘空间的大小,假如某个用户疏忽或者恶意占满磁盘空间,将导致系统磁盘无法写入甚至崩溃;为了保证系统磁盘的有足够的剩余空间,我们需要对用户和组进行磁盘空间使用限制。
限制类型:1.限制用户和组对磁盘空间的使用量(data block),2.限制用户和组在磁盘内创建文件的个数(inode)
磁盘配额的限制级别:软限制:低级限制,此限制可以突破,突破时会被警告
硬限制:绝对限制,此限制不会被突破,达到指定限制后无法使用更多空间
宽限天数:允许用户在每个文件系统指定的宽限期内超过他们的软限制。一旦宽限期过期,软限制将作为硬限制强制执行
注意:磁盘配额是针对分区进行设置的
查看内核是否支持磁盘配额
在命令行执行grep “CONFIG_QUOTA” /boot/config-3.10.0-957.el7.x86_64
[root@localhost ~]# 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
查看挂载的分区是否支持配额属性
[root@localhost ~]# df -h #查看挂载的分区
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.8G 16G 11% /
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 1014M 133M 882M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 2.0G 33M 2.0G 2% /ss #目标磁盘
#查看目标分区是否支持磁盘配额
[root@localhost ~]# mount | grep /ss
/dev/sdb1 on /ss type xfs (rw,relatime,attr2,inode64,usrquota,grpquota) #usrquota,grpquota这两个属性是支持磁盘配额的
#如果是noquota属性,则需要重新挂载
[root@localhost ~]# umount /ss #取消挂载
[root@localhost ~]# vim /etc/fstab #将usrquota,grpquota,写入fatab
/dev/sdb1 /ss xfs defaults,usrquota,grpquota 0 0 #写入属性
[root@localhost ~]# mount -a #刷新挂载权限
创建用户
创建的用户为一个组,控制变量
[root@localhost ~]# useradd -g old laow
[root@localhost ~]# useradd -g old laos
[root@localhost ~]# useradd -g old laom
设置用户在指定的磁盘上的配额
xfs_quota命令:
-x:专家模式
-c:用来指定后续规则作为quota命令的参数(若不指定默认以交互式进行)
limit:设置限制的命令
容量限制:bsoft(软限制) bhard(硬限制)
文件数限制:isoft(软限制) ihard(硬限制)
[root@localhost ~]# xfs_quota -x -c 'limit isoft=5 ihard=7 bsoft=10m bhard=12m laow' /ss(/dev/sdb1) #为用户laow在/ss所挂载的磁盘中做限制
查看某个磁盘的限制信息
[root@localhost ~]# xfs_quota -x -c 'report' /ss(/dev/sdb1)
User quota on /ss (/dev/sdb1) Blocks
User ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 0 0 0 00 [--------]
laow 0 10240 12288 00 [--------]
Group quota on /ss (/dev/sdb1)
Blocks
Group ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 0 0 0 00 [--------]
设置组配额
[root@localhost ~]# xfs_quota -x -c 'limit -g bsoft=100m bhard=120m isoft=20 ihard=30 old' /ss(/dev/sdb1) #设置组的限制
查看某一用户或者组的配额
格式:quota [参数] 用户(组)
参数:-uvs 用户名,以详细信息常见的单位显示用户的信息
-gvs 组名,以详细信息常见的单位显示组的信息
[root@localhost ~]# quota -uvs laow
Disk quotas for user laow (uid 1004):
Filesystem space quota limit grace files quota limit grace
/dev/sdb1 0K 10240K 12288K 0 5 7
修改用户或组的磁盘配额
edquota [参数] 用户(组)
参数:-u 指定用户
-g 指定组
[root@localhost ~]# edquota -u laow #修改用户laow的磁盘配额
Disk quotas for user laow (uid 1004): #直接修改数值即可
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 10240 12288 0 5 7
查看指定磁盘的配额情况
repquota [参数] /dev/sdb1(/ss)
参数:
-uvs 查看指定磁盘,用户的限额情况
-gvs 查看指定磁盘,组的限额情况
[root@localhost ~]# repquota -ugvs /ss
*** Report for user quotas on device /dev/sdb1
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 1024K 1228K 0 5 7 #挂载/ss目录用户的磁盘限额情况
*** Status for user quotas on device /dev/sdb1
Accounting: ON; Enforcement: OFF
Inode: #67 (2 blocks, 2 extents)
*** Report for group quotas on device /dev/sdb1
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 -- 0K 100M 120M 0 20 30 #挂载/ss目录组的磁盘限额情况
*** Status for group quotas on device /dev/sdb1
Accounting: ON; Enforcement: ON
Inode: #68 (2 blocks, 2 extents)
开启/关闭分区的磁盘配额
quotaon [参数] 分区(挂载的目录) #开启分区的磁盘配额
quotaoff [参数] 分区(挂载的目录) #关闭分区的磁盘配额
参数:
-uv:启动用户的限额配置
-gv:启动组的限额配置
[root@localhost ~]# quotaon -uv /ss #开启/ss目录挂载分区的用户磁盘配额
Enabling user quota enforcement on /dev/sdb1
/dev/sdb1: user quotas turned on
[root@localhost ~]# quotaon -gv /ss #开启/ss目录挂载分区的组磁盘配额
Enabling group quota enforcement on /dev/sdb1
/dev/sdb1: group quotas turned on
[root@localhost ~]# quotaoff -gv /ss #关闭/ss目录挂载分区的组磁盘配额
Disabling group quota enforcement on /dev/sdb1
/dev/sdb1: group quotas turned off
[root@yanzixuan ~]# quotaoff -uv /ss #关闭/ss目录挂载分区的用户磁盘配额
Disabling user quota enforcement on /dev/sdb1
/dev/sdb1: user quotas turned off