一、前言
1、功能介绍
配额由root用户设置,可以对用户、用户组、项目可使用磁盘空间进行限制,支持inode(文件数量)和block(文件容量)两种限制方式
注:项目配额支持需服务端和客户端均为Lustre 2.10及更高版本,OST池配额支持需要服务端和客户端均为Lustre 2.14及更高版本
2、约束限制
- 配额是针对整个文件系统进行限制(设置配额需要指定文件系统挂载点),而非某一子目录
- 无单一管理节点,部分命令必须在MGS节点执行(配额开关:
lctl conf_param
),部分命令必须在MDS节点执行() - 存在最小限制单位(block)
- 客户端挂载无需指定usrquota、grpquota参数,默认始终启用空间计算功能,可使用
lctl conf_param
命令启用/禁用配额功能
二、部署说明
1、配额开关
Lustre配额设计将管理和执行与资源使用和计算分开,Lustre软件负责管理和执行,后端文件系统(ldiskfs/zfs)负责资源使用和计算
配额执行由Lustre软件管理,但每个OST实施依赖于后端文件系统来维护每个用户/用户组/项目的block/inode使用,使用ldiskfs和zfs后端设置配额存在差异(低于0.8的zfs版本不支持项目配额)
通用格式
配额执行功能可针对某一文件系统独立打开或关闭,与始终启用的空间计算功能无关,可通过以下配额参数来控制inode/block配额执行
注:由于配额设置由MGS管理,故以下命令必须在MGS节点上执行
lctl conf_param <fsname>.quota.<ost|mdt>=<u|g|p|ugp|none>
- fsname:用于指定需要设置配额开关的文件系统名称
- ost|mdt:用于指定需要设置配额限制方式(inode/block)
- ost:当指定
ost
参数时,表示配置OSTs管理的block配额(文件容量) - mdt:当指定
mdt
参数时,表示配置MDTs管理的inode配额(文件数量) - u|g|p|ugp|none:用于指定需要设置配额主体类型(用户/用户组/项目)
- u:当指定
u
参数时,表示启用用户配额功能 - g:当指定
g
参数时,表示启用用户组配额功能 - p:当指定
p
参数时,表示启用项目配额功能 - ugp:当指定
ugp
参数时,表示启用用户、用户组、项目配额功能 - none:当指定
none
参数时,表示禁用用户、用户组、项目配额功能
示例说明
对lustrefs文件系统启用用户配额功能,限制方式为block配额(文件容量)
lctl conf_param lustrefs.quota.ost=u
对lustrefs文件系统启用用户、用户组配额功能,限制方式为inode配额(文件数量)
lctl conf_param lustrefs.quota.mdt=ug
2、配额验证
当对某一文件系统启用配额功能后,归属于该文件系统的所有target(MDT、OST)将自动收到新配额设置,并根据需要启用配额
MDS节点执行lctl get_param osd-*.*.quota_slave.info
命令,可查看所有target(MDT、OST)执行状态,参考示例如下:
- 当执行
lctl conf_param lustrefs.quota.ost=u
命令后,所有OST的quota enabled
属性变更为u
,user uptodate:
属性变更为glb[1],slv[1],reint[0]
- 当执行
lctl conf_param lustrefs.quota.mdt=ug
命令后,所有MDT的quota enabled:
属性变更为ug
,user uptodate:
和group uptodate:
属性变更为glb[1],slv[1],reint[0]
osd-ldiskfs.lustrefs-MDT0000.quota_slave.info=
target name: lustrefs-MDT0000
pool ID: 0
type: md
quota enabled: ug
conn to master: setup
space acct: ug
user uptodate: glb[1],slv[1],reint[0]
group uptodate: glb[1],slv[1],reint[0]
project uptodate: glb[0],slv[0],reint[0]
osd-ldiskfs.lustrefs-OST0000.quota_slave.info=
target name: lustrefs-OST0000
pool ID: 0
type: dt
quota enabled: u
conn to master: setup
space acct: ug
user uptodate: glb[1],slv[1],reint[0]
group uptodate: glb[0],slv[0],reint[0]
project uptodate: glb[0],slv[0],reint[0]