From Fedora Project Wiki


Nova instances can be booted from volume, analogous to EBS-backed volumes in EC2.

We construct a bootable volume, then fire up an instance backed by this volume.


We assume that an instance has already been booted in the previous test case, and we use this as a builder to facilitate the creation of a bootable volume.

We also need a bootable image, which may be download from:

$> wget

Finally, we assume that the nova-volume service or cinder is enabled and running.

How to test

Upload the image to glance:

$> glance add name=cirros_boot is_public=true disk_format=qcow2 container_format=bare < ./cirros-0.3.0-x86_64-disk.img
$> IMAGE_ID=$(glance image-list | awk '/cirros-boot/ {print $2}')

Create a 1Gb volume, which we will make bootable:

$> cinder create --image-id $IMAGE_ID --display_name=bootable_cirros 1
$> VOLUME_ID=$(cinder list | awk '/bootable_cirros/ {print $2}')

and wait for the volume to become available:

$> watch "cinder show bootable_cirros | grep status"

Now snapshot the bootable volume we just created:

$> cinder snapshot-create --display_name bootable_snapshot $VOLUME_ID

and wait for the snapshot to become available:

$> watch "cinder snapshot-show bootable_snapshot"
$> SNAPSHOT_ID=$(cinder snapshot-list | awk '/bootable_snapshot/ {print $2}')

Now we can boot from the bootable volume. We use the same image as the builder instance, but that is only in order to retrieve the image properties.

$> nova boot --flavor 1 --block_device_mapping vda=${SNAPSHOT_ID}:snap::0 --key_name nova_key volume_backed

Expected Results

You should be able able to ssh into the volume-backed instance.

Also note that for the volume-backed instance you've fired up, there is a volume cloned from the corresponding snapshot:

$> cinder list