管理镜像

云运营商为用户分配角色。角色决定了谁可以上传和管理镜像。运营商可能会将镜像上传和管理权限限制为云管理员或运营商。

您可以通过 glance image-createglance image-create-via-import 命令或 Image 服务 API 上传镜像。您可以使用 glance 客户端进行镜像管理。它提供了机制来执行 Images API v2 支持的所有操作。

上传镜像后,您无法更改内容,但可以更新元数据。

有关镜像创建的详细信息,请参阅 虚拟机镜像指南

列出或获取镜像的详细信息 (glance)

要获取镜像列表并获取单个镜像的更多详细信息,请使用 glance image-listglance image-show 命令。

$ glance image-list
+--------------------------------------+---------------------------------+
| ID                                   | Name                            |
+--------------------------------------+---------------------------------+
| dfc1dfb0-d7bf-4fff-8994-319dd6f703d7 | cirros-0.3.5-x86_64-uec         |
| a3867e29-c7a1-44b0-9e7f-10db587cad20 | cirros-0.3.5-x86_64-uec-kernel  |
| 4b916fba-6775-4092-92df-f41df7246a6b | cirros-0.3.5-x86_64-uec-ramdisk |
| d07831df-edc3-4817-9881-89141f9134c3 | myCirrosImage                   |
+--------------------------------------+---------------------------------+
$ glance image-show d07831df-edc3-4817-9881-89141f9134c3
+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | 443b7623e27ecf03dc9e01ee93f67afe                     |
| container_format | ami                                                  |
| created_at       | 2016-08-11T15:07:26Z                                 |
| disk_format      | ami                                                  |
| file             | /v2/images/d07831df-edc3-4817-9881-89141f9134c3/file |
| id               | d07831df-edc3-4817-9881-89141f9134c3                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | myCirrosImage                                        |
| os_hash_algo     | sha512                                               |
| os_hash_value    | 6513f21e44aa3da349f248188a44bc304a3653a04122d8fb4535 |
|                  | 423c8e1d14cd6a153f735bb0982e2161b5b5186106570c17a9e5 |
|                  | 8b64dd39390617cd5a350f78                             |
| os_hidden        | False                                                |
| owner            | d88310717a8e4ebcae84ed075f82c51e                     |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 13287936                                             |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2016-08-11T15:20:02Z                                 |
| virtual_size     | None                                                 |
| visibility       | private                                              |
+------------------+------------------------------------------------------+

在查看镜像列表时,您还可以使用 grep 过滤列表,如下所示

$ glance image-list | grep 'cirros'
| dfc1dfb0-d7bf-4fff-8994-319dd6f703d7 | cirros-0.3.5-x86_64-uec         |
| a3867e29-c7a1-44b0-9e7f-10db587cad20 | cirros-0.3.5-x86_64-uec-kernel  |
| 4b916fba-6775-4092-92df-f41df7246a6b | cirros-0.3.5-x86_64-uec-ramdisk |

创建或更新镜像 (glance)

要创建镜像,请使用 glance image-create

$ glance image-create --name imageName

要更新镜像,您必须指定其 ID 并使用 glance image-update

$ glance image-update --property x="y" <IMAGE_ID>

以下列表解释了在使用 image-createimage-update 命令时可以设置或修改的常用属性。有关更多信息,请参阅 OpenStack 有用的镜像属性

--architecture <ARCHITECTURE>

https://docs.openstack.org/glance/2025.2/admin/useful-image-properties.html 中指定的操作系统架构

--protected [True|False]

如果为 true,则镜像将无法删除。

--name <NAME>

镜像的描述性名称

--instance-uuid <INSTANCE_UUID>

元数据,可用于记录此镜像与哪个实例关联。 (仅供参考,不会创建实例快照。)

--min-disk <MIN_DISK>

启动镜像所需的磁盘空间量(以 GB 为单位)。

--visibility <VISIBILITY>

镜像可访问性的范围。有效值:publicprivatecommunityshared

--kernel-id <KERNEL_ID>

存储在 Glance 中的镜像的 ID,该镜像应在启动 AMI 风格的镜像时用作内核。

--os-version <OS_VERSION>

发行版指定的操作系统版本

--disk-format <DISK_FORMAT>

磁盘的格式。镜像进入 active 状态后,可能无法修改。有效值:amiariakivhdvhdxvmdkrawqcow2vdiisoploop

--os-distro <OS_DISTRO>

