有用的镜像属性

您可以设置镜像属性,这些属性可以被其他服务使用,以影响这些其他服务的行为。例如

  • 镜像属性可用于覆盖为 Nova flavor 定义的特定行为

  • 镜像属性可用于影响 Nova 调度器的行为

  • 镜像属性可用于影响特定的 Nova hypervisor 的行为

  • 镜像属性可用于向 Ironic 提供额外信息(即使未使用 Nova 时)

使用镜像属性

需要记住的一些重要事项

  • glance-api.conf 设置 image_property_quota 应该足够高,以允许任何额外的所需属性。(默认值为 128。)

  • 您可以使用 Glance 属性保护来控制对特定镜像属性的访问,如果需要的话。有关更多信息,请参阅本指南的 属性保护 部分。

  • Glance 保留使用 os_glance 前缀命名的属性,供自身使用,并将拒绝 API 用户设置或更改它们的操作。

  • 您可以使用插件来执行可互操作的镜像导入过程,以在导入到 Glance 的非管理员镜像上设置特定属性。有关更多信息,请参阅 将现有镜像复制到多个存储中。有关此插件解决的使用案例的讨论,请参阅原始规范 自动向非管理员镜像注入元数据

  • 默认情况下,Nova ImagePropertiesFilter 在 Compute Service 中启用,它使用镜像属性来确定将构建正确调度到计算主机的属性。有关更多信息,请参阅 Nova 配置指南的 计算调度器 部分。

  • Nova 有一个设置,non_inheritable_image_properties,它允许您指定从启动镜像的镜像中哪些镜像属性将不会传播到该镜像的快照镜像。有关更多信息,请参阅 Nova 配置指南的 配置选项 部分。

  • 某些 Nova 识别的属性可能除非在服务器 flavor 中启用了相应的属性,否则不会生效。例如,hw_rng_model 镜像属性只有在 Nova flavor 配置为在 flavor 的 extra_specs 中将 hw_rng:allowed 设置为 True 时才会生效。

  • 在混合 hypervisor 环境中,Compute Service 使用 hypervisor_type 镜像属性将镜像与正确的 hypervisor 类型匹配。

    根据您的 Nova 安装中使用的 hypervisor,可能还有其他镜像属性,这些 hypervisor 可以使用它们来影响其行为。有关更多信息,请阅读 Nova 配置指南的 Hypervisors 部分中有关您的 hypervisor 的配置信息。

    特别是,VMware hypervisor 驱动程序要求设置特定的镜像属性才能实现最佳功能。有关更多信息,请参阅 Nova 配置指南的 VMware vSphere 部分。

镜像属性键和值

以下是有用的镜像属性及其预期值列表。

architecture
类型:

str

hypervisor 必须支持的 CPU 架构。例如,x86_64armppc64。运行 uname -m 以获取机器的架构。我们强烈建议使用 libosinfo 项目 定义的架构数据词汇表来实现此目的。

其中之一

hypervisor_type
类型:

str

hypervisor 类型。请注意,qemu 用于 QEMU 和 KVM hypervisor 类型。

其中之一

  • hyperv

  • ironic

  • lxc

  • qemu

  • uml

  • vmware

  • xen

instance_uuid
类型:

str

对于快照镜像,这是用于创建此镜像的服务器的 UUID。该值必须是有效的服务器 UUID。

img_config_drive
类型:

str

指定镜像是否需要 config drive。

其中之一

  • mandatory

  • optional(如果未指定属性,则为默认值)

img_type
类型:

str

指定镜像的分区类型。默认值为 partition(如果存在 kernel_id / ramdisk_id 属性),否则为 whole-disk

其中之一

  • whole-disk - 带有分区表的镜像。

  • partition - 仅带有根分区的镜像,没有分区表。

注意

此属性当前仅被 Ironic 识别。

kernel_id
类型:

str

存储在镜像服务中的镜像的 ID,该镜像应在启动 AMI 风格的镜像时用作内核。该值必须是有效的镜像 ID

os_admin_user
类型:

str

具有管理员权限的用户的名称。该值必须是有效的用户名(Linux 来宾的默认值为 root,Windows 来宾的默认值为 Administrator)。

os_distro
类型:

str

