Spec Lite:添加对扩展已挂载(正在使用)卷的支持¶
- 项目:
glance_store
- 问题:
在 cinder store 中创建镜像时,我们会执行一系列 API 调用到 cinder,创建、挂载、卸载、扩展等卷。将镜像复制到卷的操作序列是:挂载卷,将镜像内容复制到卷中(直到卷中没有剩余空间),卸载卷,查看是否需要扩展(如果镜像大于当前卷的大小)并执行扩展。我们重复这些操作,直到整个镜像复制到卷中。卸载卷、扩展并重新挂载卷的部分效率非常低,因为我们需要为镜像的每个 1GB 执行此操作。对于某些后端,cinder 支持扩展已挂载(正在使用)的卷,我们应该使用它来优化镜像创建操作。支持扩展正在使用卷的 cinder 后端:https://docs.openstack.org/cinder/latest/reference/support-matrix.html#operation_online_extend_support
与此相关,另一个发现的问题是,由于 cinder 只支持扩展而不支持缩小,我们最终会每次扩展卷 1GB,最终花费更多时间来创建大型镜像。
- 解决方案:
我们将引入一个新的配置选项,
cinder_do_extend_attached,这将是一个布尔选项。如果他们使用的 cinder 后端支持扩展已挂载卷,操作员可以将其设置为true。默认值将是false。如果我们将cinder_do_extend_attached设置为true,我们将使用微版本3.42调用 cinderos-extendAPI,这将允许我们扩展已挂载的卷。最后,我们将调用 os-brick 的extend_volume方法,以指示内核在主机上调整卷的大小。其他工作
为了解决与 1GB 调整大小相关的问题,cinder store 已经处理了大小,如果 glance 正确传递了大小,我们会使用镜像大小初始化卷大小,从而避免不必要的扩展操作。因此,glance 需要更新以将正确的镜像大小传递给 cinder store。
- 影响:
无
- 替代方案:
无
- 时间线:
2023.1
- 链接:
- 审核人员:
Abhishek Kekane, Brian Rosmaita, Dan Smith, Erno Kuvaja
- 负责人:
Rajat Dhasmana (whoami-rajat)