linux下用户和组的管理 磁盘限额,Linux中如何针对用户及组设置磁盘配额

在centos系统中,不同的文件系统使用不同磁盘配额管理工具。例如,xfs文件系统通过 xfs_quota 工具进行管理;EXT3/4 文件系统通过 quota 工具进行管理,这里我们使用的是xfs文件系统。所以使用 xfs_quota 管理工具。

b6cfa4caf6b1c21e9a4da1d796cb299c.png

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

24558e2952b33d45b14601abf0e6a5b1.png

30981235b2bd811cff45270cfe8f5ee0.png

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后,你的磁盘使用权就被锁住。

下面开始设置配额:

abb293eb3d3d9fb2e4ad5636747b12d5.png

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

93966c7801fa1c7dc99d468ae4d6984f.png

002552007d73767e09337c9393772c28.png

0b27e5136ee6326c3164fc57c370e51f.png

7006f0cef4707e4f0b1b9b20a40197e3.png

11fd75ba869bbd94c221d76b226bd7b9.png

47d75d51d3f6c4dfc33d5a6db65b8e7f.png

7f7bf5f5fc8726130392eea1c7c8c812.png

附加——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两种不同文件系统的设置配额差异:

09df2497148407250c2d426fde8a8eb1.png

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值