管理镜像¶
云运营商为用户分配角色。角色决定了谁可以上传和管理镜像。运营商可能会将镜像上传和管理权限限制为云管理员或运营商。
您可以通过 glance image-create 或 glance image-create-via-import 命令或 Image 服务 API 上传镜像。您可以使用 glance 客户端进行镜像管理。它提供了机制来执行 Images API v2 支持的所有操作。
上传镜像后,您无法更改内容,但可以更新元数据。
有关镜像创建的详细信息,请参阅 虚拟机镜像指南。
列出或获取镜像的详细信息 (glance)¶
要获取镜像列表并获取单个镜像的更多详细信息,请使用 glance image-list 和 glance 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-create 和 image-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>镜像可访问性的范围。有效值:
public、private、community、shared--kernel-id <KERNEL_ID>存储在 Glance 中的镜像的 ID,该镜像应在启动 AMI 风格的镜像时用作内核。
--os-version <OS_VERSION>发行版指定的操作系统版本
--disk-format <DISK_FORMAT>磁盘的格式。镜像进入
active状态后,可能无法修改。有效值:ami、ari、aki、vhd、vhdx、vmdk、raw、qcow2、vdi、iso、ploop--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状态后,可能无法修改。有效值:ami、ari、aki、bare、ovf、ova、docker、compressed--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_disktype 和 vmware_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 |
|
xen |
|
VIF 模型值
libvirt_type 设置 |
支持的模型值 |
|---|---|
qemu 或 kvm |
|
xen |
|
vmware |
|
注意
默认情况下,硬件属性是从镜像属性检索的。但是,如果此信息不可用,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日志文件是否有错误消息。