Abstract
A distributed storage service lets clients abstract a single reliable shared storage device using a collection of possibly unreliable computing units. Algorithms that implement this abstraction offer certain tradeoffs, and vary according to dimensions such as complexity, the consistency semantics provided, and the types of failures tolerated.