Ceph Placement rule(副本放置规则)
Placement rules 即副本放置规则,通过自定义的规则,可以决定副本在集群中的分布。规则的格式为:
rule <rulename> {
ruleset <ruleset>
type [ replicated | erasure ]
min_size <min-size>
max_size <max-size>
step take <bucket-type>
step [ choose | chooseleaf ] [firstn | indep] <N> <bucket-type>
step emit
}
规则的操作步骤中,主要涉及到的步骤:
- step take 操作是选择一个 bucket,一般是 root 类型的 bucket。
- step choose firstn {num} type {bucket-type},选取指定类型桶的数量,这个数字通常是存储池的副本数。
- step chooseleaf firstn {num} type {bucket-type},选择 {bucket-type} 类型的一堆桶,并从各桶的子树里选择一个叶子节点。集合内桶的数量通常是存储池的副本数。
举例来说:
step take default
step choose firstn 3 type host
step choose firstn 1 type osd
step emit
选取的步骤为先从 default 这个bucket中选取 3 个 host,再以每个 host 为起点,选择 host 下的 osd。
step take default
step chooseleaf firstn 3 type host
step emit
选取步骤为从 default 这个 bucket 中选择 3 个 host 并再向下选择 host 下的 osd。
可以看到,chooseleaf firstn 的效果和 choose firstn {num} type {bucket-type} + choose firstn 1 type osd 是相同的。