菜单
本页目录

磁盘配额(六版本)

一、quota磁盘配额 #多用户使用

#限制usr、grp的 容量、   数量
			   block   inode

操作系统:
磁盘:1
分区下的:
block:占用空间。
inode:文件数量。

查看quota是否安装:rpm 	-qa   |grep   quota

查看内核是否支持:

image-20240713171718586

基本概念:

软限制(soft)(小):超出限制任然能使用,会提示,超过宽限天数则会锁住
硬限制(hard)(大):不能超过限制,超出则锁住,不能使用
宽限天数(grace):超过软限制则启用,默认7天
步骤:分区、格式化、挂载
## 挂载:	
			1)临时挂载:		mount		分区	挂载点
							mount    -o   remount,usrquota,grpquota  挂载点
			   永久挂载:
				UUID   挂载点     文件系统     defaults,usrquota,grpquota  0  0
				
			2)关闭SElinux
				getenforce			#查看selinux状态
				setenforce		0		#临时关闭selinux
				永久关闭selinux	:#永久关闭selinux,改完配置文件需要重启后才生效
						/etc/selinux/config			#SElinux的配置文件
							SELINUX=disable		#选项
							
			3)quotacheck		#查看		
				1、quota 	-avug		#生成quota配置
				2、	edquota		-u	  用户		#设置用户配额
					edquota		-g	  组		#设置组配额
					edquota		-t				#修改宽限天数
			edquota		-p   用户1 	  -u   	用户2	#复制用户1的配额到用户2
				3、设置挂载点权限,使其他用户能使用		chmod
				4、	quotaon		-avug		#quota启用
					quotaoff		-avug		#quota停用

查所有使用情况:

repquota [选项] 分区

	选项:		
			-a		#所有
			-u		#用户
			-g		#组
			-v		#显示详细
            -s		#常见单位显示
创建指定大小文件
$ dd   if=/dev/zero  	of=/disk1/cc1   	bs=1M  	count=200
	   数据来源	  		 数据去向		 	  单次大小	索取次数

组设置quota,设置SGID,使子目录、子文件的所属组仍为父目录的所属组
1)chmod	g+s		目录						   #给目录设置SGID
2)chown	所有者:所属组	目录					   #设置目录的所有者、所属组
3)edquota		-g		组名	目录			  #设置组磁盘配额,给目录
4)quotaoff		-avug	&&  quotaon	-avug	 #重新启用quota
5)组内其他成员,创建文件再测试		repquota   -gvs	

磁盘配额(七版本)

非交互式:执行后仍需键盘后续输入
交互式:执行后不需要后续键盘输入
查内核是否支持磁盘配额:  

# [root@localhost ~]# grep CONFIG_QUOTA /boot/config-3.10.0-1160.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

步骤:

1、分区
[root@localhost ~]# fdisk /dev/sdb
2、格式化
[root@localhost ~]# mkfs.xfs /dev/sdb1
3、挂载:
[root@localhost ~]# mkdir /disk1

## 临时挂载
					mount  -o   特殊选项					   设备文件		 挂载点
[root@localhost ~]# mount  -o   usrquota,grpquota,prjquota   /dev/sdb1    /disk1
	
## 永久挂载
UUID	挂载点	  文件系统    defaults,usrquota,grpquota,prjquota  0 0

[root@localhost ~]# blkid /dev/sdb1 |awk '{print $2}' | sed s/\"//g | awk '{print $1 "  /disk1   defaults,usrquota,grpquota,prjquota  0 0"}' >> /etc/fstab 

[root@localhost ~]# tail -n1 /etc/fstab
UUID=b8d9fd16-6288-4660-b1da-dfae67e163ad  /disk1   defaults,usrquota,grpquota,prjquota  0 0

4、非交互式创建磁盘配额
(1) xfs_quota 命令
## xfs_quota	-x 	-c 	“命令”	

# xfs_quota -x -c "print"	#查看当前挂载情况
		
[root@localhost ~]# xfs_quota -x -c "print"
Filesystem          Pathname
/                   /dev/sda3
/boot               /dev/sda1
/disk1              /dev/sdb1 (uquota, gquota, pquota)

# xfs_quota -x -c "df -h"		#查看大小

[root@localhost ~]# xfs_quota -x -c "df -h"
Filesystem     Size   Used  Avail Use% Pathname
/dev/sda3     37.0G   1.5G  35.4G   4% /
/dev/sda1     1014M 141.6M 872.4M  14% /boot
/dev/sdb1     10.0G  32.2M  10.0G   0% /disk1
Filesystem     Size   Used  Avail Use% Pathname
/dev/sda3     37.0G   1.5G  35.4G   4% /
/dev/sda1     1014M 141.6M 872.4M  14% /boot
/dev/sdb1     10.0G  32.2M  10.0G   0% /disk1
Filesystem     Size   Used  Avail Use% Pathname
/dev/sda3     37.0G   1.5G  35.4G   4% /
/dev/sda1     1014M 141.6M 872.4M  14% /boot
/dev/sdb1     10.0G  32.2M  10.0G   0% /disk1

