镜像内省

https://blueprints.launchpad.net/glance/+spec/introspection-of-images

许多镜像格式在镜像数据内部包含元数据。本规范建议 Glance 通过镜像内省来暴露这些元数据。例如,我们可以读取 vmdk 格式镜像的元数据,以了解该镜像的磁盘类型为“streamOptimized”。允许 Glance 执行内省可以减轻管理员的负担。暴露这些元数据也有助于镜像的使用者;Nova 的工作流程会根据镜像的磁盘类型而有很大差异。

问题描述

许多镜像格式在镜像数据内部包含元数据。一个流优化 vmdk 镜像可以像这样进行内省

$ head -20 so-disk.vmdk

# Disk DescriptorFile
version=1
CID=d5a0bce5
parentCID=ffffffff
createType="streamOptimized"

# Extent description
RDONLY 209714 SPARSE "generated-stream.vmdk"

# The Disk Data Base
#DDB

ddb.adapterType = "buslogic"
ddb.geometry.cylinders = "102"
ddb.geometry.heads = "64"
ddb.geometry.sectors = "32"
ddb.virtualHWVersion = "4"

当镜像的使用者查看元数据时,他们将看到重要信息,例如所需的磁盘类型“streamOptimized”。在 Glance 中提取元数据并通过 Glance 的 API 暴露它,意味着管理员和镜像使用者都不需要自行执行内省。像 Nova 这样的消费者会根据磁盘类型而有非常不同的工作流程,并且还可以根据其他镜像元数据优化其工作流程的其余部分。

提议的变更

使用 Glance 的异步工作进程,我们可以在无需单独节点且不会造成显著性能下降的情况下提取镜像元数据。

备选方案

可以控制一个单独的工作节点以防止 Glance API 节点降级,但这对于架构来说是不必要的增加。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

基于工作进程的最大数量以及管理员为内省工作区配置的大小,如果操作员错误配置了其最大工作进程数量和分配的工作区,性能可能会受到负面影响。

其他部署者影响

在配置此功能时,操作员需要了解他们正在管理的镜像的平均大小,并适当地配置 max_workers 设置以及为工作进程使用的适当空间量。

开发人员影响

实现

负责人

主要负责人

flaper87

其他贡献者

jokke_

评审人员

核心评审人

nikhil-komawar kragniz icordasc

工作项

  • 为不同的内省任务创建特定的工作进程

  • 创建任务工作流程

  • 使用新增内容更新配置文件

  • 更新配置文档

依赖项

这依赖于 Glance 的异步工作进程

测试

需要对内省任务和新的任务流程进行单元测试。

文档影响

这可能会对文档的升级和安装部分产生影响。对于升级的操作员,他们需要了解如何正确配置用于镜像内省的系统。对于新用户,需要警告他们适当分配工作进程使用的空间,并且可能在确定适当数量之前选择比默认值更保守的最大工作进程数量。

参考资料