第 5 章 配置 PCI 透传


您可以使用 PCI 透传将物理 PCI 设备(如图形卡或网络设备)附加到实例。如果您将 PCI 透传用于设备,实例会保留对执行任务的设备的专用访问权限,且设备对主机不可用。

重要

将 PCI 透传与路由供应商网络搭配使用

计算服务不支持跨越多个提供商网络的单一网络。当网络包含多个物理网络时,计算服务仅使用第一个物理网络。因此,如果您使用路由的供应商网络,则必须在所有 Compute 节点间使用相同的 physical_network 名称。

如果您将路由供应商网络与 VLAN 或扁平网络一起使用,则必须在所有片段中使用相同的 physical_network 名称。然后,为网络创建多个片段,并将片段映射到适当的子网。

要让您的云用户创建附加 PCI 设备的实例,您必须完成以下操作:

  1. 为 PCI 透传指定 Compute 节点。
  2. 为具有所需 PCI 设备的 PCI 透传配置 Compute 节点。
  3. 部署 overcloud。
  4. 创建用于启动附加 PCI 设备的实例的类别。

先决条件

  • Compute 节点具有所需的 PCI 设备。

5.1. 为 PCI 透传设计 Compute 节点

要为附加物理 PCI 设备的实例指定 Compute 节点,您必须创建一个新角色文件来配置 PCI 透传角色,并使用 PCI 透传资源类配置裸机节点,以标记 PCI 透传的 Compute 节点。

注意

以下流程适用于尚未调配的新 overcloud 节点。要将资源类分配给已置备的现有 overcloud 节点,您必须使用 scale down 过程取消置备节点,然后使用扩展过程使用新的资源类分配来重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    [stack@director ~]$ source ~/stackrc
  3. 生成一个名为 roles_data_pci_passthrough.yaml 的新角色数据文件,其中包含 ControllerComputeComputePCI 角色,以及 overcloud 所需的任何其他角色:

    (undercloud)$ openstack overcloud roles \
     generate -o /home/stack/templates/roles_data_pci_passthrough.yaml \
     Compute:ComputePCI Compute Controller
  4. 打开 roles_data_pci_passthrough.yaml,并编辑或添加以下参数和部分:

    Expand
    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

  5. 将 overcloud 的 PCI 透传 Compute 节点添加到节点定义模板 node.jsonnode.yaml 中,为 overcloud 注册它们。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点
  6. 检查节点硬件:

    (undercloud)$ openstack overcloud node introspect \
     --all-manageable --provide

    如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单

  7. 使用自定义 PCI 透传资源类标记您要为 PCI 透传指定的每个裸机节点:

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.PCI-PASSTHROUGH <node>

    <node> 替换为裸机节点的 ID。

  8. ComputePCI 角色添加到节点定义文件 overcloud-baremetal-deploy.yaml 中,并定义您要分配给节点的任何预先节点放置、资源类、网络拓扑或其他属性:

    - name: Controller
      count: 3
    - name: Compute
      count: 3
    - name: ComputePCI
      count: 1
      defaults:
        resource_class: baremetal.PCI-PASSTHROUGH
        network_config:
          template: /home/stack/templates/nic-config/myRoleTopology.j2 
    1
    1
    您可以重复使用现有的网络拓扑,或为角色创建新的自定义网络接口模板。如需更多信息,请参阅 Director 安装和使用 指南中的 自定义网络接口模板。如果您不使用 network_config 属性定义网络定义,则使用默认网络定义。

    有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。如需节点定义文件示例,请参阅 节点定义文件示例

  9. 运行置备命令为您的角色置备新节点:

    (undercloud)$ openstack overcloud node provision \
    --stack <stack> \
    [--network-config \]
    --output /home/stack/templates/overcloud-baremetal-deployed.yaml \
    /home/stack/templates/overcloud-baremetal-deploy.yaml
    • & lt;stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为 overcloud
    • 包含 --network-config 可选参数,为 cli-overcloud-node-network-config.yaml Ansible playbook 提供网络定义。如果您不使用 network_config 属性定义网络定义,则使用默认网络定义。
  10. 在单独的终端中监控调配进度。当置备成功后,节点状态会从 available 改为 active

    (undercloud)$ watch openstack baremetal node list
  11. 如果您没有使用 --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

    将 < pci_passthrough_net_top > 替换为包含 ComputePCI 角色的网络拓扑的文件名称,如 compute.yaml 以使用默认网络拓扑。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部