Project

General

Profile

Consistency Groups

Summary

Consistency Groups could be useful for Data Protection (snapshots, backups) and
Remote Replication (Mirroring).

The Mirroring support will allow to setup mirroring of multiple volumes in the
same consistency group (i.e. attaching multiple RBD images to the same journal
to ensure consistent replay).

There is already an interest to implement this functionality as a part Mirroring feature:
http://tracker.ceph.com/issues/13295

The snapshot support will allow snapshots of multiple volumes in the same
consistency group to be taken at the same point-in-time to ensure data
consistency.

Owners

  • Victor Denisov (Mirantis)
  • Mykola Golub (Mirantis)

Interested Parties

  • Victor Denisov (Mirantis)
  • Mykola Golub (Mirantis)

Current Status

Currently Mirroring feature is being implemented. Consistency groups is
supposed to be implemented as a part of Mirroring. The snapshot support will
allow snapshots of multiple volumes in the same consistency group to be take at
the same point-in-time to ensure data consistency.

Detailed Description

This feature will require to add a new entity - consistency group.
You should be able to run the following operations on a consistency group:

  • Create a consistency group
  • Show a consistency group
  • List all available consistency groups
  • Add an image to a consistency group
  • Create a snapshot of all the members of a consistency group
    - Created snapshot of a consistency group only has references to snapshots that appear under the corresponding images
  • List all snapshots of a consistency group
  • Delete consistency group's snapshot
  • Modify consistency group (delete, add images to the consistency group)

A consistency group is empty upon its creation. Images need to be created and
added to it later.

The structure of objects for a consistency group is similar to an image.
When consistency groups is created we create an object in the pool called consistency_group_id.<consistency group name>
This object contains the consistency group's id.
Every consistency group will have an object called consistency_group_header.<consistency group id>
This header will contain the list of images in this consistency group.

Openstack Cinder Integration

The functionality should cover Cinder Driver API to make integration possible:

def create_consistencygroup(self, context, consistencygroup, volumes)
def delete_consistencygroup(self, context, consistencygroup)
def create_cgsnapshot(self, context, cgsnapshot)
def delete_cgsnapshot(self, context, cgsnapshot)

https://github.com/openstack/cinder-specs/blob/master/specs/juno/consistency-groups.rst

Work items

Coding tasks

  1. Task 1
  2. Task 2
  3. Task 3

Build / release tasks

  1. Task 1
  2. Task 2
  3. Task 3

Documentation tasks

  1. Task 1
  2. Task 2
  3. Task 3

Deprecation tasks

  1. Task 1
  2. Task 2
  3. Task 3