dropbox

Improving storage efficiency in Magic Pocket, our immutable blob store (opens in new tab)

Magic Pocket’s immutable design protects data integrity but makes storage efficiency dependent on continuous reclamation. A new Live Coder service reduced write amplification while unintentionally creating severely under-filled volumes, driving fragmentation and storage overhead sharply upward. Dropbox responded by rethinking compaction, since its existing steady-state strategy was too slow to recover space from the resulting long tail of sparse volumes.

The Cost of Immutability

  • Magic Pocket stores user files as immutable blobs distributed across its storage fleet.
  • Updates and deletions never modify data in place; obsolete blobs remain until compaction.
  • Garbage collection identifies unreferenced blobs, while compaction physically moves live blobs into new volumes and retires old ones.
  • Because closed volumes cannot be reopened, deleted data creates unused space unless it is actively consolidated.
  • Durability also increases storage requirements:
    • Replication stores multiple complete copies.
    • Erasure coding splits data into fragments and adds parity, providing fault tolerance with less overhead.
  • Fragmentation determines how efficiently that redundant capacity is used:
    • A volume with 50% live data effectively doubles required storage.
    • A volume with 10% live data uses roughly ten times the necessary space.

The Live Coder Incident

  • A new on-the-fly erasure-coding service created severely under-filled volumes as it rolled out to new regions.
  • In the worst cases, less than 5% of a volume’s capacity contained live data.
  • Since volumes have fixed allocations, many mostly empty volumes consumed nearly as much raw capacity as full volumes.
  • Dropbox detected rising effective replication-factor signals, indicating more raw storage was being used per live byte.
  • The existing compaction system continued reclaiming space but was not designed for a long tail of extremely sparse volumes.
  • The incident demonstrated that compaction must adapt when the distribution of live data changes substantially.

Steady-State L1 Compaction

  • Dropbox’s baseline strategy, L1, treats compaction as a packing problem.
  • It selects:
    • A highly filled host volume with available space.
    • Donor volumes whose live data fits into that space.
  • Live blobs from the donors are written into a new volume, eventually leaving the donors empty and removable.
  • L1 is simple, fast, and limits placement risk and metadata changes.
  • However, each run can read tens of GiB while typically producing only one densely packed volume.
  • Fewer than one complete volume is reclaimed on average because only donor volumes are fully drained.
  • This works well when volumes are already near full, but performs poorly when storage overhead is concentrated in many severely under-filled volumes.