第 8 章 配置 PCI 透传


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

重要

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

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

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

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

  1. 为 PCI 透传指定 Compute 节点。
  2. 为具有所需 PCI 设备的 PCI 透传配置 Compute 节点。
  3. 部署 overcloud。
  4. 创建一个类别来启动实例,并连接了 PCI 设备。

先决条件

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

8.1. 为 PCI 透传设计 Compute 节点

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

注意

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

流程

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

    [stack@director ~]$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  4. 打开 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

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

    (undercloud)$ openstack overcloud node introspect \
     --all-manageable --provide
    Copy to Clipboard Toggle word wrap

    如需更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的创建 裸机节点硬件清单

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

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.PCI-PASSTHROUGH <node>
    Copy to Clipboard Toggle word wrap

    <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
    Copy to Clipboard Toggle word wrap
    1 1
    您可以重复使用现有网络拓扑,或为角色创建新的自定义网络接口模板。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的 自定义网络接口模板。如果您没有使用 network_config 属性定义网络定义,则使用默认网络定义。

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

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

    (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 Toggle word wrap
    • & lt;stack> 替换为置备裸机节点的堆栈名称。如果未指定,则默认为 overcloud
    • 包含 --network-config 可选参数,为 cli-overcloud-node-network-config.yaml Ansible playbook 提供网络定义。如果您没有使用 network_config 属性定义网络定义,则使用默认网络定义。
  10. 在一个单独的终端中监控置备进度。当置备成功时,节点状态将从 available 变为 active

    (undercloud)$ watch openstack baremetal node list
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat