Oracle® VM Server for SPARC 3.3 管理指南

退出打印视图

更新时间: 2015 年 10 月
 
 

创建以太网虚拟功能

本节介绍如何动态创建和销毁虚拟功能。如果无法使用动态方法来执行这些操作,请在创建或销毁虚拟功能之前在根域上启动延迟重新配置。

如何创建以太网 SR-IOV 虚拟功能

如果无法使用此动态方法,请改用静态方法。请参见静态 SR-IOV

  1. 确定物理功能设备。
    primary# ldm list-io

    请注意,物理功能的名称包括 PCIe SR-IOV 卡或板载设备的位置信息。

  2. 如果具有物理功能的总线尚未启用 I/O 虚拟化,请启用它。

    请只有在未对具有物理功能的总线启用 I/O 虚拟化时才执行此步骤。

    请参见如何对 PCIe 总线启用 I/O 虚拟化

  3. 基于以太网物理功能用动态或静态方法创建单个虚拟功能或多个虚拟功能。

    在创建一个或多个虚拟功能后,您可以将其分配给来宾域。

    • 动态方法:
      • 要基于一个物理功能同时创建多个虚拟功能,请使用以下命令:
        primary# ldm create-vf -n number | max pf-name

        使用 ldm create-vf -n max 命令可一次创建该物理功能的所有虚拟功能。


        Caution

        注意  - 系统使用 Intel 10-G 以太网卡时,基于每个物理功能创建的虚拟功能请勿超过 31 个,以便最大程度地提高性能。


        您可以使用路径名称或 pseudonym 名称指定虚拟功能。但是,建议做法是使用 pseudonym 名称。

      • 要基于一个物理功能创建一个虚拟功能,请使用以下命令:
        ldm create-vf [mac-addr=num] [alt-mac-addrs=[auto|num1,[auto|num2,...]]]
          [pvid=pvid] [vid=vid1,vid2,...] [mtu=size] [name=value...] pf-name

        注 - 如果没有为网络设备显式分配 MAC 地址,则会自动分配 MAC 地址。

        使用此命令可为该物理功能创建一个虚拟功能。您还可以手动指定特定于以太网类的属性值。


      注 - OS 探测 IOV 设备时,有时无法立即使用新创建的虚拟功能。使用 ldm list-io 命令确定父物理功能及其子虚拟功能在 "Status"(状态)列中是否具有 INV 值。如果它们具有此值,则等待直到 ldm list-io 输出不再在 "Status"(状态)列中显示 INV 值(大约 45 秒),然后再使用该物理功能或其任何子虚拟功能。如果此状态持续存在,则设备存在问题。

      根域重新引导(包括 primary 的重新引导)后或者您使用 ldm create-vfldm destroy-vf 命令后,状态可能立即为 INV


    • 静态方法:
      1. 启动延迟重新配置。
        primary# ldm start-reconf root-domain-name
      2. 基于以太网物理功能创建单个虚拟功能或多个虚拟功能。

        使用如前所示的相同命令动态创建虚拟功能。

      3. 重新引导根域。
        • 要重新引导非 primary 根域,请使用以下命令:
          primary# ldm stop-domain -r root-domain
        • 要重新引导 primary 根域,请使用以下命令:
          primary# shutdown -i6 -g0 -y
示例 7-1  显示有关以太网物理功能的信息

此示例显示了有关 /SYS/MB/NET0/IOVNET.PF0 物理功能的信息:

  • 此物理功能来自板载 NET0 网络设备。

  • IOVNET 字符串表示物理功能是一个网络 SR-IOV 设备。

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  
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

以下命令显示有关指定物理功能的更多详细信息。maxvfs 值表示设备支持的虚拟功能最大数量。

primary# ldm list-io -l /SYS/MB/NET0/IOVNET.PF0
NAME                                      TYPE   BUS      DOMAIN   STATUS   
----                                      ----   ---      ------   ------   
/SYS/MB/NET0/IOVNET.PF0                   PF     pci_0    primary           
[pci@400/pci@1/pci@0/pci@4/network@0]
    maxvfs = 7
示例 7-2  动态创建以太网虚拟功能而不设置可选属性

此示例会动态创建一个虚拟功能,而不设置任何可选属性。在这种情况下,自动为网络级虚拟功能分配 MAC 地址。

确保已对 pci_0 PCIe 总线启用 I/O 虚拟化。请参见如何对 PCIe 总线启用 I/O 虚拟化

现在,您可以使用 ldm create-vf 命令从 /SYS/MB/NET0/IOVNET.PF0 物理功能创建虚拟功能。

primary# ldm create-vf /SYS/MB/NET0/IOVNET.PF0
Created new vf: /SYS/MB/NET0/IOVNET.PF0.VF0
示例 7-3  动态创建以太网虚拟功能并设置属性

此示例会动态创建虚拟功能,并将 mac-addr 属性设置为 00:14:2f:f9:14:c0,以及将 vid 属性设置为 VLAN ID 23

primary# ldm create-vf mac-addr=00:14:2f:f9:14:c0 vid=2,3 /SYS/MB/NET0/IOVNET.PF0
示例 7-4  动态创建具有两个备用 MAC 地址的以太网虚拟功能

此示例会动态创建一个具有两个备用 MAC 地址的虚拟功能。一个 MAC 地址是自动分配的,另一个则显式指定为 00:14:2f:f9:14:c2

primary# ldm create-vf alt-mac-addrs=auto,00:14:2f:f9:14:c2 /SYS/MB/NET0/IOVNET.PF0
示例 7-5  静态创建虚拟功能而不设置可选属性

此示例会静态创建一个虚拟功能,而不设置任何可选属性。在这种情况下,自动为网络级虚拟功能分配 MAC 地址。

首先,在 primary 域上启动延迟重新配置,然后,在 pci_0 PCIe 总线上启用 I/O 虚拟化。由于已将 pci_0 总线分配到 primary 根域,因此,请使用 ldm set-io 命令启用 I/O 虚拟化。

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

现在,您可以使用 ldm create-vf 命令从 /SYS/MB/NET0/IOVNET.PF0 物理功能创建虚拟功能。

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
示例 7-6  创建多个 SR-IOV 以太网虚拟功能

以下命令展示了如何基于 /SYS/MB/NET2/IOVNET.PF1 物理功能创建四个虚拟功能:

primary# ldm create-vf -n 31 /SYS/MB/NET2/IOVNET.PF1
Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF0
Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF1
Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF2
...
Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF30

请注意,ldm create-vf -n 命令创建了多个设置有默认属性值(如果适用)的虚拟功能。之后,您可以使用 ldm set-io 命令指定非默认属性值。