前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xfs_quota

xfs_quota

原创
作者头像
buiu
修改2021-11-08 09:16:43
3.1K0
修改2021-11-08 09:16:43
举报

xfs_quota命令指南

代码语言:txt
复制
xfs_quota -x -c '指令' [挂载点]
-x: 专家模式, 加x会多一些可以显示的
-c: 加指令
指令:
	- print: 打印文件系统参数等数据
	- df: 与普通df一样
	- report: 'report -ugribh'等参数 r=project
	- state: 列出目前支持quota的文件系统的信息
	- limit: 'limit [-ug] b[soft|hard]=N i[soft|hard]=N name'  #b=block i=inode, N=数量, 也可为单位 name=用户/组的名称
	- timer: 'timer [-ug] [-bir] Ndays'  

命令示例

代码语言:txt
复制
root@ck_test:~# xfs_quota -x -c print
Filesystem          Pathname
/home/ck/quota_test_dir /dev/sdb (uquota, gquota)

root@ck_test:~# xfs_quota -xc 'report -ib'
User quota on /home/ck/quota_test_dir (/dev/sdb)
                               Blocks                                          Inodes                     
User ID          Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     
---------- -------------------------------------------------- -------------------------------------------------- 
root                0          0          0     00 [--------]          3          0          0     00 [--------]

Group quota on /home/ck/quota_test_dir (/dev/sdb)
                               Blocks                                          Inodes                     
Group ID         Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     
---------- -------------------------------------------------- -------------------------------------------------- 
root                0          0          0     00 [--------]          2          0          0     00 [--------]
myquotagrp          0          0          0     00 [--------]          1          0          0     00 [--------]



root@ck_test:~# xfs_quota  -xc "df -h"
Filesystem     Size   Used  Avail Use% Pathname
/dev/sdb      20.0G  52.7M  19.9G   0% /home/ck/quota_test_dir
/dev/sda2    195.9G   7.3G 188.6G   4% /

root@ck_test:~# xfs_quota -xc state
User quota state on /home/ck/quota_test_dir (/dev/sdb)	#用户
  Accounting: ON
  Enforcement: ON
  Inode: #99 (1 blocks, 1 extents)
Group quota state on /home/ck/quota_test_dir (/dev/sdb)	# 组
  Accounting: ON
  Enforcement: ON
  Inode: #100 (2 blocks, 2 extents)
Project quota state on /home/ck/quota_test_dir (/dev/sdb)	# project
  Accounting: OFF
  Enforcement: OFF
  Inode: N/A
Blocks grace time: [7 days]		# 以下是宽限时间
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
root@ck_test:~# 

创建一个quota限制

要求: 5个用户共属一组, 每个用户250/300M的容量限制, 组总容量950M/1G容量, grace time 14天

  1. 创建对应测试用户与目录
代码语言:txt
复制
#!/bin/bash
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 myquota5
do
  useradd -g myquotagrp $username
  echo "$username:password" | chpasswd
done
   mkdir /home/ck/quota_test_dir
   chgrp myquotagrp /home/ck/quota_test_dir
   chmod 2770 /home/ck/quota_test_dir
  1. 查看挂载目录状况
代码语言:txt
复制
root@ck_test:~# df -Th /home/ck/quota_test_dir/
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb       xfs    20G   53M   20G   1% /home/ck/quota_test_dir
代码语言:txt
复制
quota在ext文件系统下, 仅支持整个文件系统的管理, 不支持目录单位的管理
代码语言:txt
复制
root@ck_test:~# mount | grep quota_test_dir
/dev/sdb on /home/ck/quota_test_dir type xfs (rw,relatime,attr2,inode64,noquota)
代码语言:txt
复制
此时发现该目录不支持quota(noquota), 因此需要对/etc/fstab进行修改
代码语言:txt
复制
/dev/sdb        /home/ck/quota_test_dir xfs     defaults,usrquota,grpquota      0       0
代码语言:txt
复制
root@ck_test:~# mount | grep quota_test_dir
/dev/sdb on /home/ck/quota_test_dir type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
  1. 进行限制
  2. 对用户进行限制
