searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

placement rule

2023-09-21 10:55:00
18
0

ceph将cluster map与placement rule合并为一张表称为crush map,作为集群表的一部分。cluster map定义了存储集群的物理拓扑描述placement rule完成数据映射,即决定一个PG的对象副本如何选择的规则,用户可自定义副本在集群中的分布。

placement rule模板如下

rule <rulename> {

id [ a unique whole numeric ID ]

type [ replicated / erasure ]

min_size <min-size>

max_size <max-size>

step take <bucket-name> [ class <device-class> ]

step [ choose / chooseleaf ] [ firstn / indep ] <number> type <bucket-type>

step emit

}

 

 

placement rule示例及字段含义如下

rule data {

ruleset 1

type replicated

min_size 1

max_size 10

step take default

step chooseleaf firstn 0 type host

step emit

}

 

字段含义

ruleset为该条placement的编号

type选择是replicated多副本类类型还是erasure纠删码类型

min_size副本最小个数

max_size副本最大个数

step take选择一个级别的桶作为输入(即寻找该桶下的osd存储数据),应用这条rule的都把数据写在该桶下

[choose|chooseleaf]:choose操作有不同的选择方式

1.choose选择出num个类型为bucket-type的子bucket

2.chooseleaf选择出num个类型为bucket-type的子bucket,然后递归到叶子节点选择一个osd设备

firstn多副本,indep纠删码

type故障域的类型,如果为rack,保证选出的副本都位于不同机架的主机磁盘上,如果为host,则保证选出的副本位于不同主机上。

step emit输出将要分布的节点列表

 

placement rule执行流程

 ceph是分布式存储,每个数据块的数据备份是3份,3份数据如何分布?ceph的placement rule就是解决数据分布规则的问题。

  应用端直接使用的是池pool,pool是由存储的基本单位pg组成,pg分布在磁盘逻辑单元osd上,osd对应一块物理硬盘,osd分布在物理主机host,host分布在机架rack中,机架rack分布在机柜阵列raw中,层级结构为->pdupod->room->datacenter 。其中host/rack等等在ceph属于中叫做bucket(桶)。 如果每个数据块的备份是3份,3个基本数据单元需要存放到3个pg中,这个时候就需要根据使用的rule,即确定使用哪3个pg。cursh算法依赖straw2算法实现对pg的映射,输入pg_id、cluster map、placement rule,与随机因子经过哈希计算,输出一组osd列表,即该pg要落在的osd编号。当选出的osd有出现冲突或过载时,需要舍弃并重新选择。

冲突:指选中条目已经存在于输出条目中,如osd.10已经存在于输出列表中,下一个经计算同样选出了osd.10,此时需要调整随机因子,再次计算进行选择。

 

 

过载或失效:指选出的OSD无法提供足够的空间来存储数据,crush算法理论上可以让数据在所有设备(磁盘)中均匀分布,但实际并没有这么理想:小规模集群的pg数量较少,则crush输入的样本容量不够,导致数据计算分布不均匀;同时crush自身对于多副本模式数据均匀分布做的不够完善。ceph引入过载测试reweight可人工干预对osd的选择概率,reweight的值设置的越高,被选中的概率越高,因此可以通过降低过载osd的reweight和增加低负载osd的reweight来使得数据均衡。

 

常用命令

创建placement rule

ceph osd crush rule create-simple <rule_name> <root_name> <type_name> <mode_name>

示例ceph osd crush rule create-simple newRule default host firstn

显示rule

ceph osd crush rule dump

 

0条评论
0 / 1000
冷酷大母猴
2文章数
0粉丝数
冷酷大母猴
2 文章 | 0 粉丝
冷酷大母猴
2文章数
0粉丝数
冷酷大母猴
2 文章 | 0 粉丝
原创

placement rule

2023-09-21 10:55:00
18
0

ceph将cluster map与placement rule合并为一张表称为crush map,作为集群表的一部分。cluster map定义了存储集群的物理拓扑描述placement rule完成数据映射,即决定一个PG的对象副本如何选择的规则,用户可自定义副本在集群中的分布。

placement rule模板如下

rule <rulename> {

id [ a unique whole numeric ID ]

type [ replicated / erasure ]

min_size <min-size>

max_size <max-size>

step take <bucket-name> [ class <device-class> ]

step [ choose / chooseleaf ] [ firstn / indep ] <number> type <bucket-type>

step emit

}

 

 

placement rule示例及字段含义如下

rule data {

ruleset 1

type replicated

min_size 1

max_size 10

step take default

step chooseleaf firstn 0 type host

step emit

}

 

字段含义

ruleset为该条placement的编号

type选择是replicated多副本类类型还是erasure纠删码类型

min_size副本最小个数

max_size副本最大个数

step take选择一个级别的桶作为输入(即寻找该桶下的osd存储数据),应用这条rule的都把数据写在该桶下

[choose|chooseleaf]:choose操作有不同的选择方式

1.choose选择出num个类型为bucket-type的子bucket

2.chooseleaf选择出num个类型为bucket-type的子bucket,然后递归到叶子节点选择一个osd设备

firstn多副本,indep纠删码

type故障域的类型,如果为rack,保证选出的副本都位于不同机架的主机磁盘上,如果为host,则保证选出的副本位于不同主机上。

step emit输出将要分布的节点列表

 

placement rule执行流程

 ceph是分布式存储,每个数据块的数据备份是3份,3份数据如何分布?ceph的placement rule就是解决数据分布规则的问题。

  应用端直接使用的是池pool,pool是由存储的基本单位pg组成,pg分布在磁盘逻辑单元osd上,osd对应一块物理硬盘,osd分布在物理主机host,host分布在机架rack中,机架rack分布在机柜阵列raw中,层级结构为->pdupod->room->datacenter 。其中host/rack等等在ceph属于中叫做bucket(桶)。 如果每个数据块的备份是3份,3个基本数据单元需要存放到3个pg中,这个时候就需要根据使用的rule,即确定使用哪3个pg。cursh算法依赖straw2算法实现对pg的映射,输入pg_id、cluster map、placement rule,与随机因子经过哈希计算,输出一组osd列表,即该pg要落在的osd编号。当选出的osd有出现冲突或过载时,需要舍弃并重新选择。

冲突:指选中条目已经存在于输出条目中,如osd.10已经存在于输出列表中,下一个经计算同样选出了osd.10,此时需要调整随机因子,再次计算进行选择。

 

 

过载或失效:指选出的OSD无法提供足够的空间来存储数据,crush算法理论上可以让数据在所有设备(磁盘)中均匀分布,但实际并没有这么理想:小规模集群的pg数量较少,则crush输入的样本容量不够,导致数据计算分布不均匀;同时crush自身对于多副本模式数据均匀分布做的不够完善。ceph引入过载测试reweight可人工干预对osd的选择概率,reweight的值设置的越高,被选中的概率越高,因此可以通过降低过载osd的reweight和增加低负载osd的reweight来使得数据均衡。

 

常用命令

创建placement rule

ceph osd crush rule create-simple <rule_name> <root_name> <type_name> <mode_name>

示例ceph osd crush rule create-simple newRule default host firstn

显示rule

ceph osd crush rule dump

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0