实验前环境配置

先添加一个硬盘,然后进行分区

分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@31-zyh-server ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x85668df4 的新 DOS 磁盘标签。

命令(输入 m 获取帮助):n
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1):
第一个扇区 (2048-10485759, 默认 2048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-10485759, 默认 10485759): +2G

创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。

命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

配置分区

格式化分区

1
[root@31-zyh-server ~]# mkfs -t xfs /dev/sdb1

创建一个目录

1
[root@31-zyh-server ~]# mkdir /test31

修改 /etc/fstab 文件,添加 usrquotagrpquota

/etc/fstab:

1
/dev/sdb1                   /test31                   xfs     defaults,usrquota,grpquota      0 0

挂载并查看结果:

1
2
3
[root@31-zyh-server ~]# mount -a
[root@31-zyh-server ~]# mount|grep "sdb1"
/dev/sdb1 on /test31 type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

后面有 usrquota,grpquo 即为生效

新建一个用户实验

新建用户user31:

1
[root@31-zyh-server ~]# useradd user31

开始实验

用 edquota 配额

1
[root@31-zyh-server ~]# edquota user31

在打开的页面中,将文件个数软限制设置为5,硬限制设置为7

1
2
3
4
Disk quotas for user user31 (uid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 0 0 0 5 7

启动磁盘配额监控

1
2
[root@31-zyh-server ~]# quotaon -uv /dev/sdb1
quotaon: Enforcing user quota already on /dev/sdb1

修改软限制的最大超越时间为1分钟

1
[root@31-zyh-server ~]# edquota -t
1
2
3
4
5
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sdb1 1minutes 1minutes

修改实验目录权限为777

1
[root@31-zyh-server ~]# chmod 777 /test31

使用 user31 用户,进行文件数配额实验

切换到 user31 用户,进入 test31 目录,创建5个文件

1
2
3
4
5
[root@31-zyh-server ~]# su - user31
[user31@31-zyh-server ~]$ cd /test31
[user31@31-zyh-server test31]$ touch {1,2,3,4,5}
[user31@31-zyh-server test31]$ ls
1 2 3 4 5

查看配额情况

1
2
3
4
5
[user31@31-zyh-server test31]$ quota user31
Disk quotas for user user31 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 0 0 5 5 7

可以看到,未超过软限制,所以并未触发倒计时

再新建一个文件

1
[user31@31-zyh-server test31]$ touch 6

再次查看配额情况,文件个数已超过软限制个数,开始倒计时

1
2
3
4
[user31@31-zyh-server test31]$ quota user31
Disk quotas for user user31 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 0 0 6* 5 7 00:01

在倒计时内,尝试再新建一个文件

1
2
3
4
5
6
7
8
9
10
[user31@31-zyh-server test31]$ touch 7
[user31@31-zyh-server test31]$ ll
total 0
-rw-rw-r--. 1 user31 user31 0 Jun 11 20:25 1
-rw-rw-r--. 1 user31 user31 0 Jun 11 20:25 2
-rw-rw-r--. 1 user31 user31 0 Jun 11 20:25 3
-rw-rw-r--. 1 user31 user31 0 Jun 11 20:25 4
-rw-rw-r--. 1 user31 user31 0 Jun 11 20:25 5
-rw-rw-r--. 1 user31 user31 0 Jun 11 20:29 6
-rw-rw-r--. 1 user31 user31 0 Jun 11 20:30 7

成功新建,所以在倒计时内,文件个数限制依然为硬限制设置的个数

等待一分钟后,查看配额情况

1
2
3
4
[user31@31-zyh-server test31]$ quota user31
Disk quotas for user user31 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 0 0 7* 5 7 none

此时,倒计时已过,再次尝试新建文件

1
2
[user31@31-zyh-server test31]$ touch 8
touch: cannot touch '8': Disk quota exceeded

新建失败,所以

在倒计时过后,软限制个数变为硬限制,用户的文件数在倒计时过后不得超过软限制的个数

此时删除超出的文件

1
[user31@31-zyh-server test31]$ rm -f {6,7,8}

查看配额情况

1
2
3
4
[user31@31-zyh-server test31]$ quota user31
Disk quotas for user user31 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 0 0 5 5 7

可以发现,在用户的文件数恢复到未超过软限制的状态,倒计时也会重置回到未开始的状态

再新建一个文件,然后查看配额情况

1
2
3
4
5
[user31@31-zyh-server test31]$ touch 6
[user31@31-zyh-server test31]$ quota user31
Disk quotas for user user31 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 0 0 6* 5 7 00:01

可以发现,当用户文件数再次超过软限制时,倒计时就会再次开始