代码语言:txt
复制

root@ck_test:~# xfs_quota -xc 'limit -u bsoft=250M bhard=300M myquota1' /home/ck/quota_test_dir/

root@ck_test:~# xfs_quota -xc 'limit -u bsoft=250M bhard=300M myquota1' /home/ck/quota_test_dir/

root@ck_test:~# xfs_quota -xc 'limit -u bsoft=250M bhard=300M myquota2' /home/ck/quota_test_dir/

root@ck_test:~# xfs_quota -xc 'limit -u bsoft=250M bhard=300M myquota3' /home/ck/quota_test_dir/

root@ck_test:~# xfs_quota -xc 'limit -u bsoft=250M bhard=300M myquota4' /home/ck/quota_test_dir/

root@ck_test:~# xfs_quota -xc 'limit -u bsoft=250M bhard=300M myquota5' /home/ck/quota_test_dir/

效果

root@ck_test:~# xfs_quota -xc 'report -ubih '

User quota on /home/ck/quota_test_dir (/dev/sdb)

代码语言:txt
复制
                       Blocks                            Inodes              

User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace


root 0 0 0 00 ------ 3 0 0 00 ------

myquota1 0 250M 300M 00 ------ 0 0 0 00 ------

myquota2 0 250M 300M 00 ------ 0 0 0 00 ------

myquota3 0 250M 300M 00 ------ 0 0 0 00 ------

myquota4 0 250M 300M 00 ------ 0 0 0 00 ------

myquota5 0 250M 300M 00 ------ 0 0 0 00 ------

代码语言:txt
复制
代码语言:txt
复制
2. 对组进行限制
代码语言:txt
复制
   ```shell
代码语言:txt
复制
   root@ck_test:~# xfs_quota -xc 'limit -g bsoft=950M bhard=1G myquotagrp' /home/ck/quota_test_dir/
代码语言:txt
复制
   #效果
代码语言:txt
复制
   root@ck_test:~# xfs_quota -xc 'report -gibh'
代码语言:txt
复制
   Group quota on /home/ck/quota_test_dir (/dev/sdb)
代码语言:txt
复制
                           Blocks                            Inodes              
代码语言:txt
复制
   Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
代码语言:txt
复制
   ---------- --------------------------------- --------------------------------- 
代码语言:txt
复制
   root            0      0      0  00 [------]      2      0      0  00 [------]
代码语言:txt
复制
   myquotagrp      0   950M     1G  00 [------]      1      0      0  00 [------]
代码语言:txt
复制
   ```

3. 设置grace time

代码语言:txt
复制
   ```shell
代码语言:txt
复制
   root@ck_test:~# xfs_quota -xc 'timer -b -u 14days' /home/ck/quota_test_dir/
代码语言:txt
复制
   root@ck_test:~# xfs_quota -xc 'timer -b -g 14days' /home/ck/quota_test_dir/
代码语言:txt
复制
   root@ck_test:~# xfs_quota -xc state 
代码语言:txt
复制
   User quota state on /home/ck/quota_test_dir (/dev/sdb)
代码语言:txt
复制
     ......
代码语言:txt
复制
   Blocks grace time: [14 days]
代码语言:txt
复制
   Inodes grace time: [7 days]
代码语言:txt
复制
   Realtime Blocks grace time: [7 days]
代码语言:txt
复制
   ```

4. 测试

