允许 Nova 通过 RBD 直接下载 Glance 镜像¶
https://blueprints.launchpad.net/nova/+spec/nova-image-download-via-rbd
问题描述¶
在使用基于 qcow2 的虚拟机根磁盘的计算本地存储时,Glance 镜像通过 Glance HTTP API 下载到 libvirt 镜像存储中。对于 10GB 到 100GB 的镜像,此下载可能_非常_缓慢。如果计算节点可以访问 Ceph,它可以改为对 Glance 镜像执行 ‘rbd export’,完全绕过 Glance API 并直接从 Ceph 下载镜像。这种直接下载可以大大缩短下载时间,从几十分钟到几秒钟。
用例¶
作为拥有 Ceph 支持的镜像存储的用户,我希望配置一些计算主机以使用计算主机本地的 qcow2 镜像,但能够快速从 Ceph 获取镜像,而不是从 Glance API 进行缓慢下载。
提议的变更¶
当 allowed_direct_url_schemes 选项中存在 ‘rbd’ 值时,将为 Glance 镜像注册一个特殊的下载处理程序。
只有当虚拟机被调度到节点并且所需的 Glance 镜像尚未存在于本地 libvirt 镜像缓存中时,才会调用此下载处理程序。它将执行操作系统原生的 ‘rbd export’ 命令,使用 privsep,以便执行下载操作,而不是使用 Glance HTTP API。
基于方案的下载处理程序机制先前作为插件点可用,现在已被弃用,以及 allowed_direct_url_schemes 配置选项。这项工作将通过将基于方案的支持移动到 nova.images.glance 模块本身,取消弃用 allowed_direct_url_schemes 配置,并删除旧的 nova.images.download 插件点来结束该弃用。
Glance 模块过去在使用基于方案的模块时也从不执行镜像签名验证。由于我们将此移动到核心代码中,我们也将修复此问题,以便基于方案的镜像像所有其他镜像一样被验证。
备选方案¶
虚拟机根磁盘可以直接在 Ceph 中运行,因为这些虚拟机根磁盘是 Glance 镜像的 COW 克隆,也位于 Ceph 中,因此创建速度很快。但是,从 Ceph 运行虚拟机根磁盘会给正在运行的虚拟机引入额外的延迟,并无谓地浪费网络带宽和 Ceph IOPS。此特定功能是在 Mitaka 中添加的,但针对不同的用例,即虚拟机根磁盘保留在 Ceph 中,而不是作为 qcow2 本地磁盘运行。
另一种选择是继续使用现有方法。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
如建议,没有新的配置项,只是现有配置项的配置。
以下配置选项是必需的,以确保 qcow2 本地镜像从 Ceph 下载并在本地计算主机上缓存
在 Glance API 节点中的 glance-api.conf 中
DEFAULT.show_image_direct_url=true
在 Nova 计算节点中的 nova.conf 中
DEFAULT.force_raw_images=false
libvirt.images_type=qcow2
libvirt.images_rbd_ceph_conf=<ceph_config_file>
libvirt.rbd_user=<ceph_user_name>
glance.allowed_direct_url_schemes = rbd
展望未来,可能希望在 nova.conf 的 libvirt 部分创建额外的条目,用于此功能,因为当前实现假定 rbd_user 将可以访问 Glance 镜像。这可能取决于 Ceph 存储池权限的配置方式而有所不同。
开发人员影响¶
在 Queens 中,allowed_direct_url_schemes 选项已被弃用。此功能的提议实现将停止该选项的弃用,我们需要“取消弃用”它。
升级影响¶
无
实现¶
负责人¶
- 主要负责人
Jiri Suchomel <jiri.suchomel@suse.com>
功能联络人¶
- 功能联络人
Dan Smith (danms)
工作项¶
重构现有的内部树外实现,并将其完全集成到当前代码库中
编写实现测试
如果需要新功能,请更新管理指南,描述如何设置配置。
依赖项¶
无
测试¶
单元测试
添加一个实验性的按需队列作业,该作业使用 Ceph 和本地 qcow2 镜像,并启用了“直接从 rbd”功能
文档影响¶
管理指南应更新,以指出此用例以及它与 Ceph 原生快照功能的不同之处。一个好的记录位置可能是
参考资料¶
http://lists.openstack.org/pipermail/openstack-dev/2018-May/131002.html
http://lists.openstack.org/pipermail/openstack-operators/2018-June/015384.html
历史¶
发布名称 |
描述 |
|---|---|
Victoria |
引入 |