克隆一致性组¶
https://blueprints.launchpad.net/cinder/+spec/clone-cg
本提案旨在添加一项功能,可以从现有的一致性组创建克隆一致性组。
问题描述¶
目前,用户可以先创建一个一致性组,然后一次克隆现有 CG 中的一个卷,并将其添加到新的 CG 中,直到所有卷都被克隆并添加到 CG 中。
本提案希望增强现有的从源创建 CG 的 API,使其成为一个步骤,而不是多步骤过程。
注意:新 CG 中的克隆卷不保证一致性。从一致性的角度来看,这与先创建一个空 CG,然后逐个创建卷并添加到 CG 中没有区别。
现有的从源创建 CG 的 API 允许用户从组快照(CG 快照)创建 CG,这应该是一致的。
用例¶
假设用户已经有一个包含卷的一致性组。现在他/她想创建一个新的 CG,其中所有卷都从另一个 CG 克隆而来。 拟议的更改将使这对于用户来说更容易。
提议的变更¶
现有的从源创建 CG 的 API 将现有的 CG 快照作为源。
本蓝图建议修改现有的 API,以接受现有的 CG 作为源。
备选方案¶
在没有拟议的更改的情况下,我们可以使用以下步骤从现有的 CG 创建一个 CG
创建一个空的 CG。
从现有 CG 中的现有卷创建一个克隆卷,并将其添加到新的 CG 中。
对 CG 中的所有卷重复上述步骤。
数据模型影响¶
数据库模式更改:将在 consistencygroups 表中添加一个新列 source_cg_id。
REST API 影响¶
一致性组 API 变更
从源创建一致性组
V2/<租户 ID>/consistencygroups/create_from_src
方法:POST
V2 的 JSON 模式定义
{ "consistencygroup-from-src": { "name": "my_cg", # existing "description": "My consistency group", # existing "cgsnapshot_id": "xxxxxxxx", # existing "consistencygroup_id": "xxxxxxxx", # new } }
在现有的从源创建一致性组 API 中,添加一个新的参数“consistencygroup_id”,以允许现有的 CG 作为新 CG 的源。
Cinder 卷驱动程序 API
将向现有的卷驱动程序 API 添加两个新的可选参数
def create_consistencygroup_from_src(self, context, group, volumes, cgsnapshot=None, snapshots=None, src_group=None, src_volumes=None)
注意,只有“src_group”和“src_volumes”是新参数。
安全影响¶
通知影响¶
其他最终用户影响¶
需要更改 python-cinderclient 以支持修改后的 API。
创建克隆 CG cinder consisgroup-create-from-src –name <名称> –description <描述> –consistencygroup <cg uuid 或名称>
性能影响¶
其他部署者影响¶
无。
开发人员影响¶
驱动程序开发人员可以在修改后的驱动程序 API 中添加对该功能的支持。
实现¶
负责人¶
- 主要负责人
xing-yang
其他贡献者
工作项¶
API 变更:* 修改从源创建 CG 的 API
卷驱动程序 API 变更:* 修改相应的驱动程序 API
数据库模式变更
依赖项¶
测试¶
将添加新的单元测试来测试更改后的代码。
文档影响¶
需要进行文档更改。