磁盘配额在本质上就是限制某些用户过度的使用磁盘空间,文了保护磁盘不至于过于饱和导致其他用户无法使用该磁盘空间。给用户一定的磁盘空间使用限制,包括一个警告容量,当到达警告容量时,系统会对其进行提醒,一旦用户使用到限制容量大小,便无法在在该磁盘继续创建文件。
初始化
如果我们要使用磁盘配额,首先要做的第一步是在挂载分区选项里添加usrquota和grpquota两个选项,分别对应的是对user的限制,和对该group用户的限制。
将他们写到/etc/fstab的磁盘挂载信息里,如:
LABEL="TEST" /test ext4 defaults,usrquota,grpquota 0 0
[root@CT6 ~]# blkid /dev/sdb1 /dev/sdb1: LABEL="TEST" UUID="2160957c-ad8f-4ae8-b351-f9f997f85081" TYPE="ext4" [root@CT6 ~]# vim /etc/fstab 1 2 # 3 # /etc/fstab 4 # Created by anaconda on Tue Jul 11 15:55:27 2017 5 # 6 # Accessible filesystems, by reference, are maintained under '/dev/disk' 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 8 # 9 UUID=6df0d47f-1a62-4419-a49c-e57906aa2173 / ext4 defaults 1 1 10 UUID=cab5975d-48e5-4699-ad14-3ba77c23eb76 /app ext4 defaults 1 2 11 UUID=2ce5a899-4627-4999-8d5f-6dba1a73008e /boot ext4 defaults 1 2 12 UUID=8c5e10b7-90c0-49f0-a165-54e8120fab57 swap swap defaults 0 0 13 UUID=d61dadb7-2d2c-4639-a927-3de618b914ca swap swap defaults 0 0 14 UUID=2160957c-ad8f-4ae8-b351-f9f997f85081 /test ext4 defaults,usrquota,g rpquota 0 0
然后我们初始化数据库,初始化数据库后,系统会在该磁盘下创建文件aquota.group,aquota.user。
说明:
quotacheck命令通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件,设置用户和群组的磁盘空间限制。
命令:quotacheck –cug 挂载的目录
-c 对文件系统进行扫描,不会读已经存在的配额文件
-u 扫描磁盘空间时,计算每个用户识别码所占用的目录和文件数目
-g 扫描磁盘空间时,计算每个群组识别码所占用的目录和文件数目
[root@CT6 ~]# quotacheck -cug /test [root@CT6 ~]# ll /test/ total 32 -rw-------. 1 root root 6144 Aug 22 21:13 aquota.group -rw-------. 1 root root 6144 Aug 22 21:13 aquota.user drwx------. 2 root root 16384 Aug 22 21:07 lost+found
开启/关闭指定文件系统的配额功能
命令:quotaon/quotaoff
参数:
-a:开启在/ect/fstab文件里,有加入quota设置的分区的空间限制(默)
-g:开启群组的磁盘空间限制
-u:开启用户的磁盘空间限制
-v:显示指令指令执行过程
如果我指定的文件系统挂载在/test下:
开启:quotaon /test
关闭:quotaoff /test
[root@CT6 ~]# quotaon /test [root@CT6 ~]# ll /test total 32 -rw-------. 1 root root 6144 Aug 22 21:13 aquota.group -rw-------. 1 root root 6144 Aug 22 21:13 aquota.user drwx------. 2 root root 16384 Aug 22 21:07 lost+found [root@CT6 ~]# rm /test/aquota.group rm: remove regular file `/test/aquota.group'? y rm: cannot remove `/test/aquota.group': Operation not permitted -------------------------开启后root也无法将数据库文件删除
编辑配额信息
在这一部分就是编辑我们要限制的配额信息,包括配额的大小,配额文件数量,我们有两种方式可以对磁盘进行配额。
直接编辑:
命令:edquota username
参数:
-u:设置用户的quota,这是预设的参数;
-g:设置群组的quota;
-p<源用户名称>:将源用户的quota设置套用至其他用户或群组;
-t:设置宽限期限。
Disk quotas for user Tom (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda6 1150980 1048576 2097152 1 200 250
如上所示就是我们针对于某用户或者组需要进行的配额信息:
(默认单位是K,可以设置单位为M,G)
blocks就是该用户或组实际的文件大小总和,无需改动
soft是警告会产生的容量,当该用户或组的文件总量到达这个值就会给出警告信息
hard是限制,当总量到达这个值后,就无法在添加文件
inodes是指文件数量,无需改动
soft指文件数量的警告值
hard是指实际限制值
[root@CT6 ~]# edquota Tom Disk quotas for user Tom (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 8G 10G 0 200 220 ~
在shell中编辑:
格式:
setquota usename ##M|G ##M|G n1 n2 挂载目录
例如:setquota usename 35G 50G 40 50 /test
这四个参数对应的就是上面的soft hard soft hard
[root@CT6 ~]# setquota mage 6G 8G 100 120 /test [root@CT6 ~]#
查看配额状态
当我们想查看用户的配额使用情况时,我们可以使用一些命令来查看,我们在这里说两个命令:
查看单用户:
命令:quota [option] username
参数:
-g:列出群组的磁盘空间限制;
-q:简明列表,只列出超过限制的部分;
-u:列出用户的磁盘空间限制;
-v:显示该用户或群组,在所有挂入系统的存储设备的空间限制;
-V:显示版本信息。
[root@CT6 ~]# quota -vu Tom Disk quotas for user Tom (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sdb1 0 8388608 10485760 0 200 220
查看所有用户:
命令:repquota [option] mount_point
参数:
-a:列出在/etc/fstab文件里,有加入quota设置的分区的使用状况,包括用户和群组;
-g:列出所有群组的磁盘空间限制;
-u:列出所有用户的磁盘空间限制;
-v:显示该用户或群组的所有空间限制。
[root@CT6 ~]# repquota -vu /test *** Report for user quotas on device /dev/sdb1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20 0 0 2 0 0 Tom -- 0 8388608 10485760 0 200 220 mage -- 0 6291456 8388608 0 100 120 Statistics: Total blocks: 7 Data blocks: 1 Entries: 3 Used average: 3.000000
发送警告信息
当磁盘到达警告范围,我们可以使用命令发邮件告诉用户及时清理自己的文件,以便可以持续使用该空间
命令:warnquota [option]
参数:
-u 给所有超过限制的用户发邮件
-g 当组的限制超出时,给组管理员发邮件,管理员需在/etc/quotagrpadmins 中指定
格式: groupname: username
[root@CT6 ~]# warnquota -u
[root@CT6 ~]#