配额:quota
什么是磁盘配额?
限制磁盘资源的使用。

限制原因就是资源不是无限的

应用场景
1.网络存储空间有限 网盘
2.邮件服务器
3.公司的文件共享服务器

能限制谁?
1.限制普通用户
2.限制用户组
注意:不能限制root用户
root用户对其他人的限制

能够限制什么?
inode----限制用户创建文件的个数
block----限制用户能够使用的磁盘空间的大小

soft软限制:超过软限制只警告,不影响使用
hard硬限制:是不可逾越的限制
grace time 时间限制:宽限时间,当超过软限制,没有超过硬限制的时候,将启动倒计时,一般默认设置为7天,如果7天内都不进行任何磁盘管理操作,软限制将变成硬限制。


设置配额的条件?
需要内核支持quota功能
# grep -i quota /boot/config-3.10.0-514.el7.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
CONFIG_QUOTACTL_COMPAT=y

如何进行磁盘配额?
前提是文件系统支持磁盘配额的属性uquota gquota
1.将文件系统挂载到系统中的目录
# mount /dev/sdb1 /mnt/sdb1

2.查看文件系统是否支持磁盘配额
# mount | grep sdb1

3.让文件系统支持磁盘配额
# umount /mnt/sdb1
# mount -o uquota,gquota /dev/sdb1 /mnt/sdb1
# mount | grep sdb1

4.设置分区开机挂载
# vim /etc/fstab
/dev/sdb1 /mnt/sdb1 xfs defaults,uquota,gquota 0 0

5.创建普通用户并设置密码
# useradd quota1
# useradd quota2
# useradd quota3
# echo "1" | passwd --stdin quota1

6.查看磁盘配额的信息
# xfs_quota -x -c 'report -ubih' /mnt/sdb1
-x 专家模式 只有使用了-x后面才可以使用-c的指令
-c 后接指令
report 列出目前的quota项目
-i inode
-b block
-h 人性化显示
-u 只显示用户的配额
-g 只显示用户组的配额
-p 项目的配额
limit 设置配额
state 显示状态
timer 设置宽限时间

7.限制quota1用户只能在/mnt/sdb1目录内创建10个文件
# xfs_quota -x -c 'limit -u isoft=7 ihard=10 quota1 ' /mnt/sdb1
limit -u 给用户设置配额
-g 给用户组设置配额
-p 给项目设置配额
isoft inode的软限制
ihard inode的硬限制
bsoft block的软限制
bhard block的硬限制

查看设置的配额
# xfs_quota -x -c 'report -uih ' /mnt/sdb1
User quota on /mnt/sdb1 (/dev/mapper/vg0-lv0)
Inodes
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 6 0 0 00 [------]
quota1 0 7 10 00 [------]

8.测试配额
# chmod 777 /mnt/sdb1
# chmod o+t /mnt/sdb1
# ll -d /mnt/sdb1
drwxrwxrwt. 2 root root 58 7月 7 22:34 /mnt/sdb1
# su - quota1
上一次登录:五 7月 7 23:46:46 CST 2017pts/0 上
$ cd /mnt/sdb1 //一定要切换到做了配额的目录下在操作
$ ls
lvmsnap-test.txt passwd shadow
$ touch test{1..8}.txt
$ touch test{9,10}.txt
$ touch test11.txt //超过硬限制,不能够创建test11.txt文件
touch: 无法创建"test11.txt": 超出磁盘限额
=======================================================

磁盘配额除了可以限制用户,组外,还可以对目录做限制
配置步骤:
1. 开启项目配额
# mount -o usrquota,prjquota,grpquota /dev/sdb1 /mnt/sdb1/
# mount |grep sdb1

2.设置目录,项目名称及项目ID
# echo 1:/mnt/sdb1 >> /etc/projects
# echo aa:1 >> /etc/projid

3.初始化项目
# xfs_quota -x -c "project -s aa"
# xfs_quota -x -c "report -pbih" /mnt/sdb1/

4.对项目配置配额
# xfs_quota -x -c "limit bsoft=100M bhard=200M -p aa" /mnt/sdb1/
# xfs_quota -x -c "report -pbih" /mnt/sdb1/

5.测试
不管任何人在此项目目录创建文件都不能超过200M
=========================================================
设置宽限时间
格式: xfs_quota -x -c "timer [-bi] [-g|-p|-u] value" /mnt/sdb1/
2days
1hours
5minutes


限制quota3用户只能创建15个文件,并且使用的总空间大小不能超过15M。