Improved boot from volume

Registered by Sam Stoelinga

There are some flaws with current boot from volume flow:
1. Even if you boot from volume you need to specify an image. Bug is already created https://bugs.launchpad.net/horizon/+bug/1163566
2. When booting from volume you need to manually copy the image to the volume
3. https://review.openstack.org/#/c/22072/4 makes it possible to prepare volumes and use them later when booting from Volume, but doesn't address the need for automatically launching an instance which is backed by volumes based on existing images.
4. What's the use of the root gb and epheral gb attributes in Flavor if we're using boot from volume?

My proposal: Add a new attribute: Backend, which can either be Local Disk File(Default like before) or Volume.

What happens when somebody chooses Volume as instance Storage backend?
1. We create a new Volume with the size of root gb of the flavor, this volume is created from the image chosen
2. If there is an ephemeral disk in the flavor we create another Volume based on the flavor epeheral gb disk size and attach it to vdb
3. We launch the instance with the two attached volumes, the volume created in step 1 should be used as root and contains the image that the user choose.

I think the above steps should happen in nova, so nova should have this new parameter also called storage backend. Currently nova doesn't seem to support this, if nova doesn't want this we could also do it in horizon by manually calling the apis, but that doesn't seem nice.

This mostly is an improvement in the usability of using Volumes as backend and using them to boot. Some people may choose not to use local disk files on the compute nodes at all. Because the performance and reliability of Cinder volumes can be better depending on the cinder backend.

Ideal implementation is that nova/cinder supports this and in horizon we only call the api with a new backend parameter.

It seems that there was something similar going on in Nova, but never got accepted and uses a nova.conf flag):
https://blueprints.launchpad.net/nova/+spec/auto-create-boot-volumes
https://lists.launchpad.net/openstack/msg12390.html

Blueprint information

Status:
Complete
Approver:
Gabriel Hurley
Priority:
Low
Drafter:
Sam Stoelinga
Direction:
Approved
Assignee:
Valerii Zhelezniakov
Definition:
Approved
Series goal:
Accepted for havana
Implementation:
Implemented
Milestone target:
milestone icon 2013.2
Started by
Gabriel Hurley
Completed by
Kieran Spear

Related branches

Sprints

Whiteboard

[gabriel 2012.05.14] I like the proposal and the general direction. I'd love to see this proved out over the course of the Havana cycle. As such I've tentatively slated this BP for H2. Feel free to share code/ask questions early and often.

[Sam] I will file a new blueprint in nova to add the storage backend parameter when launching an instance. H2 may be do-able for me.

[ndipanov] Hey Sam - a lot of this work is planned in https://blueprints.launchpad.net/nova/+spec/improve-block-device-handling and also https://blueprints.launchpad.net/nova/+spec/improve-boot-from-volume. The block device is a more complicated issue so please check out the wiki page linked in the first blueprint and the interface we propose there as it fits nicely with what you are trying to do.

Gerrit topic: https://review.openstack.org/#q,topic:bp/https,n,z

Addressed by: https://review.openstack.org/41728
    Improved boot from volume

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.