Jump to: navigation, search

Glance/Cinder-store-proposal

< Glance
Revision as of 13:15, 8 April 2014 by Alex Meade (talk | contribs) (How do you configure Glance on Cinder?)

Glance Cinder Driver

There is currently a Cinder store in Glance, however it does not support uploads and downloads. This is a proposal to allow Cinder to act as a data store for Glance images that supports upload and download by using Cinder volumes as containers for image data. There would be a 1-to-1 mapping of Glance images to Cinder volumes.

What are the benefits of this approach?

This will allow Glance to store images on the various SAN and NAS storage systems that are supported by Cinder. It also allows for storing images as block devices to enable the features mentioned in the "Subsequent Features" section of this wiki page.

How do you configure Glance on Cinder?

These new configuration options will need to be added to the current Cinder store options:

  • cinder_store_tenant - string - The Cinder tenant in which to store images when using single-tenant mode
  • cinder_store_user - string - The Cinder user used to access Cinder when using single-tenant mode
  • cinder_store_key - string - The Cinder key used to access Cinder when using single-tenant mode
  • cinder_store_multitenant - boolean - If true, store images in the tenant of the requester. If false, use the information provided by 'cinder_store_tenant', 'cinder_store_user','cinder_store_key'
  • cinder_volume_type - string - The uuid of the volume type to assign to volumes created by Glance

How would an image upload work?

Glance-cinder-upload.png

1. The user begins streaming the image data to Glance as usual.
2. Make a request to the Cinder API to create a new volume with the configured volume type.
3. Attach the newly created volume to the Glance node using the Brick library.
4. Stream the incoming bits into the volume.
5. Detach the volume from the Glance node using the Brick library, set the image location to "cinder://<volume-uuid>', and return image details to the user.

How would an image download work?

TODO: Diagram for download with detailed explanation

How would a Nova boot work?

TODO: Diagram for boot with detailed explanation

Single tenant vs Multi tenant? How do we prevent the volume being deleted/changed out from under Glance?

[Ben] I would assume that glance would always have its own tenant/project, separate from every other tenant (within cinder). Is there any argument for doing something else? What other glance store implementation allows tenant to directly delete/modify the bits that compose an image?

What are the dependencies for this change?

Subsequent Features

Bootable Volumes via Glance

This proposal is to allow Glance to create bootable volumes when using Cinder as a backend store.

When set, all images that are uploaded to cinder of the following formats will be set as bootable volumes: Example configuration: bootable_volume_formats = ‘raw’, ‘qcow2’

Boot from Volume via Image

This proposal is to allow nova to boot directly from an image stored as a bootable volume (boot from volume)