[openstack-dev] [Glance][Cinder] The sorry state of cinder's driver in Glance

Mathieu Gagné mgagne at iweb.com
Wed Oct 22 15:51:29 UTC 2014


On 2014-10-22 10:05 AM, John Griffith wrote:
>
> Ideas started spreading from there to "Using a Read Only Cinder Volume
> per image", to "A Glance owned Cinder Volume" that would behave pretty
> much the current local disk/file-system model (Create a Cinder Volume
> for Glance, attach it to the Glance Server, partition, format and
> mount... use as image store).
>

To add to John Griffith's explanation:

This is a feature we have wanted for *several* months and finally 
implemented in-house in a different way directly in Cinder.

Creating a volume from an image can takes *several* minutes depending on 
the Cinder backend used. For someone using BFV as its main way to boot 
instances, it is a *HUGE* issue.

This causes several problems:

- When BFV, Nova thinks the volume creation failed because it took more 
than 2 minutes to create the volume from the image. Nova will then 
"retry" the volume creation, still without success, and instance will go 
in ERROR state.

You now have 2 orphan volumes in Cinder. This is because Nova cannot 
cleanup after itself properly due to volumes still being in "creating" 
state when deletion is attempted by Nova.

- So you try to create the volume yourself first and ask Nova to boot on 
it. When creating a volume from an image in Cinder (not through Nova), 
from a UX perspective, this time is too long.

Time required adds up when using a SolidFire backend with QoS. You have 
the time to get several coffees and a whole breakfast with your friends 
to talk about how creation a volume from an image is too damn slow.

What we did to fix the issue:

- We created a special tenant with "golden volumes" which are in fact 
volumes created from images. Those golden volumes are used to optimize 
the volume creation.

The SolidFire driver has been modified so that when you create a volume 
from an image, it first tries to see if there is a corresponding golden 
volume in that special tenant. If one is found, volume is cloned into 
the appropriate tenant in a matter of seconds. If none is found, normal 
creation process is used.


AFAIK, some storage backends (like Ceph) addressed the issue by 
implementing "themselves" in all the OpenStack services: Nova, Glance 
and Cinder. They now have the ability to optimize each steps of the 
lifecycle of an instance/volume by simply cloning volumes instead of 
re-downloading a whole image to finally end up in the same backend the 
original image was stored in.

While this is cool for Ceph, other backends don't have this luxury and 
we are stucked in this "sorry state".

-- 
Mathieu



More information about the OpenStack-dev mailing list