Support backup import on another Storage database

Currently a volume backup can only be restored on the same Block
Storage service. This is because restoring a volume from a backup
requires metadata available on the remote database.

This proposal is to store backup metadata together
with the data, so a user will be able to restore a volume backup
on another Block Storage.

Change-Id: Ibafe96a3d1dcee8b6f28dac2f18814d3b7fcd9ef
Implements: blueprint support-backup-import-on-another-storage-database
This commit is contained in:
ronen-mesonzhnik 2015-11-24 07:34:59 -05:00 committed by Ronen Mesonzhnik
parent 967c2b0a0e
commit 4380a03f57

View File

@ -0,0 +1,151 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
====================================================================
Support backup import on another Storage database
====================================================================
URL of launchpad blueprint:
https://blueprints.launchpad.net/cinder/+spec/Support-backup-import-on-
another-Storage-database
* This backup service can use a backup extra metadata in order
to import a backup on a different Block Storage.
Problem description
===================
* Currently a volume backup can only be restored on the same Block Storage
service.
This is because restoring a volume from a backup requires metadata available
on the database used by the Block Storage service.
* In order to import backup metadata on another Block Storage database
(i.e disaster recovery site), one has to save the metadata of a volume
backup available on the source database, and then replicate it together
with the data to the other Block Storage site.
* Combination of the local backup service that exports and stores
this metadata, together with replication to another Block Storage site,
allows you to completely restore the backup even in the event of
a catastrophic database failure.
* In addition, having a backup metadata together with a volume backup,
also provides volume portability.
Specifically, backing up a volume and exporting its metadata will allow you
to restore the volume on a completely different Block Storage database,
or even on a different cloud service.
Use Cases
=========
* When a user wants to save backup metadata together with volume backup for
volume portability purpose, or for replication purpose to disaster
recovery site, and be able to restore a volume from a backup on the other
Block Storage site.
Proposed change
===============
* In order to support backup import on a different Block Storage database,
we need to extend chunked backup driver:
* Enabling to save backup metadata together with the data.
* Add a cinder client api command, that will parse backup metadata from
backup_metadata file, and import that metadata to the other
Block Storage database.
* User will be able to restore a volume backup on the other
Block Storage, using cinder backup restore api.
Alternatives
------------
Support only storage on local storage.
Use slow manual backup and restore methods.
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:
ronen-mesonzhnik
Other contributors:
None
Work Items
----------
- Implement get_extra_metadata that will return backup's corresponding
database information as encoded string metadata.
- Implement a cinder client api command that can take a backup metadata
file, and do the import from it.
Dependencies
============
None.
Testing
=======
None.
Documentation Impact
====================
* In addition to the existing command 'cinder backup-import <METADATA>',
there will be a command that can accept a file:
'backup-import-record-from-backup-metadata-file <file_path>'
References
==========
* Link to Export and import backup metadata documentation:
http://docs.openstack.org/admin-guide-cloud/blockstorage_volume_backups_export_import.html