Oracle® VM Server for SPARC 3.3 管理指南

退出打印视图

更新时间: 2015 年 10 月
 
 

使用 SR-IOV 虚拟功能创建 I/O 域

以下过程介绍了如何创建包括 PCIe SR-IOV 虚拟功能的 I/O 域。

如何通过向其分配 SR-IOV 虚拟功能来创建 I/O 域

提前进行计划,以便最大程度地减少根域的重新引导次数,从而最大限度地缩短停机时间。

开始之前

开始之前,请确保已为用于创建虚拟功能的物理功能的父项 PCIe 总线启用了 I/O 虚拟化。请参见如何对 PCIe 总线启用 I/O 虚拟化

  1. 确定要与使用 SR-IOV 功能的 I/O 域共享的 SR-IOV 物理功能。
    primary# ldm list-io
  2. 为物理功能创建一个或多个虚拟功能。
    primary# ldm create-vf pf-name

    您可以为要创建的每个虚拟功能运行此命令。您还可以使用 –n 选项通过单个命令创建基于同一物理功能的多个虚拟功能。请参见Example 7–6ldm(1M) 手册页。


    注 - 如果已从关联的物理功能创建了其他虚拟功能,并且其中任一虚拟功能已绑定到其他域,此命令将失败。
  3. 查看根域上可用虚拟功能的列表。
    primary# ldm list-io
  4. Step 2 中创建的虚拟功能分配到其目标 I/O 域。
    primary# ldm add-io vf-name domain-name

    注 - 如果目标 I/O 域中的 OS 不支持动态 SR-IOV,则必须使用静态方法。请参见静态 SR-IOV
  5. 验证虚拟功能在 I/O 域上是否可用。

    以下 Oracle Solaris 11 命令显示虚拟功能的可用性:

    guest# dladm show-phys
示例 7-12  通过分配 SR-IOV 虚拟功能来动态创建 I/O 域

以下动态示例说明如何为物理功能 /SYS/MB/NET0/IOVNET.PF0 创建虚拟功能 /SYS/MB/NET0/IOVNET.PF0.VF0,并将该虚拟功能分配给 ldg1 I/O 域。

    本示例假定满足以下情况:

  • primary 域上的 OS 支持动态 SR-IOV 操作

  • pci_0 总线已分配到 primary 域,并且已针对 I/O 虚拟化操作进行了初始化

  • /SYS/MB/NET0/IOVNET.PF0 物理功能属于 pci_0 总线

  • /SYS/MB/NET0/IOVNET.PF0 物理功能未将任何现有虚拟功能分配到域

  • ldg1 域处于活动状态并已引导,并且其 OS 支持动态 SR-IOV 操作

/SYS/MB/NET0/IOVNET.PF0 物理功能创建虚拟功能。

primary# ldm create-vf /SYS/MB/NET0/IOVNET.PF0
Created new vf: /SYS/MB/NET0/IOVNET.PF0.VF0

/SYS/MB/NET0/IOVNET.PF0.VF0 虚拟功能添加到 ldg1 域。

primary# ldm add-io /SYS/MB/NET0/IOVNET.PF0.VF0 ldg1

以下命令显示已将虚拟功能添加到 ldg1 域。

primary# ldm list-io
NAME                          TYPE  BUS      DOMAIN    STATUS
----                          ----  ---      ------    ------
niu_0                         NIU   niu_0    primary
niu_1                         NIU   niu_1    primary
pci_0                         BUS   pci_0    primary   IOV
pci_1                         BUS   pci_1    primary
/SYS/MB/PCIE0                 PCIE  pci_0    primary   OCC
/SYS/MB/PCIE2                 PCIE  pci_0    primary   OCC
/SYS/MB/PCIE4                 PCIE  pci_0    primary   OCC
/SYS/MB/PCIE6                 PCIE  pci_0    primary   EMP
/SYS/MB/PCIE8                 PCIE  pci_0    primary   EMP
/SYS/MB/SASHBA                PCIE  pci_0    primary   OCC
/SYS/MB/NET0                  PCIE  pci_0    primary   OCC
/SYS/MB/PCIE1                 PCIE  pci_1    primary   OCC
/SYS/MB/PCIE3                 PCIE  pci_1    primary   OCC
/SYS/MB/PCIE5                 PCIE  pci_1    primary   OCC
/SYS/MB/PCIE7                 PCIE  pci_1    primary   EMP
/SYS/MB/PCIE9                 PCIE  pci_1    primary   EMP
/SYS/MB/NET2                  PCIE  pci_1    primary   OCC
/SYS/MB/NET0/IOVNET.PF0       PF    pci_0    primary
/SYS/MB/NET0/IOVNET.PF1       PF    pci_0    primary
/SYS/MB/PCIE5/IOVNET.PF0      PF    pci_1    primary
/SYS/MB/PCIE5/IOVNET.PF1      PF    pci_1    primary
/SYS/MB/NET2/IOVNET.PF0       PF    pci_1    primary
/SYS/MB/NET2/IOVNET.PF1       PF    pci_1    primary
/SYS/MB/NET0/IOVNET.PF0.VF0   VF    pci_0    ldg1
示例 7-13  通过分配 SR-IOV 虚拟功能来静态创建 I/O 域

