VMware:对 vSAN 数据存储的支持

https://blueprints.launchpad.net/nova/+spec/vmware-vsan-support

目前 vmwareapi 计算驱动程序仅支持将实例部署到 NFS 和 VMFS 数据存储。此蓝图建议添加对使用 vSAN 存储的支持。

术语解释

规范和驱动程序中提到的“数据存储”是指 vSphere 概念,即逻辑存储容器,VM 数据(以及其他内容)存储在其中。这种抽象化的目的是为 vSphere 客户端提供一种统一的方式来访问所述 VM 数据,无论底层存储使用何种硬件、I/O 协议或传输协议。

直到最近,所有 vSphere 数据存储都大致分为两种类型:VMFS 和 NFS。vmwareapi 驱动程序自其诞生以来一直支持这两种类型的使用,无需区分两者,这很大程度上得益于这种数据存储抽象化。

vSAN 存储是 vSphere 中引入的第三种类型的数据存储。它是一种软件定义的分布式存储,它将连接到一组主机的磁盘(磁性磁盘用于容量,SSD 用于缓存/性能)聚合到单个存储池中。该池再次作为单个数据存储公开。

问题描述

目前,计算驱动程序完全忽略了类型为“vsan”的数据存储。使用这种类型的数据存储的一个障碍是,虚拟磁盘数据文件(“ -flat.vmdk”文件)不能直接寻址为数据存储路径。由于 vmware 驱动程序中的生成和快照工作流程都以某种方式处理数据文件,因此需要更改它们以支持 vSAN 数据存储。

提议的变更

该更改分为两个方面

  • 识别和使用一种新型的数据存储(“vsan”)。

  • 更新涉及导出和导入 Glance 镜像的现有代码,以使用不直接寻址磁盘数据文件的替代 vSphere API。

第二方面的更改主要由 oslo.vmware 库中的 image-transfer 功能提供 [*]。建议更新代码以使用所述库。

但是,这些替代 API 支持的唯一磁盘格式是“streamOptimized”格式。(streamOptimized 格式是一种稀疏、压缩且流友好的 VMDK 磁盘格式,非常适合导入/导出用例,例如上述 glance<->hypervisor 交换)。这意味着只有 streamOptimized 磁盘镜像才能部署到 vSAN。驱动程序将被修改为将标记有属性 vmware_disktype='streamOptimized' 的 Glance vmdk 镜像识别为这种格式的磁盘,并且仅在处理这种格式的磁盘时才使用替代 API。

备选方案

无。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

计算驱动程序需要 oslo.vmware 库。(请参阅“依赖项”部分)。

在 [vmware] 部分下有一个新的配置选项“image_transfer_timeout_secs”,它配置了镜像传输在超时之前可以持续的时间。

为了将现有的 VMDK 镜像部署到 vSAN,这些镜像必须转换为 streamOptimized 并重新导入到 glance。

开发人员影响

最小化。与蓝图相关的更改主要集中在处理新型 vmdk 格式类型以及添加识别和使用名为“vsan”的附加数据存储类型方面。

实现

负责人

主要负责人

vui

工作项

大部分工作是在 Icehouse 周期中完成并提出的,但由于时间限制而未发布。该工作应继续被视为此蓝图的考虑因素。该工作大致分解为

  • 使用 oslo.vmware image_transfer 模块处理镜像下载

  • 使用 oslo.vmware image_transfer 模块处理镜像快照上传

  • 更新驱动程序以允许使用类型为 vSAN 的数据存储。

  • 更新驱动程序以识别一种新型 vmdk 格式(streamOptimized)

依赖项

测试

由于 Tempest 通常不支持特定于驱动程序的测试,因此建议更新 MineSweeper CI (https://wiki.openstack.org/wiki/NovaVMware/Minesweeper),为 vCenter 提供带有 vSAN 存储的存储,并添加额外的测试,以验证在对其使用 vSAN 的计算节点上调用时,现有的 Tempest 测试是否通过。

文档影响

需要在 Nova 文档的 vmware 驱动程序部分添加新的信息,以记录

  • 如何配置计算节点以用于 vSAN。

  • 使用 vSAN 存储时所需的虚拟磁盘格式(仅“streamOptimized”)。

  • 新的“image_transfer_timeout_secs”配置选项。

  • 如何从虚拟机或非 streamOptimized 格式的 vmdk 磁盘获取 streamOptimized 磁盘。

参考资料