第 11 章 将缓存 glance 镜像预缓存到 nova


当您将 OpenStack Compute 配置为使用本地临时存储时,将缓存 glance 镜像来快速部署实例。如果实例所需的镜像尚未缓存,则在创建实例时,它将下载到 Compute 节点的本地磁盘。

下载 glance 镜像的过程需要一些时间,具体取决于镜像大小和网络特征,如带宽和延迟。

如果您试图启动实例,且镜像在本地的 Ceph 集群上不可用,则启动实例将失败,并显示以下信息:

Build of instance 3c04e982-c1d1-4364-b6bd-f876e399325b aborted: Image 20c5ff9d-5f54-4b74-830f-88e78b9999ed is unacceptable: No image locations are accessible
Copy to Clipboard Toggle word wrap

您在 Compute 服务日志中看到以下内容:

'Image %s is not on my ceph and [workarounds]/ never_download_image_if_on_rbd=True; refusing to fetch and upload.',
Copy to Clipboard Toggle word wrap

由于 nova.conf 配置文件中的一个参数(名为 never_download_image_if_on_rbd)对于 DCN 部署被默认设为 true,则实例会启动失败。您可以使用 heat 参数 NovaDisableImageDownloadToRbd 来控制这个值,您可以在 dcn-storage.yaml 文件中找到。

如果在部署 overcloud 之前将 NovaDisableImageDownloadToRbd 的值设置为 false,则会出现以下内容:

  • 如果计算服务(nova)在本地不可用,则会自动流传输 中央位置 可用的镜像。
  • 您不会在 glance 镜像中使用 COW 副本。
  • Compute (nova)存储可能会包含同一镜像的多个副本,具体取决于使用它的实例数量。
  • 您可以同时向 中央位置 和 nova 存储池饱和。

红帽建议将这个值设置为 true,并确保在启动实例前在本地提供所需的镜像。有关为边缘提供镜像的更多信息,请参阅将镜像复制到新站点

对于本地镜像,您可以使用 tripleo_nova_image_cache.yml ansible playbook 来预缓存通常用于部署的镜像或镜像,从而加快创建虚拟机。

11.1. 运行 tripleo_nova_image_cache.yml ansible playbook

先决条件

  • shell 环境中正确的 API 的身份验证凭据。

在每个步骤中提供的命令之前,您必须确保提供正确的身份验证文件。

流程

  1. 为您的 overcloud 堆栈创建一个 ansible 清单目录:

    $ mkdir inventories
    
    $ find ~/overcloud-deploy/*/config-download \
      -name tripleo-ansible-inventory.yaml |\
      while read f; do cp $f inventories/$(basename $(dirname $f)).yaml; done
    Copy to Clipboard Toggle word wrap
  2. 创建您要预缓存的镜像 ID 列表:

    1. 检索可用镜像的完整列表:

      $ source centralrc
      
      $ openstack image list
      +--------------------------------------+---------+--------+
      | ID                                   | Name    | Status |
      +--------------------------------------+---------+--------+
      | 07bc2424-753b-4f65-9da5-5a99d8383fe6 | image_0 | active |
      | d5187afa-c821-4f22-aa4b-4e76382bef86 | image_1 | active |
      +--------------------------------------+---------+--------+
      Copy to Clipboard Toggle word wrap
    2. 创建名为 nova_cache_args.yml 的 ansible playbook 参数文件,并添加您要预缓存的镜像 ID:

      ---
      tripleo_nova_image_cache_images:
        - id: 07bc2424-753b-4f65-9da5-5a99d8383fe6
        - id: d5187afa-c821-4f22-aa4b-4e76382bef86
      Copy to Clipboard Toggle word wrap
  3. 运行 tripleo_nova_image_cache.yml ansible playbook:

    $ source centralrc
    
    $ ansible-playbook -i inventories \
    --extra-vars "@nova_cache_args.yml" \
    /usr/share/ansible/tripleo-playbooks/tripleo_nova_image_cache.yml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat