One question I’ve been hearing more frequently from OpenStack admins is: “How do I move my instances from ephemeral boot to Cinder-backed volumes?”
This shift is becoming increasingly necessary for several reasons, including:
- Ceph instability under hardware or network failure – performance takes a hit during outages.
- Poor scalability of the initial Ceph deployment – it just can’t meet growing production demands.
- Power and cooling constraints in the datacenter – those big Ceph clusters are too resource-hungry.
- Exhausted local storage for ephemeral volumes – Nova hosts are running out of disk space, with no easy way to expand.
In this short post, I’ll walk you through how to migrate an instance that was originally booted with ephemeral storage to a new instance using an external Cinder volume. This approach is especially relevant if you’re looking to optimize storage usage and improve manageability.
4-Step Migration Process
Here’s how you can convert an ephemerally booted instance to a Cinder-backed boot volume:
- Stop the existing instance
openstack server stop <vm_name/id>
- Create an image snapshot of the instance
This will create a new image in Glanceopenstack server image create --name <image_name> <vm_name/id>
- Create a Cinder volume from the image
openstack volume create --image <image_name> --size \
<required_disk_size> --type <volume_type> <volume_name>
- Boot a new instance from the Cinder volume
openstack server create --flavor <flavor> \
--network <network_id> --volume <volume_name> \
--wait <new_vm_name>
That’s it—just four steps, and your instance is now backed by a Cinder volume.
A Quick Word on Quotas
Before creating the image in step 2, make sure your Glance quotas can accommodate the snapshot. If they’re too low, the image creation will fail. You might see a message like this in the Glance API logs:
oslo.limit.limit [None req-1c92ee4c-9373-4eb5-8e02-17f44479f645 admin admin] hit limit for project: [Resource image_size_total is over limit of 1000 due to current usage 1649 and delta 0]
To resolve this, either increase your tenant’s image_size_total
quota, or temporarily override quota enforcement by adding the following line to the [DEFAULT]
section of glance-api.conf
:
use_keystone_limits = False
Don’t forget to restart the Glance API service after making this change.
I hope this guide helps make your transition to Cinder-backed volumes a smooth one. Good luck with your migrations!