The last several releases of the OpenStack Cinder project addressed various disaster recovery (DR) scenarios. In Mitaka, replication v2.1 (codename ‘Cheesecake’) was introduced. This admin API was designed to solve a true DR scenario, when an entire backend is failed over to another backend on a secondary site. There are other DR scenarios in which the user wants to have better control over the replication granularity. For this purpose, the Cinder team has decided to provide tenant-facing group APIs, allowing volume grouping for a tenant. This enables volume group replication and failover without affecting the entire backend.
The IBM Storage Driver for OpenStack supports the following IBM storage systems:
- IBM DS8000 Family
- IBM FlashSystem A9000
- IBM FlashSystem A9000R
- IBM Spectrum Accelerate
- IBM XIV Storage System
The user can choose between a generic group replication and consistency group (CG) replication. For consistency group replication, the driver utilizes the storage capabilities to handle CGs and replicate them to a remote site. On the other hand, in generic group replication, the driver replicates each volume individually. In addition, the user can select the replication type. For example, IBM FlashSystem A9000 and A9000R storage systems support both synchronous and asynchronous replication.The minimum Cinder client version that supports group replication is 3.38.
The following functions were added to the IBM Storage Driver for OpenStack to support group replication:
- Enable replication
- Disable replication
- Failover replication
The following example illustrates configuration of a replicated consistency group.
- Create sync replicated consistency-group.
- Create a volume type for replication.
#cinder type-create rep-vol-1
- Configure the volume type.
#cinder type-key rep-vol-1 set replication_type='<is> sync' replication_enabled='<is> True'
- Create a group type.
#cinder group-type-create rep-cg-1
- Configure the group type.
#cinder group-type-key rep-cg-1 set group_replication_enabled='<is> True' replication_type='<is> sync' consistent_group_snapshot_enabled='<is> True'
- Create a CG, using existing group type and volume type.
#cinder group-create rep-cg-1 rep-vol-1 --name replicated-cg-1
- Create a volume and add it to the CG.
- Create a replicated volume.
#cinder create --name vol-1 --volume-type rep-vol-1 1
- Add the volume to the CG.
#cinder group-update --add-volumes 91492ed9-c3cf-4732-a525-60e146510b90 replicated-cg-1
- Enable replication.
#cinder group-enable-replication replicated-cg-1
- Disable replication.
#cinder group-disable-replication replicated-cg-1
- Fail over replicated CG.
#cinder group-failover-replication replicated-cg-1