博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lustre—配置和管理磁盘配额
阅读量:2514 次
发布时间:2019-05-11

本文共 3869 字,大约阅读时间需要 12 分钟。

1、磁盘配额

磁盘配额允许系统管理员限制用户、组和工程可以使用的磁盘空间数量。磁盘配额是被root用户设置的。在一个文件被写入到设置了磁盘配额的分区之前,创造者组的磁盘配额将会被检查。如果磁盘配额存在,那么能够写入的文件大小就是组的磁盘配额的限制数值。如果不存在,在文件被写入之前,用户的磁盘配额将会被检查。

此外,Lustre的磁盘配额与Linux系统的标准磁盘配额是有所区别的:

  • Lustre的磁盘配额是通过lfslctl命令管理的;
  • Lustre的磁盘配额是分散贯穿整个系统的。因此,相关的设定和操作是有所不同的。
    • 没有单一的管理点:一些命令必须在MGS上执行,其他的命令在MDS和OSS上,甚至一些还在客户机上;
    • 精准性:磁盘配额信息分散贯穿于整个系统,会在整个系统中精确计算。
  • 客户端不会设置usrquotagrpquota选项去挂载

2、磁盘配额

由于磁盘配额是依赖于运行中的Lustre软件版本,所以你首先需要去确认Lustre的版本:

[root@mds0 ~]# lctl get_param versionversion=lustre: 2.9.0

Lustre 2.4 之前版本

在Lustre 2.4之前版本,lfs quotacheck 必须被首先运行从一个客户机节点上,去在lustre目标(MDT和OST)上创建配额文件。 lfs quotacheck 需要文件系统是静态的。没有遵循这一警告将会导致错误的用户/组的磁盘使用。lfs quotacheck 扫描所有的Lustre目标去计算每个用户/组的block/inode 使用量。如果Lustre文件系统有很多的文件, quotacheck 可能需要很长时间才能完结,该命令的可选参数:

# lfs quotacheck -ug /mnt/testfs
  • u 检查用户的磁盘配额信息
  • g 检查组的磁盘配额信息

默认的,磁盘配额在 quotacheck 结束后开启。然而,这个设定并不会持久有效,也就需要手动开启(通过 lfs quotacheck )。 lfs quotaoff 被用作关闭磁盘配额。

Warning

在2.4之前,当一个新的OST被添加进系统中后,配额并不会自动添加到新的OST中。作为变通,需要使用 lfs setquota 命令对于每一个用户或者组清理并重新配置磁盘配额。eg:

$ lfs setquota -u bob -b 0 -B 0 -i 0 -I 0 /mnt/testfs$ lfs setquota -u bob -b 307200 -B 309200 -i 10000 -I 11000 /mnt/testfs

2.4版本之后

磁盘配额是和MGS联系在一起的,本环节的所有设置命令都是在MGS上运行。一旦设定好,磁盘配额状态的查询验证就必须在MDT上执行。

Caution

在2.4及其以后版本中需要e2fsprogs版本支持,在使用ZFS备份的服务器节点上不需要。通常,我们建议使用最新的e2fsprogs版本。

对于2.4版本,磁盘配额的执行是独立于始终启动的空间计算打开和关闭的。

lfs quota on|off 和每个目标参数 quota_type 都被废弃取代控制inode/block的配额执行。就像所有不变的参数,这个配额参数可以通过 lctl conf_param 以下面的语法格式在MGS上设置:

lctl conf_param fsname.quota.ost|mdt=u|g|p|ugp|none* ost --配置受OST管理的block配额* mdt --配置受MDT管理的inode配额* u --仅仅开启用户的磁盘配额* g --仅仅开启组的磁盘配额* p --仅仅开启工程的磁盘配额* ugp --开启所有的磁盘配额* none --关闭所有的磁盘配额

配额查证

一旦磁盘额配额参数被设定,作为文件系统一部分的所有目标都将会被自动通知到心的配额设定,然后开启/关闭所需要的配额。目标状态通过在MGS上执行以下命令查询到:

# 开启状态$ lctl get_param osd-*.*.quota_slave.infoosd-zfs.testfs-MDT0000.quota_slave.info=target name: testfs-MDT0000pool ID: 0type: mdquota enabled: ugconn to master: setupuser uptodate: glb[1],slv[1],reint[0]group uptodate: glb[1],slv[1],reint[0]# 关闭状态[root@mds0 ~]# lctl get_param osd-*.*.quota_slave.infoosd-ldiskfs.YHFS-MDT0000.quota_slave.info=target name:    YHFS-MDT0000pool ID:        0type:           mdquota enabled:  noneconn to master: setupspace acct:     uguser uptodate:  glb[0],slv[0],reint[0]group uptodate: glb[0],slv[0],reint[0]