操作系统发行版的通用名称(小写)(使用与 libosinfo 项目 相同的词汇表数据)。仅为此字段指定一个已识别的值。列出已弃用的值以帮助您搜索已识别的值。

其中之一

  • arch - Arch Linux。不要使用 archlinuxorg.archlinux

  • centos - 社区企业操作系统。不要使用 org.centosCentOS

  • debian - Debian。不要使用 Debian` ``org.debian

  • fedora - Fedora。不要使用 Fedoraorg.fedoraorg.fedoraproject

  • freebsd - FreeBSD。不要使用 org.freebsdfreeBSDFreeBSD

  • gentoo - Gentoo Linux。不要使用 Gentooorg.gentoo

  • mandrake - Mandrakelinux(MandrakeSoft)发行版。不要使用 mandrakelinuxMandrakeLinux

  • mandriva - Mandriva Linux。不要使用 mandrivalinux

  • mes - Mandriva Enterprise Server。不要使用 mandrivaentmandrivaES

  • msdos - Microsoft Disc Operating System。不要使用 ms-dos

  • netbsd - NetBSD。不要使用 NetBSDorg.netbsd

  • netware - Novell NetWare。不要使用 novellNetWare

  • openbsd - OpenBSD。不要使用 OpenBSDorg.openbsd

  • opensolaris - OpenSolaris。不要使用 OpenSolarisorg.opensolaris

  • opensuse - openSUSE。不要使用 suseSuSE 或 `` org.opensuse``。

  • rocky - Rocky Linux。不要使用 Rockyrockylinux

  • rhel - Red Hat Enterprise Linux。不要使用 redhatRedHatcom.redhat

  • sled - SUSE Linux Enterprise Desktop。不要使用 com.suse

  • ubuntu - Ubuntu。不要使用 Ubuntucom.ubuntuorg.ubuntucanonical

  • windows - Microsoft Windows。不要使用 com.microsoft.serverwindoze

os_version
类型:

str

操作系统版本,由发行版指定。

该值必须是有效的版本号(例如,11.10)。

os_secure_boot
类型:

str

安全启动是一种安全标准。当实例启动时,安全启动首先检查软件,例如固件和操作系统,通过它们的签名,并且仅允许在签名有效时才运行它们。

对于 Hyper-V:镜像必须准备为第 2 代虚拟机。实例还必须包含 hw_machine_type=hyperv-gen2 镜像属性。Linux 来宾还需要提供作为 os_secure_boot_signaturehypervisor_version_requires'>=10.0' 镜像属性提供的启动加载程序的数字签名。

其中之一

  • required - 启用安全启动功能。

  • disabledoptional - (默认,如果未设置属性) 禁用安全启动功能。

os_shutdown_timeout
类型:

int

默认情况下,虚拟机将获得 60 秒时间来执行优雅关机。之后,虚拟机将被关闭。此属性允许覆盖允许客户操作系统干净关机的时间量(单位:秒),然后再进行关机。值为 0(零)表示虚拟机将立即关机,客户操作系统将没有机会进行清理。

ramdisk_id

在启动 AMI 风格的镜像时,应作为 ramdisk 使用的存储在 Image 服务中的镜像的 ID。

该值必须是有效的镜像 ID。

rootfs_uuid

对于全盘镜像(请参阅上面的 img_type),根分区的 UUID。

Ironic 在配置软件 RAID 时会使用此属性。

trait:<trait_name>
类型:

str

Rocky 版本中添加。功能类似于在 flavor extra specs 中指定的 traits。

Traits 允许指定在具有在镜像中指定的 traits 集合的计算节点上构建服务器。这些 traits 与 Placement API 中表示计算节点的资源提供程序相关联。

指定 traits 的语法是 trait:<trait_name>=value,例如

  • trait:HW_CPU_X86_AVX2=required

  • trait:STORAGE_DISK_SSD=required

nova 调度器会将镜像上指定的 required traits 传递给 Placement API,以仅包含可以满足 required traits 的资源提供程序。可以使用 osc-placement plugin 管理资源提供程序的 traits。

即使对于基于卷的实例,如果卷源是具有 traits 的镜像,镜像 traits 也被 nova 调度器使用。

唯一有效的值是 required。任何其他值都是无效的。

其中之一

  • required - <trait_name> 是启动镜像的计算节点上资源提供程序上必需的。

vm_mode
类型:

str

虚拟机模式。这代表用于虚拟机的宿主/客户 ABI(应用程序二进制接口)。

其中之一

  • hvm - 完全虚拟化。这是 QEMU 和 KVM 使用的模式。

  • xen - Xen 3.0 准虚拟化。

  • uml - User Mode Linux 准虚拟化。

  • exe - 容器中的可执行文件。这是 LXC 使用的模式。

hw_cpu_sockets
类型:

int

希望暴露给客户的套接字的首选数量。

仅受 libvirt 驱动程序支持。

hw_cpu_cores
类型:

int

希望暴露给客户的核心的首选数量。

仅受 libvirt 驱动程序支持。

hw_cpu_threads
类型:

int

希望暴露给客户的线程的首选数量。

仅受 libvirt 驱动程序支持。

hw_cpu_policy
类型:

str

用于将实例的虚拟 CPU (vCPU) 固定到宿主机的物理 CPU 核心 (pCPU)。应使用宿主聚合将这些固定实例与未固定的实例分开,因为后者不会遵守前者的资源需求。

仅受 libvirt 驱动程序支持。

其中之一

  • shared - (默认,如果未指定属性) 客户 vCPU 将被允许在宿主 pCPU 上自由浮动,尽管可能会受到 NUMA 策略的限制。

  • dedicated - 客户 vCPU 将严格固定到一组宿主 pCPU。在没有显式 vCPU 拓扑请求的情况下,驱动程序通常将所有 vCPU 作为具有一个核心和一个线程的套接字公开。当严格的 CPU 固定生效时,客户 CPU 拓扑将设置为匹配其固定的 CPU 的拓扑。此选项意味着 1.0 的超卖率。例如,如果一个具有两个 vCPU 的客户固定到一个具有两个线程的单个宿主核心,那么该客户将获得一个套接字、一个核心和两个线程的拓扑。

hw_cpu_thread_policy
类型:

str

通过说明如何在基于同步多线程 (SMT) 架构中使用硬件 CPU 线程来进一步细化 hw_cpu_policy=dedicated。基于 SMT 的架构包括具有 Hyper-Threading 技术的 Intel 处理器。在这些架构中,核心与一个或多个其他核心共享一些组件。此类架构中的核心通常被称为硬件线程,而核心共享组件的核心被称为线程兄弟。

仅受 libvirt 驱动程序支持。

其中之一

  • prefer - (默认,如果未指定属性) 宿主可能具有或不具有 SMT 架构。如果存在 SMT 架构,则优先选择线程兄弟。

  • isolate - 宿主不得具有 SMT 架构,或者必须模拟非 SMT 架构。如果宿主没有 SMT 架构,则每个 vCPU 放置在不同的核心上,如预期。如果宿主具有 SMT 架构 - 也就是说,一个或多个核心具有线程兄弟 - 那么每个 vCPU 放置在不同的物理核心上。其他客户的 vCPU 不会放置在同一核心上。因此,每个利用的核心上的所有线程兄弟(一个)都保证无法使用。

  • require - 宿主必须具有 SMT 架构。每个 vCPU 分配给线程兄弟。如果宿主没有 SMT 架构,则不使用它。如果宿主具有 SMT 架构,但没有足够的具有可用线程兄弟的核心,则调度失败。

hw_cdrom_bus
类型:

str

指定将 CD-ROM 设备连接到的磁盘控制器类型。与 hw_disk_bus 类似。

仅受 libvirt 驱动程序支持。

hw_disk_bus
类型:

str

指定将磁盘设备连接到的磁盘控制器类型。

仅受 libvirt 驱动程序支持。

选项取决于 nova 的 virt_type 配置选项的值。

  • 对于 qemukvmscsivirtioumlxenideusblxc 中的一个。

  • 对于 xenxenide 中的一个。

  • 对于 uml:必须是 uml

  • 对于 lxc:必须是 lxc

  • 对于 parallelsidescsi 中的一个。

hw_firmware_type

指定启动客户机的固件类型。

仅受 libvirt 驱动程序支持。

其中之一

  • bios

  • uefi

hw_firmware_stateless
类型:

bool

指定是否应使用无状态固件启动镜像。如果为 true,则固件配置不会在服务器重新启动后保留。

仅受 libvirt 驱动程序支持。此外,还需要 UEFI 固件。

hw_mem_encryption
类型:

bool

如果可用支持此功能的计算主机,则启用客户机内存的硬件级别加密。有关更多详细信息,请参阅 nova 关于配置 AMD SEV 的文档

仅受具有 KVM/QEMU 超visor 的 libvirt 驱动程序支持。

hw_mem_encryption_model
类型:

str

如果可用支持此功能的计算主机,则使用硬件功能名称来加密客户机内存。有关更多详细信息,请参阅 nova 关于配置 AMD SEV 的文档

仅受具有 KVM/QEMU 超visor 的 libvirt 驱动程序支持。

其中之一

  • amd-sev

  • amd-sev-es

hw_virtio_packed_ring
类型:

bool

启用 Packed VIRT-IO Queue 功能。设置为 true 时,实例将被调度到支持协商打包 virt 队列格式的主机。根据客户机驱动程序,此功能可能启用或禁用。使用它将提高网络 io 的小包性能。仅受 libvirt 驱动程序支持。

hw_pointer_model
类型:

str

输入设备,允许与图形帧缓冲区交互,例如为绝对光标移动提供图形平板电脑。目前仅受 KVM/QEMU 超visor 配置和 VNC 或 SPICE 控制台支持。

仅受 libvirt 驱动程序支持。

其中之一

  • usbtablet

hw_rng_model
类型:

str

将随机数生成器设备添加到镜像的实例。此镜像属性本身并不能保证使用硬件 RNG;它表示可能满足或不满足的偏好。

云管理员可以通过在实例的 flavor 的 extra_specs 中配置设备行为来启用和控制设备行为。默认情况下

  • 生成器设备已禁用。

  • /dev/urandom 用作默认熵源。要指定物理硬件 RNG 设备,请在 nova.conf 文件中使用以下选项

    rng_dev_path=/dev/hwrng
    
  • 必须通过在 flavor 的 extra_specs 中设置 hw_rng:allowed 为 True 来配置 flavor 定义,才能使用硬件随机数生成器。

仅受 libvirt 驱动程序支持。

其中之一

  • virtio

  • 其他受支持的设备。

hw_time_hpet
类型:

bool

为 x86 客户机添加对 High Precision Event Timer (HPET) 的支持,在 libvirt 驱动程序中,当 hypervisor_type=qemuarchitecture=i686architecture=x86_64 时。可以通过设置 hw_time_hpet=true 来启用计时器。默认情况下,HPET 保持禁用状态。

仅受 libvirt 驱动程序支持。

hw_machine_type
类型:

str

对于 libvirt:启用使用指定的机器类型启动 ARM 系统。如果使用 ARM 镜像并且未显式指定其机器类型,则 Compute 使用 virt 机器类型作为 ARMv7 和 AArch64 的默认机器类型。

对于 Hyper-V:指定 Hyper-V 实例是第一代还是第二代 VM。默认情况下,如果未提供该属性,则实例将是第一代 VM。如果镜像专门用于第二代 VM,但未相应提供该属性,则实例将无法启动。

对于 libvirt:可以使用 virsh capabilities 命令查看有效类型(机器类型在 machine 标签中显示)。

对于 hyper-V:可接受的值是 hyperv-gen1hyperv-gen2

仅受 libvirt 和 Hyper-V 驱动程序支持。

os_type
类型:

str

安装在镜像上的操作系统。 libvirt API 驱动程序包含根据镜像的 os_type 参数的值采取不同操作的逻辑。例如,对于 os_type=windows 镜像,它会创建一个基于 FAT32 的交换分区,而不是 Linux 交换分区,并且它会将注入的主机名限制在 16 个字符以内。

仅受 libvirt 驱动程序支持。

其中之一

  • linux

  • windows

hw_scsi_model
类型:

str

启用 VirtIO SCSI (virtio-scsi) 以向计算实例提供块设备访问;默认情况下,实例使用 VirtIO Block (virtio-blk)。VirtIO SCSI 是一种准虚拟化的 SCSI 控制器设备,它提供改进的可扩展性和性能,并支持高级 SCSI 硬件。

仅受 libvirt 驱动程序支持。

其中之一

  • virtio-scsi

hw_serial_port_count
类型:

int

指定应提供的串行端口数。如果 flavor 的 extra_specs 中未设置 hw:serial_port_count,则允许任何计数。如果设置了 hw:serial_port_count,则这将提供默认串行端口计数。允许覆盖默认串行端口计数,但只能使用较低的值。

仅受 libvirt 驱动程序支持。

hw_video_model
类型:

str

呈现给客户机的图形设备模型。 none 会禁用客户机中的图形设备,通常应在 GPU 直通时使用。

其中之一

  • vga

  • cirrus

  • vmvga

  • xen

  • qxl

  • virtio

  • gop

  • none

  • bochs

仅受 libvirt 驱动程序支持。

hw_video_ram
类型:

int

视频图像的最大 RAM,以 MB 为单位。仅当 flavor 的 extra_specs 中设置了 hw_video:ram_max_mb 值且该值高于 hw_video_ram 中设置的值时才使用。

仅受 libvirt 驱动程序支持。

hw_watchdog_action
类型:

str

启用虚拟硬件看门狗设备,如果服务器挂起,则执行指定的操作。看门狗使用 i6300esb 设备(模拟 PCI Intel 6300ESB)。如果未指定 hw_watchdog_action,则禁用看门狗。

仅受 libvirt 驱动程序支持。

其中之一

  • disabled - (默认) 未连接该设备。允许用户禁用镜像的看门狗,即使它已通过镜像的 flavor 启用。

  • reset - 强制重置客户机。

  • poweroff - 强制关闭客户机。

  • pause - 暂停客户机。

  • none - 仅启用看门狗;如果服务器挂起,则不执行任何操作。

os_command_line
类型:

str

内核命令行,用于 libvirt 驱动程序,而不是默认值。对于 Linux 容器 (LXC),该值用作初始化参数。此键仅对 Amazon 内核、ramdisk 或机器镜像 (akiariami) 有效。

仅受 libvirt 驱动程序支持。

hw_vif_model
类型:

str

指定要使用的虚拟网络接口设备的型号。

仅受 libvirt 驱动程序和 VMware API 驱动程序支持。

有效选项取决于配置的虚拟机监控程序。

  • KVMQEMUe1000e1000ene2k_pcipcnetrtl8139virtiovmxnet3igb

  • VMware:e1000e1000eVirtualE1000VirtualE1000eVirtualPCNet32VirtualVmxnetVirtualVmxnet3

  • Xen:e1000netfrontne2k_pcipcnetrtl8139

hw_vif_multiqueue_enabled
类型:

bool

如果为 true,则启用 virtio-net 多队列 功能。在这种情况下,驱动程序将队列数设置为来宾 vCPU 的数量。这使得网络性能可以扩展到多个 vCPU。

仅受 libvirt 驱动程序支持。

hw_boot_menu
类型:

bool

如果为 true,则启用 BIOS 启动菜单。在同时设置了镜像元数据和额外规范的情况下,将使用额外规范设置。这允许根据需要灵活地设置/覆盖默认行为。

仅受 libvirt 驱动程序支持。

hw_pmu
类型:

bool

控制来宾中虚拟性能监控单元 (vPMU) 的仿真。为了减少实时工作负载中的延迟,通过设置 hw_pmu=false 来禁用 vPMU。

仅受 libvirt 驱动程序支持。

img_hide_hypervisor_id
类型:

bool

某些虚拟机监控程序为其来宾添加签名。虽然签名存在可以启用来宾中的一些半虚拟化功能,但它也可能导致某些驱动程序无法加载。通过将此属性设置为 true 来隐藏签名,可能允许这些驱动程序加载和工作。

仅受 libvirt 驱动程序支持。

vmware_adaptertype
类型:

str

虚拟机监控程序使用的虚拟 SCSI 或 IDE 控制器。

仅受 VMWare API 驱动程序支持。

其中之一

  • lsiLogic

  • lsiLogicsas

  • busLogic

  • ide

  • paraVirtual

vmware_ostype

VMware GuestID,描述安装在镜像中的操作系统。此值在创建虚拟机时传递给虚拟机监控程序。如果未指定,则该键默认为 otherGuest。有关受支持的值,请参阅 thinkvirt.com

仅受 VMWare API 驱动程序支持。

vmware_image_version
类型:

int

当前未使用。

instance_type_rxtx_factor
类型:

float

已弃用且当前未使用。

auto_disk_config
类型:

bool

已弃用且当前未使用。