[Openstack] [Cinder] DRBD integration as volume driver

Philipp Marek philipp.marek at linbit.com
Fri May 23 07:22:24 UTC 2014


Hi everybody,

at the Juno Design Summit we held a presentation about using DRBD 9 
within OpenStack.

Here's an overview about the situation; I apologize in advance that the 
mail got a bit longer, but I think it makes sense to capture all that 
information in a single piece.



==== WHAT WE HAVE


Design Summit notes:
	https://etherpad.openstack.org/p/juno-cinder-DRBD


As promised we've got a proof-of-concept implementation for the simplest 
case, using DRBD to access data on all nodes - the "DRBDmanage volume 
driver" as per the Etherpad notes (link see below).


As both DRBD 9 and DRBDmanage are still in heavy development, there are 
quite a few rough edges; in case anyone's interested in setting that up 
on some testsystem, I can offer RPMs and DEBs of "drbd-utils" and 
"drbdmanage", and for the DRBD 9 kernel module for a small set of kernel 
versions:

	Ubuntu 12.04	3.8.0-34-generic
	RHEL6 (& compat)	2.6.32_431.11.2.el6.x86_64

If there's consensus that some specific kernel version should be used 
for testing instead I can try to build packages for that, too.


There's a cinder git clone with our changes at
	https://github.com/phmarek/cinder
so that all developments can be discussed easily.
(Should I use some branch in github.com/OpenStack/Cinder instead?)



==== FUTURE PLANS


The (/our) plans are:

 * LINBIT will continue DRBD 9 and DRBDmanage development,
   so that these get production-ready ASAP.
   Note: DRBDmanage is heavily influenced by outside
   requirements, eg. OpenStack Cinder Consistency Groups...
   So the sooner we're aware of such needs the better;
   I'd like to avoid changing the DBUS api multiple times ;)

 * LINBIT continues to work on the DRBD Cinder volume driver,
   as this is 

 * LINBIT starts to work to provide DRBD 9 integration
   between the LVM and iSCSI layer.
   That needs the Replication API to be more or less finished.

There are a few dependencies, though ... please see below.


All help - ideas, comments (both for design and code), all feedback, 
and, last but not least, patches resp. pull requests - are *really* 
welcome, of course.

(For real-time communication I'm available in the #openstack-cinder 
channel too, mostly during European working hours; I'm "flip\d+".)



==== WHAT WE NEED


Now, while I filled out the CLA, I haven't read through all the 
documentation regarding Processes & Workflow yet ... and that'll take 
some time, I gather.


Furthermore, on the technical side there's a lot to discuss, too;
eg. regarding snapshots there are quite a few things to decide.

 * Should snapshots be taken on _one_ of the storage nodes,
 * on some subnet, or
 * on all of them?

I'm not sure whether the same redundancy that's defined for the volume 
is wanted for the snapshots, too.
(I guess one usecase that should be possible is to take at least one 
snapshot of the volume in _each_ data center?)


Please note that having volume groups would be good-to-have (if not 
essential) for a DRBD integration, because only then DRBD could ensure 
data integrity *across* volumes (by using a single resource for all of 
them).
See also https://etherpad.openstack.org/p/juno-cinder-cinder-consistency-groups; basically, the volume driver just needs to get an 
additional value "associate into this group".



==== EULA


Now, there'll be quite a few things I forgot to mention, or that I'm 
simply missing. Please bear with me, I'm fairly new to OpenStack.


So ... ideas, comments, other feedback?


Regards,

Phil





More information about the Openstack mailing list