跳转到: 导航, 搜索

UnifiedImages

  • Launchpad 条目: NovaSpec:unified-images
  • 创建者: RickHarris
  • 贡献者:

总结

我们需要在 Nova 中具备从一个*完全*配置的镜像构建实例的能力,这意味着分区表存在,内核包含在镜像以及数据中。对于 XenServer 虚拟层,这意味着我们需要能够从 VHD 构建实例。

这个蓝图与 Bexar 中的 xs-snapshots-glance 配对,我们在其中生成 VHD 快照:使用 unified-images,这些快照将可被使用。

发布说明

  • XenServer 驱动程序现在能够启动 VHD 镜像

原理

我们对 XenServer 的实现使用 VHD 作为实例的后端,我们对这些 VHD 进行快照,然后将其上传到 Glance。为了能够恢复这些基于 VHD 的镜像,Nova XenServer 驱动程序需要能够理解如何获取和启动基于 VHD 的镜像。

用户故事

Alice 对正在运行的 XenServer 实例进行快照。Alice 恢复快照,这会获取基于 VHD 的镜像并启动它。

Bob 创建一个基于 VHD 的基本安装,在本例中是一个 Windows 镜像。Bob 在 Glance 中发布 WinXX 镜像,并将 is_public 设置为 True。Charlie 从 WinXX 基本安装构建一个新的实例。

前提条件

设计

我们需要向 Glance 添加元数据以支持 disk_format 元数据(请参阅相关蓝图 [RELATED BLUEPRINT HERE])。

在 Nova 中,我们需要在 XenServer 虚拟层中添加一个 _fetch_vhd 适配器,当 Nova 检测到镜像的 disk_format == "vhd" 时,将调用该适配器。

实现

实现应该很简单。我们真正需要做的就是尊重 Glance 暴露的 disk_format 参数,然后在选择合适的 XenServer _fetch_image 方法时使用它。

实际的 _fetch_vhd_image 将使用 Glance 客户端将镜像拉到 Dom0 存储库中,然后创建适当的 VDI 和 VBD 记录以从镜像启动。

UI 变更

代码变更

对于 Nova,我们只需要在 XenServer 虚拟层中添加 _fetch_vhd_image 适配器,然后让 XenServer _fetch_image 在检测到 VHD 镜像时将其分派给它。

迁移

Nova 中没有。

测试/演示计划

测试策略是双重的

  • 首先,这需要进行功能测试。这将首先手动完成;但我们应该能够编写一个脚本来快照镜像并从中恢复,并验证实例是否已启动。
  • 其次,我们可以使用单元测试来测试适配器选择,以确保仅在适当的时候才使用 VHD 适配器

这不必在规范接近 Beta 之前添加或完成。

未解决的问题

我们仍然需要讨论如何打包和捆绑这些 VHD。目前,Glance 中的一个 tarball,在 Nova 中转换为 1 个或多个 VHD 就可以工作。这就是我们目前所做的;问题是,我们是否应该探索更好的镜像打包选项?

BoF 议程和讨论