4.3. 为实例配置 CPU 功能标记
您可以为实例启用或禁用 CPU 功能标记,而无需更改主机 Compute 节点上的设置并重启 Compute 节点。通过配置应用到实例的标准 CPU 功能标记,您可以帮助实现跨 Compute 节点的实时迁移兼容性。您还有助于通过禁用对具有特定 CPU 模型的实例的安全性或性能造成负面影响的标记,或者启用提供安全问题或性能问题的缓解的标记,从而帮助管理实例的性能和安全性。
4.3.1. 先决条件
主机 Compute 节点的硬件和软件必须支持 CPU 模型和功能标志:
要检查主机支持的硬件,请在 Compute 节点上输入以下命令:
$ cat /proc/cpuinfo
要检查主机上支持的 CPU 型号,请在 Compute 节点上输入以下命令:
$ sudo podman exec -it nova_libvirt virsh cpu-models <arch>
将
<arch
> 替换为架构的名称,如x86_64
。
4.3.2. 为实例配置 CPU 功能标记
配置计算服务,以将 CPU 功能标志应用到具有特定 vCPU 模型的实例。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:[stack@director ~]$ source ~/stackrc
- 打开 Compute 环境文件。
配置实例 CPU 模式:
parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: <cpu_mode>
将
<cpu_mode
> 替换为 Compute 节点上每个实例的 CPU 模式。设置为以下有效值之一:-
host-model
:(默认)使用主机 Compute 节点的 CPU 模型。使用此 CPU 模式自动向实例添加关键 CPU 标记,以提供对安全漏洞的缓解方案。 自定义
:使用 配置每个实例应使用的特定 CPU 型号。注意您还可以将 CPU 模式设置为
host-passthrough
,以使用与该 Compute 节点上托管的实例的 Compute 节点相同的 CPU 模型和功能标志。
-
可选:如果您将
NovaLibvirtCPUMode
设置为custom
,请配置您要自定义的实例 CPU 型号:parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: 'custom' NovaLibvirtCPUModels: <cpu_model>
将
<cpu_model
> 替换为主机支持的 CPU 模型的逗号分隔列表。按顺序列出 CPU 型号,首先将更常见和不太高级 CPU 型号放在列表中,而功能丰富的 CPU 模型最后是SandyBridge,IvyBridge,Haswell
。有关模型名称列表,请参阅/usr/share/libvirt/cpu_map.xml
,或者在主机 Compute 节点上输入以下命令:$ sudo podman exec -it nova_libvirt virsh cpu-models <arch>
将
<arch
> 替换为 Compute 节点架构的名称,如x86_64
。为使用指定 CPU 型号的实例配置 CPU 功能标记:
parameter_defaults: ComputeParameters: ... NovaLibvirtCPUModelExtraFlags: <cpu_feature_flags>
将
<cpu_feature_flags
> 替换为以逗号分隔的功能标记列表,以启用或禁用。前缀每个带有 "+" 的标记来启用标志,或者"-"来禁用它。如果没有指定前缀,则会启用 标志。有关给定 CPU 模型的可用功能标记列表,请参阅/usr/share/libvirt/cpu_mapVRF.xml
。以下示例为
IvyBridge
和Cascadelake-Server
模型启用 CPU 功能标记pcid
和ssbd
,并禁用功能标记mtrr
。parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: 'custom' NovaLibvirtCPUModels: 'IvyBridge','Cascadelake-Server' NovaLibvirtCPUModelExtraFlags: 'pcid,+ssbd,-mtrr'
使用其他环境文件将计算环境文件添加到堆栈中,并部署 overcloud:
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml