ナビゲーションリンクをスキップ
印刷ビューの終了
| Oracle VM Server for SPARC 3.0 管理ガイド Oracle VM Server for SPARC (日本語)

検索範囲:

- このドキュメント
- ライブラリ全体

## PCIe SR-IOV 仮想機能の使用

Oracle VM Server for SPARC 2.2 以降のリリースでは、Peripheral Component Interconnect Express (PCIe) シングルルート I/O 仮想化 (SR-IOV) 機能のサポートが追加されています。

### SR-IOV の概要

SR-IOV の実装は、PCI-SIG に定義されているバージョン 1.1 の標準に基づきます。SR-IOV 標準は、仮想マシン間での PCIe デバイスの効率的な共有を可能にし、ネイティブのパフォーマンスに匹敵する I/O パフォーマンスを達成するためにハードウェアに実装されます。SR-IOV 仕様は、新しいデバイスを作成し、それにより仮想マシンを I/O デバイスに直接接続できるという、新しい標準を定義しています。

物理機能として知られている 1 つの I/O リソースを、多数の仮想マシンで共有することができます。共有デバイスは専用のリソースを提供し、共有の共通リソースも使用します。このようにして、各仮想マシンが固有のリソースにアクセスすることができます。そのため、ハードウェアと OS が適切にサポートされる SR-IOV 対応の Ethernet ポートなどの PCIe デバイスは、それぞれに独自の PCIe 構成スペースがある、複数の別個の物理デバイスのように見えます。

SR-IOV の詳細は、PCI-SIG web siteを参照してください。

次の図は、I/O ドメイン内の仮想機能と物理機能の関係を示しています。

図 6-3 I/O ドメインでの仮想機能と物理機能の使用

SR-IOV には次の機能の種類があります。

- 物理機能 – SR-IOV 仕様によって定義されている SR-IOV 機能をサポートする PCI 機能。物理機能には SR-IOV 機能構造が含まれ、SR-IOV 機能を管理します。物理機能は他の PCIe デバイスと同じように検出、管理、および操作が可能な多機能の PCIe 機能です。物理機能を使用して、PCIe デバイスを構成および制御できます。

- 仮想機能 – 物理機能に関連付けられた PCI 機能。仮想機能は軽量の PCIe 機能であり、1 つ以上の物理リソースを物理機能と共有したり、その物理機能に関連付けられた仮想機能と共有したりします。物理機能とは異なり、仮想機能はそれ自体の動作しか構成できません。

各 SR-IOV デバイスには 1 つの物理機能があり、各物理機能には最大 64,000 の仮想機能を関連付けることができます。この数は、特定の SR-IOV デバイスによって異なります。仮想機能は物理機能によって作成されます。

物理機能で SR-IOV が有効になった後、物理機能のバス、デバイス、および機能数によって、各仮想機能の PCI 構成スペースにアクセスすることができます。それぞれの仮想機能には、そのレジスタセットのマップに使用される PCI メモリー領域があります。仮想機能のデバイスドライバは、その機能を有効にするためにレジスタセットで動作し、仮想機能は実際の PCI デバイスのように見えます。作成した後、仮想機能を I/O ドメインに直接割り当てることができます。この機能により、仮想機能で物理デバイスを共有したり、CPU やハイパーバイザソフトウェアのオーバーヘッドなしで I/O を実行したりできます。

SR-IOV 機能を持つデバイスに関連する利点は次のとおりです。

- パフォーマンスの向上と待ち時間の削減 – 仮想マシン環境からハードウェアへの直接アクセス

- コストの削減 – 次のような資産および運用上の支出の節約。

  - 節電

  - アダプタ数の削減

  - 配線の削減

  - スイッチポートの削減

### SR-IOV のハードウェア要件とソフトウェア要件

Oracle VM Server for SPARC 2.2 以降のリリースでは、PCIe SR-IOV 機能のサポートが追加されています。必要なハードウェア、ソフトウェア、およびファームウェアのバージョンの詳細は、『Oracle VM Server for SPARC 3.0 リリースノート』の「PCIe SR-IOV のハードウェアおよびソフトウェア要件」を参照してください。

SR-IOV 物理機能デバイスで仮想機能を作成および破棄するには、まず該当する PCIe バスで I/O 仮想化を有効にする必要があります。