代码语言:txt
复制
   ```shell
代码语言:txt
复制
   su myquota1
代码语言:txt
复制
   dd if=/dev/zero  of=quota1.img bs=1M count=260
代码语言:txt
复制
   su myquota2
代码语言:txt
复制
   dd if=/dev/zero  of=quota2.img bs=1M count=500
代码语言:txt
复制
   CTRL + d # 退出
代码语言:txt
复制
   root@ck_test:/home/ck/quota_test_dir# xfs_quota -xc 'report -bihu'
代码语言:txt
复制
   User quota on /home/ck/quota_test_dir (/dev/sdb)
代码语言:txt
复制
                           Blocks                            Inodes              
代码语言:txt
复制
   User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
代码语言:txt
复制
   ---------- --------------------------------- --------------------------------- 
代码语言:txt
复制
   root            0      0      0  00 [0 days]      4      0      0  00 [------]
代码语言:txt
复制
   myquota1     260M   250M   300M  00 [13 days]      1      0      0  00 [------]
代码语言:txt
复制
   myquota2     300M   250M   300M  00 [13 days]      1      0      0  00 [------]
代码语言:txt
复制
   myquota3        0   250M   300M  00 [------]      0      0      0  00 [------]
代码语言:txt
复制
   myquota4        0   250M   300M  00 [------]      0      0      0  00 [------]
代码语言:txt
复制
   myquota5        0   250M   300M  00 [------]      0      0      0  00 [------]
代码语言:txt
复制
   root@ck_test:/home/ck/quota_test_dir# ll -h
代码语言:txt
复制
   total 561M
代码语言:txt
复制
   drwxrws--- 2 root     myquotagrp   42 Nov  5 21:50 ./
代码语言:txt
复制
   drwxr-xr-x 4 ck       ck         4.0K Nov  5 20:53 ../
代码语言:txt
复制
   -rw-r--r-- 1 myquota1 myquotagrp 260M Nov  5 21:47 quota1.img
代码语言:txt
复制
   -rw-r--r-- 1 myquota2 myquotagrp 300M Nov  5 21:47 quota2.img
代码语言:txt
复制
   ```
代码语言:txt
复制
   可以看到, **quota1使用了260M, warn/grace是13天, 13天后, 其hard会变为260m**
代码语言:txt
复制
   				**quota2即使dd了500M, 这里也只用了300M**

针对目录

代码语言:txt
复制
vim /etc/fstab
# 更改项目, prjquota与usr/grpquota不能同时设置
/dev/sdb        /home/ck/quota_test_dir xfs     defaults,prjquota       0       0
umount /home/ck/quota_test_dir/
mount -a
root@ck_test:~# mount | grep quota
/dev/sdb on /home/ck/quota_test_dir type xfs (rw,relatime,attr2,inode64,prjquota)

进行限制

代码语言:txt
复制
root@ck_test:~# echo '11:/home/ck/quota_test_dir' >> /etc/projects # 指定专案识别码与目录的对应11是识别码, 可以随便取, 一定要放到etx下的这个文件里
root@ck_test:~# echo 'myquotaproject:11' >> /etc/projid		# 规范专案名称与识别码的对应, 文件也是固定的
root@ck_test:~# xfs_quota -xc 'project -s myquotaproject' # 初始化专案名称
Setting up project myquotaproject (path /home/ck/quota_test_dir)...
Processed 1 (/etc/projects and cmdline) paths for project myquotaproject with recursion depth infinite (-1).
root@ck_test:~# xfs_quota -xc print
Filesystem          Pathname
/home/ck/quota_test_dir /dev/sdb (pquota)
/home/ck/quota_test_dir /dev/sdb (project 11, myquotaproject)

root@ck_test:~# xfs_quota -xc 'limit -p bsoft=450m bhard=500m myquotaproject' /home/ck/quota_test_dir/ #设置限制
root@ck_test:~# xfs_quota -xc 'report -bih'
Project quota on /home/ck/quota_test_dir (/dev/sdb)
                        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   450M   500M  00 [------]      1      0      0  00 [------]

额外指令

disable = 暂停

enable = 开始

off = 关闭, 关闭后要重新挂载才能进行quota操作

remove: 在off状态下执行

xfs_quota -x -c "disable -up" /home/ck/quota_test_dir

xfs_quota -x -c "off -up" /home/ck/quota_test_dir

xfs_quota -x -c "remove -p" /home/ck/quota_test_dir remove -p = remove all project

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档