磁盘配额
配额:quota
什么是磁盘配额?
限制磁盘资源的使用的。
限制原因就是因为资源不是无限的。
应用场合:
1、网络存储空间有限
2、邮件服务器
3、公司的文件共享服务器
能限制谁?
1、限制普通用户
2、限制用户组
注意:没有办法限制root的。
能够限制什么?
inode —— 限制用户创建文件的个数
block —— 限制用户能够使用的磁盘空间的大小
设置配额的条件?
需要内核支持quota的功能
[loring ~]# grep -i quota /boot/config-2.6.32-358.el6.x86_64
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_XFS_QUOTA=y
CONFIG_QUOTA=y //看到此行表示支持
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
如何进行磁盘配额?usrquota,grpquota
1、首先需要分区开启用户配额和组配额
创建一个分区并将其格式化
[loring ~]# fdisk /dev/sda
[loring ~]# partx -a /dev/sda
[loring ~]# mkfs.ext4 /dev/sda10
将其挂载到系统中的/quota目录
[loring ~]# mkdir /quota
[loring ~]# mount -o usrquota,grpquota /dev/sda10 /quota/
将分区设置为开机自动挂载(可选)
[loring ~]# vim /etc/fstab
/dev/sda10 /quota ext4 defaults,usrquota,grpquota 0 0
2、创建配额记录文件
[loring ~]# quotacheck -cugv /quota/
[loring ~]# ls /quota/ //有如下文件即可
aquota.group aquota.user
-c:--create 创建磁盘配额的配置文件
-u:--user 针对用户配额的配置文件
-g:--group 针对组配额的配置文件
-v:--verbose 详细显示扫描过程中的信息
-a:--all 检测系统中所有已经挂载的支持quota功能的分区
3、针对用户和组进行配额
[loring ~]# useradd quota1
[loring ~]# useradd quota2
[loring ~]# useradd -g quota2 quota3
[loring ~]# chmod 1777 /quota/ //保证普通用户对/quota目录可写
例子:限制quota1用户最多使用8M空间或者创建10个文件;当使用空间超过5M或者创建文件超过5个时警告
[loring ~]# edquota [-u] quota1 [-f /quota] //编辑方式同vim
-u:编辑user的quota
-g:编辑group的quota
-t:编辑宽限时间
-p:复制资料到另一个用户上
blocks :现在使用者(quota:uid=5011)在/dev/hda7所使用的空间,单位:KB (不要修改)
soft :soft limit 磁盘空间限定值 单位:KB (需要设定)
hard :hard limit 磁盘空间限定值 单位: KB (需要设定)
inodes :现在使用者使用掉的inodes,由于不容易使用inode控制,所以不要修改他。
soft :soft limit 文档限制数量 (根据需要修改)
hard :hard limit 文档限制数量 (根据需要修改)
soft limit :最低限制容量,在宽限期(grace period)之内,使用容量能够超过soft limit,但必须在宽限期之内将使用容量降低到soft limit以下。
hard limit :最终限制容量,假如使用者在宽限期内继续写入数据,到达hard limit将无法再写入。
宽限时间:使用容量超过soft limit,宽限时间自动启动,使用者将容量降低到soft limit以下,宽限时间自动关闭,假如使用者没有在宽限时间内将容量降低到soft limit,那么他将无法再写入数据,即使使用容量没有到达hard limit
Disk quotas for user quota1 (uid 6668):
Filesystem blocks soft hard inodes soft hard
/dev/sda10 0 5120 8192 0 5 10
单位是KB 单位是个
(补充:quota -uv quota_name 显示user信息)
4、启动配额 —— 一定要记住这步
[loring ~]# quotaon /quota/
5、测试配额
1)文件个数测试
[loring ~]# su - quota1
[quota1@loring ~]$ cd /quota/ //一定要切换到做了配额的目录下再操作
[quota1@loring quota]$ touch quota1_{1,2,3,4,5,6} //超过软限制,有警告,但是仍然可以创建quota1_6
sda10: warning, user file quota exceeded. //超软限制告警
[quota1@loring quota]$ ls
aquota.group quota1_1 quota1_3 quota1_5
aquota.user quota1_2 quota1_4 quota1_6
[quota1@loring quota]$ touch quota1_{7,8,9,10,11} //超过硬限制,不能够创建quota1_11文件
sda10: write failed, user file limit reached. //超过硬限制的提示信息
touch: cannot touch `quota1_11': Disk quota exceeded
[quota1@loring quota]$ ls
aquota.group quota1_1 quota1_2 quota1_4 quota1_6 quota1_8
aquota.user quota1_10 quota1_3 quota1_5 quota1_7 quota1_9
2)使用空间测试
[quota1@loring quota]$ rm -f quota1_*
[quota1@loring quota]$ dd if=/dev/zero of=quota1_2m bs=2M count=1
[quota1@loring quota]$ ll
[quota1@loring quota]$ dd if=/dev/zero of=quota1_4m bs=4M count=1
sda10: warning, user block quota exceeded. //超过软限制的警告
[quota1@loring quota]$ ll
[quota1@loring quota]$ dd if=/dev/zero of=quota1_6m bs=6M count=1
sda10: write failed, user block limit reached.
dd: writing `quota1_6m': Disk quota exceeded //超过硬限制
1+0 records in
0+0 records out
2097152 bytes (2.1 MB) copied, 0.0185134 s, 113 MB/s
[quota1@loring quota]$ ll quo*
-rw-rw-r-- 1 quota1 quota1 2097152 Aug 8 15:05 quota1_2m
-rw-rw-r-- 1 quota1 quota1 4194304 Aug 8 15:06 quota1_4m
-rw-rw-r-- 1 quota1 quota1 2097152 Aug 8 15:07 quota1_6m
quota1_6m:超过硬限制了,它只会将分配给该用户的剩余空间全部使用,quota1_2m、quota1_4m和quota1_6m三个文件的总空间无法超出8M。
练习:
设置quota1用户的配额为可以存放3M文件或者6个文件,当到达1M或者创建3个文件时警告
[loring ~]# edquota quota1
Disk quotas for user quota1 (uid 6668):
Filesystem blocks soft hard inodes soft hard
/dev/sda11 8192 1024 3072 3 3 6
[loring ~]# su - quota1
[quota1@loring ~]$ cd /quota/
[quota1@loring quota]$ rm -f qu*
[quota1@loring quota]$ ls
aquota.group aquota.user
[quota1@loring quota]$ touch 1 2 3 4
sda10: warning, user file quota exceeded.
[quota1@loring quota]$ touch 5 6 7
sda10: write failed, user file limit reached.
touch: cannot touch `7': Disk quota exceeded
[quota1@loring quota]$ ls
1 2 3 4 5 6 aquota.group aquota.user
---组配额的限制
edquota -g quota2
关闭配额
[loring ~]# quotaoff /quota/
查看配额的使用情况(只有root能这么做)
[loring ~]# repquota -a
*** Report for user quotas on device /dev/sda10
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
quota1 -+ 0 1024 3072 6 3 6 6days
grace:优雅时间,当超过软限制,优雅时间倒计时为0时,软限制自动提升为硬限制;直到用户将使用空间或文件个数降至软限制以下,才能够继续使用该分区。
例子:假如硬限制100M,软限制70M,用户当前已使用85M,那么优雅时间开始倒计时,直到优雅时间为0,那么剩余的那15M空间也不能使用了,即软限制自动提升为硬限制。
grace默认是7天。
另外:
[loring ~]# edquota quota2
Disk quotas for user quota2 (uid 6669):
Filesystem blocks soft hard inodes soft hard
/dev/sda10 0 0 0 0 5 8
[loring ~]# repquota -a //看不到quota2的信息,是因为他没有创建任何文件
*** Report for user quotas on device /dev/sda10
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
quota1 -+ 0 1024 3072 5 3 6 5days
[loring ~]# su - quota2
[quota2@loring ~]$ cd /quota/
[quota2@loring quota]$ touch hello
[quota2@loring quota]$ exit
logout
[loring ~]# repquota -a
*** Report for user quotas on device /dev/sda10
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
quota1 -+ 0 1024 3072 5 3 6 5days
quota2 -- 0 0 0 1 5 8
查看用户的磁盘配额使用情况
[loring ~]# repquota -u /quota/
*** Report for user quotas on device /dev/sda10
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
quota1 -+ 0 1024 3072 5 3 6 5days
quota2 -- 0 0 0 1 5 8
查看组的配额使用情况
[loring ~]# repquota -g /quota/
*** Report for group quotas on device /dev/sda10
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
quota1 -- 0 0 0 5 0 0
quota2 -- 0 0 0 1 0 0
总结:
1、挂载分区使其支持用户配额和组配额功能
2、创建磁盘配额配置文件 quotacheck
3、配置用户的磁盘配额 edquota
4、开启配额 quotaon
5、测试配额情况
概念
软限制、硬限制