# xfs_quota	-x	-c	"report  -选项 "  挂载点

[root@localhost ~]# xfs_quota -x -c "report" /disk1/
User quota on /disk1 (/dev/sdb1)
                               Blocks                     
User ID          Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
root                0          0          0     00 [--------]

Group quota on /disk1 (/dev/sdb1)
                               Blocks                     
Group ID         Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
root                0          0          0     00 [--------]

Project quota on /disk1 (/dev/sdb1)
                               Blocks                     
Project ID       Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
#0                  0          0          0     00 [--------]

选项:
	-u		#显示用户
            [root@localhost ~]# xfs_quota -x -c "report -u" /disk1/
            User quota on /disk1 (/dev/sdb1)
                                           Blocks                     
            User ID          Used       Soft       Hard    Warn/Grace     
            ---------- -------------------------------------------------- 
            root                0          0          0     00 [--------]

 	-g     #显示组
            [root@localhost ~]# xfs_quota -x -c "report -g" /disk1/
            Group quota on /disk1 (/dev/sdb1)
                                           Blocks                     
            Group ID         Used       Soft       Hard    Warn/Grace     
            ---------- -------------------------------------------------- 
            root                0          0          0     00 [--------]
            
	-i		#显示inode
            [root@localhost ~]# xfs_quota -x -c "report -i" /disk1/
            User quota on /disk1 (/dev/sdb1)
                                           Inodes                     
            User ID          Used       Soft       Hard    Warn/ Grace     
            ---------- -------------------------------------------------- 
            root                3          0          0     00 [--------]

            Group quota on /disk1 (/dev/sdb1)
                                           Inodes                     
            Group ID         Used       Soft       Hard    Warn/ Grace     
            ---------- -------------------------------------------------- 
            root                3          0          0     00 [--------]

            Project quota on /disk1 (/dev/sdb1)
                                           Inodes                     
            Project ID       Used       Soft       Hard    Warn/ Grace     
            ---------- -------------------------------------------------- 
            #0                  3          0          0     00 [--------]
            
	-bh    #显示block
            [root@localhost ~]# xfs_quota -x -c "report -bh" /disk1/
            User quota on /disk1 (/dev/sdb1)
                                    Blocks              
            User ID      Used   Soft   Hard Warn/Grace   
            ---------- --------------------------------- 
            root            0      0      0  00 [------]

            Group quota on /disk1 (/dev/sdb1)
                                    Blocks              
            Group ID     Used   Soft   Hard Warn/Grace   
            ---------- --------------------------------- 
            root            0      0      0  00 [------]

            Project quota on /disk1 (/dev/sdb1)
                                    Blocks              
            Project ID   Used   Soft   Hard Warn/Grace   
            ---------- --------------------------------- 
            #0              0      0      0  00 [------]

查三限制是否开启

# xfs_quota   -x   -c     "state"

