通用备份实现

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

通用备份实现将允许我们使用任何支持的卷后端作为备份存储。因此,我们不需要为支持的后端实现特定的备份驱动程序。

问题描述

我们现在有不同的备份和卷驱动程序。这就是为什么如果我们想在相同的存储上使用备份,我们必须将卷驱动程序的一部分重新实现为备份驱动程序。

用例

  1. 能够将任何 cinder 支持的存储后端用于备份。

提议的变更

像卷迁移一样,在基础卷驱动程序中实现通用的备份实现。在此之后,供应商可以轻松地为他们的驱动程序实现存储辅助备份。

我们将为 Swift、Google Cloud Storage 等存储提供基础备份驱动程序类,这些类将仅实现与备份相关的特性。

这将允许备份到存储 A 的卷恢复到存储 B 上的卷。

Cinder 不应允许将相同的存储同时用于卷和备份。在这种情况下,备份驱动程序初始化应失败。如果存储支持不同的池,Cinder 将允许在相同的存储上创建备份,但使用不同的池。

我们不需要在 Cinder 中提供“备份和卷在同一存储中”的功能,即使是可配置的,因为我们可以使用快照或克隆卷来实现它。备份应在不同的存储中,或者至少在另一个池中。

作为通用实现,cinder 将使用与通用卷迁移相同的机制

  • 在目标存储上创建卷

  • 将源卷和目标卷都附加到 cinder 节点

  • 使用 ‘dd’ 工具复制卷数据

  • 将两个卷从 cinder 节点分离

如果卷“正在使用”,我们将创建临时快照并从中进行备份。

我们不能在不同的存储之间使用“克隆卷”功能。

厂商特定更改

供应商或驱动程序维护者可以实现特定于供应商的备份实现,以使用存储 API 以获得更快的备份过程。

备选方案

遵循当前使用单独的卷和备份驱动程序的方法。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

备份到块后端可能比备份到 swift 更快。这意味着备份到块存储可能比备份到对象存储更快。

其他部署者影响

操作员应该能够配置备份存储和 cinder 备份驱动程序。

开发人员影响

  • 卷驱动程序可以实现特定于供应商的备份实现

实现

负责人

主要负责人

Ivan Kolodyazhny <e0ne@e0ne.info>

其他贡献者

卷驱动程序维护者

工作项

待定 (TDB)

依赖项

测试

  • 单元测试

  • Tempest 测试应在新的功能组中实现

文档影响

操作员文档应根据规范实现进行更新。

参考资料