在centos系统中,不一样的文件系统使用不一样磁盘配额管理工具。例如,xfs文件系统经过 xfs_quota 工具进行管理;EXT3/4 文件系统经过 quota 工具进行管理,这里咱们使用的是xfs文件系统。因此使用 xfs_quota 管理工具。node
除了内核和 xfs_quota 软件的支持之外,指定的分区必须已经挂载且支持磁盘配额功能。注意:xfs文件系统只有在首次挂载时才启动磁盘限额功能,下面为设置磁盘配额的具体过程:centos
选项与参数:app
- -x:专家模式,后续才可以加入-c的指令参数;
- -c:后面加的就是指令。
- 经常使用指令以下:
- print:只是列出目前主机内的文件系统参数等数据;
- df:与本来的df同样的功能,能够加上-b(block)、-i(inode)、-h(加上容量单位)等;
- report:列出目前的quota项目,有-ugr(user/group/project)及-bi等数据;
- state:说明目前支持quota的文件系统的信息,有没有启动相关项目等。
那么,若要对文件系统设置配额,在挂载时须要加入特别的选项,并须要注意将/etc/fstab中写入同样的挂载选项。ide
经常使用的选项以下:工具
- 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后,你的磁盘使用权就被锁住。3d
下面开始设置配额:code
其中须要限制什么就写入限制字段便可,(0表示无限制)blog
project的配额限制是针对文件系统生效的,须要注意的是它不能和grpquota配额支持同时存在,而且它不一样于usrquota和grpquota配额设置,这两个对root不生效,可是project配额对root用户一样生效。rem
一、设置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,说明配额生效。
二、取消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两种不一样文件系统的设置配额差别:
———————— 本文至此结束,感谢阅读 ————————