Ceph, Cinder, and Swift are used in OpenStack for data storage. Ceph is the backend storage software used and is not an OpenStack service, but rather the backend system where data for Cinder and Swift is stored. Cinder is OpenStack’s service for block storage and Swift is the service responsible for object storage.
The purpose of this guide is to briefly explain each of these services and how they relate to one another.
Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability and is the backend storage used by this deployment of OpenStack.
The Octopus release of Ceph is currently being used.
Ceph Data Durability
Ceph has different strategies for data durability, or data redundancy. See Ceph’s documentation for information on how Ceph stores data.
Typically a Ceph configuration will have three replicas of data per pool as this is the best tradeoff between performance and data durability. If data durability and cost are not as important, Ceph can be configured with two OSDs per pool, with the tradeoff being less physical hardware used to store data, meaning less cost. Another option in Ceph for replicating data is called erasure coding. This method is a software approach to replicating data that requires less disk space than using three replica OSDs at the expense of greater CPU and RAM usage.
Cinder is a block storage service for OpenStack which allows volumes to be created. A volume is a detachable storage device and can only be attached to one instance at a time.
This service virtualizes the management of block storage devices. End users make use of the storage service without needing to know where the storage is deployed or on what type of device it is stored. Drivers can be created which allow for multiple storage backend solutions, including local via LVM (Logical Volume Manager), Ceph, and others.
For more information about Cinder, check out these resources.
What is block storage?
Block storage is strategy of storing data where the data is stored in fixed size chunks called blocks. The address of where the block is located is the only metadata associated with each block.
Swift is the OpenStack service that handles object storage. This service allows containers to be created that can store objects, for example a collection of images, audio files, or a combination of any sort of files. Files can be uploaded through the Swift API or using Horizon.
Swift uses Ceph’s RadosGW as a means to handle object storage, effectively meaning Ceph is used to store Swift data.
For more information about Swift, check out these resources.
What is object storage?
Object storage is a strategy of storing data in various formats of varying sizes. Objects are stored as entire objects, so an mp3 file is stored completely as that along with any metadata associated with that object. The problem object storage solves is data scalability.
How do Cinder and Swift relate to Ceph?
Both Cinder and Swift can use different storage backends, ranging from local disks or a storage cluster like Ceph.
This deployment of Cinder and Swift both use Ceph as a backend for data storage.
Swift has been configured to use Ceph’s Object Gateway also known as RADOS Gateway.