Glance VMware 存储支持多个数据存储

https://blueprints.launchpad.net/glance/+spec/vmware-store-multiple-datastores

当 Glance 配置为使用 VMware 存储时,镜像存储在一个名为数据存储的虚拟存储容器中,该容器由配置选项 vmware_datastore_name 标识。数据存储的大小只能增加到一定限制,该限制也取决于底层的物理存储。

因此,存储的容量受单个数据存储的大小限制,并带来严重的可扩展性问题。

问题描述

当前,当 Glance 配置为使用 VMware 存储时,存储的镜像数量受单个数据存储容量的限制。数据存储的大小有一个上限 [1]。

例如,当底层文件系统为 VMFS-5 时,最大数据存储大小为 64TB。而对于使用 NFS 的数据存储,则可能取决于存储阵列供应商。虽然这是基于支持的文件系统的理论最大值,但数据存储的大小也基于底层的物理存储,包括内部和外部设备以及网络存储。对于网络存储,存储协议的选择(iSCSI、FC、FCoE)也在决定最佳大小方面起着至关重要的作用。因此,数据中心中使用的单个数据存储的容量因部署而异。

除了容量之外,当许多计算节点同时访问单个数据存储以下载镜像时,可能会出现性能瓶颈。

提议的变更

为了允许添加更多容量并提高性能,我们建议使用多个数据存储来存储镜像。

拟议的更改主要方面只有一个:- 数据存储选择。

1) 数据存储选择

此更改建议根据操作员赋予的优先级和容纳镜像的容量来选择数据存储。将添加一个新的配置选项(例如 vmware_datastores),该选项将允许操作员指定多个数据存储及其相对权重。如果优先级相同,则选择将基于数据存储上可用的最大空闲空间。这种方法与文件系统存储使用的 filesystem_store_datadirs 非常相似。

示例:假设 vmware_datastores 配置为 nfs_datastore、iscsi_datastore、ssd_datastore,权重分别为 100、100 和 200。如果 ssd_datastore 可以容纳要添加的镜像数据,则它将是首选数据存储。否则,将根据可用的最大空闲空间选择 nfs_datastore 或 iscsi_datastore。

备选方案

1) 数据存储选择可以通过轮询/随机化策略而不是基于优先级的策略来完成。如果所有数据存储的类型相同且性能相似,这将是理想的选择。但由于数据存储的类型不同,因此策略最好由操作员输入驱动。例如,基于 SSD 的数据存储可能比基于网络的更快。虽然可以确定数据存储的类型,但不能进行隐式假设。

数据模型影响

不会对 Glance 数据模型产生任何影响。

REST API 影响

安全影响

此规范仅为现有功能添加选择逻辑,因此不会产生任何安全影响。

通知影响

其他最终用户影响

性能影响

使用多个数据存储将减少对单个数据存储的并发操作。

其他部署者影响

此提案将允许管理员配置多个数据存储以在 VMware 存储后端中保存镜像数据。如果启用,它将覆盖现有的配置选项 *vmware_datastore_name*,该选项允许指定单个数据存储。如果禁用,则存储将回退到 vmware_datastore_name 选项。因此,该更改是向后兼容的。我们将逐步淘汰 vmware_datastore_name 选项。

glance-api.conf 中的新多字符串配置选项

vmware_datastores 可选。默认值:未设置。

一个数据存储及其数据中心路径和一个权重。如果数据存储是数据存储集群的成员,则还应包括集群的名称。否则,可以省略集群名称。可以多次指定此选项以指定多个数据存储。因此,所需的格式变为

vmware_datastores =

<datacenter_path>:<datastore1>:<weight>

vmware_datastores =

<datacenter_path>:<datastore_cluster_name>:<datastore2>:<weight>

权重用于确定指定数据存储的相对优先级。因此,它们可以是任何任意整数值。

示例
vmware_datastores =

datacenter1:nfs_datastore:2

vmware_datastores =

datacenter1:ssd_datastore:3

vmware_datastores =

datacenter1:backup_datastore:1

在上面的示例中,ssd_datastore 将获得最高优先级,其次是 nfs_datastore 和 backup_datastore。

vmware_datastores =

datacenter1:nfs1_datastore:100

vmware_datastores =

datacenter1:nfs2_datastore:100

vmware_datastores =

datacenter1:backup_datastore:50

在此示例中,nfs 数据存储将获得相同的优先级,其次是 backup_datastore。对于相同的优先级,nfs 数据存储之间的争用通过最大空闲空间来解决。

注意:- 如果数据中心路径或数据存储名称包含冒号 (:) 符号,则必须使用反斜杠对其进行转义。

开发人员影响

实现

负责人

主要负责人

smurugesan (sabari)

其他贡献者

评审人员

核心评审人

nikhil-komawar arnaudleg

其他审核员

rgerganov

工作项

  1. 在 VMware 存储驱动程序中实现新的配置选项。

  2. 在 VMware 存储驱动程序中实现数据存储选择逻辑。

  3. 实现单元测试。

  4. 更改 Glance 存储库中的 glance-api 示例配置文件。

  5. 为 vmware_datastore_name 添加弃用警告。

  6. 更新文档。

依赖项

  • oslo.vmware 引入了一个 Datastore 对象,将在本次实现中使用。

  • oslo.vmware 具有一个 vim_util 模块,其中包含一些低级实用程序方法,用于与 vmware api 交互。这需要解析 api 响应。

测试

  • 不需要 Tempest 测试。

文档影响

  • 记录新的配置选项。

参考资料

[1] http://www.vmware.com/pdf/vsphere5/r55/vsphere-55-configuration-maximums.pdf