Support backup and restore of volumes created by VMDK driver¶
https://blueprints.launchpad.net/cinder/+spec/vmdk-backup
The volumes created by the VMDK driver are virtual disks stored in datastores
managed by ESX or vCenter server. Currently, the backup-create
and
backup-restore
operations are not supported for these volumes. This
blueprint proposes adding support for these operations in VMDK driver.
Problem description¶
The default implementation of backup-create
\ backup-restore
does the
following steps:
Attach the volume as a block device or file.
Backup\restore the file by calling backup service.
Detach the volume.
It uses an instance of InitiatorConnector
(determined by the back-end
driver protocol) to do the actual\detach. There is no InitiatorConnector
for the vmdk
protocol and hence the attach\detach fails for volumes
created by the VMDK driver. This blueprint proposes adding support for
backup-create
\ backup-restore
for these volumes.
Use Cases¶
Proposed change¶
The change involves overriding the default implementations of backup_volume
and restore_backup
methods in VMwareEsxVmdkDriver
. The steps in
backup_volume
are listed below:
Create the backing VM if it not found.
Download the stream-optimized version of the virtual disk corresponding to the volume to a temporary directory.
Call
backup_service.backup()
method to backup the stream-optimized virtual disk file.Delete the temporary file.
Following are the steps in restore_backup
:
Call
backup_service.restore()
to download the stream-optimized virtual disk file to a temporary directory.If the backing VM doesn’t exist (in the case of restoring the backup to create a new volume), import the stream-optimized virtual disk file to create a new backing VM.
If the backing VM exists, import the stream-optimized virtual disk file to create a temporary VM and reconfigure the backing VM to replace its virtual disk with that of the temporary VM.
Delete the temporary file and temporary VM.
Alternatives¶
HTTP read/write: It is possible to create an HTTP connection to read/write
from/to a virtual disk file in vCenter/ESX and an adapter can be written for
this connection to support some of the file operations required by the backup
drivers. This implementation works for both Swift and Ceph backup drivers. But
the TSM backup driver raises InvalidBackup
exception if the volume to be
backed up is not a block device or regular file.
Data model impact¶
None
REST API impact¶
None
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
None
Performance Impact¶
None
Other deployer impact¶
None
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
vbala <vbala@vmware.com>
- Other contributors:
None
Work Items¶
backup_volume
methodrestore_backup
method
Dependencies¶
None
Testing¶
None
Documentation Impact¶
None
References¶
None