Cinder 卷实例本地性功能

https://blueprints.launchpad.net/sahara/+spec/volume-instance-locality

本规范建议增加一种将实例与其附加卷放在同一物理主机上的能力。

问题描述

目前,没有办法指定卷附加到与实例相同的物理主机。拥有这种能力将会很好。

提议的变更

可以使用 Cinder InstanceLocalityFilter 来实现此功能,该过滤器允许请求创建与实例本地的卷。这将提高 I/O 操作的性能。

将会进行以下几处更改

  • 将在每个节点组模板、节点组和模板关系中添加一个布尔字段 volume_local_to_instance。该字段将是可选的,默认值为 False

  • 如果将 volume_local_to_instance 设置为 True,Cinder 卷将在同一主机上创建。

  • 如果 volume_local_to_instanceTrue,则节点组的所有实例都应在具有可用磁盘空间 >= volumes_per_node * volumes_size 的主机上创建。如果无法做到,则应发生错误。

替代方案

数据模型影响

volume_local_to_instance 字段应添加到 node_groupsnode_group_templatestemplates_relations

REST API 影响

  • API 将扩展以支持 volume_local_to_instance 选项。volume_local_to_instance 是一个可选参数,默认值为 False,因此此更改将向后兼容。

  • python 客户端将被更新

其他最终用户影响

部署者影响

开发者影响

Sahara-image-elements impact

Sahara-dashboard / Horizon 影响

将添加一个新字段,用于在节点组模板创建期间选择 volume_local_to_instance 选项。

实现

负责人

主要负责人

apavlov-n

工作项

  • 添加在同一主机上创建实例和卷的能力;

  • 添加在适当的主机上创建实例的能力;

  • 更新文档;

  • 更新 UI;

  • 更新 python 客户端;

  • 添加单元测试。

依赖项

测试

将添加单元测试。

文档影响

文档将被更新。将记录何时可以使用此功能以及何时不能使用。还将记录如何在 Cinder 端启用它。

参考资料