Ahoi Eugen, Am 29.11.24 um 11:31 schrieb Eugen Block:
step set_chooseleaf_tries 5 -> stick to defaults, usually works (number of max attempts to find suitable OSDs)
Why do we need more than one attempt to find an OSD? Why is the result different if we walk through a rule more than once?
step take default class test -> "default" is the usual default crush root (check 'ceph osd tree'), you can specify other roots if you have them
where are these classes defined? Or is "default class test" the name of a root? Most probably not. Could I also say step take default type host? What are the keywords that are allowed after the root's name?
step chooseleaf indep 0 type host -> within bucket "root" (from "step take default") choose {pool-num-replicas} hosts
What if I did exactly this, but have nested fault domains (e.g. racks > hosts)? Would the rule then pick {pool-num-replicas} hosts out of different racks, even though this rule doesn't mention racks anywhere? But what if I have size=4, but only two racks, would the picked hosts spread evenly across the two racks, or randomly, like 1 host in one rack, 3 in the other, or all 4 in one rack? Assume a pool with size=4, could I say step take default choose firstn 1 type row choose firstn 3 type racks chooseleaf firstn 0 type host Meaning: - force all chunks of a pg in one row - force all chunks in exactly three racks inside this row - out of these three racks, pick 4 hosts I don't want to say that the latter makes much sense, I just wonder if it would work that way. -- Andre Tann