Lesson 9 · OpenStack Production Engineer
Cinder Architecture — Volumes, Backends, and Capability Reporting
How Cinder models volumes and drivers, what backends report about themselves, and why the API stays green when storage is failing.
Objectives
- Name the Cinder services and state which one talks to the storage backend
- Explain what a backend reports and how the scheduler uses it
- Read a volume's state transitions and identify where a failure occurred
- Explain why Cinder's API health is a poor indicator of storage health
The service that talks to storage is not the one you check
Cinder has the same shape as Nova, and the same consequence follows from it.
| Component | Owns | Talks to storage? |
|---|---|---|
cinder-api |
Accepting requests, writing the volume record | No |
cinder-scheduler |
Choosing a backend for each volume | No |
cinder-volume |
Driving the backend driver | Yes |
cinder-backup |
Backup operations | Only for backups |
Only cinder-volume touches the array, the Ceph cluster, or the LVM group. Everything else works
from the database and the message bus.
That is why cinder-api answering promptly means nothing about whether storage works. The API is
healthy in almost every storage incident, because its health does not depend on storage.
Backends describe themselves, and the scheduler believes them
cinder-volume runs one driver per configured backend, and each periodically reports what it can
do and how much room it has. The scheduler makes decisions purely from those reports.
Note the host@backend form. One host runs several backends and they fail independently — a fact
that is easy to miss and explains why “storage is down” is usually too coarse a statement to act
on.
The reported capabilities are what volume types are matched against:
openstack volume backend capability show storage-01@ceph
Volume states name the stage that failed
creating ──► available ──► reserved ──► attaching ──► in-use
│ │
▼ ▼
error error_attaching
Each terminal error state points somewhere specific:
| State | What failed | Look at |
|---|---|---|
error after creating |
Backend could not create the volume | cinder-volume on the backend host |
error_attaching |
The volume exists; connecting it to the instance failed | nova-compute on the instance’s host, then cinder-volume |
error_deleting |
Backend refused or failed to remove it | cinder-volume, then the backend itself |
Stuck in creating |
No backend accepted it, or the driver is not responding | cinder-scheduler first, then cinder-volume |
Stuck in detaching |
Cleanup not completing on the compute side | nova-compute on the recorded host |
The distinction between error and error_attaching is the most useful one in practice: the first
is a storage problem, the second is very often a compute or connectivity problem with storage as an
innocent bystander.
Why volume attachment is the fragile part
Creating a volume involves Cinder and the backend. Attaching one involves Cinder, Nova, the compute host, and the data path between that host and the storage — iSCSI sessions, Ceph connectivity, or fibre channel.
That is a much longer list of things that can be individually broken, and the failure is reported
by Nova because Nova was orchestrating. An instance stuck in block_device_mapping is a Cinder
problem being reported by Nova, and looking only at Nova will not resolve it.
The failure that keeps the API green
The most confusing Cinder incident is the one where every check passes and volumes do not work:
cinder-apiresponds immediatelyopenstack volume listreturns instantly- The dashboard shows storage as healthy
- New volumes sit in
creatingforever
This happens when cinder-volume is running but its driver cannot reach the backend. The service
still heartbeats — it is alive — so State shows up. It simply cannot do any work.
The check that reveals it is not a health check but a functional one: create a small volume and see
whether it reaches available. Anything less than that is testing the parts of Cinder that do not
touch storage.
The diagnostic path
- Is the backend service up?
openstack volume service list— and read thehost@backendcarefully, because one backend can be down while others are fine. - What state is the volume in? It names the stage that failed.
- Creation failure?
cinder-volumelog on that backend’s host. - Attachment failure?
nova-computeon the instance’s host first, then the data path from that host to storage. - Scheduling failure?
cinder-schedulerlog, and compare the volume type’s extra specs against what the backends actually report. - Everything green but nothing works? Create a test volume. A functional check is the only one that exercises the driver.
Exercise
Read the capabilities your backend reports with openstack volume backend capability show, and
note the free space it claims. Compare that against what the storage system itself reports — they
are frequently not the same number, and understanding why for your backend is worth the time.
Then create a volume type with an extra spec that no backend advertises and try to create a volume with it. Record the error and where it appears. Compare it against the error from a genuinely full backend: both prevent volume creation, both surface at the scheduler, and the fix for one is not the fix for the other.
Verification status
This resource has not been executed end to end in a lab environment. Commands and configuration are reviewed by an engineer, but treat them as reference rather than as a tested procedure.
Author
James Joyner
Builds and operates the infrastructure layers underneath production AI systems.
James founded Inside The AI Stack to publish the kind of infrastructure and operations material he wanted while running production systems: specific, tested where it claims to be tested, and written by someone who has had to fix the thing at 3am. He works across AI infrastructure, private cloud, and platform engineering, and reviews every technical resource published here before it is marked as verified.
- AI infrastructure
- OpenStack operations
- Kubernetes
- Terraform
- Linux systems engineering
- Observability
Primary sources
- Cinder system architecture — OpenStack Foundation
- Cinder volume drivers — OpenStack Foundation
Continue from here
Related resources chosen because they are the next thing you would actually need — not because they share a keyword.
Cinder — No Valid Backend
Diagnose and remediate OpenStack volume creation failures caused by the scheduler having no candidate backends, including the case where the API reports healthy.
Nova Scheduling
How Nova decides where an instance runs, what the filter chain does, and how to find which filter eliminated every host.
OpenStack Production Engineer
A sequenced learning path for engineers who operate OpenStack in production — architecture, service-by-service depth, deployment, and troubleshooting under pressure.
Newsletter
Inside The AI Stack Brief
A practical weekly briefing on AI engineering, infrastructure, production operations, and the technologies powering the AI stack.
One email a week. We send a confirmation link first and never mail an address that has not confirmed. No sponsorship placements inside the technical sections, and an unsubscribe link in every issue.