https://docs.openstack.org/glance/2025.2/admin/useful-image-properties.html 中指定的操作系统分发版的常用名称

--owner <OWNER>

镜像的所有者。通常,可能仅由管理员设置。

--ramdisk-id <RAMDISK_ID>

存储在 Glance 中的镜像的 ID,该镜像应在启动 AMI 风格的镜像时用作 ramdisk。

--min-ram <MIN_RAM>

启动镜像所需的内存量(以 MB 为单位)。

--container-format <CONTAINER_FORMAT>

容器的格式。镜像进入 active 状态后,可能无法修改。有效值:amiariakibareovfovadockercompressed

--hidden [True|False]

如果为 true,则镜像不会出现在默认镜像列表响应中。

--property <key=value>

与镜像关联的任意属性。可以多次使用。

--remove-property key

要从镜像中删除的任意属性的名称。

以下示例显示了用于上传 CentOS 6.3 镜像(qcow2 格式)并将其配置为公开访问的命令

$ glance image-create --disk-format qcow2 --container-format bare \
  --visibility public --file ./centos63.qcow2 --name centos63-image

以下示例显示了如何使用描述磁盘总线、CD-ROM 总线和 VIF 模型的属性更新现有镜像

注意

当您将 OpenStack 与 VMware vCenter Server 配合使用时,需要使用 glance image-create 指定 vmware_disktypevmware_adaptertype 属性。此外,我们建议您设置 hypervisor_type="vmware" 属性。有关更多信息,请参阅 OpenStack 配置参考中的 带有 VMware vSphere 的镜像

$ glance image-update \
    --property hw_disk_bus=scsi \
    --property hw_cdrom_bus=ide \
    --property hw_vif_model=e1000 \
    <Image-ID>

当前,libvirt 虚拟化工具根据配置的 hypervisor 类型(libvirt_type/etc/nova/nova.conf 文件中)确定磁盘、CD-ROM 和 VIF 设备模型。为了获得最佳性能,libvirt 默认使用 virtio 作为磁盘和 VIF(NIC)模型。这种方法的缺点是无法运行缺少 virtio 驱动程序的操作系统,例如 BSD、Solaris 以及 Linux 和 Windows 的旧版本。

如果您指定了不受支持的磁盘或 CD-ROM 总线模型,请参阅 磁盘和 CD-ROM 总线模型值表。如果您指定了不受支持的 VIF 模型,则实例将无法启动。请参阅 VIF 模型值表

有效模型值取决于 libvirt_type 设置,如下表所示。

磁盘和 CD-ROM 总线模型值

libvirt_type 设置

支持的模型值

qemu 或 kvm

  • fdc

  • ide

  • scsi

  • sata

  • virtio

  • usb

xen

  • ide

  • xen

VIF 模型值

libvirt_type 设置

支持的模型值

qemu 或 kvm

  • e1000

  • ne2k_pci

  • pcnet

  • rtl8139

  • virtio

xen

  • e1000

  • netfront

  • ne2k_pci

  • pcnet

  • rtl8139

vmware

  • VirtualE1000

  • VirtualPCNet32

  • VirtualVmxnet

注意

默认情况下,硬件属性是从镜像属性检索的。但是,如果此信息不可用,libosinfo 数据库为这些值提供了替代来源。

如果来宾操作系统不在数据库中,或者禁用 libosinfo 的使用,则使用默认系统值。

用户可以在镜像属性中设置操作系统 ID 或 short-id。例如

$ glance image-update --property short-id=fedora23 \
  <Image-ID>

从 ISO 镜像创建镜像

您可以将 ISO 镜像上传到 Image 服务 (glance)。随后,您可以使用 Compute 启动 ISO 镜像。

在 Image 服务中,运行以下命令

$ glance image-create --name ISO_IMAGE --file IMAGE.iso \
  --disk-format iso --container-format bare

可选地,要确认 Image 服务中的上传,请运行

$ glance image-list

排查镜像创建问题

如果您在 Image 服务或 Compute 中创建镜像时遇到问题,以下信息可能有助于您排查创建过程。

  • 确保您使用的 qemu 版本为 0.14 或更高版本。较早版本的 qemu 会导致 unknown option -s 错误消息出现在 /var/log/nova/nova-compute.log 文件中。

  • 检查 /var/log/nova/nova-api.log/var/log/nova/nova-compute.log 日志文件是否有错误消息。