也可以通过文件查询:

# cd /proc/fs/lustre/osd-ldiskfs/fsname-MDT0000/quota_slave# cat enablednone

配额管理

主要设定用户、组和工程的inode/block的软硬限制。使用 lfs 命令在客户端上执行,有以下选项:

  • quota –显示概括信息(磁盘使用和限制)
  • setquota –指定配额限制,调整宽限期。默认设定为一周。

Usage:

# lfs quota [-q] [-v] [-h] [-o obd_uuid] [-u|-g|-p uname|uid|gname|gid|projid] /moun# lfs quota -t {-u|-g|-p} /mount_point#lfs setquota {-u|--user|-g|--group|-p|--project} username|groupname [-b block-soft [-B block_hardlimit] [-i inode_softlimit] [-I inode_hardlimit] /mount_point

显示综合信息:

$ lfs quota /mnt/testfs

显示特定用户的配额信息(以“bob”为例):

$ lfs quota -u bob /mnt/testfs

显示对于每个MDT和OST的详细配额统计:

$ lfs quota -u bob -v /mnt/testfs

显示特定工程的配额信息(以“1”为例):

$ lfs quota -p 1 /mnt/testfs

限制特定工程ID在一个自定目录的配额使用:

$ chattr +p /mnt/testfs/dir$ chattr -p 1 /mnt/testfs/dir$ lfs setquota -p 1 -b 307200 -B 309200 -i 10000 -I 11000 /mnt/testfs

请记住使用 lfs quota -p 要比 du 更快的准确显示出目录下空间/inode的使用,然后用户/管理员需要去针对不同的目录使用不同的工程ID。

显示用户用户blcok和inode配额的宽限时间:

$ lfs quota -t -u /mnt/testfs

全局的配额限制被存储在配额管理目标(又叫做QMT)的专用的索引文件中。QMT在MDT0000上运行,通过/proc输出全局索引。全局索引可以通过以下命令废弃:

# lctl get_param qmt.testfs-QMT0000.*.glb-*

全局索引信息的从属副本通过/proc输出,可以通过以下命令查看:

$ get_param osd-*.*.quota_slave.limit*

配额分配

Note:

每个OST上block配额被消耗,每个MDS上inode被消耗。所以当一个OST上配额被消耗,客户端将不能去创建文件,尽管其他OST上配额可用。

使用 lfs df -i 决定inode数量,或者 lctl get_param ..filestotal

Granted Cache 和 Quota Limits

在文件系统中,Granted Cache不会遵守配额限制。在这种情况下,OST授予缓存给一个Lustre客户端增加I/O。授予的缓存能够成功写入OST中,尽管他们已经超出了配额限制。

顺序是:

* 1、一个用户往lustre文件系统中写文件
* 2、如果客户端拥有足够的授予缓存,那么将会给用户返回一个“success”,安排向OST中的写入。
* 3、由于客户端已经传递给用户成功的标志,OST将不会失败这些书写。

Note:

在配额限制方面,授予缓存的影响可以被削弱但不能被根除。减少客户机上脏数据的最大数量(最小值是1MB):

#  lctl set_param osc.*.max_dirty_mb=8

转载地址:http://fworb.baihongyu.com/

你可能感兴趣的文章
[LeetCode] 4Sum II 四数之和之二
查看>>
[LeetCode] Task Scheduler 任务行程表
查看>>
[LeetCode] Friends Of Appropriate Ages 适合年龄段的朋友
查看>>
WCF 服务端+客户端动态调用
查看>>
Swift开发图解入门
查看>>
[Js-开发常识]为什么定义实体类属性建议用 Ineger 而不是 int
查看>>
P1137 旅行计划
查看>>
160523、Oracle建立表空间和用户
查看>>
处理机调度
查看>>
CQRS架构
查看>>
atmega8 例程:T1定时器 CTC模式 方波输出
查看>>
CAN控制器的选择
查看>>
sublime代码片段
查看>>
SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星 bitset
查看>>
外键约束的作用
查看>>
Spring AOP 面向切面编程
查看>>
Word Count作业
查看>>
安卓动画基础讲解
查看>>
Fragment管理工具类
查看>>
test
查看>>