为 Cinder 后端添加报告 discard/unmap/trim 功能¶
https://blueprints.launchpad.net/cinder/+spec/cinder-backend-report-discard
目前,libvirt/qemu 在将卷附加到实例时支持 discard 选项。通过此功能,可以从客户机向物理存储设备发送 unmap/trim 命令。
Cinder 后端应报告一个连接能力,该能力可用于指示 Nova 如何附加卷。
本规范旨在添加支持为 Cinder 卷启用 discard 的辅助功能。
问题描述¶
目前,Nova 无法知道 Cinder 后端是否支持 discard/trim/unmap 功能。本规范旨在向 Nova 提供此信息。
用例¶
如果 Cinder 后端使用的介质可以利用 discard 功能,则应提供一种方法来实现这一点。这将提高此类后端的长期性能。
提议的变更¶
任何想要支持此功能的驱动程序只需在 intialize_connection 返回的属性中添加一个条目即可。
“discard”: True,
Pure Storage 驱动程序的一个示例是
properties = {
"driver_volume_type": "iscsi",
"data": {
"target_iqn": target_port["iqn"],
"target_portal": target_port["portal"],
"target_lun": connection["lun"],
"target_discovered": True,
"access_mode": "rw",
"discard": True,
},
}
备选方案¶
替代方案包括为每个支持此功能的后端在 cinder.conf 中添加一个设置。这包括一个手动步骤,更容易出错。
数据模型影响¶
无
REST API 影响¶
需要更新对 ‘initialize_connection’ 的响应的文档,其中包含说明提供此新信息的注释。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
对于受益于 discard 功能的后端,将会有性能提升。
有关更多信息,请参阅 https://en.wikipedia.org/wiki/Trim_(computing)。
其他部署者影响¶
部署者需要向 Glance 镜像添加一些属性才能使其工作。一旦从修改后的镜像启动实例,驱动程序报告的 discard 功能将被激活。
hw_scsi_model=virtio-scsi hw_disk_bus=scsi
- glance image-update –property hw_scsi_model=virtio-scsi
–property hw_disk_bus=scsi <image-uuid>
这将在以下位置通过代码更改在实例上创建正确的控制器 https://review.openstack.org/#/c/70263/。一旦正确的控制器到位,Cinder 后端指定的 unmap 功能将被利用。
二次卷附加将单独处理,并会遵守连接时提供的 discard 设置。
开发人员影响¶
无
实现¶
负责人¶
主要负责人
Daniel Wilson
工作项¶
将“discard”: True 行添加到 Pure Storage 驱动程序。
同时在 Nova 中实现此功能。 https://review.openstack.org/#/c/205726/1
依赖项¶
无
测试¶
此规范不需要 Tempest 测试。Pure Storage CI 将使用现有的 tempest 测试来测试此代码路径。
文档影响¶
需要更新对 ‘initialize_connection’ 的响应的文档,其中包含说明提供此新信息的注释。