第 5 章 配置 PCI 透传
您可以使用 PCI 透传将物理 PCI 设备(如图形卡或网络设备)附加到实例。如果您将 PCI 透传用于设备,则实例会对该设备进行独占访问来执行任务,且设备不适用于主机。
在路由的提供商网络中使用 PCI 透传
Compute 服务不支持跨越多个提供商网络的单个网络。当网络包含多个物理网络时,计算服务仅使用第一个物理网络。因此,如果您使用路由的提供者网络,则必须在所有 Compute 节点上使用相同的 physical_network
名称。
如果将路由的提供者网络与 VLAN 或扁平网络搭配使用,则必须对所有片段使用相同的 physical_network
名称。然后,您可以为网络创建多个片段,并将片段映射到适当的子网。
要让您的云用户创建附加 PCI 设备的实例,您必须完成以下操作:
- 为 PCI 透传指定 Compute 节点。
- 为具有所需 PCI 设备的 PCI 透传配置 Compute 节点。
- 部署 overcloud。
- 创建类别,以启动附加有 PCI 设备的实例。
先决条件
- Compute 节点具有所需的 PCI 设备。
5.1. 为 PCI 透传设计 Compute 节点
要为附加物理 PCI 设备的实例指定 Compute 节点,您必须创建一个新角色文件来配置 PCI 透传角色,并配置一个新的 overcloud 类别和 PCI 透传资源类,以用于标记 PCI 透传的 Compute 节点。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:[stack@director ~]$ source ~/stackrc
生成一个名为
roles_data_pci_passthrough.yaml
的新角色数据文件,其中包含Controller
,Compute
, 和ComputeCPI
角色:(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_pci_passthrough.yaml \ Compute:ComputePCI Compute Controller
打开
roles_data_pci_passthrough.yaml
并编辑或添加以下参数和部分:section/Parameter 当前值 新值 角色注释
Role: Compute
Role: ComputePCI
角色名称
名称 :Compute
名称 :ComputePCI
description
基本 Compute 节点角色
PCI Passthrough Compute 节点角色
HostnameFormatDefault
%stackname%-novacompute-%index%
%stackname%-novacomputepci-%index%
deprecated_nic_config_name
compute.yaml
compute-pci-passthrough.yaml
-
通过将 overcloud 添加到节点定义模板
node.json
或node.yaml
,注册 overcloud 的 PCI 透传 Compute 节点。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点。 检查节点硬件:
(undercloud)$ openstack overcloud node introspect \ --all-manageable --provide
如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单。
为 PCI 透传 Compute 节点创建
compute-pci-passthrough
overcloud 类别:(undercloud)$ openstack flavor create --id auto \ --ram <ram_size_mb> --disk <disk_size_gb> \ --vcpus <no_vcpus> compute-pci-passthrough
-
将
<ram_size_mb>
替换为裸机节点的 RAM,以 MB 为单位。 -
将
<disk_size_gb>
替换为裸机节点中的磁盘大小(以 GB 为单位)。 将
<no_vcpus>
替换为裸机节点中的 CPU 数量。注意这些属性不可用于调度实例。但是,计算调度程序使用磁盘大小来确定根分区大小。
-
将
使用自定义 PCI 透传资源类标记您要为 PCI 透传指定的每个裸机节点:
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.PCI-PASSTHROUGH <node>
将
<node>
替换为裸机节点的 ID。将
compute-pci-passthrough
类别与自定义 PCI passthrough 资源类关联:(undercloud)$ openstack flavor set \ --property resources:CUSTOM_BAREMETAL_PCI_PASSTHROUGH=1 \ compute-pci-passthrough
要确定与 Bare Metal 服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,请将所有 punctuation 替换为下划线,并使用
CUSTOM_
前缀。注意类别只能请求一个裸机资源类实例。
设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:
(undercloud)$ openstack flavor set \ --property resources:VCPU=0 --property resources:MEMORY_MB=0 \ --property resources:DISK_GB=0 compute-pci-passthrough
在
node-info.yaml
文件中添加以下参数,以指定 PCI 透传 Compute 节点的数量,以及用于指定 PCI 透传的 Compute 节点的类别:parameter_defaults: OvercloudComputePCIFlavor: compute-pci-passthrough ComputePCICount: 3
要验证角色是否已创建,请输入以下命令:
(undercloud)$ openstack overcloud profiles list