使用不同加密方式重新调整卷大小

https://blueprints.launchpad.net/cinder/+spec/retype-encrypted-volume

启用更改卷的功能,将卷 [1] 重新调整为具有不同加密方式的卷类型。

问题描述

目前 Cinder 阻止将卷重新调整为具有不同加密方式的卷类型。

用例

  • 客户使用未加密的卷,但后来希望将这些卷更改为加密卷。

  • 客户使用加密的卷,后来希望更改为未加密卷。

  • 客户希望更改卷的加密方式。

提议的变更

允许在加密和未加密的卷之间重新调整。与当前的重新调整机制相同,它允许重新调整可用和正在使用的卷。

如果卷处于可用状态,详细过程将是

  • 根据新的 volume_type 创建一个新卷。

  • 将两个卷映射到卷宿主机。

  • 如果卷已加密,则使用 dm-crypt 打开设备。这通过 os-brick/encryptors [2] 完成。

  • 将数据从原始卷复制到新卷。

  • 关闭 dm-crypt 并分离卷。

  • 删除后端存储中的原始卷。

如果卷处于使用中状态,除了错误修复 [3] 之外,无需更改任何内容。

备选方案

数据模型影响

REST API 影响

有了此功能,用户就可以将卷重新调整为不同的加密方式。

安全影响

Cinder 需要访问加密密钥并解密数据。

通知影响

将在当前的重新调整通知中添加一个标志,以显示是否需要更改加密方式。

其他最终用户影响

在重新调整具有不同加密方式的卷时,Cinder 需要获取密钥。但是 Barbican 只能配置为向租户提供密钥材料,而不是管理员。这可能导致管理员无法成功重新调整卷。在这种情况下,Cinder 将捕获异常,记录错误。要重新调整的卷将设置为原始状态。由于 os-brick/encryptors 不适用于 RBD、Sheepdog 卷,因此重新调整此类卷以更改加密方式的功能将失败,并且卷将设置为原始状态。

性能影响

它在重新调整过程中增加了加密/解密数据的步骤,影响取决于加密的性能。

其他部署者影响

此功能依赖于 Castellan [4]。同时,Barbican [5] 是 Castellan 目前唯一支持的密钥管理后端。这两个软件包都是必需的。

开发人员影响

实现

负责人

主要负责人

LisaLi <xiaoyan.li@intel.com>

工作项

  • 移除当前阻止重新调整的限制。

  • 通过 dm-crypt 附加/分离加密卷。

依赖项

测试

需要创建单元测试来覆盖“提议的更改”中提到的代码更改。在当前的重新调整测试 [6] 之后,将添加新的 tempest 测试用例。

文档影响

需要更新 cinder API 文档以描述此更改。

参考资料