xfs_quota命令指南
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'
命令示例
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天
#!/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
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
quota在ext文件系统下, 仅支持整个文件系统的管理, 不支持目录单位的管理
root@ck_test:~# mount | grep quota_test_dir
/dev/sdb on /home/ck/quota_test_dir type xfs (rw,relatime,attr2,inode64,noquota)
此时发现该目录不支持quota(noquota), 因此需要对/etc/fstab进行修改
/dev/sdb /home/ck/quota_test_dir xfs defaults,usrquota,grpquota 0 0
root@ck_test:~# mount | grep quota_test_dir
/dev/sdb on /home/ck/quota_test_dir type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
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)
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 ------
2. 对组进行限制
```shell
root@ck_test:~# xfs_quota -xc 'limit -g bsoft=950M bhard=1G myquotagrp' /home/ck/quota_test_dir/
#效果
root@ck_test:~# xfs_quota -xc 'report -gibh'
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 950M 1G 00 [------] 1 0 0 00 [------]
```
3. 设置grace time
```shell
root@ck_test:~# xfs_quota -xc 'timer -b -u 14days' /home/ck/quota_test_dir/
root@ck_test:~# xfs_quota -xc 'timer -b -g 14days' /home/ck/quota_test_dir/
root@ck_test:~# xfs_quota -xc state
User quota state on /home/ck/quota_test_dir (/dev/sdb)
......
Blocks grace time: [14 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
```
4. 测试
```shell
su myquota1
dd if=/dev/zero of=quota1.img bs=1M count=260
su myquota2
dd if=/dev/zero of=quota2.img bs=1M count=500
CTRL + d # 退出
root@ck_test:/home/ck/quota_test_dir# xfs_quota -xc 'report -bihu'
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 [0 days] 4 0 0 00 [------]
myquota1 260M 250M 300M 00 [13 days] 1 0 0 00 [------]
myquota2 300M 250M 300M 00 [13 days] 1 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 [------]
root@ck_test:/home/ck/quota_test_dir# ll -h
total 561M
drwxrws--- 2 root myquotagrp 42 Nov 5 21:50 ./
drwxr-xr-x 4 ck ck 4.0K Nov 5 20:53 ../
-rw-r--r-- 1 myquota1 myquotagrp 260M Nov 5 21:47 quota1.img
-rw-r--r-- 1 myquota2 myquotagrp 300M Nov 5 21:47 quota2.img
```
可以看到, **quota1使用了260M, warn/grace是13天, 13天后, 其hard会变为260m**
**quota2即使dd了500M, 这里也只用了300M**
针对目录
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)
进行限制
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