Without solid storage, the data of the cloud lives only in the moment. Within OpenStack, storage comes in two flavors: object storage, which stores chunks of information, and block storage, which is more analogous to the traditional idea of a disk drive image. Block storage in OpenStack is handled by Cinder, which provides the infrastructure for managing volumes and sharing them with the other components in OpenStack.
Meet John Griffith. He is currently serving as the Program Technical Lead (PTL) for the Cinder project. John is a software engineer at SolidFire, and he has been an active user and contributor to open source software for almost ten years.
We chatted with John to better understand how the Cinder project functions within OpenStack, why it is important, and what is on the roadmap for the Icehouse release.
What does Cinder do for OpenStack?
Cinder provides block storage service to be consumed by other projects in OpenStack. A better way to put it though is that Cinder provides a control plane to abstract traditional block storage resources into a "virtual" pool of resources. The main idea is to provide an API to allow end users to create, access, and manage block storage resources without the need to submit requests to storage admins or other IT personel. Most importantly however, is that Cinder takes multiple homogenous backend storage devices and hides all of the unique details, presenting the end user with a simple API that works regardless of what's actually being utilized on the backend (or how many devices are on the backend). It's elastic, meaning that resources can be added seemlesly without the end user having to know anything about what's actually going on.
Why is Cinder important to OpenStack? And how do the different components interact with Cinder?
Cinder is important because it's the one source for persistent traditional block storage (like disks). In fact, that's exactly how the virtualization works: an end user requests a volume of a specific size, and maybe with certain characteristics, and they're given an object that's treated like a disk drive.
Services like Nova (Compute) utilize Cinder to provide persistent storage; Nova instances, which are likened to virtual machines, are ephemeral). A user can create a Cinder volume and attach it to their instance, and it shows up as if it's just a disk that's been added to the system. In addition, Cinder volumes can be used for those that want persistent instances, so if ephemeral instances aren't what's desired, they have the ability to set things up so that their instance resides on a Cinder volume and thus are persistent.
Cinder provides the block storage resources to enable users to run things like data bases or any other application that requires traditional type disk space.
What are some of the major improvements/features the Cinder team is working on for the Icehouse release?
There's been a strong push on quality and compatibility for the Icehouse release. In addition, there are more tangible features like volume migration and the ability to change the type of an existing volume to another. There has also been significant effort and improvements to Cinder's backup service. Cinder provides the ability to back up your block storage volumes to an object store, because after all, we always want to back up our important data.
What opportunities are there for folks interested in contributing to Cinder?
There are significant opportunities for newcomers in Cinder. With every release, there are far more ideas than there is time to actually implement them. Cinder is still by some comparisons a relatively smaller team, so anybody that's interested in block storage or even just looking for a friendly place to start contributing to OpenStack—swing in to our IRC channel on Freenode (#openstack-cinder). We're always happy to meet new people and help them get started with contributing if they're interested.
What excites you about working on Cinder and OpenStack?
There are a number of things that I find exciting that keep me motivated. In general, the concept of OpenStack and infrastructure virtualization/abstraction is interesting because of the potential it has to change how data centers operate. Also, from personal experience as a developer going from the days of having to request/purchase a server, load my operating system and tools on it and request upgrades, storage etc and hope that I get them... OpenStack is a fantastic environment. Rather than constantly trying to manage or request resources, now I just deploy what I need when I need it, and when I'm done I just delete it and return the resources back to the pool. Of course I'm glossing over the management and such that takes place to build the cloud, but the point is the end user no longer has to worry about that, he or she is now free to spend that time developing cool software.
Cinder in particular is exciting to me more on a philosophical level. For years I've heard different people and companies talk about what they define as "software defined storage," when I'd dig deeper none of them seemed any different than the same old thing. Cinder on the other hand aligns perfectly with what I personally have always thought of as software defined storage, separation of data plane and control plane, pooling of resources and most of all the abstraction of their usage.
If you could name the next release of OpenStack, what would you call it?
Well, I did get to vote on that actually; the entire OpenStack community votes. If I wasn't constrained to the alphabetical ordering for some reason I've always wanted to name a project "Bubba." I have no idea why, I've just always wanted to find the right project to give that name to. Keeping with the alphabetical ordering, my vote for the upcoming release was Jolt; it should be apparent by now that I'm absolutely horrid at picking names.