Similar to compute instances, volumes in Wavestack have specific types. However, there are not as many different volume types as there are instance flavours. Volume types you allow to create volumes with different properties and abilities.
Execute the following openstackclient command to list all currently available volume types:
❯ openstack volume type list
Currently, these types are:
Volume Type | Description |
---|---|
rbd_fast | General-Use Volume, backed by Ceph RBD |
LUKS | Like rbd_fast, but automatically encrypted |
OpenStack enables the user to manage their data volumes via the Cinder block storage service. Wavestack utilizes one Ceph RBD Cluster in each availability zone to provide decoupled and fast storage for instances.
Volumes are created by running the following openstackclient command:
❯ openstack create volume --size <size-in-GB> <volume-name>
You can also add further parameters to the cinder volume create command. The following ones are commonly used:
--image
specifies which machine image to replicate the volume from--snapshot
specifies which volume snapshot to replicate the volume from--source
specifies which machine image to replicate the volume fromTo secure user data, volumes can be created with LUKS encryption. OpenStack Barbican makes it easy to automatically create encrypted volumes by utilizing the LUKS volume type:
❯ openstack volume create --size <size-in-GB> --type LUKS <volume-name>
All of the above options and parameters for volume creation still apply.
If a volume is no longer needed, simply run openstack volume delete:
❯ openstack delete volume <volume>
to delete the volume. you can also add the --purge
parameter
to the command to delete all snapshots of the volume.
Volumes can be easily extended by setting a higher image size:
❯ openstack volume set --size <new-size-in-GB>
It is quite essential to create snapshots and backups of your volumes to be able to revert data to a previous state.
OpenStack Cinder addresses this by providing the user with the possibility to snapshot and/or backup volumes:
It is easy to create a quick snapshot of a volume on the command line. These snapshots can be used to quickly restore a volume to a previous state.
❯ openstack volume snapshot create --volume <volume> <snapshot-name>
A snapshot can even be created of a volume that is currently in use by a running machine.
Thus, if you want to create such a snapshot, it is required to provide
the --force
flag to the command.
Volumes as well as volume snapshots can be backed up by utilising the capabilities of the Cinder-Backup Service. Cinder-Backup saves backups to a pool inside another storage cluster which spans over all 3 availability zones. This way Wavestack ensures backup data high availability.
To create a volume backup, simply run:
❯ openstack volume backup create --name --volume <volume>
Similar to snapshots, you have to provide the --force
flag when
creating a backup from an in-use volume (i.e. one that is attached to
an instance).
For further information on backup options view the OpenStack Docs.
It is also possible to transfer your volumes between projects, which allows the user to copy and share data between subprojects within their own organisation.
First, a volume transfer request is created:
❯ openstack volume transfer request create <volume-uuid>
This creates a transfer request with an auth-key (printed to your stdout).
You can then get a list of currently pending transfer requests by running:
❯ openstack volume transfer request list
and get the auth-key for a request by running:
❯ openstack volume transfer request show <transfer-id>
This transfer request needs to be accepted by a user authenticated within the other project, providing the transfer request ID and the auth-key:
❯ openstack volume transfer request accept --auth-key <key> <transfer-request-id>