(十二)磁盘配额
在多人多任务的环境中,会有多人使用同一个硬盘的情况,这时要将硬盘的容量进行均等分配,不然会影响其他用户的使用,这就是磁盘配额(quota)
一般用途
- 服务器网站:每个人网页空间的限制
- 邮件服务器:每个人邮件空间的限制、
- 文件服务器:每个人能使用的硬盘空间
- 限制用户组的磁盘容量
- 限制用户的磁盘容量
- 限制目录的容量
使用前的限制
不同的文件系统对磁盘配额的支持
ext不支持对目录的配额,xfs完美支持
查看内核是否支持磁盘配额
如果内核不支持,就不能进行磁盘配额的操作
配额只对一般用户有用
对root当然没用
若启动了SELinux,则有的目录不能参与磁盘配额
设置规范
- 可分别针对用户、用户组、目录进行配额限制
- 文件数量的限制(inode)、容量的限制(block)
- 限制分为硬限制(hard)、软限制(soft)
- 软限制是一个警告,硬限制是能使用的最大容量
- 宽限时间(grace time)
- 超过soft的限定值会开始倒计时,后果就是锁定磁盘使用,当然超过hard的话直接锁定
实际操作(xfs文件系统)
目标
1.创建3个账号,默认密码password
2.创建一个群组,把所有用户给到这个群组
3.每个用户限制500M的磁盘使用量,警告值450M,群组1G的限制,950的警告
4.尝试给一个目录限制磁盘使用(用户组与目录的限制不能共同开启)
5.宽限时间的限制
实现
创建三个账号
1 | #!bash |
然后限制所在的家目录/home/XXX,xfs的磁盘配额在挂载时申明,需要修改/etc/fstab,在配额的磁盘options加上usrquota,grpquota
1 | /dev/mapper/centos-home /home xfs defaults,usrquota,grpquota 0 0 |
重新挂载
此外options还可以设置
- uquota/usrquota/quota:用户账号
- gquota/grpquota:群组
- pquota/prjquota:单一目录,不能与群组共存
配额命令
1 | xfs_quota -x -c "command" [mountpoint] |
然后按照我们的目标设置如下
1 | [root@study ~ 19:53 #10] # xfs_quota -x -c "limit -u bsoft=450M bhard=500M quota1" /home |
如果限制的用户属于限制的用户组,用户组的容量优先
限制目录容量(project)
有一种情况就是在/home下还有一个目录属于某个群组,而这个群组成员使用的容量会影响到这个目录的容量,所以如果要针对目录来限制的话,就必须关闭群组的选项
修改/etc/fstab
1 | dev/mapper/centos-home /home xfs defaults,usrquota,prjquota 0 0 |
规范目录、选项名称及id
1 | Enabling project quota on an XFS filesystem (restrict files in log file directories to only using 1 gigabyte of space). |
以上是官方例子,写两个配置文件,id:目录
写到/etc/projects
,自定义选项名:id
写到/etc/projid
,使用xfs_quota -x -c 'project -s 自定义名字' /dir
初始化即可进行limit等设置,这里我就不过多演示了
磁盘配额的管理命令
1 | 以下指令接在-c后面 |
不修改文件系统的配额
配额针对文件系统,而假如突然在其他的目录想使用配额,需要把它重新规划成一个单独的分区吗?可以巧妙的用链接搞定
- 比如我想把/var/spool/mail目录限制容量
- 将它移动到/home
ln -s /home/mail /var/spool/mail
建立目标链接- 然后我们就可以只针对/home限制即可
1.Linux服务器架设总结
2.进程
3.(十四)LVM
4.(十三)磁盘阵列
5.(七)压缩与备份
6.(六)管理磁盘
7.(五)Linux文件系统管理
8.(四)Linux文件和目录