There are four processes that make up the Cinder service:
cinder-api
is an WSGI application that accepts and validates REST
(JSON or XML) requests from clients and routes them to other Cinder
processes as appropriate over AMQP.cinder-scheduler
determines which backend should serve as the
destination for a volume creation or movement request. It maintains
non-persistent state for backends (e.g. available capacity,
capabilities, and supported extra specs) that can be leveraged when
making placement decisions. The algorithm utilized by the scheduler
can be changed through Cinder configuration.cinder-volume
accepts requests from other Cinder processes and
serves as the operational container for Cinder drivers. This process
is multi-threaded and typically has one thread of execution per
Cinder backend as defined in the Cinder configuration file.cinder-backup
handles the interaction with potential backup
targets (e.g. a file store exported via NFS or an OpenStack Object
Storage Service (Swift)) when a client requests a volume backup or
restore operation.The following section walks through the steps that occur when a user requests the creation of a new volume from Cinder.
python-cinderclient
CLI utility).cinder-api
process validates request, user credentials; once
validated, puts message onto AMQP queue for processing.cinder-volume
process takes message off of queue, sends message
to cinder-scheduler to determine which backend to provision volume
into.cinder-scheduler
process takes message off of queue, generates
candidate list based on current state and requested volume criteria
(size, availability zone, volume type (including extra specs)).cinder-volume
process reads response message from
cinder-scheduler
from queue; iterates through candidate list by
invoking backend driver methods until successful.cinder-volume
process collects volume metadata and connection
information and posts response message to AMQP queue.cinder-api
process reads response message from queue and responds
to client.The following section walks through the steps that occur when a user requests that a Cinder volume be attached to a Nova compute instance.
python-novaclient
CLI utility).nova-api
process validates request, user credentials; once
validated, invokes Cinder API to get connection information for
specified volume.cinder-api
process validates request, user credentials; once
validated, posts message to volume manager over AMQP.cinder-volume
reads message from queue, invokes Cinder driver
corresponding to volume to be attached.cinder-volume
process posts response information to
cinder-api
process via AMQP queue.cinder-api
process reads response message from cinder-volume
from queue; passes connection information in RESTful response to Nova
caller.The following section walks through the steps that occur when a user requests that a Cinder volume be backed up.
python-cinderclient
CLI utility).cinder-api
process validates request, user credentials; once
validated, posts message to backup manager over AMQP.cinder-backup
reads message from queue, creates a database record
for the backup and fetches information from the database for the
volume to be backed up.cinder-backup
invokes the backup_volume
method of the Cinder
volume driver corresponding to volume to be backed up, passing the
backup record and the connection for the backup service to be used
(NFS, Swift, etc.)backup
method for the configured
backup service, handing off the volume attachment.cinder-api
process
via AMQP queue.cinder-api
process reads response message from queue and passes
results in RESTful response to the client.The following section walks through the steps that occur when a user requests that a Cinder backup be restored.
python-cinderclient
CLI utility).cinder-api
process validates request, user credentials; once
validated, posts message to backup manager over AMQP.cinder-backup
reads message from queue, fetches the database
record for the backup and a new or preexisting volume database
record, depending on whether a preexisting volume was requested or
not.cinder-backup
invokes the backup_restore
method of the Cinder
volume driver corresponding to volume to be backed up, passing the
backup record and the connection for the backup service to be used
(NFS, Swift, etc.)restore
method for the configured
backup service, handing off the volume attachment.cinder-api
process via AMQP queue.cinder-api
process reads response message from cinder-backup
from queue and passes results in RESTful response to the client.This document is licensed under Apache 2.0 license.