Introduction to the OpenStack Block Storage Service The OpenStack Block Storage service provides persistent block storage resources that OpenStack Compute instances can consume. This includes secondary attached storage similar to the Amazon Elastic Block Storage (EBS) offering. In addition, you can write images to an OpenStack Block Storage device for OpenStack Compute to use as a bootable persistent instance. The OpenStack Block Storage service differs slightly from the Amazon EBS offering. The OpenStack Block Storage service does not provide a shared storage solution like NFS. With the OpenStack Block Storage service, you can attach a device to only one instance. The OpenStack Block Storage service provides: cinder-api. A WSGI app that authenticates and routes requests throughout the Block Storage service. It supports the OpenStack APIs only, although there is a translation that can be done through Nova's EC2 interface, which calls in to the cinderclient. cinder-scheduler. Schedules and routes requests to the appropriate volume service. As of Grizzly; depending upon your configuration this may be simple round-robin scheduling to the running volume services, or it can be more sophisticated through the use of the Filter Scheduler. The Filter Scheduler is the default in Grizzly and enables filters on things like Capacity, Availability Zone, Volume Types, and Capabilities as well as custom filters. cinder-volume. Manages Block Storage devices, specifically the back-end devices themselves. cinder-backup Provides a means to back up a Cinder Volume to OpenStack Object Store (SWIFT). The OpenStack Block Storage service contains the following components: Backend Storage Devices. The OpenStack Block Storage service requires some form of back-end storage that the service is built on. The default implementation is to use LVM on a local volume group named "cinder-volumes." In addition to the base driver implementation, the OpenStack Block Storage service also provides the means to add support for other storage devices to be utilized such as external Raid Arrays or other storage appliances. Users and Tenants (Projects). The OpenStack Block Storage service is designed to be used by many different cloud computing consumers or customers, basically tenants on a shared system, using role-based access assignments. Roles control the actions that a user is allowed to perform. In the default configuration, most actions do not require a particular role, but this is configurable by the system administrator editing the appropriate policy.json file that maintains the rules. A user's access to particular volumes is limited by tenant, but the username and password are assigned per user. Key pairs granting access to a volume are enabled per user, but quotas to control resource consumption across available hardware resources are per tenant. For tenants, quota controls are available to limit: The number of volumes that can be created The number of snapshots that can be created The total number of GBs allowed per tenant (shared between snapshots and volumes) You can revise the default quota values with the cinder CLI, so the limits placed by quotas are editable by admin users. Volumes, Snapshots, and Backups. The basic resources offered by the OpenStack Block Storage service are volumes and snapshots, which are derived from volumes, and backups: Volumes. Allocated block storage resources that can be attached to instances as secondary storage or they can be used as the root store to boot instances. Volumes are persistent R/W block storage devices most commonly attached to the Compute node through iSCSI. Snapshots. A read-only point in time copy of a volume. The snapshot can be created from a volume that is currently in use (through the use of '--force True') or in an available state. The snapshot can then be used to create a new volume through create from snapshot. Backups. An archived copy of a volume currently stored in OpenStack Object Storage (Swift).