使用 SR-IOV 虚拟功能创建 I/O 域
以下过程介绍了如何创建包括 PCIe SR-IOV 虚拟功能的 I/O 域。
如何通过向其分配 SR-IOV 虚拟功能来创建 I/O 域
提前进行计划,以便最大程度地减少根域的重新引导次数,从而最大限度地缩短停机时间。
开始之前
开始之前,请确保已为用于创建虚拟功能的物理功能的父项 PCIe 总线启用了 I/O 虚拟化。请参见如何对 PCIe 总线启用 I/O 虚拟化。
确定要与使用 SR-IOV 功能的 I/O 域共享的 SR-IOV 物理功能。
primary# ldm list-io
为物理功能创建一个或多个虚拟功能。
primary# ldm create-vf pf-name
您可以为要创建的每个虚拟功能运行此命令。您还可以使用 –n 选项通过单个命令创建基于同一物理功能的多个虚拟功能。请参见示例 10和 ldm(1M) 手册页。
注 -如果已从关联的物理功能创建了其他虚拟功能,并且其中任一虚拟功能已绑定到其他域,此命令将失败。
查看根域上可用虚拟功能的列表。
primary# ldm list-io
将Step 2 中创建的虚拟功能分配到其目标 I/O 域。
primary# ldm add-io vf-name domain-name
注 -如果目标 I/O 域中的 OS 不支持动态 SR-IOV,则必须使用静态方法。请参见静态 SR-IOV。
验证虚拟功能在 I/O 域上是否可用。
以下 Oracle Solaris 11 命令显示虚拟功能的可用性:
guest# dladm show-phys
示例 16通过分配 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
示例 17通过分配 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