支持 Glance 的多存储

https://blueprints.launchpad.net/nova/+spec/support-glance-multiple-backend

此蓝图建议支持 Glance 的多个后端。

问题描述

在 Train 版本中,Glance 增加了配置多个存储的能力 [1]。 这样,操作员可以配置一个或多个相同或不同类型的存储,并使用其中一个作为默认存储。 如果在上传镜像时未指定存储,则镜像将存储在默认存储中。

对于 Nova 快照或备份,如果未对 Nova 进行任何更改,即使配置了多个存储,快照或备份镜像仍将上传到默认存储。 这不会导致任何问题,除非 Nova 使用 Ceph 作为后端,并且 Glance 也配置了 Ceph 存储,但 Glance 中的默认存储不是 Ceph。 这会影响 Nova 使用 Ceph 后端以更有效的方式上传快照或备份镜像的能力。

用例

  1. 操作员希望将所有快照或备份镜像上传到 Glance 中的一个特定/专用存储。

  2. 即使 Ceph 不是 Glance 中的默认存储,也能使用 Ceph 进行快速快照。

提议的变更

如果使用镜像创建实例,则它会将镜像 UUID 作为 ‘image_ref’ 存储。 当请求实例快照或备份时,Nova 应该将 ‘image_ref’ 作为标头 ‘X-OpenStack-Base-Image-Ref’ 传递给 Glance,以便 Glance 识别基本镜像存储在哪个存储中,并使用相同的存储来上传实例快照或实例备份。

如果使用卷创建实例,则快照或备份镜像应上传到 Glance 中配置的默认存储。

备选方案

  • 为快照和备份 API 添加一个新的微版本,以支持配置将快照/备份镜像上传到特定存储。 我建议在快照和备份 API 中添加一个新的 --store 选项,用户可以在其中指定快照/备份镜像将上传到哪个存储。 如果未指定 --store 选项,则镜像将上传到默认存储。

    如果用户选择 Glance 中未配置的 ‘store’,则 Glance 将返回 404 NotFound 错误,并在 ‘snapshot’ 或 ‘backup’ 操作期间,在清理操作期间删除处于 ‘queued’ 状态的镜像。 另一种方法是,在创建 queued 镜像之前,使用 Glance 的 ‘/v2/info/stores’ 发现调用验证最终用户指定的 ‘store’。 如果指定的 ‘store’ 不在发现响应中,则整个操作将跳过,并向最终用户返回 404 响应。

    最终用户可以使用 ‘GET $IMAGE_API_URL/v2/info/stores’ 发现调用来识别 Glance 中的可用 ‘stores’。 它将返回 Glance 端配置的存储列表。 发现响应中的 “id” 字段代表配置的存储。 以下是发现 ‘/v2/stores/info’ 响应调用的示例

    GET $IMAGE_API_URL/v2/info/stores
    
    {
        "stores": [
            {
                "id":"reliable",
                "description": "Reliable filesystem store"
            },
            {
                "id":"fast",
                "description": "Fast access to rbd store",
                "default": true
            },
            {
                "id":"cheap",
                "description": "Less expensive rbd store"
            }
        ]
    }
    

    例如,Glance 配置了两个文件存储 ‘file_1’ 和 ‘file_2’,并且 ‘file_1’ 被设置为默认存储,那么在当前场景下,所有 ‘snapshot’ 或 ‘backup’ 操作的镜像都将始终上传到 Glance 的 ‘file_1’ 存储。

  • 在 ‘glance’ 部分添加一个新的配置选项 ‘store’,以将所有快照/备份镜像上传到指定的/专用存储。 如果未定义此选项,则所有快照/备份镜像将上传到默认存储。 如果操作员不想向最终用户公开将快照镜像上传到特定存储的使用情况,则此解决方案将更有效。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

升级影响

实现

负责人

主要负责人

abhishek-kekane

功能联络人

功能联络人

Balazs Gibizer

工作项

  • 更改 nova 中的 glanceclient,以便在上传调用中传递 ‘X-OpenStack-Base-Image-Ref’ 标头。

  • 添加相关测试

依赖项

测试

  • 添加相关单元测试

  • 添加相关功能测试

  • 添加 tempest 测试

文档影响

参考资料

历史

修订

发布名称

描述

Ussuri

引入