Linux磁盘配额管理
最近在做基于mesos+marathon 的docker 容器云服务项目。需要限制每个容器的数据卷磁盘使用,对此作了一些调研工作。
基本说明
必要条件
XFS
ext4
均可支持Quota
操作- 需要内核
Linux 2.4 +
的支持 - 需
mount
时指定quota option
, 可配置/etc/fstab
后remount.
有 3 种不同的配额支持:
vfsold,或者版本 1 配额
vfsv0,或者版本 2 配额
xfs,XFS 文件系统上的配额
配额需要 2.4 内核之后引入的内核支持。2.6 内核也有您所需的支持。XFS 配额往往是日志化的。内核 2.6.11 及以上版本支持日志化版本 2 配额。
Quota 基本介绍:
先介绍以下,是磁盘限额的基本概念:
usrquota: (XFS uquota) 针对某一个User
grpquota: (XFS gquota) 针对某一个Group
prjquota: (XFS pquota) 针对单一目录,不可与grpquota
同时配置
inode: 配置文件个数限额
disk: 配置磁盘空间限额,单位1KB
soft: 软限额,超过会warn,同时启动timer倒计时
hard: 硬限额,超过直接抛IOERROR: Disk quota exceeds
timer: 软限额预警倒计时,默认7days, 倒计时截止时,使用量仍超过soft,则soft升级为hard. 写入即Error
通用CMD命令简介
以下命令对所有类型的文件系统都适用,如果遇到command not found 问题,请检查是否安装了quota-utilies工具包
quota: 显示配额信息
quotacheck: 配额配置检查,必要时创建或修复配额文件(aquota.user,aquota.group), XFS 配额结构包含在元数据和日志则跳过该检查。
repquota: 生成配额报告
quotastats: 查看配额统计
edquota: 设置配额
quotaon: 启用磁盘quota
quotaoff: 启用磁盘quota
xfs_quota: 指令用法
XFS prjquota 目录配额
以上介绍了usrquota,grpquota 这两种常用的磁盘配额类型。但想要限制某个目录的磁盘配额怎么办?答案是:prjquota。不过 prjquota 需要xfs的文件系统。据说keneral 4.0+ ext4 才能支持prjquota
XFS支持基于目录的配额prjquota, prjquota不能和grpquota同时配置。
使用命令:
1. 启动quota功能,挂载时需要制定 pquota(prjquota),或者陪着 /etc/fstab 后remount 或 reboot (生产环境要停服)。可以通过 /etc/mtab 查看是否mount 成功
2. 配置文件首次使用,需要配置 /etc/projects 和 /etc/projid 文件
/etc/projects 中配置项目id:目录path,形如: 1999:/data/mnt/point
/etc/projid 中配置project_name:project_id,形如 devproject:1999
3. 配置限额,查看报告。使用xfs_quota -x指令,进入交互命令行。也可直接使用 xfs_quota -x -c "......" /my/mnt/point 直接执行引号中的指令。
常用命令说明:
state: 查看当前配额开启的状态
path: 显示当前所在路径,开始配置之前,先用该指令选到你要配置的目录路径
limit: -p参数,配置目录限额。bhard 配置 hard 限额,bsoft 配置soft限额。配置指令形如"limit -p bhard=50M bsoft=40M 配置
report: 查看限额报告。具体参数 -h 查看
参考文档
1.管理磁盘配额
2.ext4 prjproject支持
3.mesos disk-xfs-ioslators
4.鸟哥介绍磁盘配额