支持由 VMDK 驱动程序创建的卷的备份和恢复

https://blueprints.launchpad.net/cinder/+spec/vmdk-backup

由 VMDK 驱动程序创建的卷是在 ESX 或 vCenter 服务器管理的存储区中存储的虚拟磁盘。目前,对于这些卷,backup-createbackup-restore 操作不受支持。此蓝图建议在 VMDK 驱动程序中添加对这些操作的支持。

问题描述

默认情况下,backup-create\ backup-restore 的实现步骤如下:

  • 将卷作为块设备或文件附加。

  • 通过调用备份服务来备份\恢复文件。

  • 分离卷。

它使用 InitiatorConnector 的一个实例(由后端驱动程序协议确定)来执行实际的附加\分离操作。对于 vmdk 协议,没有 InitiatorConnector,因此由 VMDK 驱动程序创建的卷的附加\分离操作失败。此蓝图建议为这些卷添加对 backup-create\ backup-restore 的支持。

用例

提议的变更

更改涉及覆盖 VMwareEsxVmdkDriverbackup_volumerestore_backup 方法的默认实现。backup_volume 中的步骤如下:

  • 如果未找到,则创建支持 VM。

  • 将与卷对应的流优化版本的虚拟磁盘下载到临时目录。

  • 调用 backup_service.backup() 方法来备份流优化的虚拟磁盘文件。

  • 删除临时文件。

以下是 restore_backup 中的步骤:

  • 调用 backup_service.restore() 将流优化的虚拟磁盘文件下载到临时目录。

  • 如果支持 VM 不存在(在恢复备份以创建新卷的情况下),则导入流优化的虚拟磁盘文件以创建新的支持 VM。

  • 如果支持 VM 存在,则导入流优化的虚拟磁盘文件以创建临时 VM,并重新配置支持 VM 以将其虚拟磁盘替换为临时 VM 的虚拟磁盘。

  • 删除临时文件和临时 VM。

备选方案

HTTP 读取/写入:有可能创建 HTTP 连接来从 vCenter/ESX 中的虚拟磁盘文件读取/写入,并且可以为此连接编写适配器以支持备份驱动程序所需的一些文件操作。此实现适用于 Swift 和 Ceph 备份驱动程序。但是,如果要备份的卷不是块设备或常规文件,TSM 备份驱动程序会引发 InvalidBackup 异常。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

vbala <vbala@vmware.com>

其他贡献者

工作项

  • backup_volume 方法

  • restore_backup 方法

依赖项

测试

文档影响

参考资料