第 8 章 配置 PCI 透传
您可以使用 PCI 透传将物理 PCI 设备(如图形卡或网络设备)附加到实例。如果您将 PCI 透传用于设备,实例会保留对设备执行任务的独占访问,且设备对主机不可用。
将 PCI 透传与路由供应商网络搭配使用
Compute 服务不支持跨越多个提供商网络的单一网络。当网络包含多个物理网络时,计算服务仅使用第一个物理网络。因此,如果您使用路由供应商网络,则必须在所有 Compute 节点上使用相同的 physical_network
名称。
如果您将路由供应商网络与 VLAN 或扁平网络搭配使用,则必须对所有片段使用相同的 physical_network
名称。然后,您可以为网络创建多个片段,并将片段映射到适当的子网。
要让您的云用户创建附加了 PCI 设备的实例,您必须完成以下操作:
- 为 PCI 透传指定 Compute 节点。
- 为具有所需 PCI 设备的 PCI 透传配置 Compute 节点。
- 部署 overcloud。
- 创建一个类别来启动实例,并连接了 PCI 设备。
先决条件
- Compute 节点具有所需的 PCI 设备。
8.1. 为 PCI 透传设计 Compute 节点 复制链接链接已复制到粘贴板!
要为附加了物理 PCI 设备的实例指定 Compute 节点,您必须创建一个新角色文件来配置 PCI 透传角色,并使用 PCI 透传资源类配置裸机节点,以标记 Compute 节点以进行 PCI 透传。
以下流程适用于尚未调配的新 overcloud 节点。要将资源类分配给已调配的现有 overcloud 节点,您必须使用缩减流程取消置备节点,然后使用扩展步骤使用新资源类分配重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:source ~/stackrc
[stack@director ~]$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成一个名为
roles_data_pci_passthrough.yaml
的新角色数据文件,其中包含Controller
、Compute
和ComputePCI
角色,以及 overcloud 所需的任何其他角色:openstack overcloud roles \ generate -o /home/stack/templates/roles_data_pci_passthrough.yaml \ Compute:ComputePCI Compute Controller
(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_pci_passthrough.yaml \ Compute:ComputePCI Compute Controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
roles_data_pci_passthrough.yaml
,并编辑或添加以下参数和部分:Expand section/Parameter 当前值 新值 role 注释
Role: Compute
Role: ComputePCI
角色名称
Name: Compute
Name: ComputePCI
description
基本 Compute 节点角色
PCI Passthrough Compute 节点角色
HostnameFormatDefault
%stackname%-novacompute-%index%
%stackname%-novacomputepci-%index%
deprecated_nic_config_name
compute.yaml
compute-pci-passthrough.yaml
-
将 overcloud 的 PCI 透传 Compute 节点添加到节点定义模板
node.json
或node.yaml
中。有关更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的 为 overcloud 注册节点。 检查节点硬件:
openstack overcloud node introspect \ --all-manageable --provide
(undercloud)$ openstack overcloud node introspect \ --all-manageable --provide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的创建 裸机节点硬件清单。
使用自定义 PCI 透传资源类标记您要为 PCI 透传指定的每个裸机节点:
openstack baremetal node set \ --resource-class baremetal.PCI-PASSTHROUGH <node>
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.PCI-PASSTHROUGH <node>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<node>
替换为裸机节点的 ID。将
ComputePCI
角色添加到节点定义文件overcloud-baremetal-deploy.yaml
中,并定义您要分配给节点的任何预先节点放置、资源类、网络拓扑或其他属性:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。有关节点定义文件的示例,请参阅 节点定义文件 示例。
运行 provisioning 命令为您的角色置备新节点:
openstack overcloud node provision \ --stack <stack> \ [--network-config \]
(undercloud)$ openstack overcloud node provision \ --stack <stack> \ [--network-config \] --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
&
lt;stack> 替换为置备裸机节点的堆栈名称。如果未指定,则默认为overcloud
。 -
包含
--network-config
可选参数,为cli-overcloud-node-network-config.yaml
Ansible playbook 提供网络定义。如果您没有使用network_config
属性定义网络定义,则使用默认网络定义。
-
将
在一个单独的终端中监控置备进度。当置备成功时,节点状态将从
available
变为active
:watch openstack baremetal node list
(undercloud)$ watch openstack baremetal node list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有使用
--network-config
选项运行 provisioning 命令,请在network-environment.yaml
文件中配置 <Role>NetworkConfigTemplate
参数以指向 NIC 模板文件:parameter_defaults: ComputeNetworkConfigTemplate: /home/stack/templates/nic-configs/compute.j2 ComputePCINetworkConfigTemplate: /home/stack/templates/nic-configs/<pci_passthrough_net_top>.j2 ControllerNetworkConfigTemplate: /home/stack/templates/nic-configs/controller.j2
parameter_defaults: ComputeNetworkConfigTemplate: /home/stack/templates/nic-configs/compute.j2 ComputePCINetworkConfigTemplate: /home/stack/templates/nic-configs/<pci_passthrough_net_top>.j2 ControllerNetworkConfigTemplate: /home/stack/templates/nic-configs/controller.j2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <
pci_passthrough_net_top
> 替换为包含ComputePCI
角色的网络拓扑的文件名称,如compute.yaml
以使用默认网络拓扑。