The cinder.volume.drivers.rbd Module

RADOS Block Device Driver

class RADOSClient(driver, pool=None)

Bases: object

Context manager to simplify error handling for connecting to ceph.

features
class RBDDriver(active_backend_id=None, *args, **kwargs)

Bases: cinder.volume.driver.CloneableImageVD, cinder.volume.driver.MigrateVD, cinder.volume.driver.ManageableVD, cinder.volume.driver.BaseVD

Implements RADOS block device (RBD) volume commands.

CI_WIKI_NAME = 'Cinder_Jenkins'
RBDProxy()
SYSCONFDIR = '/etc/ceph/'
VERSION = '1.2.0'
backup_volume(context, backup, backup_service)

Create a new backup from an existing volume.

check_for_setup_error()

Returns an error if prerequisites aren’t met.

clone_image(context, volume, image_location, image_meta, image_service)
copy_image_to_volume(context, volume, image_service, image_id)
copy_volume_to_image(context, volume, image_service, image_meta)
create_cloned_volume(volume, src_vref)

Create a cloned volume from another volume.

Since we are cloning from a volume and not a snapshot, we must first create a snapshot of the source volume.

The user has the option to limit how long a volume’s clone chain can be by setting rbd_max_clone_depth. If a clone is made of another clone and that clone has rbd_max_clone_depth clones behind it, the source volume will be flattened.

create_export(context, volume, connector)

Exports the volume.

create_snapshot(snapshot)

Creates an rbd snapshot.

create_volume(volume)

Creates a logical volume.

create_volume_from_snapshot(volume, snapshot)

Creates a volume from a snapshot.

delete_snapshot(snapshot)

Deletes an rbd snapshot.

delete_volume(volume)

Deletes a logical volume.

do_setup(context)

Performs initialization steps that could raise exceptions.

ensure_export(context, volume)

Synchronously recreates an export for a logical volume.

extend_volume(volume, new_size)

Extend an existing volume.

failover_host(context, volumes, secondary_id=None)

Failover to replication target.

get_volume_stats(refresh=False)

Return the current state of the volume service.

If ‘refresh’ is True, run the update first.

initialize_connection(volume, connector)
manage_existing(volume, existing_ref)

Manages an existing image.

Renames the image name to match the expected name for the volume. Error checking done by manage_existing_get_size is not repeated.

Parameters:
  • volume – volume ref info to be set
  • existing_ref – existing_ref is a dictionary of the form: {‘source-name’: <name of rbd image>}
manage_existing_get_size(volume, existing_ref)

Return size of an existing image for manage_existing.

Parameters:
  • volume – volume ref info to be set
  • existing_ref – existing_ref is a dictionary of the form: {‘source-name’: <name of rbd image>}
migrate_volume(context, volume, host)
remove_export(context, volume)

Removes an export for a logical volume.

restore_backup(context, backup, volume, backup_service)

Restore an existing backup to a new or existing volume.

retype(context, volume, new_type, diff, host)

Retype from one volume type to another on the same backend.

terminate_connection(volume, connector, **kwargs)
unmanage(volume)
update_migrated_volume(ctxt, volume, new_volume, original_volume_status)

Return model update from RBD for migrated volume.

This method should rename the back-end volume name(id) on the destination host back to its original name(id) on the source host.

Parameters:
  • ctxt – The context used to run the method update_migrated_volume
  • volume – The original volume that was migrated to this backend
  • new_volume – The migration volume object that was created on this backend as part of the migration process
  • original_volume_status – The status of the original volume
Returns:

model_update to update DB with any needed changes

class RBDVolumeProxy(driver, name, pool=None, snapshot=None, read_only=False, remote=None, timeout=None)

Bases: object

Context manager for dealing with an existing rbd volume.

This handles connecting to rados and opening an ioctx automatically, and otherwise acts like a librbd Image object.

The underlying librados client and ioctx can be accessed as the attributes ‘client’ and ‘ioctx’.