以下静态示例说明如何为物理功能 /SYS/MB/NET0/IOVNET.PF0 创建虚拟功能 /SYS/MB/NET0/IOVNET.PF0.VF0,并将该虚拟功能分配给 ldg1 I/O 域。

    本示例假定满足以下情况:

  • primary 域上的 OS 不支持动态 SR-IOV 操作

  • pci_0 总线已分配到 primary 域,但尚未针对 I/O 虚拟化操作进行初始化

  • /SYS/MB/NET0/IOVNET.PF0 物理功能属于 pci_0 总线

  • /SYS/MB/NET0/IOVNET.PF0 物理功能未将任何现有虚拟功能分配到域

  • ldg1 域处于活动状态并已引导,但其 OS 不支持动态 SR-IOV 操作

  • ldg1 域已将 auto-boot? 属性设置为 true,因此,该域可以在启动后自动引导

首先,在 primary 域上启动延迟重新配置,启用 I/O 虚拟化,然后从 /SYS/MB/NET0/IOVNET.PF0 物理功能创建虚拟功能。

primary# ldm start-reconf primary
Initiating a delayed reconfiguration operation on the primary domain.
All configuration changes for other domains are disabled until the primary
domain reboots, at which time the new configuration for the primary domain
will also take effect.

primary# ldm set-io iov=on pci_0
primary# ldm create-vf /SYS/MB/NET0/IOVNET.PF0

------------------------------------------------------------------------------
Notice: The primary domain is in the process of a delayed reconfiguration.
Any changes made to the primary domain will only take effect after it reboots.
------------------------------------------------------------------------------
Created new vf: /SYS/MB/NET0/IOVNET.PF0.VF0

然后,关闭 primary 域。

primary# shutdown -i6 -g0 -y

停止 ldg1 域,添加虚拟功能,然后启动该域。

primary# ldm stop ldg1
primary# ldm add-io /SYS/MB/NET0/IOVNET.PF0.VF0 ldg1
primary# ldm start ldg1

以下命令显示已将虚拟功能添加到 ldg1 域。

primary# ldm list-io
NAME                          TYPE  BUS      DOMAIN    STATUS
----                          ----  ---      ------    ------
niu_0                         NIU   niu_0    primary
niu_1                         NIU   niu_1    primary
pci_0                         BUS   pci_0    primary   IOV
pci_1                         BUS   pci_1    primary
/SYS/MB/PCIE0                 PCIE  pci_0    primary   OCC
/SYS/MB/PCIE2                 PCIE  pci_0    primary   OCC
/SYS/MB/PCIE4                 PCIE  pci_0    primary   OCC
/SYS/MB/PCIE6                 PCIE  pci_0    primary   EMP
/SYS/MB/PCIE8                 PCIE  pci_0    primary   EMP
/SYS/MB/SASHBA                PCIE  pci_0    primary   OCC
/SYS/MB/NET0                  PCIE  pci_0    primary   OCC
/SYS/MB/PCIE1                 PCIE  pci_1    primary   OCC
/SYS/MB/PCIE3                 PCIE  pci_1    primary   OCC
/SYS/MB/PCIE5                 PCIE  pci_1    primary   OCC
/SYS/MB/PCIE7                 PCIE  pci_1    primary   EMP
/SYS/MB/PCIE9                 PCIE  pci_1    primary   EMP
/SYS/MB/NET2                  PCIE  pci_1    primary   OCC
/SYS/MB/NET0/IOVNET.PF0       PF    pci_0    primary
/SYS/MB/NET0/IOVNET.PF1       PF    pci_0    primary
/SYS/MB/PCIE5/IOVNET.PF0      PF    pci_1    primary
/SYS/MB/PCIE5/IOVNET.PF1      PF    pci_1    primary
/SYS/MB/NET2/IOVNET.PF0       PF    pci_1    primary
/SYS/MB/NET2/IOVNET.PF1       PF    pci_1    primary
/SYS/MB/NET0/IOVNET.PF0.VF0   VF    pci_0    ldg1