Decompile a ceph crushmap for fun and profit
CRUSH is a pseudo-random data distribution algorithm that efficiently distributes input values (typically, data objects) across a heterogeneous, structured storage cluster.
The algorithm was originally described in detail in this paper (although the algorithm has evolved somewhat since then): http://www.ssrc.ucsc.edu/Papers/weil-sc06.pdf
CrushBucketTree is generally not used in Ceph because the algorithm is buggy.
All items are equally weighted.
CrushMap includes all buckets, rules, etc.
The rule mask is used to describe what the rule is intended for. Given a ruleset and size of output set, we search through the rule list for a matching rule_mask.
CRUSH uses user-defined "rules" to describe how inputs should be mapped to devices. A rule consists of sequence of steps to perform to generate the set of output devices.
Set the crush tunables to Argonaut
Set the crush tunables to Bobtail
Set the crush tunables to Firefly
Set the crush tunables to Hammer
Set the crush tunables to Jewel