[openstack-dev] [Nova] [Cinder] [Glance] glance_store and glance

Jay Pipes jaypipes at gmail.com
Tue Aug 11 14:10:11 UTC 2015


On 08/11/2015 09:42 AM, Brian Rosmaita wrote:
> On 8/7/15, 1:07 PM, "Jay Pipes" <jaypipes at gmail.com> wrote:
>
>> So, here's the crux of the issue. Nova and Cinder **do not want to speak
>> the Glance REST API** to either upload or download image bits from
>> storage. Streaming image bits through the Glance API endpoint is a
>> needless and inefficient step, and Nova and Cinder would like to
>> communicate directly with the backend storage systems.
>
> Exactly why do you want to communicate directly with the backend storage
> systems?  Streaming image bits through Glance appears to be "needless and
> inefficient", but if an end-user is booting 1K instances from some custom
> image, Glance's image cache makes an enormous difference in delivery time.

Nova's image cache makes a bigger difference overall in those cases, 
since the image will most likely be cached on compute nodes themselves 
and won't need to be copied at all.

Having the image bits streaming through an unrelated endpoint (the 
Glance API server) is just not required if the logic for grabbing the 
"closest" image from a set of locations is all in the glance_store 
library and different nova-compute daemons can just efficiently grab the 
image from multiple locations if the image is stored in multiple 
locations in backend storage.

In addition, Glance's image cache, while excellent for improving 
performance of first-pull of images from slower backend storage like 
Swift, also requires the operator to have a bunch of disk space used on 
the controller nodes that run glance-api. In many deployments that I 
know of, the controller nodes do not run stateful services (DB and MQ 
are on separate node clusters entirely from nova-api, glance-api, 
cinder-api, etc), and because of this, don't have a large root disk 
(sometimes nothing more than a small SSD for the OS kernel and some 
swap). Setting up Glance's image cache on these types of nodes means you 
need to be careful not to run out of local disk space, since a single 
popular Windows image can easily be 20-40+ GB. In addition to that, each 
glance-api server is going to have its own image cache, not all with the 
same images in them, since different requests will be routed to 
different glance-api servers, and each image cache is its own LRU layout.

Having the image cache local to the compute nodes themselves gives the 
best performance overall, and with glance_store, means that glance-api 
isn't needed at all, and Glance can become just a metadata repository, 
which would be awesome, IMHO.

Best,
-jay

> So I'm curious about what exactly the use cases for direct backend storage
> communication are, and why Glance can't meet them.



More information about the OpenStack-dev mailing list