How to Back Up an Instance and Download it to the Desktop on cloud environment OpenStack Hosting
This article explains how to create a virtual machine using OpenStack CLI, create a snapshot of its boot volume, and prepare the backed-up disk for download to your desktop.
The article uses CLI commands only.
OpenStack instances can be created in different ways. If the instance is booted from volume, the openstack server backup create command is not supported. In that case, you must work with the attached boot volume instead.
Prerequisites
Before you start, make sure that the following requirements are met.
No. 1 Account
You need a cloud environment hosting account with access to the Horizon interface: https://my.cloud.eumetsat.int.
No. 2 OpenStack CLI client
You need OpenStack CLI client installed. One of the following articles should help you:
How to install OpenStackClient for Linux on cloud environment
How to install OpenStackClient GitBash for Windows on cloud environment
To use OpenStack CLI client to control cloud environment cloud, you need to prove your identity: How to activate OpenStack CLI access to cloud environment cloud
No. 3 OpenStack credentials
You need an OpenStack RC file or an application credential RC file.
In this article, the file is named app-cred-test-access-openrc.sh. Use the name of your own RC file if it is different.
Prepare the CLI environment
Copy the RC file to your working directory and activate it.
cp /home/dusko/Downloads/app-cred-test-access-openrc.sh .
source ./app-cred-test-access-openrc.sh
Verify that the OpenStack CLI client can communicate with the cloud.
openstack flavor list
Example output:
+------------------------------+------------------------------+---------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+------------------------------+------------------------------+---------+------+-----------+-------+-----------+
| 1cpu-1gbmem | 1cpu-1gbmem | 1024 | 0 | 0 | 1 | True |
| 2cpu-4gbmem | 2cpu-4gbmem | 4096 | 0 | 0 | 2 | True |
| 4cpu-4gbmem | 4cpu-4gbmem | 4096 | 0 | 0 | 4 | True |
| 4cpu-8gbmem | 4cpu-8gbmem | 8192 | 0 | 0 | 4 | True |
+------------------------------+------------------------------+---------+------+-----------+-------+-----------+
Choose the VM parameters
Before creating the virtual machine, list the available images.
openstack image list
Choose the image that you want to use and save its ID in a variable.
IMAGE_ID=IMAGE_ID_FROM_THE_IMAGE_LIST
List the available networks.
openstack network list
Choose the network that should be attached to the instance and save its ID in a variable.
NETWORK_ID=NETWORK_ID_FROM_THE_NETWORK_LIST
List the available SSH key pairs.
openstack keypair list
Save the key pair name in a variable.
KEY_NAME=sshkey
List the available security groups.
openstack security group list
Save the security group name in a variable.
SECURITY_GROUP=default
Set the remaining variables used in this article.
SERVER_NAME=vm-john-01
FLAVOR_NAME=4cpu-4gbmem
BOOT_VOLUME_SIZE=5
SNAPSHOT_NAME=backup-01-snapshot
TEMP_VOLUME_NAME=backup-01-volume
IMAGE_NAME=backup-01-image
DOWNLOAD_FILE=backup-01-image.raw
Create the virtual machine
Create the virtual machine from an image and boot it from a volume.
openstack server create \
--flavor "$FLAVOR_NAME" \
--image "$IMAGE_ID" \
--boot-from-volume "$BOOT_VOLUME_SIZE" \
--network "$NETWORK_ID" \
--key-name "$KEY_NAME" \
--security-group "$SECURITY_GROUP" \
"$SERVER_NAME"
Wait until the virtual machine becomes ACTIVE.
openstack server list
Example output:
+--------------------------------------+------------+--------+-------------------------------------------------+--------------------------+-------------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+------------+--------+-------------------------------------------------+--------------------------+-------------+
| 1c344527-d2a5-4a10-906c-1bbf8878551f | vm-john-01 | ACTIVE | cf_cloud_mvp_dev_ecis_r1_with_sfs=192.168.168.2 | N/A (booted from volume) | 4cpu-4gbmem |
| | | | 40; sfs_network_638f4089d6ad470aaaeb70268529701 | | |
| | | | 2=10.84.16.37 | | |
+--------------------------------------+------------+--------+-------------------------------------------------+--------------------------+-------------+
The Image column shows N/A (booted from volume). This means that the virtual machine uses a Cinder volume as its root disk.
Why server backup is not used
The openstack server backup create command is not supported for volume-backed instances.
If you try to use it for this type of virtual machine, the command fails.
openstack server backup create \
--name backup-01 \
1c344527-d2a5-4a10-906c-1bbf8878551f
Example output:
BadRequestException: 400: Client Error for url: https://nova.api.r1.cloud.eumetsat.int/v2.1/servers/1c344527-d2a5-4a10-906c-1bbf8878551f/action, Backup is not supported for volume-backed instances.
For a volume-backed virtual machine, use the boot volume workflow described in the following sections.
Find the boot volume
Show the volumes attached to the virtual machine.
openstack server show "$SERVER_NAME" \
-c volumes_attached \
-f yaml
Example output:
volumes_attached:
- delete_on_termination: false
id: 4ee0a54d-3742-48e6-a665-43028f27462f
Save the boot volume ID in a variable.
BOOT_VOLUME_ID=4ee0a54d-3742-48e6-a665-43028f27462f
Check the boot volume.
openstack volume show "$BOOT_VOLUME_ID"
Create a snapshot of the boot volume
Create a snapshot of the boot volume.
openstack volume snapshot create \
--force \
--volume "$BOOT_VOLUME_ID" \
"$SNAPSHOT_NAME"
Example output:
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| created_at | 2026-05-29T21:17:52.306655 |
| description | None |
| id | d092e03d-6b97-4ba0-ad07-4a6d239ca55a |
| name | backup-01-snapshot |
| properties | |
| size | 5 |
| status | creating |
| updated_at | None |
| volume_id | 4ee0a54d-3742-48e6-a665-43028f27462f |
+-------------+--------------------------------------+
Check the snapshot status.
openstack volume snapshot list
Example output:
+--------------------------------------+--------------------+-------------+-----------+------+
| ID | Name | Description | Status | Size |
+--------------------------------------+--------------------+-------------+-----------+------+
| d092e03d-6b97-4ba0-ad07-4a6d239ca55a | backup-01-snapshot | None | available | 5 |
+--------------------------------------+--------------------+-------------+-----------+------+
Continue only after the snapshot status becomes available.
Create a temporary volume from the snapshot
Create a temporary volume from the snapshot.
openstack volume create \
--snapshot "$SNAPSHOT_NAME" \
"$TEMP_VOLUME_NAME"
Check the temporary volume status.
openstack volume show "$TEMP_VOLUME_NAME" \
-c status \
-f value
Continue only after the temporary volume status becomes available.
Upload the temporary volume to the Image service
Upload the temporary volume to the OpenStack Image service.
openstack image create \
--volume "$TEMP_VOLUME_NAME" \
"$IMAGE_NAME"
Check the image status.
openstack image show "$IMAGE_NAME" \
-c status \
-f value
Continue only after the image status becomes active.
Download the image to your desktop
Download the image file to your current working directory.
openstack image save \
--file "$DOWNLOAD_FILE" \
"$IMAGE_NAME"
Check that the file was downloaded.
ls -lh "$DOWNLOAD_FILE"
Clean up temporary resources
After downloading the image, remove the temporary OpenStack resources that you no longer need.
Delete the temporary image.
openstack image delete "$IMAGE_NAME"
Delete the temporary volume.
openstack volume delete "$TEMP_VOLUME_NAME"
Keep the snapshot if you still need it. To delete it, run:
openstack volume snapshot delete "$SNAPSHOT_NAME"