Linux中如何针对用户及组设置磁盘配额

在centos系统中,不一样的文件系统使用不一样磁盘配额管理工具。例如,xfs文件系统经过 xfs_quota 工具进行管理;EXT3/4 文件系统经过 quota 工具进行管理,这里咱们使用的是xfs文件系统。因此使用 xfs_quota 管理工具。node

Linux中如何针对用户及组设置磁盘配额

除了内核和 xfs_quota 软件的支持之外,指定的分区必须已经挂载且支持磁盘配额功能。注意:xfs文件系统只有在首次挂载时才启动磁盘限额功能,下面为设置磁盘配额的具体过程:centos

Linux中如何针对用户及组设置磁盘配额

Linux中如何针对用户及组设置磁盘配额

xfs_quota命令的使用方法以下:

选项与参数: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

下面开始设置配额:
Linux中如何针对用户及组设置磁盘配额code

其中须要限制什么就写入限制字段便可,(0表示无限制)blog

Linux中如何针对用户及组设置磁盘配额

Linux中如何针对用户及组设置磁盘配额

Linux中如何针对用户及组设置磁盘配额

Linux中如何针对用户及组设置磁盘配额

Linux中如何针对用户及组设置磁盘配额

Linux中如何针对用户及组设置磁盘配额

Linux中如何针对用户及组设置磁盘配额

附加——project挂载参数的使用及取消quota配额的限制

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两种不一样文件系统的设置配额差别:

Linux中如何针对用户及组设置磁盘配额

———————— 本文至此结束,感谢阅读 ————————

相关文章
相关标签/搜索