硬盘配额
Quota在是针对一个文件系统进行限制,而不是针对某个具体目录。也就是如果设置了/dev/sda1
的quota,那么一个用户在这个/dev/sda1
使用的数据量就会受限。如果你还有另外的/dev/sda2
, 用户可以在超过/dev/sda1
后继续使用/dev/sda2
。
Quota针对整个文件系统的限制项目分为如下几个部分
- 容量限制或文件数目限制(block或inode)
- soft/hard: 超过soft时,用户会被警告,但是依然能操作,但是一旦超过hard,那么直接无法操作硬盘
- 宽限时间: 超过soft后,给用户一定时间进行数据转移
对于比较新的系统(例如CentOS7),建议在创建文件系统的时候就使用xfs,采用最新的quota策略。
Ext4文件系统的Quota配置
第一步。增加文件系统支持
1 | mount | grep /data2 |
第二步: 扫描文件系统并新建Quota的配置文件
1 | quotacheck -avug |
这一步可能出现的提示信息和解决方法
如果出现下面提示,说明内核支持xfs, 建议使用xfs的quota管理。
1 | quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown. |
如果出现下面提示,说明该磁盘正在独写,使用lsof/fuser
查找可能的进程并关闭,之后重新运行。
1 | quotacheck: Cannot remount filesystem mounted on /data2 read-only so counted values might not be right. |
下面的提示会在首次执行时,可以忽略
1 | quotacheck: Scanning /dev/sdb1 [/data3] done |
第三步: 启动/关闭quota
1 | quotaon -vug /data3 |
第四步: 编辑账户/用户组的限值和宽限时间
1 | edquota -u 用户名 |
编辑表分为7个字段,修改的是第三个和第四个用于限制使用数据量(单位为KB),修改第六个和第七个限制使用的文件数目(不常用),0表示无限制。
和quota相关的Linux命令如下:
- quotactl
- quotaon/quotaoff
- edquota
- quotacheck
- repquota
- warnquota
- setquota
XFS文件系统的Quota配置
如果使用xfs作为文件系统,那么就不能或者说没有必要采用上面的方法。xfs文件系统下,quota是文件系统的元信息,使用journaling提供更高层次的一致性保证,因此在管理上就会存在差别。
quotacheck
对XFS系统没有效果。在mount时打开quota后,XFS会自动运行quotacheck做配额核算(quota accounting)- 没有必要在XFS文件系统下创建quota文件。aquota.user, aquota.group
- 配额核算和限制增强之间存在区别。配额核算必须在mount的时候打开,但是限制增强可以在配额核算打开之后随意关闭和开启
- 建议使用state监控XFS quota系统
挂载的时候打开quota
1 | umount /mnt/disk1 |
为了保证开机运行,还得修改/etc/fstab
的第四列的defaults
成defaults,uquota,gquota
ext4可以通过
fstransform
转换成xfs
直接输入xfs_quota
会进入交互模式
- help: 查看帮助信息, 例如help quota
- quota: 查看配额信息
- print: 列出设备
- df/free: 查看-bir(block,inode,realtime)信息,显示方式为
-hN
,-f
指定文件 - quit/q: 退出交互模式
使用-x
会进入专家模式, 之后通过-c "命令"
执行命令, 举几个例子
1 | # 显示使用情况 |
其他可用命令
- path: 显示设备
- timer: 宽限时间,默认7天
- enable/disable: 开启或关闭配额增强
- off: 永久性关闭