`ldm set-io` または `ldm add-io` コマンドを使用すると、`iov` プロパティーを `on` に設定できます。また、`ldm add-domain` または `ldm set-domain` コマンドを使用すると、`rc-add-policy` プロパティーを `iov` に設定できます。`ldm`(1M) マニュアルページを参照してください。

ルートドメインをリブートすると SR-IOV に影響を及ぼすため、直接 I/O の構成変更は、SR-IOV に関連するルートドメインの変更が最大限になり、ルートドメインのリブートが最小限になるように、十分に計画してください。

### SR-IOV 機能の現在の制限事項

注 - リブートを最小限に抑えるには、同じ遅延再構成の中で複数の操作を実行します。

今回のリリースでは、SR-IOV 機能に次の制限事項があります。

- 1 つ以上の仮想機能が割り当てられているドメインでは、移行は無効です。

- 破棄できるのは、物理機能用に最後に作成された仮想機能のみです。そのため、3 つの仮想機能を作成した場合、最初に破棄できる仮想機能は 3 番目の仮想機能です。

- Ethernet SR-IOV カードのみがサポートされます。

- SR-IOV 機能は、`primary` ドメインに取り付けられた SR-IOV カードに対してのみ有効です。PCIe バスの割り当てまたは直接 I/O (DIO) 機能を使用して、ドメインに SR-IOV カードを割り当てた場合、そのカードに対して SR-IOV 機能は有効になりません。

- `pvid` または `vid` プロパティーのいずれかを設定することで、仮想機能の VLAN 構成を有効にすることができます。これらの仮想機能プロパティーの両方を同時に設定することはできません。

### PCIe SR-IOV 仮想機能の使用の計画

仮想機能の作成と破棄の前に、前もって計画して、構成で使用する仮想機能を決定してください。仮想機能を作成および破棄するときは、`primary` ドメインをリブートする必要があります。このようなリブートは、PCIe エンドポイントまたは SR-IOV 仮想機能のいずれかが構成されているすべての I/O ドメインに悪影響を及ぼします。そのため、`primary` ドメインのリブート回数は最小限に抑えることが重要です。さまざまな SR-IOV デバイスから、現在の構成と将来の構成のニーズを満たすために必要な仮想機能の数を決定します。

I/O ドメインの詳細は、「I/O ドメインを作成するための一般的なガイドライン」を参照してください。

SR-IOV 仮想機能の構成と割り当てを行うには、次の一般的な手順を使用してください。

1. 使用しているシステムで使用できる PCIe SR-IOV 物理機能と、そのなかでニーズにもっとも合うものを決定します。

   次のコマンドを使用して、必要な情報を確認します。

   `ldm list-io`

     使用可能な SR-IOV 物理機能デバイスを確認します。

   `prtdiag -v`

     使用可能な PCIe SR-IOV カードおよびオンボードのデバイスを確認します。

   `ldm list-io -l` pf-name

     デバイスがサポートする仮想機能の最大数など、指定した物理機能についての追加情報を確認します。

   `ldm list-io -d` pf-name

     デバイスによってサポートされる、デバイス固有のプロパティーを確認します。「SR-IOV の詳細なトピック」を参照してください。

2. ルートドメインで遅延再構成を開始します。

       primary# ldm start-reconf primary

3. PCIe バスに対する I/O 仮想化操作を有効にします。

       primary# ldm set-io iov=on bus

