Size a Swift object ring: raw capacity for the replica count, drive count, object count and partitions per drive.
Swift stores each object once per replica across distinct failure domains, so raw capacity is logical data times the replica factor plus filesystem overhead. Partition power is the number that cannot be changed easily: the ring is fixed at 2^power partitions, and you pick it so that the largest cluster you ever plan to build still averages around 100 partition replicas per drive. Partition power is effectively a one-way decision — too low and data never balances across a grown cluster, too high and replicators and auditors spend all day walking directories — so it is worth calculating against your five-year drive count, not today's.
OpenStack Swift Storage
raw = logical data × replica factor × (1 + filesystem overhead); drives = raw ÷ (drive size × maximum utilisation); partition replicas per drive = 2^partition power × replicas ÷ drives.
raw = logical data × replica factor × (1 + filesystem overhead); drives = raw ÷ (drive size × maximum utilisation); partition replicas per drive = 2^partition power × replicas ÷ drives. Swift stores each object once per replica across distinct failure domains, so raw capacity is logical data times the replica factor plus filesystem overhead. Partition power is the number that cannot be changed easily: the ring is fixed at 2^power partitions, and you pick it so that the largest cluster you ever plan to build still averages around 100 partition replicas per drive.
Partition power is effectively a one-way decision — too low and data never balances across a grown cluster, too high and replicators and auditors spend all day walking directories — so it is worth calculating against your five-year drive count, not today's.
This calculator takes 7 inputs: Logical object data, Average object size, Ring protection, Partition power, Size of each drive, Filesystem and metadata overhead, Maximum drive utilisation. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Swift keeps container database rows per object, so many small objects stress the container layer long before the drives fill. A ring holding a billion 4 KiB objects needs container sharding attention that a ring holding the same bytes as large objects does not.