其他 libvirt 功能

libvirt 驱动程序支持大量不需要单独章节的附加功能。这些功能在此处汇总。

访客代理支持

访客代理通过套接字使用 QMP 协议,启用计算节点和访客之间可选的访问。

要启用此功能,必须将 hw_qemu_guest_agent=yes 设置为要在其上创建支持访客代理的实例的镜像的元数据参数。可以通过在镜像元数据中设置 hw_qemu_guest_agent=no 来显式禁用此功能。

看门狗行为

15.0.0 版本更改: (Ocata)

添加了对 disabled 选项的支持。

可以使用虚拟看门狗设备来监视访客服务器,并在服务器挂起时执行配置的操作。看门狗使用 i6300esb 设备(模拟 PCI Intel 6300ESB)。可以使用 hw:watchdog_action flavor extra spec 或等效的镜像元数据属性来配置看门狗行为。如果既没有指定 extra spec,也没有指定镜像元数据属性,则看门狗将被禁用。

例如,要启用看门狗并在挂起时强制重置访客,请运行

$ openstack flavor set $FLAVOR --property hw:watchdog_action=reset

注意

使用镜像元数据属性设置的看门狗行为将覆盖使用 flavor extra spec 设置的行为。

随机数生成器

21.0.0 版本更改: (Ussuri)

现在默认情况下为实例启用随机数生成器。

操作系统需要良好的熵源来处理加密软件等。如果已通过其镜像属性将随机数生成器设备添加到实例,则可以使用 hw_rng:allowedhw_rng:rate_byteshw_rng:rate_period flavor extra specs 来启用和配置该设备。

例如,要配置每周期 5 字节的字节速率和 1000 毫秒(1 秒)的周期,请运行

$ openstack flavor set $FLAVOR \
    --property hw_rng:rate_bytes=5 \
    --property hw_rng:rate_period=1000

或者,要禁用随机数生成器,请运行

$ openstack flavor set $FLAVOR --property hw_rng:allowed=false

单独的字节速率和速率周期可配置项的存在是故意的。如 QEMU 文档 中所述,较小的速率和较大的周期可最大限度地减少恶意访客剥夺其他访客熵的机会,但代价是响应速度。相反,较大的速率和较小的周期将增加突发速率,但可能会以牺牲有利于贪婪访客的资源消耗为代价。

性能监控单元 (vPMU)

20.0.0 版本新增:(Train)

如果 nova 使用 libvirt virt 驱动程序部署,并且 libvirt.virt_type 设置为 qemukvm,则可以使用 hw:pmu flavor extra spec 或 hw_pmu 镜像元数据属性来启用或禁用实例的虚拟性能监控单元 (vPMU)。如果 vPMU 未通过 flavor 或镜像显式启用或禁用,则其存在将由 QEMU 决定。

例如,要显式禁用 vPMU,请运行

$ openstack flavor set FLAVOR-NAME --property hw:pmu=false

vPMU 由 perf 等工具在访客中使用,以提供更准确的信息来分析应用程序和监控访客性能。对于 实时 工作负载,vPMU 的仿真可能会引入额外的延迟,这将会是不希望的。如果不需要其提供的遥测数据,则可以禁用 vPMU。对于大多数工作负载,默认的未设置(启用)将是正确的。

隐藏虚拟机监控程序签名

18.0.0 版本添加: (Rocky)

21.0.0 版本更改: (Ussuri)

在 Ussuri 版本之前,这被称为 hide_hypervisor_id。提供了一个别名以提供向后兼容性。

一些虚拟机监控程序会为其访客添加签名。虽然签名存在可以启用访客上的某些半虚拟化功能,但它也可能导致某些驱动程序无法加载。可以通过将 hw:hide_hypervisor_id 设置为 true 来隐藏此签名。

例如,要从访客操作系统隐藏您的签名,请运行

$ openstack flavor set $FLAVOR --property hw:hide_hypervisor_id=true

锁定内存分配

26.0.0 版本添加: (Zed)

锁定内存将访客内存分配标记为不可移动且不可交换。它在许多情况下隐式启用,例如 SEV 或实时访客,但也可以使用 hw:locked_memory extra spec(或使用 hw_locked_memory 镜像属性)显式启用。hw:locked_memory(也 hw_locked_memory 镜像属性)接受字符串格式的布尔值,如“true”或“false”值。如果 flavor 和镜像属性都指定了,但布尔值不同,则会引发 FlavorImageLockedMemoryConflict 异常。只有在您也设置了 hw:mem_page_size 时,才允许这样做,以便我们可以确保调度程序实际上可以正确地解释这一点并防止内存不足事件。否则,将引发 LockMemoryForbidden 异常。

$ openstack flavor set FLAVOR-NAME \
    --property hw:locked_memory=BOOLEAN_VALUE

注意

这目前仅受 libvirt 驱动程序支持。