4.2. 上传、导入和管理镜像
管理您上传、导入或存储在 OpenShift (RHOSO)镜像服务(glance)上的镜像的属性和格式。
4.2.1. 将镜像上传到镜像服务 复制链接链接已复制到粘贴板!
您可以使用 openstack image create 命令和- property 选项,将镜像上传到 OpenStack Image 服务(glance)。
流程
使用
openstack image create命令和property选项上传镜像。例如:
$ openstack image create --name <name> \ --is-public true --disk-format <qcow2> \ --container-format <bare> \ --file </path/to/image> \ --property <os_version>=<11.10>-
将
<name> 替换为您的镜像的描述性名称。 -
将
<disk-format> 替换为以下磁盘格式之一: none, ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso, ploop。 -
将
<container-format> 替换为以下容器格式之一: none, ami, ari, aki, bare, ovf, ova, docker。 -
将
</path/to/image> 替换为您的镜像文件的文件路径。 -
将
<os_version> 和 <11.10> 替换为您要与镜像关联的属性的键值对。您可以多次使用--property选项和您要与您的镜像关联的不同的键值对。
-
将
4.2.2. 镜像服务镜像导入方法 复制链接链接已复制到粘贴板!
您可以使用以下方法将镜像导入到镜像服务(glance):
-
使用
web-download(默认)方法从 URI 导入镜像。 -
使用
copy-image方法将现有镜像复制到部署中的其他镜像服务后端。只有在部署中启用了多个镜像服务后端时,才使用此导入方法。
默认启用 web-download 方法,但管理员配置其他导入方法。您可以运行 openstack image import info 命令来列出可用的导入选项。
4.2.2.1. 从远程 URI 导入镜像 复制链接链接已复制到粘贴板!
您可以使用 web-download 镜像导入方法将镜像从远程 URI 复制到 OpenStack Image 服务(glance)。
镜像服务 web-download 方法使用两阶段过程来执行导入:
-
web-download方法创建镜像记录。 -
web-download方法从指定的 URI 检索镜像。
URI 取决于可选的 allowlist 和 blocklist 过滤。
如果在 OpenShift (RHOSO)部署的 Red Hat OpenStack Services 中启用了 Inject Image Metadata 插件,则该插件可能会将元数据属性注入镜像。这些元数据属性决定在哪些 Compute 节点上启动镜像实例。
流程
创建镜像并指定要导入的镜像的 URI:
$ glance image-create-via-import \ --container-format <container_format> \ --disk-format <disk_format> \ --name <name> \ --import-method web-download \ --uri <uri>-
将
<container_format> 替换为以下容器格式之一: none, ami, ari, aki, bare, ovf, ova, docker -
将
<disk_format> 替换为以下磁盘格式之一: none, ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso, ploop。 -
将
<name> 替换为您的镜像的描述性名称。 -
将
<uri> 替换为您的镜像的 URI。
-
将
验证
检查镜像的可用性:
$ openstack image show <image-id>-
将
<image-id> 替换为您在镜像创建过程中提供的镜像 ID。
-
将
4.2.2.2. 从本地卷导入镜像 复制链接链接已复制到粘贴板!
glance-direct 镜像导入方法创建镜像记录,它会生成镜像 ID。从本地卷将镜像上传到镜像服务(glance)时,镜像将存储在暂存区域中,并在通过任何配置的检查时变为活动状态。
在高可用性(HA)配置中使用时,glance-direct 方法需要一个共享的暂存区域。如果您使用 glance-direct 导入方法上传镜像,如果共享暂存区域不存在,上传可能会在 HA 环境中失败。在 HA 主动环境中,API 调用分布到镜像服务控制器。下载 API 调用可以发送到与 API 调用不同的控制器,以上传镜像。
glance-direct 镜像导入方法使用三个不同的调用来导入镜像:
-
OpenStack 镜像创建 -
OpenStack 镜像阶段 -
OpenStack 镜像导入
您可以使用 glance image-create-via-import 命令在一个命令中执行所有三个 glance-direct 调用。
流程
使用
glance image-create-via-import命令导入本地镜像:$ glance image-create-via-import \ --container-format <container-format> \ --disk-format <disk-format> \ --name <name> \ --file </path/to/image>-
将
<container-format> 替换为以下容器格式之一: none, ami, ari, aki, bare, ovf, ova, docker -
将
<disk-format> 替换为以下磁盘格式之一: none, ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso, ploop。 -
将
<name> 替换为您的镜像的描述性名称。 将
</path/to/image> 替换为您的镜像文件的文件路径。当镜像从暂存区域移到后端存储位置时,会列出镜像。但是,可能需要过些时间,镜像才会变为活动状态。
-
将
验证
检查镜像的可用性:
$ openstack image show <image-id>-
将
<image-id> 替换为您在镜像创建过程中提供的镜像 ID。
-
将
4.2.3. 转换镜像的格式 复制链接链接已复制到粘贴板!
将镜像导入到镜像服务(glance)时,如果管理员配置了 Image Conversion 插件,则可以在 OpenShift (RHOSO)部署中为 Red Hat OpenStack Services (RHOSO)部署中的镜像配置了首选格式,则可以将镜像转换为不同的格式。
例如,如果您将 QCOW2 镜像导入到镜像服务,并且 Image Conversion 插件被配置为 RAW 的首选格式,则 QCOW2 镜像会在导入时转换为 RAW 格式。
您只能在导入镜像时触发镜像转换。上传镜像时不会运行它。
当您将镜像导入到镜像服务时,镜像的位以特定格式存储在临时位置。当您激活 Image Conversion 插件时,镜像将转换为目标格式,并移到最终存储目的地。任务完成后,镜像服务会删除临时位置。镜像服务不会保留您初始上传的格式。
流程
使用
web-download或glance-direct导入方法转换镜像格式:使用带有
web-download的glance image-create-via-import命令转换格式:$ glance image-create-via-import \ --disk-format <qcow2> \ --container-format <bare> \ --name <name> \ --visibility public \ --import-method web-download \ --uri __<http://server/image.qcow2>__-
将
<disk-format> 替换为以下磁盘格式之一: none, ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso, ploop。 -
将
<container-format> 替换为以下容器格式之一: none, ami, ari, aki, bare, ovf, ova, docker -
将
<name> 替换为您的镜像的描述性名称。 -
将
<http://server/image.qcow2> 替换为您的镜像的 URI。
-
将
使用
glance-direct镜像导入方法转换格式:$ glance image-create-via-import \ --disk-format <qcow2> \ --container-format <bare> --name <name> --visibility public --file <local_file.qcow2>-
将
<local_file.qcow2> 替换为您的镜像文件。
-
将
4.2.3.1. 手动将镜像转换为 RAW 格式 复制链接链接已复制到粘贴板!
要从 Red Hat Ceph Storage 中存储的镜像启动实例,镜像格式必须是 RAW。如果您的管理员在 OpenShift (RHOSO)部署中为 Red Hat OpenStack Services 启用了 Image Conversion 插件,则您的 QCOW2 镜像会在将 QCOW2 镜像导入到镜像服务时自动转换为 RAW 格式。或者,您可以手动转换镜像。
流程
当您将镜像转换为 RAW 格式时,RAW 镜像的大小会大于原始 QCOW2 镜像文件。在转换前运行以下命令以确定最终 RAW 镜像大小:
$ qemu-img info <image_id>.qcow2-
将
<image_id> 替换为 QCOW2 镜像的 ID。
-
将
将镜像从 QCOW2 转换为 RAW 格式:
$ qemu-img convert -p -f qcow2 -O raw <image_id>.qcow2 <image_id>.raw
4.2.3.2. 以 RAW 格式存储镜像 复制链接链接已复制到粘贴板!
启用 GlanceImageImportPlugins 参数后,运行以下命令以 RAW 格式存储之前创建的镜像:
$ glance image-create-via-import \
--disk-format qcow2 \
--container-format bare \
--name <name> \
--visibility public \
--import-method web-download \
--uri <http://server/image.qcow2>
-
将 &
lt;name> 替换为镜像名称;这是openstack image list中显示的名称。 -
将
<http://server/image.qcow2> 替换为 QCOW2 镜像的位置和文件名。
这个命令会创建镜像记录,并使用 web-download 方法导入它。
4.2.4. 更新镜像属性 复制链接链接已复制到粘贴板!
您可以使用 openstack image set 命令和- property 选项更新存储在镜像服务(glance)中的镜像属性。
流程
使用
openstack image set命令和--property选项来更新镜像。例如:
$ openstack image set <image-id> \ --property <architecture>=<x86_64>-
将
<image-id> 替换为您要更新的镜像 ID。 -
将 &
lt;architecture> 和替换为您要为镜像更新的属性的键值对。您可以多次使用--property选项和您要与您的镜像关联的不同的键值对。
-
将
4.2.5. 隐藏或取消隐藏镜像 复制链接链接已复制到粘贴板!
您可以从提供给云用户的普通列表中隐藏公共镜像。例如,您可以隐藏过时的 CentOS 7 镜像,仅显示最新版本来简化用户体验。默认情况下,项目管理员和项目成员可以删除镜像。云用户可以发现和使用隐藏的镜像。
要创建隐藏镜像,请将-- hidden 参数添加到 openstack image create 命令中。
流程
隐藏镜像:
$ openstack image set <image_id> --hidden 'true'解放镜像:
$ openstack image set <image_id> --hidden 'false'列出隐藏的镜像:
$ openstack image list --hidden 'true'
4.2.6. 从镜像服务中删除镜像 复制链接链接已复制到粘贴板!
使用 openstack image delete 命令删除您不需要存储在镜像服务(glance)中的一个或多个镜像。默认情况下,项目管理员和项目成员可以删除镜像。
流程
删除一个或多个镜像:
$ openstack image delete <image-id> [<image-id> ...]将
<image-id> 替换为您要删除的镜像的 ID。警告openstack image delete命令永久删除镜像以及镜像的所有副本,以及镜像实例和元数据。