4.3. 将镜像导入到多个存储

使用可组合镜像导入工作流,将镜像数据导入到多个 Ceph Storage 集群中。您可以将镜像导入到本地文件系统上或通过 Web 服务器可用的镜像服务(glance)中。

如果从 web 服务器导入镜像,则可以一次将镜像导入到多个存储中。如果 web 服务器上没有镜像,您可以将镜像从本地文件系统导入到中央存储中,然后将其复制到其他存储中。如需更多信息,请参阅 将现有镜像复制到多个存储

使用镜像服务命令行客户端进行镜像管理。

重要

始终在中央站点上存储镜像副本,即使中央位置上没有使用该镜像的实例。有关将镜像导入到镜像服务的更多信息,请参阅 分布式计算节点和存储部署指南

4.3.1. 管理镜像导入失败

您可以使用 --allow-failure 参数管理镜像导入操作的失败:

  • 如果 --allow-failure 参数的值为 true,则第一次存储成功导入数据后镜像状态将 变为活动状态。这是默认设置。您可以使用 os_glance_failed_import 镜像属性查看无法导入镜像数据的存储列表。
  • 如果将 --allow-failure 参数的值设置为 false,则镜像状态仅在所有指定存储成功导入数据后 变为活动状态。导入镜像数据的任何存储失败会导致镜像状态 失败。镜像没有导入到任何指定存储中。

4.3.2. 将镜像数据导入到多个存储

由于 --allow-failure 参数的默认设置是 true,因此如果某些存储可以接受,则不需要在命令中包含该参数,无法导入镜像数据。

注意

此流程不需要所有存储才能成功导入镜像数据。

流程

  • 将镜像数据导入多个指定的存储:

    $ glance image-create-via-import \
    --container-format bare \
    --name IMAGE-NAME \
    --import-method web-download \
    --uri URI \
    --stores STORE1,STORE2,STORE3
    • IMAGE-NAME 替换为您要导入的镜像的名称。
    • 使用镜像的 URI 替换 URI。
    • STORE1STORE2STORE3 替换为您要导入镜像数据的存储名称。
    • 或者,将 --stores 替换为 --all-stores true,以将镜像上传到所有存储。
注意

glance image-create-via-import 命令会自动将 QCOW2 镜像转换为 RAW 格式,仅适用于 web-download 方法。glance-direct 方法可用,但仅适用于带有配置的共享文件系统的部署。

4.3.3. 在不失败的情况下将镜像数据导入到多个存储中

此流程要求所有存储成功导入镜像数据。

流程

  1. 将镜像数据导入多个指定的存储:

    $ glance image-create-via-import \
    --container-format bare \
    --name IMAGE-NAME \
    --import-method web-download \
    --uri URI \
    --stores STORE1,STORE2
    • IMAGE-NAME 替换为您要导入的镜像的名称。
    • 使用镜像的 URI 替换 URI。
    • STORE1STORE2STORE3 替换为您要复制镜像数据的存储名称。
    • 或者,将 --stores 替换为 --all-stores true,以将镜像上传到所有存储。

      注意

      --allow-failure 参数设置为 false 时,镜像服务不会忽略无法导入镜像数据的存储。您可以使用镜像属性 os_glance_failed_import 来查看失败的存储列表。如需更多信息,请参阅 检查镜像导入操作的进度

  2. 验证镜像数据是否已添加到特定存储中:

    $ glance image-show IMAGE-ID | grep stores

    使用原始现有镜像的 ID 替换 IMAGE-ID

    输出显示以逗号分隔的存储列表。

4.3.4. 将镜像数据导入到单个存储中

您可以将镜像数据导入到单个存储中。

流程

  1. 将镜像数据导入到单个存储中:

    $ glance image-create-via-import \
    --container-format bare \
    --name IMAGE-NAME \
    --import-method web-download \
    --uri URI \
    --store STORE
    • IMAGE-NAME 替换为您要导入的镜像的名称。
    • 使用镜像的 URI 替换 URI。
    • STORE 替换为您要将镜像数据复制到的存储名称。

      注意

      如果您没有在命令中包括 --stores--all-stores--store 的选项,则镜像服务会在中央存储中创建镜像。

  2. 验证镜像数据是否已添加到特定的存储中:

    $ glance image-show IMAGE-ID | grep stores

    使用原始现有镜像的 ID 替换 IMAGE-ID

    输出显示以逗号分隔的存储列表。

4.3.5. 检查镜像导入操作的进度

可组合镜像导入工作流将镜像数据按顺序导入存储。镜像的大小、存储数量以及中央站点和边缘站点之间的网络速度会影响镜像导入操作所需的时间。

您可以通过查看两个镜像属性来跟踪镜像导入的进度,这些属性会出现在镜像导入操作过程中发送的通知中:

  • os_glance_importing_to_stores 属性列出了尚未导入镜像数据的存储。在导入开始时,所有请求的存储都显示在列表中。每次存储成功导入镜像数据时,镜像服务会从列表中删除存储。
  • os_glance_failed_import 属性列出了无法导入镜像数据的存储。此列表在镜像导入操作开始时为空。
注意

在以下步骤中,环境有三个 Ceph 存储集群: 中央存储 和两个存储在边缘、dcn0dcn1

流程

  1. 验证镜像数据是否已添加到特定存储中:

    $ glance image-show IMAGE-ID

    使用原始现有镜像的 ID 替换 IMAGE-ID

    输出显示以逗号分隔的存储列表,类似以下示例片断:

    | os_glance_failed_import       |
    | os_glance_importing_to_stores | central,dcn0,dcn1
    | status                        | importing
  2. 监控镜像导入操作的状态。当您使用 watch 命令前有一个命令时,命令输出每两秒钟刷新一次。

    $ watch glance image-show IMAGE-ID

    使用原始现有镜像的 ID 替换 IMAGE-ID

    当镜像导入操作进行时,操作的状态会改变:

    | os_glance_failed_import       |
    | os_glance_importing_to_stores | dcn0,dcn1
    | status                        | importing

    显示镜像无法导入的输出结果类似以下示例:

    | os_glance_failed_import       | dcn0
    | os_glance_importing_to_stores | dcn1
    | status                        | importing

    操作完成后,状态会变为 active :

    | os_glance_failed_import       | dcn0
    | os_glance_importing_to_stores |
    | status                        | active