4. 指定した SR-IOV 物理機能で、必要な数の仮想機能を作成します。

   次のコマンドを使用して、仮想機能を作成します。

       primary# ldm create-vf pf-name

   `ldm create-vf` コマンドを使用して、仮想機能のデバイス固有およびネットワーク固有のプロパティーを設定します。`unicast-slots` プロパティーはデバイスに固有です。`mac-addr`、`alt-mac-addrs`、`mtu`、`pvid`、および `vid` プロパティーはネットワークに固有です。

   `mac-addr`、`alt-mac-addrs`、および `mtu` のネットワーク固有のプロパティーは、次のように変更できます。

   - 仮想機能が `primary` ドメインに割り当てられている場合: 遅延再構成を開始する必要があります。

   - 仮想機能がアクティブな I/O ドメインに割り当てられている場合: 変更は所有しているドメインがアクティブでないか停止しているときに行なわれる必要があるため、プロパティー変更要求は拒否されます。

   - 仮想機能が `primary` 以外のドメインに割り当てられていて、遅延再構成がすでに有効になっている場合: プロパティー変更要求は失敗して、エラーメッセージが表示されます。

   `pvid` および `vid` のネットワーク固有プロパティーは変更可能で、制限はありません。

   遅延再構成時には、複数の仮想機能を作成し、`primary` ドメインのリブートを 1 回実行するだけで、変更を有効にすることができます。仮想機能を作成するたびに `primary` ドメインをリブートする必要はありません。

   特定の SR-IOV 物理機能が多数の仮想機能をサポートする場合があります。必要な仮想機能だけを作成してください。推奨される構成の最大数については、「SR-IOV の詳細なトピック」を参照してください。

5. `ldm add-config` コマンドを使用して、構成を SP に保存します。

6. ルートドメインをリブートして、仮想機能を作成します。

7. `ldm add-io` コマンドを使用して仮想機能をアクティブなドメインに割り当てる前に、そのドメインを停止する必要があります。すべての I/O ドメインにまとめて変更を加えることで、I/O ドメインのダウンタイムを最小限に抑えます。この方法で、このような構成を設定するために必要な `primary` ドメインのリブート回数を減らすことができます。

8. I/O ドメインをブートし、仮想機能をほかのネットワークデバイスと同じように構成します。

   仮想機能の制限事項については、「SR-IOV の詳細なトピック」を参照してください。

### 仮想機能の作成、変更、および破棄

このセクションでは、仮想機能の作成、変更、および破棄の方法を説明します。

### 仮想機能を作成する方法

1. 仮想機能デバイスを識別します。

       primary# ldm list-io

   仮想機能の名前には、PCIe SR-IOV カードまたはオンボードのデバイスの場所情報が含まれています。

2. 制御ドメインの遅延再構成を開始します。

       primary# ldm start-reconf primary

3. 物理機能を持つバスでまだ I/O 仮想化が有効になっていない場合は、`iov=on` のみを設定して有効にします。

       primary# ldm set-io iov=on bus

4. 物理機能から仮想機能を作成します。

       primary# 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 アドレスはネットワークデバイスに対して自動的に割り当てられます。

   パス名または仮名を使用して、仮想機能を指定することができます。ただし、仮名を使用することをお勧めします。

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

次の例は、仮想機能の作成方法を示しています。

- 次の例では、オプションのプロパティーを設定せずに仮想機能を作成します。この場合、ネットワーククラス仮想機能の MAC アドレスは自動的に割り当てられます。

      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

- この例では、仮想機能を作成し、`mac-addr` プロパティーを `00:14:2f:f9:14:c0` に設定し、`vid` プロパティーを VLAN ID `2` および `3` に設定します。

      primary# ldm create-vf mac-addr=00:14:2f:f9:14:c0 vid=2,3 /SYS/MB/NET0/IOVNET.PF0