[root@localhost ~]# xfs_quota   -x   -c     "state"
User quota state on /disk1 (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #67 (1 blocks, 1 extents)
Group quota state on /disk1 (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #68 (1 blocks, 1 extents)
Project quota state on /disk1 (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #68 (1 blocks, 1 extents)
Blocks grace time: [7 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
(2)步骤:

1)创建磁盘配额:

格式:
		xfs_quota	-x  -c  “limit  -u  bsoft=大小	  bhard=大小  用户”	  挂载点
		xfs_quota	-x 	-c 	“limit  -u  isoft=数字	  ihard=数字	用户”	  挂载点
		xfs_quota	-x 	-c	“limit  -g  bsoft=大小      bhard=大小  组”	   挂载点

[root@localhost ~]# useradd yq1
[root@localhost ~]# groupadd gyq

[root@localhost ~]# xfs_quota -x -c "limit -u bsoft=300M bhard=500M yq1" /disk1/
[root@localhost ~]# xfs_quota -x -c "limit -u isoft=10   ihard=15   yq1" /disk1/
[root@localhost ~]# xfs_quota -x -c "limit -g bsoft=600M bhard=1G   gyq" /disk1/
[root@localhost ~]# xfs_quota -x -c "limit -g isoft=20   ihard=25   gyq" /disk1/

2)设置权限

[root@localhost ~]# mkdir /disk1/test.d

[root@localhost ~]# ls -ld /disk1/
drwxr-xr-x 2 root root 6 6月  16 13:21 /disk1/
[root@localhost ~]# chown -R yq1:gyq /disk1/
[root@localhost ~]# ls -ld /disk1/
drwxr-xr-x 2 yq1 gyq 6 6月  16 13:21 /disk1/

3)检查磁盘配额设置

检查: xfs_quota  -x -c “report  -ubih”  挂载点

	用户    -ubih
        [root@localhost ~]# xfs_quota -x -c "report -ubih" /disk1/
        User quota on /disk1 (/dev/sdb1)
                                Blocks                            Inodes              
        User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
        ---------- --------------------------------- --------------------------------- 
        root            0      0      0  00 [------]      3      0      0  00 [------]
        yq1             0   300M   500M  00 [------]      0     10     15  00 [------]
 

	组     -gbih
        [root@localhost ~]# xfs_quota -x -c "report -gbih" /disk1/
        Group quota on /disk1 (/dev/sdb1)
                                Blocks                            Inodes              
        Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
        ---------- --------------------------------- --------------------------------- 
        root            0      0      0  00 [------]      3      0      0  00 [------]
        gyq             0   600M     1G  00 [------]      0     20     25  00 [------]


(3)设置宽限天数
格式:
		xfs_quota   -x  -c  “timer -u -bir  天数”  挂载点

[root@localhost ~]# xfs_quota -x -c "timer -u -bir 15days" /disk1/

[root@localhost ~]# xfs_quota -x -c "state"
User quota state on /disk1 (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #67 (2 blocks, 2 extents)
Group quota state on /disk1 (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #68 (2 blocks, 2 extents)
Project quota state on /disk1 (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #68 (2 blocks, 2 extents)
Blocks grace time: [15 days]
Inodes grace time: [15 days]
Realtime Blocks grace time: [15 days]
(4)prjquota限制挂载点下子目录

注意:usrgrpprj 在以前版本不能同时开启

1) 设置prjquota权限需要两个配置文件

>     覆盖式写入
>>    追加式写入
		echo   “数字标识 : /挂载点/目录”   >>   /etc/projects
		echo   “名称 : 数字标识”   >>		/etc/projid


[root@localhost ~]# echo "15:/disk1/test.d" >> /etc/projects
[root@localhost ~]# cat /etc/projects 
15:/disk1/test.d

[root@localhost ~]# echo "yqprj:15" >> /etc/projid
[root@localhost ~]# cat /etc/projid 
yqprj:15

2) 初始化prj

[root@localhost ~]# xfs_quota -x -c "project -s yqprj"
Setting up project yqprj (path /disk1/test.d)...
Processed 1 (/etc/projects and cmdline) paths for project yqprj with recursion depth infinite (-1).
Setting up project yqprj (path /disk1/test.d)...
Processed 1 (/etc/projects and cmdline) paths for project yqprj with recursion depth infinite (-1).
Setting up project yqprj (path /disk1/test.d)...
Processed 1 (/etc/projects and cmdline) paths for project yqprj with recursion depth infinite (-1).

## 验证
[root@localhost ~]# xfs_quota -x -c "print"
Filesystem          Pathname
/                   /dev/sda3
/boot               /dev/sda1
/disk1              /dev/sdb1 (uquota, gquota, pquota)
/disk1/test.d       /dev/sdb1 (project 15, yqprj)

3) 设置prjquota限制

格式:
		xfs_quota  -x  -c  “limit  -p  软限制=  硬限制= 名称”  挂载点

[root@localhost ~]# xfs_quota -x -c "limit -p bsoft=300M bhard=500M yqprj" /disk1/
[root@localhost ~]# xfs_quota -x -c "limit -p isoft=10   ihard=15   yqprj" /disk1/
[root@localhost ~]# 
[root@localhost ~]# xfs_quota -x -c "report -pbih" /disk1/
Project quota on /disk1 (/dev/sdb1)
                        Blocks                            Inodes              
Project ID   Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
#0              0      0      0  00 [------]      3      0      0  00 [------]
yqprj           0   300M   500M  00 [------]      1     10     15  00 [------]


测试:
## block 测试
[root@localhost ~]# dd if=/dev/zero of=/disk1/test.d/aa1 bs=1M count=400
记录了400+0 的读入
记录了400+0 的写出
419430400字节(419 MB)已复制,0.153693 秒,2.7 GB/秒

[root@localhost ~]# xfs_quota -x -c "report -pbih" /disk1/
Project quota on /disk1 (/dev/sdb1)
                        Blocks                            Inodes              
Project ID   Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
#0              0      0      0  00 [------]      3      0      0  00 [------]
yqprj        400M   300M   500M  00 [15 days]      2     10     15  00 [------]


## inode测试
[root@localhost ~]# touch /disk1/test.d/aa{1..16}
touch: 无法创建"/disk1/test.d/aa15": 超出磁盘限额
touch: 无法创建"/disk1/test.d/aa16": 超出磁盘限额

[root@localhost ~]# ls /disk1/test.d/
aa1  aa10  aa11  aa12  aa13  aa14  aa2  aa3  aa4  aa5  aa6  aa7  aa8  aa9

[root@localhost ~]# xfs_quota -x -c "report -pbih" /disk1/
Project quota on /disk1 (/dev/sdb1)
                        Blocks                            Inodes              
Project ID   Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
#0              0      0      0  00 [------]      3      0      0  00 [------]
yqprj        400M   300M   500M  00 [14 days]     15     10     15  00 [15 days]