OpenStack Swift, also known as OpenStack Object Storage, is open source software designed to manage the storage of large amounts of data cost-effectively on a long-term basis across clusters of standard server hardware.
OpenStack Swift software is based on Cloud Files technology developed by Rackspace Hosting Inc. Rackspace and NASA started the OpenStack project in 2010 and co-founded the community that develops and maintains the open source software. OpenStack includes compute, storage and networking components for building cloud computing services.
Swift object storage was one of the original OpenStack projects. The Swift software is freely available through the Apache 2.0 license. Common use cases for OpenStack Swift include the storage, backup and archiving of unstructured data, such as documents, static web content, images, video files, email and virtual machine images.
How OpenStack Swift works
OpenStack Swift stores data as binary objects on the server operating system's underlying file system. Each object has associated metadata as part of the extended attributes of the file.
The OpenStack Swift architecture includes a proxy server and storage nodes. The proxy server implements the Swift REST-based application programming interface (API) to enable the transmission of read and write requests between clients and the storage servers via the HTTP protocol. Users employ commands such as PUT and GET to store and retrieve objects and their associated metadata from the Swift cluster, and the proxy server locates the objects by their hashtags and metadata. The proxy server also confirms the completion of writes to drives on the storage nodes.
The Swift software supports replication and erasure coding across the storage nodes in the server cluster. Swift places copies of every object in locations that are unique as possible -- first by region, then by zone, server and drive. If a server or hard drive fails, OpenStack Object Storage replicates its content from active nodes to new locations in the cluster.
The object storage system scales horizontally to store petabytes of data through the addition of server nodes, which can be equipped with hard disk drives or solid-state drives.
OpenStack Swift uses a ring to map the object storage data to server partitions. The system uses a separate ring for services such as account, object and container. A ring builder constructs and manages the rings, assigns partitions to the storage devices, and pushes configuration information to the storage nodes.
OpenStack Swift employs an eventual consistency model to replicate data across the server cluster, in contrast to the strongly consistent model that block storage uses for databases and applications with real-time data requirements. Eventually consistent object systems are designed to provide high scalability and high availability. They write data synchronously to multiple locations for durability, but when parts of the cluster are unavailable due to a hardware failure, the replication is delayed. OpenStack Swift proxy servers ensure access to the most recent copy of the data, even if some server nodes in the cluster are not available.
The OpenStack Swift project team works on storage capabilities, drivers and bug fixes designed to improve the performance, stability, reliability, scalability and usability of the object storage software. Many project team members are employees of technology vendors that sell products based on OpenStack Object Storage or the Swift API. The OpenStack Swift project team releases a major update twice a year, as do the teams that support other OpenStack projects.