副本放置策略
CRUSH 算法的设置目的是使数据能够根据设备的存储能力和宽带资源加权平均地分布,并保持一个相对的概率平衡。副本放置在具有层次结构的存储设备中,这对数据安全也有重要影响。通过反射系统的物理安装组织,CRUSH算法可以将系统模块化,从而定位潜在的设备故障。这些潜在故障的资源包括物理的,比如共用电源,共用的网络。通过向集群映射编码信息,CRUSH副本放置策略可以将数据对象独立在不同故障域,同时仍然保持所需的分布。例如,为了定位可能存在的并发故障,应该确保设备上的数据副本放置在不同的机架、主机、电源、控制器、或其他的物理位置。
Placement Rules
Cluster Map反映了存储系统层级的物理拓扑;Placement Rules则决定了一个PG的对象副本选择规则,通过对规则进行设定,就可以使副本在集群中的分布位置。
解读Placement Rules用法
# rules
rule replicated_ruleset {
ruleset 0 //Ruleset的ID编号
type replicated //类型为replicated或者erasure code
min_size 1 //副本数最小值为1
max_size 10 //副本数最大值为10
step take default //选择一个名称为default的bucket,做下一步输入
step chooseleaf firstn 0 type host //firstn 0为表示为pool设置的副本数
step emit
}
rule replicated_ssd_ruleset {
ruleset 1
type replicated
min_size 1
max_size 10
step take ssd
step chooseleaf firstn 0 type host
step emit
}
# end crush map
Placement Rules执行流程
1、take操作选择一个Bucket ,一般是root类型的Bucket
2、choose操作有不同的选择方式