Implement volume backup/restore for VMDK driver
This specification proposes adding support for backup-create/backup-restore operations in VMDK driver. Change-Id: I7ba462a28e8ed4c7a5bbbb4767985e3af17ab2c3 Implements: blueprint vmdk-backup
This commit is contained in:
parent
1b109582b5
commit
1794886979
156
specs/juno/vmdk-backup.rst
Normal file
156
specs/juno/vmdk-backup.rst
Normal file
@ -0,0 +1,156 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
============================================================
|
||||
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.
|
||||
|
||||
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`` method
|
||||
* ``restore_backup`` method
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
None
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
None
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
None
|
Loading…
x
Reference in New Issue
Block a user