Linux磁盘配额测试过程完全攻略

我们的磁盘配额已经生效,接下来测试一下是否会限制我们的用户。以 lamp1 用户为例,

因为 lamp1 用户除容量被限制外,也限制了文件个数。先测试文件个数是否被限制了,命令如下:

[root@1ocalhost ~]# chmod 777 /disk/
#给/disk目录赋予权限,lamp1用户要拥有写权限
[root@localhost ~]# su - lamp1
#切换成lamp1用户
[lamp1@1ocalhost ~]$ cd /disk/
#进入/disk目录
[lamp1@1ocalhost disk]$ touch 11
#建立文件
[lamp1@localhost disk]$ touch 22
[lamp1@localhost disk]$ touch 33
[lamp1@localhost disk]$ touch 44
[lamp1@1ocalhost disk]$ touch 55
[lamp1@localhost disk]$ touch 66
[lamp1@localhost disk]$ touch 77
[lamp1@localhost disk]$ touch 88
[lamp1@1ocalhost disk]$ touch 99
sdb1: warning, user file quota exceeded.
#有警告信息了,因为软限制是 8 个
[lamp1@localhost disk]$ ls
11 22 33 44 55 66 77 88 99 aquota. group aquota.user lost+found
#虽然警告了,但是第9个文件依然建立
[lamp1@localhost disk]$ touch 10
[lamp1@localhost disk]$ touch 111
sdb1: write failed, user file limit reached.
touch:无法创建"111":超出磁盘配额
#超出磁盘配额
[lamp1@localhost disk]$ ls
10 11 22 33 44 55 66 77 88 99 aquota. group aquota.user lost+found
#第11个文件没有建立

还记得吗?磁盘配额的概念是指定的普通用户在指定的分区中使用磁盘空间和文件个数的限制。所以一定要记得切换用户和建立文件的目录,否则默认全部写入 / 分区,而我们并没有在 / 分区上设定配额。

我们切换到 root 身份,使用 repquota 命令查看一下:

[root@localhost ~]# repquota -uvs /disk/
*** Report for user quotas on device /dev/sdbl Block grace time: 8days; Inode grace time: 8days
Block limits File limits
User used soft hard grace used soft hard grace
root -- 13 0 0 2 0 0
lampl -+ 0 40000 50000 10 8 10 7days
lamp2 -- 0 245M 293M 0 0 0
lamp3 -- 0 245M 293M 0 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 4
Used average: 4.000000

看到了吗? lamp1 用户的文件个数的 grace 字段开始倒数了。

删除一个文件,然后建立一个大于 50MB 的文件,看看磁盘容量是否被限制了。命令如下:

[lamp1@localhost disk]$ rm -rf 10 #删除文件10,空出文件个数
[lamp1@localhost disk]$ dd if=/dev/zero of=/disk/tesffile bs=1M count=60
#建立tesffile文件,指定文件大小为60MB
sdb1: warning, user block quota exceeded.
sdb1: write failed, user block limit reached.
dd:正在写入"/disk/111":超出磁盘配额
#报错,超出磁盘配额
记录了 49+0的读入
记录了 48+0的写出
51200000字节(51 MB)已复制,0.538582 秒,95.1 MB/秒
[lamp1 @localhost disk]$ ll -h tesffile
-rw-rw-r-- 1 lamp1 lamp1 49M 4月 17 02:52 tesffile
#查看一下tesffile文件的大小,并没有超出50MB的硬限制

在 dd 命令中,if 用于指定输入项,这里我们用 /dev/zero 作为输入项,会不停地向目标文件中写 0;of 用于指定输出项,这里用 /disk/testfilef 作为目标文件;bs 指定每次复制 1MB 数据;count 指定复制 60 次。也就是建立一个大小为 60MB 的 testfile 文件,但是这个文件大小超出了磁盘容量硬限制,所以只建立了 49MB,证明容量限制也生效了。