在centos系统中,不同的文件系统使用不同磁盘配额管理工具。例如,xfs文件系统通过 xfs_quota 工具进行管理;EXT3/4 文件系统通过 quota 工具进行管理,这里我们使用的是xfs文件系统。所以使用 xfs_quota 管理工具。
除了内核和 xfs_quota 软件的支持以外,指定的分区必须已经挂载且支持磁盘配额功能。注意:xfs文件系统只有在首次挂载时才启动磁盘限额功能,下面为设置磁盘配额的具体过程:
xfs_quota命令的使用方法如下:
选项与参数:
- -x:专家模式,后续才能够加入-c的指令参数;
- -c:后面加的就是指令。
- 常用指令如下:
- print:只是列出目前主机内的文件系统参数等数据;
- df:与原本的df一样的功能,可以加上-b(block)、-i(inode)、-h(加上容量单位)等;
- report:列出目前的quota项目,有-ugr(user/group/project)及-bi等数据;
- state:说明目前支持quota的文件系统的信息,有没有启动相关项目等。
那么,若要对文件系统设置配额,在挂载时需要加入特别的选项,并需要注意将/etc/fstab中写入一样的挂载选项。
常用的选项如下:
- usrquota:针对用户账号的磁盘配额设置;
- grpquota:针对群组的设置;
- prjquota:针对单一目录的设置,但是不可与grpquota同时存在。
使用举例:
[root@localhost ~]# mount -o usrquota,grpquota /dev/sdb1 /test
#挂载磁盘时,需要加入特别的参数,才可设置磁盘配额。
[root@localhost ~]# xfs_quota -x -c "print"
#列出目前系统的所有文件系统,以及文件系统的quota挂载参数的支持
Filesystem Pathname
/ /dev/mapper/centos-root
/home /dev/mapper/centos-home
/boot /dev/sda1
/test /dev/sdb1 (uquota, gquota)#括号内的参数表示支持针对用户、组设置配额。
[root@localhost ~]# xfs_quota -x -c "df -h" /test
#列出目前/test这个支持test的挂载点文件系统使用情况。
Filesystem Size Used Avail Use% Pathname
/dev/sdb1 20.0G 32.2M 20.0G 0% /test
[root@localhost ~]# xfs_quota -x -c "report -ubih" /test
#列出目前/test的所有用户的quota限制值,我这里还没做使用限制
User quota on /test (/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 [------]
#注意:上面查询出来的是block限制和inode限制。
#soft和hard分别代表软/硬限制,soft和hard若为0,则代表无限制。
[root@localhost ~]# xfs_quota -x -c "state" #列出目前支持的quota文件系统是否启动了quota功能。
User quota state on /test (/dev/sdb1)
Accounting: ON #有启用计算功能
Enforcement: ON #有实际quota管制的功能
Inode: #67 (1 blocks, 1 extents) #以上四行是说明启动了user的限制能力。
Group quota state on /test (/dev/sdb1)
Accounting: ON
Enforcement: ON
Inode: #68 (1 blocks, 1 extents) #以上四行是说明启动了group的限制能力。
Project quota state on /test (/dev/sdb1)
Accounting: OFF
Enforcement: OFF
Inode: #68 (1 blocks, 1 extents) #以上四行是说明project并不支持
#以下是grace time,表示当超过了软限制的容量,会允许继续使用多少天(下面是默认允许7天)
Blocks grace time: [7 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
[root@localhost ~]# xfs_quota -x -c "timer -u 14days" /test #将用户的宽限时间改为14天
[root@localhost ~]# xfs_quota -x -c "timer -g 14days" /test #将组的宽限时间改为14天
关于上面的grace time具体解释如下:
宽限时间默认为7天,在这个时间内不做任何磁盘管理,到期后,soft限制值会取代hard限制值作为quota限制。也就是说你的inode/block用量限制值变为soft,达到soft后,你的磁盘使用权就被锁住。
其中需要限制什么就写入限制字段即可,(0表示无限制)
附加——project挂载参数的使用及取消quota配额的限制
project的配额限制是针对文件系统生效的,需要注意的是它不能和grpquota配额支持同时存在,并且它不同于usrquota和grpquota配额设置,这两个对root不生效,但是project配额对root用户同样生效。
1、设置project配额
[root@localhost ~]# mount -o usrquota,prjquota /dev/sdb1 /test
#挂载时加上prjquota支持
[root@localhost ~]# xfs_quota -x -c "state"
User quota state on /test (/dev/sdb1)
Accounting: ON
Enforcement: ON
Inode: #67 (2 blocks, 2 extents)
Group quota state on /test (/dev/sdb1)
Accounting: OFF #grpquota配额支持已经关闭了
Enforcement: OFF
Inode: #68 (2 blocks, 2 extents)
Project quota state on /test (/dev/sdb1)
Accounting: ON
Enforcement: ON #prjquota配额已经启动了
Inode: #68 (2 blocks, 2 extents)
Blocks grace time: [14 days]
Inodes grace time: [14 days]
Realtime Blocks grace time: [14 days]
#指定专案识别码与目录对应在/etc/projects
[root@localhost ~]# echo "11:/test" >> /etc/projects
#规范专案名称与识别码的对应在/etc/projid
[root@localhost ~]# echo "myquotaproject:11" >> /etc/projid
#初始化专案名称
[root@localhost ~]# xfs_quota -x -c "project -s myquotaproject"
....................#省略部分提示信息
..................r project myquotaproject with recursion depth infinite (-1).
#会出现上面的提示信息,是正常的。
[root@localhost ~]# xfs_quota -x -c "print" /test
#通过print功能完整的查看到相应的各项文件系统与project目录对应
Filesystem Pathname
/test /dev/sdb1 (uquota, pquota)
/test /dev/sdb1 (project 11, myquotaproject)
[root@localhost ~]# xfs_quota -x -c "report -pbih" /test
#确定抓到myquotaproject 这个专案名称
Project quota on /test (/dev/sdb1)
Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
#0 0 0 0 00 [------] 2 0 0 00 [------]
myquotaproject 0 0 0 00 [------] 1 0 0 00 [------]
[root@localhost ~]# xfs_quota -x -c "limit -p bsoft=200M bhard=300M myquotaproject" /test
#针对myquotaproject这个专案设置配额
[root@localhost ~]# xfs_quota -x -c "report -pbih" /test #查看设置的配额
Project quota on /test (/dev/sdb1)
Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
#0 0 0 0 00 [------] 2 0 0 00 [------]
myquotaproject 0 200M 300M 00 [------] 1 0 0 00 [------]
[root@localhost ~]# dd if=/dev/zero of=/test/a.txt bs=1M count=400
#往/test目录下写入一个400M的文件进行测试
dd: 写入"/test/a.txt" 出错: 设备上没有空间
记录了301+0 的读入
记录了300+0 的写出
314572800字节(315 MB)已复制,7.03535 秒,44.7 MB/秒
#会发现最多只能写入300M,说明配额生效。
2、取消quota的限制
常用的参数如下:
- disable:暂时取消 quota 的限制,但其实系统还是在计算 quota 中,只是没有管制而已!应该算最有用的功能!
- enable:就是回复到正常管制的状态中,与 disable 可以互相取消、启用!
- off:完全关闭 quota 的限制,使用了这个状态后,你只有卸载再重新挂载才能够再次的启动 quota !也就是说,用了 off 状态后,你无法使用 enable 再次复原 quota 的管制+!注意不要乱用这个状态!一般建议用 disable 即可,除非你需要执行remove 的动作!
- remove:必须要在 off 的状态下才能够执行的指令,这个 remove 可以“移除”quota 的限制设置,例如要取消 project 的设置,无须重新设置为 0 ,只要 remove -p 就可以了!
使用举例:
[root@localhost ~]# xfs_quota -x -c "disable -up" /test #关闭对user和project的配额限制
[root@localhost ~]# xfs_quota -x -c "state" /test
User quota state on /test (/dev/sdb1)
Accounting: ON
Enforcement: OFF #表示在计算,但是没有强制管制的意思,现在用户没有磁盘的使用限制
Inode: #67 (2 blocks, 2 extents)
Group quota state on /test (/dev/sdb1)
Accounting: OFF
Enforcement: OFF
Inode: #68 (2 blocks, 2 extents)
Project quota state on /test (/dev/sdb1)
Accounting: ON
Enforcement: OFF #同上
Inode: #68 (2 blocks, 2 extents)
Blocks grace time: [14 days]
Inodes grace time: [14 days]
Realtime Blocks grace time: [14 days]
[root@localhost ~]# dd if=/dev/zero of=/test/a.txt bs=1M count=500
#测试,发现之前设置的配额已经都失效了
记录了500+0 的读入
记录了500+0 的写出
524288000字节(524 MB)已复制,4.88868 秒,107 MB/秒
[root@localhost ~]# xfs_quota -x -c "report -pbh" /test #查看
Project quota on /test (/dev/sdb1)
Blocks
Project ID Used Soft Hard Warn/Grace
---------- ---------------------------------
#0 0 0 0 00 [------]
myquotaproject 500M 200M 300M 00 [-none-]
#会发现软限制及硬限制还在,但是确实超过了配额的限制,这就是disable的作用
[root@localhost ~]# xfs_quota -x -c "enable -up" /test #再次开启配额限制
[root@localhost test]# xfs_quota -x -c "off -up" /test #完全关闭quota的限制
[root@localhost test]# xfs_quota -x -c "remove -p" /test #取消quota的设置
关于xfs和ext两种不同文件系统的设置配额差异:
———————— 本文至此结束,感谢阅读 ————————