MSR(Mutli-Step Retry): An Generalization of CRUSH Allowing Multiple OSDs Per Failure Domain
summary
Claim: MSR generalizes CRUSH so a placement rule can allow multiple OSDs per failure domain and still keep deterministic, weight‑proportional, and stable mappings. It targets dense codes like 8+6 erasure code and enforces limits such as “no host >4 shards” by processing each output index depth‑first, using extra output vectors per step, and retrying the full sequence on out OSDs. Implemented as an MSR rule type in Squid, it exposes two tunables (collision retries and overall retries default 100) and is used automatically when osds_per_failure_domain > 1
AI-written summary · about
chapters (6)
- 0:00Introduction and motivation
- 7:19How CRUSH rules work
- 13:25Limitations of conventional CRUSH
- 14:49MSR rules explained
- 20:50Configuring MSR rules
- 22:23Use cases and adoption
related talks
17mParaRC: Embracing Sub-Packetization for Repair Parallelization in MSR-Coded Storage
17mMAPX: Controlled Data Migration in the Expansion of Decentralized Object Based Storage
20mGryff: Unifying Consensus and Shared Registers
25mStretch: A Fault-Driven DSM Runtime for Distributed Multithreaded Applications
18mDRBoost: Boosting Degraded Read Performance in MSR-Coded Storage Clusters
34mDistributed Systems - What Can Go Wrong and How to Get It Right
25mSupporting 3 Availability Zones Stretch Cluster
14mA Practical Approach to Multi-Concurrent Proposers
