关于linux的磁盘配额
磁盘配额(Quota)是用来限制普通用户或用户组在指定的分区或目录中占用磁盘的容量大小或者文件个数的限制。
前提条件
内核必须支持磁盘配额
grep CONFIG_QUOTA /boot/config-3.10.0-1127.el7.x86_64
centos7.x都是默认支持的,所以一般问题都不大,如果内核不支持磁盘配额的话,就需要重新编译内核,加入quotasupper功能
关闭SELinux
若启用SELinux,并非所有目录都可以设置quota:
所以默认情况下,quota似乎只能针对/home设定而已,因此,在开启SELinux的情况下(如下所示,getenforce命令可以显示SELinux
的状态,Enforcing为开启.)如果想要针对不同目录来设定,请使用SELinux而不是Quota
要支持磁盘配额的分区必须开启磁盘配额功能
磁盘配额中的一些常见概念:
用户配额和用户组配额
看名字就知道一个是针对用户,一个是针对用户组的。需要注意的是,针对用户组的时候并不是将一块空间平均分给改组下的成员,而是先到先得。比方说:u1、u2、u3都属于bbs组,给bbs分配了100M的空间,假如u1下载了太多的种子文件,u2和u3就没有空间给他们使用了。
目录配额
目录配额指的是限制目录在分区中所占用的磁盘空间大小的限制,任何用户,包括超级用户,在此目录下写入的数据都计算在磁盘配额限制内
EXT格式只能对文件系统进行限制,xfs可用对project进行限制
文件个数限制
不仅可以通过限制用户可用的block数量来控制用户的磁盘容量外,还可以通过限制用户的inode数量来限制用户可以上传或新建的文件个数
软限制和硬限制
软限制可以理解为警告限制,硬限制就是真正的限制了。比如,规定软限制为80M,硬限制100M。那么,当用户使用的磁盘空间大小为80~100M时,还可以继续上传和新建文件,但每次登陆时都会收到一条警告消息,告诉用户磁盘将满。
宽限时间
如果用户的磁盘占用量处于软限制和硬限制之间,那么系统会在用户登陆时警告用户磁盘将满。但是这个警告不会一直存在,而是有时间限制的,这个时间就是宽限时间,默认是7天。如果达到这个宽限时间,软限制就会升级成硬限制,直接就把你的空间限制在指定的软限制范围内。
实验:配置用户xiaolv在/dev/sdb1的配额为100M,文件数目最大为3并测试
环境:centos7.9.2009 内核:3.10.0-1160.el7.x86_64
# 1.安装quota
yum -y install quota
# 2.开启分区的磁盘配额功能
vi /etc/fstab
# 挂载时加入选项
/dev/sdb1 /test ext4 defaults,usrquota,grpquota 0 0
# 由于ext4文件系统,quota功能默认是不开启的,需要创建磁盘配额的配置文件(aquota.user 和 aquota.group),才可以去启动quota功能,使用 quotacheck 命令的 -c 选项
# -v:显示扫描过程
# -u:针对扫描用户的情况建立aquota.user
# -g:针对扫描组的情况建立aquota.group
# 3.ext4文件系统开启quota功能
quotacheck -cvug /test
# 执行后生成aquota.user 和 aquota.group两个文件
# 4.ext4文件系统开启配额
# 查看配额开启情况
quotaon -p /test
# 开启配额
quotaon /test
# 5.设置xiaolv用户在/test目录下创建文件的最大容量为100M 文件数量最大为3
edquota -u xiaolv
Disk quotas for user xiaolv (uid 1003):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 102400 102400 102400 1 0 0
# 查看配额设置
quota -uvs xiaolv
# 6.测试
dd if=/dev/zero of=/test/xiaolv bs=1024K count=100
# 可以
dd if=/dev/zero of=/test/xiaolv bs=1024K count=150
# 超过100M的部分不行
# 建第四个文件时报错
quotaon选项 分区名
quotaoff选项 分区名
edquota选项 用户名或组名
选项说明
filesystem blocks soft hard inodes soft hard
挂载点 已使用空间 软限制 硬限制 已有文件个数 软限制 硬限制
quota选项 用户或组名
查询文件系统配额repquota 选项 分区名