In Chapter 1, “What is OpenStack?” you were briefly introduced to the components that make up the block storage (Cinder) service: cinder-api, cinder-scheduler, cinder-volume and also cinder-backup. A user will likely only be exposed to the API. As operators though, understanding the architecture for the service is important as we seek to make decisions about how we build the system and debug problems.
When a user request comes in, either from the OpenStack dashboard (Horizon), the OpenStack Client (OSC) or through a Software Developer Kit (SDK), it interfaces with the API for Cinder. This API will talk to a database, for initially storing the request, and then set the status to creating and reserving quota usage. The API will also interact with a messaging queue. The messaging queue will pass requests on to the scheduler for Cinder, which makes decisions about where the change will be made. For example, if a user is requesting that a volume be created, the scheduler will determine which storage device meets the criteria the user is asking for, for the volume (size, disk type), and then send it to the appropriate volume manager. The volume manager for Cinder is what works directly with drivers to interface with the storage back ends. A storage back end may be a datacenter full of Ceph nodes or a proprietary Network-attached Storage (NAS) device that has a driver for Cinder. The volume manager will also be talking to the database to commit to the reserved quota once we know the volume is created successfully. The status of the volume is also set to “available” so the user knows the volume may be used.
See Figure 8.2 for a view into how the individual services work together.
Figure 8.2 Cinder overview
All official drivers that are available for Cinder go through verified testing by the upstream Cinder team in the OpenStack project. To accomplish this, every vendor is required to run continuous integration (CI) tests on all changes that report to the public OpenStack review system. To learn about the latest supported drivers, you can visit the OpenStack Marketplace Drivers page for an official listing: https://www.openstack.org/marketplace/drivers/.
Paying attention to the drivers and learning what is supported will be essential when you build out your production OpenStack deployment. When considering a solution, be sure to research the support for your storage back end of choice and look into factors like how long a solution or vendor has been supported in OpenStack and what they support when it comes to interacting with the Cinder volume manager.