Crate crushtool [] [src]

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

Structs

Bucket
CephBucket
CephCrushMap
CephDisk
CephHost
CephPool
CrushBucketList
CrushBucketStraw
CrushBucketStraw2
CrushBucketTree

CrushBucketTree is generally not used in Ceph because the algorithm is buggy.

CrushBucketUniform

All items are equally weighted.

CrushMap

CrushMap includes all buckets, rules, etc.

CrushRuleMask

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.

CrushRuleStep

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.

Rule

Enums

BucketAlg
BucketTypes
CephBucketType
CephVersion
CrushHash
EncodingError
OpCode
RuleType

Functions

decode_crushmap
encode_crushmap
set_tunables_argonaut

Set the crush tunables to Argonaut

set_tunables_bobtail

Set the crush tunables to Bobtail

set_tunables_firefly

Set the crush tunables to Firefly

set_tunables_hammer

Set the crush tunables to Hammer

set_tunables_jewel

Set the crush tunables to Jewel