2.2. 将镜像导入多个存储

使用可互操作的镜像导入工作流,将镜像数据导入到多个 Ceph Storage 集群中。您可以将镜像导入到本地文件系统上可用的镜像服务,或者通过 web 服务器导入。

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

重要

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

2.2.1. 管理镜像导入失败

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

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

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

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

注意

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

流程

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

    $ 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。
    • STORE1、 STORE2STORE3 替换为您要导入镜像数据的存储名称。
    • 或者,将 --stores 替换为 --all-stores true,将镜像上传到所有存储。
注意

glance image-create-via-import 命令自动将 QCOW2 镜像转换为 RAW 格式,只能使用 web-download 方法。glance-direct 方法可用,但只能在使用配置的共享文件系统的部署中才起作用。

2.2.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。
    • STORE1、 STORE2STORE3 替换为要复制镜像数据的存储名称。
    • 或者,将 --stores 替换为 --all-stores true,将镜像上传到所有存储。

      注意

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

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

    $ glance image-show IMAGE-ID | grep stores

    IMAGE-ID 替换为原始现有镜像的 ID。

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

2.2.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

    IMAGE-ID 替换为原始现有镜像的 ID。

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

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

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

您可以通过查看两个镜像属性来跟踪镜像导入的进度,该属性会显示在镜像导入操作期间发送的通知中:

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

在以下流程中,环境中有三个 Ceph Storage 集群: 中央存储 和两个存储在边缘的 dcn0dcn1

流程

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

    $ glance image-show IMAGE-ID

    IMAGE-ID 替换为原始现有镜像的 ID。

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

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

    $ watch glance image-show IMAGE-ID

    IMAGE-ID 替换为原始现有镜像的 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