blueprint: consistency groups

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ceph developers,

With this email I would like to start a discussion about the design of
the consistency groups feature.

I created a wiki page for this blueprint:
http://tracker.ceph.com/projects/ceph/wiki/consistency_groups

So far it's only filled with what I know for sure about the
consistency groups feature.

First of all this feature is going to require a new entity in rbd -
consistency group.

This entity will be represented in the object storage in the way
similar to how it's done for images.

cg_id.<group name> object has the id of the consistency group.

cg_header.<group id> object has the list of all images in the
consistency group.

Snapshot information will be stored in the omap attributes of
cg_header.

Every description of a snapshot will contain the list of snapshot ids
of the images that comprise the cg's snapshot.

Potentially, I assume, we want to allow images to be members of
several consistency groups. However it can add complexity to the
implementation, see the explanation down the text.

The operations that we should be able to perform on consistency groups are:

   * 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)

   * Enable journaling feature for the whole consistency group.

Enabling journaling feature for the whole consistency group will
create one journal for all images in the group. All io operations to
the images in the group will go to this journal. Every operation will
have a tag identifying what image this operation is for. This feature
is required for rbd mirroring.

In order to make it compatible with cinder consistency groups feature
the functionality should cover Cinder Driver API:

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

The biggest question regarding the implementation comes from the live
snapshot feature. We believe constistent snapshot is not possible
without cooperation with rbd client (VM, application), because only
application knows if it is in constistent state for snapshotting.  In
the first iteration we would like to make it simple, so CG snapshot
operation just creates snapshots for all images and stores the
snapshot list in its metadata. The consistensy should be provided by
the user, who should ensure that application is in consistent point
(completed all transactions, stopped writting and flushed) during
snapshotting.
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux