Object storage with OpenStack Swift gained an important feature in yesterday's 2.0 release with the addition of storage policies. John Dickinson, Swift Program Technical Lead, called storage policies the "biggest thing to happen to Swift since it was open-sourced four years ago." So what exactly are storage policies, and how do they affect the way data is stored in an open source cloud?
Storage policies are all about letting system administrators make decisions about how and where data is stored, and what level of replication exists for it. As the cloud finds more and more uses, each new application could conceivably create different types of storage demands. Depending on the application type, some data might need greater resiliency than others, greater regional availability, or other types of flexibility. Storage policies allow a cloud to be configured to address these needs.
So why do storage policies matter? Dickinson explains, in this previous post on Opensource.com.
First, given the global set of hardware available in a single OpenStack Swift cluster, there will be new choice of which subset of hardware on which to store specific data. This can be done by geography (e.g. United States-East vs. European Union vs. Asia Pacific vs. global) or by hardware properties (e.g. SATA vs. SSDs).
Second, given the subset of hardware being used to store the data, there will be a new choice of how to encode the data across that set of hardware. For example, perhaps you have 2-replica, 3-replica, or future erasure code policies (looking forward to the Juno release). Combining this with the hardware possibilities, you get e.g. United States-East reduced redundancy, global triple replicas, and European Union erasure coded.
Third, given the subset of hardware and how to store the data across that hardware, there will be new control over how Swift talks to a particular storage volume. This may be optimized local file systems, or Gluster volumes, or even non-POSIX volumes like Seagate's new Kinetic drives
For more on storage policies in Swift, watch this video from the OpenStack Summit in Atlanta, which gives a great primer on what Swift is and how it works, greater detail about the implementation of storage policies, and some additional use cases. And be sure to check out the official announcement.
OpenStack clusters and other cloud tools using Swift can upgrade with no downtime, and the process is relatively simple. The Swift team is already hard at work getting the next major feature addition ready, as they work to develop erasure code support. Erasure codes will allow for huge savings of storage for certain applications, but they depend on storage policies, so this release will allow for easier implementation moving forward.