我想知道这两条规则之间的区别:
# rules
rule rack_rule{
ruleset 0
type replicated
min_size 1
max_size 10
step take default
step chooseleaf firstn 0 type rack
step emit
}
和
rule 2rack_2host{
ruleset 0
type replicated
min_size 1
max_size 10
step take default
step choose firstn 2 type rack
step chooseleaf firstn 2 type host
step emit
}
据我了解,第一条规则 rack_rule 将 rack 作为故障域,因此在每个 PG 中,我们都会有来自不同机架的 osd。例如,如果我有 2 个机架并且复制大小 = 2,我将有一个 PG [osd.1,osd.2],这 2 个 osd 应该来自不同的机架。
在第二条规则中,我认为它应该选择 2 个不同的机架,并且对于每个机架,它将选择 2 个不同的主机。所以,如果我有 2 个机架并且复制大小 = 2,我将有一个 PG [osd.1,osd.2],这 2 个 osd 应该来自不同的机架。
这在理论上是我所理解的,但我在实践中看不到这些预期的结果。使用这两个规则,我在同一个机架中为 PG 在复制大小为 2 的池中设置了 osd