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.