Storage the service can read
The service selects a read path for each disk from its Ceph image features, libvirt domain definition or logical volume attributes. Configure the paths your cloud's storage requires before creating protection plans. A cloud with mixed storage may use several paths.
The three read paths
| Path | Reads | Requires | Cost per backup |
|---|---|---|---|
| Cluster | Ceph RBD volumes and Nova disks with images_type=rbd | The three cephx users | Reads only blocks changed since the previous backup when Ceph change tracking is available. |
| Hypervisor | Any disk a running guest has open: a SAN LUN, an LVM volume, an NFS file, a local qcow2 or raw disk | The compute agent on every hypervisor, with local-disk backup turned on | Reads cross the compute node. Incremental only for qcow2 disks. Other disks are read in full. |
| Fabric | Any volume Cinder can attach to a host: detached volumes, and volumes of a stopped instance | A mover host zoned into the storage network | A LUN mapping and an initiator session per read, and always a full read. A stopped instance's volume is read through a temporary snapshot and copy. |
A full read still uploads only what changed, because deduplication compares the data with what the repository holds. The cost of a full read is the read itself, on the storage and on the network.
Supported storage
| Storage | What you get |
|---|---|
Cinder RBD, Nova images_type=rbd | Incremental backups through the cluster path. |
| NetApp ONTAP over NFS, IBM GPFS | Full reads. The volume is a file on a shared filesystem, so movers read it directly. |
| SAN arrays through Cinder over iSCSI or NVMe/TCP: Pure, PowerStore, PowerMax, Unity, 3PAR, Nimble, Hitachi VSP, Huawei OceanStor, IBM Storwize, Infinidat and others | Full reads through the fabric path. Arrays that track changes internally do not expose that through Cinder. |
Cinder LVM; Nova images_type=qcow2, raw or flat (Nova's default) | The hypervisor path for attached volumes and local disks of running instances. The fabric path for detached LVM volumes. |
Nova images_type=lvm, ploop | Not supported. The service accepts a plan for these disks but cannot restore them. A restore writes local disks only as raw or qcow2 images. |
Supported Cinder storage uses these shared read paths.
Turn on the hypervisor path
ferry_local_disk_backup: true
The compute agent streams guest disk data to a mover. This adds read traffic to the hypervisor and is off by default on kolla-ansible and Helm. Configure scratch space with these constraints:
- It must be under
/var/lib/libvirt. QEMU opens the scratch, and QEMU and the agent run in different mount namespaces./var/lib/libvirtis the one path both see the same way. A path elsewhere fails with "blockdev-add: No such file or directory", naming a file that exists. The precheck refuses it. - It grows with the guest's writes for the length of a backup. Keep it off the filesystem the
instances live on, and cap it with
ferry_compute_max_scratch_bytes.
The Helm chart's value is compute.localDiskBackup. The Juju charm's option is local-disk-backup. The
charm turns it on by default, because Sunbeam keeps instance disks on the hypervisors.
Turn on the fabric path
List the mover hosts that are zoned into the storage network under [ferry-mover-fabric], and set:
ferry_fabric_iscsi: true
ferry_fabric_nvmeof: false
ferry_fabric_multipath: false
A fabric mover runs privileged with the host's /dev, kernel modules and a persistent initiator
identity. It must be the only iSCSI stack on its host. The precheck refuses a fabric mover that is
also a hypervisor. It also refuses one whose host runs its own iscsid, as a cinder-volume host
usually does. Another iscsid on the host answers the mover's tools with a different protocol version.
Every login then fails with "iSCSI driver not found", although discovery works. NVMe/TCP needs the nvme_tcp module on the host,
which on Ubuntu is in linux-modules-extra.
Reading a stopped instance's volume creates a snapshot and a temporary volume from it. Both are created
in the service project (service on kolla-ansible). Set its quota to accommodate all concurrent
copies:
openstack quota set --volumes 50 --snapshots 50 --gigabytes 20000 service
The fabric path is available on kolla-ansible deployments.
Check a resource before protecting it
openstack backup resource list shows, for each resource, whether it can be protected. When it
cannot, it shows why and what to change. Run it in a project with each kind of storage the cloud offers before projects
start creating plans.