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
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
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