For the past few months I have been working towards a way to use Ceph for virtual machine images in Apache CloudStack. This integration is important to end users because it allows them to use Ceph’s distributed block device (RBD) to speed up provisioning of virtual machines.
We (my company) have been long-time contributors to Ceph (since version 0.17!), and will be using it in our own cloud product. Support for Ceph didn’t exist in CloudStack… So we built it!
I’m co-owner of a Dutch webhosting company called PCextreme B.V. My role as CTO is to do our Research & Development and that enables me to play with Ceph (a lot).
Quite some time ago we were convinced we wanted to use Ceph with RBD in our VPS product, but we weren’t sure how. Were we going to write our own cloud management software? OpenStack seemed like a good choice since it already had RBD integration, but while looking at OpenStack we came across CloudStack. I’m not going to do the OpenStack vs CloudStack discussion, but we decided CloudStack suited us better. It however lacked RBD support!
To make this integration work, a few things needed to be done:
- Add RBD storage pool support to libvirt (Since version 0.9.14)
- Update libvirt-java bindings (Secret handling and misc fixes)
- Make a few minor libvirt fixes (Small cephx fix)
- Add RBD support to CloudStack (Add RBD primary storage)
This work has been completed and merged, and will all be part of the new CloudStack 4.0 release, which is slated for the end of October. Between now and then, we’d like people to try it!
To get started, take a look at the related documentation. If you encounter any problems, feel free to ask for help on the Ceph or CloudStack mailing lists. Or join the #ceph (OFTC) or #cloudstack (Freenode) IRC channels, I’m idling there for most of the time.