The Ceph CRUSH algorithm

Allocation algorithm. given an input value, CRUSH deterministically outputs an ordered list of distinct storage targets.

Create a cluster map, which is a tree where the leaves are storage devices; call the internal nodes buckets.

Buckets have associated weights and are of four different types:

This plus implementation of allocation rules, which act as filters.