- この例では、2 つの代替 MAC アドレスがある仮想機能を作成します。1 つの MAC アドレスは自動的に割り当てられ、もう 1 つは `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

### 仮想機能を変更する方法

`ldm set-io` bus コマンドは、プロパティー値を変更するか、新規プロパティーを設定することで、仮想機能の現在の構成を変更します。このコマンドは、ネットワーク固有のプロパティーとデバイス固有のプロパティーの両方を変更できます。デバイス固有のプロパティーについては、「SR-IOV の詳細なトピック」を参照してください。

`ldm set-io` コマンドで、次のプロパティーを変更できます。

- `mac-addr`、`alt-mac-addrs`、および `mtu`

  これらの仮想機能プロパティーを変更するには、まず仮想機能を所有しているドメインを停止し、遅延再構成を開始します。変更を有効にするには、ドメインをリブートする必要があります。

- `pvid` および `vid`

  仮想機能がドメインに割り当てられているときは、これらのプロパティーを動的に変更することができます。これを行うと、アクティブな仮想機能のネットワークトラフィックが変更されることがあるため、注意してください。つまり、`pvid` プロパティーを設定すると、透過的な VLAN が有効になります。VLAN ID を指定するように `vid` プロパティーを設定すると、それらの指定された VLAN に対して VLAN トラフィックが許可されます。

- デバイス固有のプロパティー

  `ldm list-io -d` pf-name コマンドを使用して、有効なデバイス固有のプロパティーのリストを表示します。物理機能と仮想機能の両方に対して、これらのプロパティーを変更することができます。変更を有効にするには、遅延再構成を開始し、`primary` ドメインをリブートする必要があります。デバイス固有のプロパティーの詳細については、「SR-IOV の詳細なトピック」を参照してください。

- 仮想機能を変更します。

      primary# ldm set-io name=value [name=value...] vf-name

例 6-2 仮想機能の変更

次の例は、`ldm set-io` コマンドで仮想機能にプロパティーを設定する方法を示しています。

- 次の例では、指定された仮想機能 `/SYS/MB/NET0/IOVNET.PF0.VF0` を、VLAN ID `2`、`3`、および `4` の一部になるように変更します。

      primary# ldm set-io vid=2,3,4 /SYS/MB/NET0/IOVNET.PF0.VF0

  このコマンドは、仮想機能の VLAN の関連付けを動的に変更することに注意してください。これらの VLAN を変更するには、適切な Oracle Solaris OS ネットワークコマンドを使用して、I/O ドメインの VLAN インタフェースを構成する必要があります。

- 次の例では、`/SYS/MB/NET0/IOVNET.PF0.VF0` 仮想機能に対して `pvid` プロパティー値を `2` に設定し、仮想機能を透過的に VLAN `2` の一部にします。つまり、仮想機能は、タグ付けされたどの VLAN トラフィックも表示しません。

      primary# ldm set-io pvid=2 /SYS/MB/NET0/IOVNET.PF0.VF0

- 次の例では、自動的に割り当てられた 3 つの代替 MAC アドレスを、仮想機能に割り当てます。これらの代替アドレスにより、仮想機能の最上部に Oracle Solaris 11 仮想ネットワークインタフェースカード (VNIC) を作成することができます。VNIC を使用するには、ドメインで Oracle Solaris 11 OS を実行する必要があることに注意してください。

  注 - このコマンドを実行する前に、仮想機能を所有するドメインを停止します。

      primary# ldm set-io alt-mac-addrs=auto,auto,auto /SYS/MB/NET0/IOVNET.PF0.VF0

- 次の例では、指定された仮想機能に対して、デバイス固有の `unicast-slots` プロパティーを `12` に設定します。物理機能に対して有効なデバイス固有のプロパティーを調べるには、`ldm list-io -d` pf-name コマンドを使用します。

      primary# ldm set-io unicast-slots=12 /SYS/MB/NET0/IOVNET.PF0.VF0

      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.

### 仮想機能を破棄する方法

仮想機能が現在ドメインに割り当てられていない場合は、その仮想機能を破棄できます。仮想機能は作成した逆の順序でしか破棄できないため、破棄できるのは最後に作成した仮想機能だけです。結果として作成される構成は、物理機能ドライバによって検証されます。変更を有効にするには、遅延再構成を開始し、ドメインをリブートする必要があります。

1. ルートドメインで遅延再構成を開始します。

       primary# ldm start-reconf primary

2. 仮想機能を破棄します。

       primary# ldm destroy-vf vf-name

例 6-3 仮想機能の破棄

次の例は、`/SYS/MB/NET0/IOVNET.PF0.VF0` 仮想機能を破棄する方法を示しています。

    primary# ldm destroy-vf  /SYS/MB/NET0/IOVNET.PF0.VF0

    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.

### I/O ドメイン上の仮想機能の追加および削除

### 仮想機能を I/O ドメインに追加する方法

次のコマンドは、仮想機能を論理ドメインに追加します。

    ldm add-io vf-name ldom

vf-name は、仮想機能の仮名またはパス名です。仮名を使用することをお勧めします。ldom は、仮想機能を追加するドメインの名前を指定します。指定されたゲストは、アクティブでないか停止している必要があります。`primary` ドメインを指定する場合は、遅延再構成を開始する必要があります。

- 仮想機能を追加します。

      primary# ldm add-io vf-name ldom

  ドメイン内の仮想機能のデバイスパス名は、`list-io -l` 出力に示されているパスです。

例 6-4 仮想機能の追加

次の例は、`/SYS/MB/NET0/IOVNET.PF0.VF0` 仮想機能を `ldg1` ドメインに追加する方法を示しています。正常に実行するには、指定したドメインがアクティブでないか停止している必要があります。そのドメインが `primary` ドメインの場合、まず遅延再構成を開始する必要があります。

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

コマンドが正常に実行されると、仮想機能が `ldg1` ドメインに追加されます。`ldg1` がすでにバインドされている (またはあとでバインドされる) 場合は、ドメインを起動することができ、ゲスト OS が I/O 操作に追加された仮想機能を使用することができます。

### 仮想機能を I/O ドメインから削除する方法

次のコマンドは、SR-IOV 仮想機能を論理ドメインから削除します。

    ldm remove-io vf-name ldom

vf-name は、仮想機能の仮名またはパス名です。デバイスの仮名を使用することをお勧めします。ldom は、仮想機能を削除するドメインの名前を指定します。指定されたゲストは、アクティブでないか停止している必要があります。`primary` ドメインを指定する場合は、遅延再構成を開始する必要があります。

注 - 仮想機能をドメインから削除する前に、そのドメインのブートが必須ではないことを確認してください。

- 仮想機能を削除します。

      primary# ldm rm-io vf-name ldom

例 6-5 仮想機能の削除

次の例は、`/SYS/MB/NET0/IOVNET.PF0.VF0` 仮想機能を `ldg1` ドメインから削除する方法を示しています。

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

コマンドが正常に実行されると、仮想機能が `ldg1` ドメインから削除されます。`ldg1` が再起動されると、指定された仮想機能はそのドメインに表示されなくなります。

仮想機能を持つドメインが `primary` ドメインの場合は、遅延再構成を開始する必要があります。

### SR-IOV: ルートドメインのリブート

`primary` ドメインをリブートするときは、慎重に行なってください。「ルートドメインのリブート」を参照してください。I/O ドメインの PCIe スロットと同様に、このセクションで説明している問題は、I/O ドメインに割り当てられている仮想機能にも関連があります。

### I/O ドメインを作成するための SR-IOV 仮想機能の使用

次の手順で、PCIe SR-IOV 仮想機能を含む I/O ドメインを作成する方法を説明します。

### SR-IOV 仮想機能を割り当てることによって I/O ドメインを作成する方法

`primary` ドメインのリブート回数を最小限に抑えて、ダウンタイムを最小限に抑えるように事前に計画します。

1. SR-IOV 機能を使用する I/O ドメインと共有する SR-IOV 物理機能を識別します。

       primary# ldm list-io

2. 共有する物理機能についての詳細情報を入手します。

       primary# ldm list-io -l pf-name

3. ルートドメインで遅延再構成を開始します。

       primary# ldm start-reconf primary

4. PCIe バスに対する I/O 仮想化を有効にします。

       primary# ldm set-io iov=on bus

5. 物理機能に対して 1 つ以上の仮想機能を作成します。

       primary# ldm create-vf pf-name

   このコマンドは、作成する仮想機能ごとに実行できます。これらのコマンドをバッチとして実行すると、`primary` ドメインを 1 回リブートするだけで済みます。

6. PCIe エンドポイントデバイスまたは仮想機能が割り当てられているすべての I/O ドメインを停止します。

       primary# ldm stop ldom

7. ルートドメインをリブートします。

       primary# reboot

8. `primary` ドメインで使用できる仮想機能のリストを表示します。

       primary# ldm list-io

9. 仮想機能をドメインに割り当てます。

       primary# ldm add-io vf-name ldom

10. ドメインをバインドし、起動します。

        primary# ldm bind ldom
        primary# ldm start ldom

11. 仮想機能が I/O ドメインで使用可能であることを確認します。

    次の Oracle Solaris 11 コマンドは、仮想機能の利用度を表示します。

        guest# dladm show-phys

例 6-6 SR-IOV 仮想機能を割り当てることによる I/O ドメインの作成

次の例は、物理機能 `/SYS/MB/NET0/IOVNET.PF0` に対する仮想機能 `/SYS/MB/NET0/IOVNET.PF0.VF0` を作成して、仮想機能を `ldg1` I/O ドメインに割り当てる方法を示しています。

次の `ldm list-io` 出力は、`/SYS/MB/NET0/IOVNET.PF0` 物理機能が使用可能であることを示しています。

    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

次のコマンドは、作成できる仮想機能の最大数を含む、`/SYS/MB/NET0/IOVNET.PF0` 物理機能に関する追加の詳細を表示します。

    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

次のコマンドは、`/SYS/MB/NET0/IOVNET.PF0` 物理機能に対して `/SYS/MB/NET0/IOVNET.PF0.VF0` という仮想機能を作成します。

    primary# ldm start-reconf primary
    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

`ldg1` I/O ドメインには DIO 機能を使用して作成された PCIe エンドポイントデバイスがあるため、次のように、`ldg1` ドメインを停止し、`primary` ドメインをリブートする必要があります。

    primary# ldm stop ldg1
    primary# reboot

次のコマンドは、新しい `/SYS/MB/NET0/IOVNET.PF0.VF0` 仮想機能が存在することを確認します。

    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

次のコマンドは、`/SYS/MB/NET0/IOVNET.PF0.VF0` 仮想機能を `ldg1` ドメインに割り当てます。

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

次のコマンドは、`ldg1` ドメインをバインドして再起動します。

    primary# ldm bind ldg1
    primary# ldm start ldg1

次のコマンドは、仮想機能が使用可能であることを確認します。

    guest# dladm show-phys
    LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
    net0              Ethernet             up         0      unknown   vnet0
    net1              Ethernet             up         1000   full      igbvf0

### SR-IOV の詳細なトピック

このセクションでは、PCIe SR-IOV 対応の I/O デバイスの使用時に生じる、いくつかの詳細なトピックについて説明します。

- SR-IOV 仮想機能の使用による I/O ドメインのブート。SR-IOV 仮想機能には、仮想機能を論理ドメインのブートデバイスとして使用する機能など、ほかの種類の PCIe デバイスと同様の機能があります。たとえば、ネットワーク仮想機能を使用して、Oracle Solaris OS を I/O ドメインにインストールするためにネットワークを介してブートすることができます。

  注 - 仮想機能デバイスから Oracle Solaris OS をブートするときは、ロードされる Oracle Solaris OS が仮想機能デバイスをサポートしていることを確認してください。その場合は、計画どおりに残りのインストールを続行できます。

- サポートされる I/O ドメインおよび仮想機能の最大数。特定の PCIe バスの PCIe エンドポイントデバイスおよび SR-IOV 仮想機能を、最大 15 までのドメインに割り当てることができます。各 PCIe バスの割り込みベクトルなどの PCIe リソースは、ルートドメインと I/O ドメインの間で分配されます。その結果、特定の I/O ドメインに割り当てることができるデバイスの数も制限されています。そのため、同じ I/O ドメインに多数の仮想機能を割り当てないようにしてください。SR-IOV に関連する問題については、『Oracle VM Server for SPARC 3.0 リリースノート』を参照してください。

#### SR-IOV デバイス固有のプロパティー

SR-IOV 物理機能のデバイスドライバは、デバイス固有のプロパティーをエクスポートできます。これらのプロパティーを使用して、物理機能とその仮想機能の両方のリソース割り当てを調整することができます。プロパティーについては、`igb`(7D) および `ixgbe`(7D) マニュアルページなどの、物理機能ドライバについてのマニュアルページを参照してください。

`ldm list-io -d` コマンドは、指定された物理機能デバイスドライバによってエクスポートされるデバイス固有のプロパティーを表示します。各プロパティーに、名前、簡単な説明、デフォルト値、最大値、および次のフラグの 1 つまたは複数があります。

`P`

  物理機能に適用されます

`V`

  仮想機能に適用されます

`R`

  読み取り専用または通知パラメータ専用

    primary# ldm list-io -d pf-name

`ldm create-vf` または `ldm set-io` コマンドを使用して、物理機能または仮想機能に対して読み書きプロパティーを設定します。デバイス固有のプロパティーを設定するには、遅延再構成を開始する必要があります。

次の例は、オンボードの Intel 1 ギガビット SR-IOV デバイスによってエクスポートされる、デバイス固有のプロパティーを示しています。

    primary# ldm list-io -d /SYS/MB/NET0/IOVNET.PF0
    Device-specific Parameters
    --------------------------
    max-config-vfs
        Flags = PR
        Default = 7
        Descr = Max number of configurable VFs
    max-vf-mtu
        Flags = VR
        Default = 9216
        Descr = Max MTU supported for a VF
    max-vlans
        Flags = VR
        Default = 32
        Descr = Max number of VLAN filters supported
    pvid-exclusive
        Flags = VR
        Default = 1
        Descr = Exclusive configuration of pvid required
    unicast-slots
        Flags = PV
        Default = 0 Min = 0 Max = 24
        Descr = Number of unicast mac-address slots

次の例では、`unicast-slots` プロパティーを `8` に設定します。

    primary# ldm create-vf unicast-slots=8 /SYS/MB/NET0/IOVNET.PF0

#### 仮想機能のための高度なネットワーク構成

- SR-IOV 仮想機能は、Logical Domains Manager によって割り当てられた Mac アドレスのみを使用できます。ほかの Oracle Solaris OS ネットワークコマンドで I/O ドメイン上の MAC アドレスを変更すると、コマンドは失敗するか、適切に機能しない可能性があります。

- 現在のところ、I/O ドメインでの SR-IOV ネットワーク仮想機能のリンクアグリゲーションはサポートされていません。リンクアグリゲーションを作成しようとすると、予想どおりに機能しない可能性があります。

- I/O サービスを作成して、I/O ドメインに割り当てることができます。これらの仮想 I/O サービスは、仮想機能の作成元と同じ物理機能に作成することができます。たとえば、仮想スイッチ用のネットワークバックエンドデバイスとしてオンボードの 1 ギガビットのネットワークデバイス (`net0` または `igb0`) を使用でき、同じ物理機能デバイスから仮想機能を作成することもできます。

##### SR-IOV 仮想機能での VNIC の作成

SR-IOV 仮想機能では Oracle Solaris 11 VNIC の作成がサポートされています。ただし、サポートされる VNIC の数は、仮想機能に割り当てられた代替 MAC アドレス (`alt-mac-addrs` プロパティー) の数に制限されます。そのため、仮想機能で VNIC を使用するときは、必ず十分な数の代替 MAC アドレスを割り当ててください。`ldm create-vf` または `ldm set-io` コマンドを使用して、代替 MAC アドレスを指定して `alt-mac-addrs` プロパティーを設定します。

次の例は、SR-IOV 仮想機能での 4 つの VNIC の作成を示しています。最初のコマンドは、代替 MAC アドレスを仮想機能デバイスに割り当てます。このコマンドは、自動割り当て方式で、4 つの代替 MAC アドレスを `/SYS/MB/NET0/IOVNET.PF0.VF0` 仮想機能デバイスに割り当てます。

    primary# ldm set-io alt-mac-addrs=auto,auto,auto,auto /SYS/MB/NET0/IOVNET.PF0.VF0

次のコマンドは、I/O ドメインで Oracle Solaris 11 OS を起動してブートします。この例では、`ldg1` が I/O ドメインです。

    primary# ldm start ldg1

次のコマンドは、ゲストドメインで Oracle Solaris 11 の `dladm` コマンドを使用して、4 つの VNIC を作成します。代替 MAC アドレスを使用して指定した VNIC よりも多くの VNIC を作成しようとすると、失敗することに注意してください。

    guest# dladm show-phys
    LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
    net0              Ethernet             up         0      unknown   vnet0
    net1              Ethernet             up         1000   full      igbvf0
    guest# dladm create-vnic -l net1 vnic0
    guest# dladm create-vnic -l net1 vnic1
    guest# dladm create-vnic -l net1 vnic2
    guest# dladm create-vnic -l net1 vnic3
    guest# dladm show-link
    LINK                CLASS     MTU    STATE    OVER
    net0                phys      1500   up       --
    net1                phys      1500   up       --
    vnic0               vnic      1500   up       net1
    vnic1               vnic      1500   up       net1
    vnic2               vnic      1500   up       net1
    vnic3               vnic      1500   up       net1

Copyright © 2007, 2013, Oracle and/or its affiliates. All rights reserved. 著作権について |