有用的镜像属性¶
您可以设置镜像属性,这些属性可以被其他服务使用,以影响这些其他服务的行为。例如
镜像属性可用于覆盖为 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_64、arm或ppc64。运行 uname -m 以获取机器的架构。我们强烈建议使用 libosinfo 项目 定义的架构数据词汇表来实现此目的。其中之一
aarch64- ARM 64 位alpha- DEC 64 位 RISCarmv7l- ARM Cortex-A7 MPCorecris- 以太网、令牌环、轴向 - 代码简化指令集i686- Intel 第六代 x86(P6 微架构)ia64- Itaniumlm32- Lattice Micro32m68k- Motorola 68000microblaze- Xilinx 32 位 FPGA(大端)microblazeel- Xilinx 32 位 FPGA(小端)mips- MIPS 32 位 RISC(大端)mipsel- MIPS 32 位 RISC(小端)mips64- MIPS 64 位 RISC(大端)mips64el- MIPS 64 位 RISC(小端)openrisc- OpenCores RISCparisc- HP Precision Architecture RISCparisc64- HP Precision Architecture 64 位 RISCppc- PowerPC 32 位ppc64- PowerPC 64 位ppcemb- PowerPC(嵌入式 32 位)s390x- S/390 64 位sh4- SuperH SH-4(小端)sh4eb- SuperH SH-4(大端)sparc- 可扩展处理器架构,32 位sparc64- 可扩展处理器架构,64 位unicore32- 微处理器研究与开发中心 RISC Unicore32x86_64- IA-32 的 64 位扩展xtensa- Tensilica Xtensa 可配置微处理器内核xtensaeb- Tensilica Xtensa 可配置微处理器内核(大端)
hypervisor_type- 类型:
str
hypervisor 类型。请注意,
qemu用于 QEMU 和 KVM hypervisor 类型。其中之一
hypervironiclxcqemuumlvmwarexen
instance_uuid- 类型:
str
对于快照镜像,这是用于创建此镜像的服务器的 UUID。该值必须是有效的服务器 UUID。
img_config_drive- 类型:
str
指定镜像是否需要 config drive。
其中之一
mandatoryoptional(如果未指定属性,则为默认值)
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。不要使用archlinux或org.archlinux。centos- 社区企业操作系统。不要使用org.centos或CentOS。debian- Debian。不要使用Debian` 或 ``org.debian。fedora- Fedora。不要使用Fedora、org.fedora或org.fedoraproject。freebsd- FreeBSD。不要使用org.freebsd、freeBSD或FreeBSD。gentoo- Gentoo Linux。不要使用Gentoo或org.gentoo。mandrake- Mandrakelinux(MandrakeSoft)发行版。不要使用mandrakelinux或MandrakeLinux。mandriva- Mandriva Linux。不要使用mandrivalinux。mes- Mandriva Enterprise Server。不要使用mandrivaent或mandrivaES。msdos- Microsoft Disc Operating System。不要使用ms-dos。netbsd- NetBSD。不要使用NetBSD或org.netbsd。netware- Novell NetWare。不要使用novell或NetWare。openbsd- OpenBSD。不要使用OpenBSD或org.openbsd。opensolaris- OpenSolaris。不要使用OpenSolaris或org.opensolaris。opensuse- openSUSE。不要使用suse、SuSE或 `` org.opensuse``。rocky- Rocky Linux。不要使用Rocky或rockylinux。rhel- Red Hat Enterprise Linux。不要使用redhat、RedHat或com.redhat。sled- SUSE Linux Enterprise Desktop。不要使用com.suse。ubuntu- Ubuntu。不要使用Ubuntu、com.ubuntu、org.ubuntu或canonical。windows- Microsoft Windows。不要使用com.microsoft.server或windoze。
os_version- 类型:
str
操作系统版本,由发行版指定。
该值必须是有效的版本号(例如,
11.10)。os_secure_boot- 类型:
str
安全启动是一种安全标准。当实例启动时,安全启动首先检查软件,例如固件和操作系统,通过它们的签名,并且仅允许在签名有效时才运行它们。
对于 Hyper-V:镜像必须准备为第 2 代虚拟机。实例还必须包含
hw_machine_type=hyperv-gen2镜像属性。Linux 来宾还需要提供作为os_secure_boot_signature和hypervisor_version_requires'>=10.0'镜像属性提供的启动加载程序的数字签名。其中之一
required- 启用安全启动功能。disabled或optional- (默认,如果未设置属性) 禁用安全启动功能。
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=requiredtrait: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 配置选项的值。
对于
qemu和kvm:scsi、virtio、uml、xen、ide、usb或lxc中的一个。对于
xen:xen或ide中的一个。对于
uml:必须是uml。对于
lxc:必须是lxc。对于
parallels:ide或scsi中的一个。
hw_firmware_type指定启动客户机的固件类型。
仅受 libvirt 驱动程序支持。
其中之一
biosuefi
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-sevamd-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=qemu且architecture=i686或architecture=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-gen1或hyperv-gen2。仅受 libvirt 和 Hyper-V 驱动程序支持。
os_type- 类型:
str
安装在镜像上的操作系统。
libvirtAPI 驱动程序包含根据镜像的os_type参数的值采取不同操作的逻辑。例如,对于os_type=windows镜像,它会创建一个基于 FAT32 的交换分区,而不是 Linux 交换分区,并且它会将注入的主机名限制在 16 个字符以内。仅受 libvirt 驱动程序支持。
其中之一
linuxwindows
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 直通时使用。其中之一
vgacirrusvmvgaxenqxlvirtiogopnonebochs
仅受 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或机器镜像 (aki、ari或ami) 有效。仅受 libvirt 驱动程序支持。
hw_vif_model- 类型:
str
指定要使用的虚拟网络接口设备的型号。
仅受 libvirt 驱动程序和 VMware API 驱动程序支持。
有效选项取决于配置的虚拟机监控程序。
KVM和QEMU:e1000、e1000e、ne2k_pci、pcnet、rtl8139、virtio、vmxnet3和igb。VMware:
e1000、e1000e、VirtualE1000、VirtualE1000e、VirtualPCNet32、VirtualVmxnet和VirtualVmxnet3。Xen:
e1000、netfront、ne2k_pci、pcnet和rtl8139。
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 驱动程序支持。
其中之一
lsiLogiclsiLogicsasbusLogicideparaVirtual
vmware_ostypeVMware GuestID,描述安装在镜像中的操作系统。此值在创建虚拟机时传递给虚拟机监控程序。如果未指定,则该键默认为
otherGuest。有关受支持的值,请参阅 thinkvirt.com。仅受 VMWare API 驱动程序支持。
vmware_image_version- 类型:
int
当前未使用。
instance_type_rxtx_factor- 类型:
float
已弃用且当前未使用。
auto_disk_config- 类型:
bool
已弃用且当前未使用。