All of lore.kernel.org
 help / color / mirror / Atom feed
* blueprint: consistency groups
@ 2016-03-24 15:50 Victor Denisov
  2016-03-24 22:38 ` Gregory Farnum
  0 siblings, 1 reply; 31+ messages in thread
From: Victor Denisov @ 2016-03-24 15:50 UTC (permalink / raw)
  To: ceph-devel, jdurgin, dillaman, Mykola Golub

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.

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2016-06-09 23:23 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-24 15:50 blueprint: consistency groups Victor Denisov
2016-03-24 22:38 ` Gregory Farnum
2016-03-25  7:19   ` Mykola Golub
2016-03-29 17:54     ` Gregory Farnum
2016-04-22 23:49       ` Victor Denisov
     [not found]         ` <CA+aFP1CnKvVJrWDmKhpziu5otOV73HC5gnUsgZ8+oDW+708Rag@mail.gmail.com>
2016-04-25 21:11           ` Victor Denisov
2016-04-26 16:09             ` Jason Dillaman
2016-04-26 23:33               ` Victor Denisov
2016-04-27 17:50                 ` Jason Dillaman
2016-04-28 18:06                   ` Victor Denisov
2016-05-03  0:26                     ` Victor Denisov
2016-05-03  6:54                       ` Mykola Golub
2016-05-03 12:05                       ` Jason Dillaman
2016-05-03 21:48                         ` Victor Denisov
2016-05-04  0:29                           ` Jason Dillaman
2016-05-10 16:25                             ` Victor Denisov
2016-05-11 15:12                               ` Jason Dillaman
2016-05-11 18:44                                 ` Victor Denisov
2016-05-11 20:24                                   ` Jason Dillaman
2016-05-13  2:45                                     ` Victor Denisov
2016-05-16 15:48                                       ` Jason Dillaman
2016-05-23 15:32                                         ` Victor Denisov
2016-05-23 22:43                                           ` Victor Denisov
2016-05-24  2:39                                             ` Jason Dillaman
2016-05-24 22:42                                               ` Victor Denisov
2016-05-25  5:30                                                 ` Jason Dillaman
2016-05-25 21:34                                                   ` Victor Denisov
2016-05-26  0:53                                                     ` Jason Dillaman
2016-05-26  1:01                                                       ` Victor Denisov
2016-06-04  0:33                                                         ` Victor Denisov
2016-06-09 23:23                                                           ` Victor Denisov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.