Go to main content

Oracle® Solaris カーネルゾーンの作成と使用

印刷ビューの終了

更新: 2018 年 8 月
 
 

カーネルゾーンでのシングルルート I/O NIC 仮想化の管理

zonecfg anet リソースタイプの iov プロパティーを使用すると、カーネルゾーンでシングルルート I/O (SR-IOV) NIC 仮想機能 (VF) を作成および管理できます。SR-IOV は仮想マシン間での PCIe (Peripheral Component Interconnect Express) デバイスの効率的な共有を可能にし、ベアメタルのパフォーマンスに匹敵する I/O パフォーマンスを実現できるようシステムハードウェアに実装されています。

カーネルゾーンの anet リソースで SR-IOV を有効化するには、大域ゾーンのデータリンク上で SR-IOV を有効にする必要があります。Oracle Solaris での SR-IOV の使用方法については、Oracle Solaris 12 での仮想ネットワークとネットワークリソースの管理 の Using Single Root I/O Virtualization With VNICsを参照してください。

iov プロパティーは、カーネルゾーンとネイティブ (solaris) ゾーンでのみサポートされます。

iov プロパティーを有効にすると、カーネルゾーンを一時停止および再開し、ウォーム移行またはライブ移行を使用してカーネルゾーンを移行する機能が、Oracle Solaris 11.4 を実行しているホストシステムとゾーンに限定されます。詳細は、SR-IOV が有効になった anet リソースを含むカーネルゾーンの移行についてを参照してください。

anet リソースタイプの iov プロパティーを有効化および構成する方法については、Oracle Solaris Zones Configuration Resources の Zone Global Propertiesを参照してください。


ヒント  -  SR-IOV をサポートする一部の Intel ネットワークアダプタを使用している場合、仮想機能が悪意のある動作のターゲットとなる可能性があります。ソフトウェアにより生成された予期しないフレームによってホストシステムと仮想スイッチ間のトラフィックが減速し、パフォーマンスに悪影響を与えることがあります。この問題を回避するには、SR-IOV が有効になっているすべてのポートが VLAN タグ付けを使用するように構成することで、予期しない悪質な可能性のあるフレームがドロップされるようにします。詳細は、使用例 15, anet リソースでの SR-IOV および VLAN タグ付けの構成を参照してください。

単一の anet リソースを使用してカーネルゾーンで SR-IOV NIC 仮想機能を有効にする方法

  1. ゾーン管理者になります。

    詳細は、Creating and Using Oracle Solaris Zones の Assigning Rights to Non-Root Users to Manage Zonesを参照してください。

  2. anetiov を有効にします。

    zonecfg を使用して、選択された anet リソースの iov プロパティーを設定します。

    $ pfbash zonecfg -z kernel-zone
    zonecfg:kernel-zone> select anet id=id-number
    zonecfg:kernel-zone:anet> set lower-link=network-interface
    zonecfg:kernel-zone>set iov=iov-value
    zonecfg:kernel-zone:anet> set iov=auto
    zonecfg:kernel-zone:anet> end ; exit

    次の例では、カーネルゾーン kzone1 に属する anet リソースで iov プロパティーを有効化する方法を示しています。

    global$ pfbash zonecfg -z kzone1
    zonecfg:kzone1> select anet id=0
    zonecfg:kzone1:anet> set lower-link=net1
    zonecfg:kzone1:anet> set iov=auto
    zonecfg:kzone1:anet> end ; exit
  3. (オプション) カーネルゾーン構成の anet リソースに iov プロパティーが設定されていることを確認します。
    $ zonecfg -z kernel-zone info anet id=id-number

    たとえば、システム global 上のカーネルゾーン kzone1 の、ID 0 を持つ anet リソースの場合:

    $ zonecfg -z kzone1 info anet id=0
    anet:
            lower-link: net1
            configure-allowed-address: true
            iov: auto
            id: 0
  4. 選択されたネットワークインタフェースで SR-IOV が有効になっていることを確認します。
    $ dladm show-linkprop -p iov network-interface

    たとえば、システム global およびネットワークインタフェース net1 の場合:

    global$ dladm show-linkprop -p iov net1
    LINK     PROPERTY        PERM VALUE        EFFECTIVE    DEFAULT   POSSIBLE
    net1     iov             rw   on           on           auto      auto,on,off
  5. カーネルゾーンをブートします。
    $ zoneadm -z kernel-zone boot

    たとえば、システム global でカーネルゾーン kzone1 をブートするには:

    global$ zoneadm -z kzone1 boot
  6. VF が正常に追加されたことを確認します。
    $ zlogin kernel-zone
    kernel-zone$ dladm show-phys -i

    このコマンドの出力は、ホストシステムの大域ゾーンとカーネルゾーンで実行されている Oracle Solaris のバージョンに応じて変わります。選択された Oracle Solaris バージョンの組み合わせに対するサンプル出力を次に示します。

    • 大域ゾーンとカーネルゾーンの両方で Oracle Solaris 11.4 が実行されている:

      global$ pfexec zlogin kzone
      kzone$ dladm show-phys -i
      LINK              MEDIA          ID       DEVICE      ACTIVE     STANDBY
      net0              Ethernet       anet:0   vnic1000    ixgbevf0   zvnet0
    • 大域ゾーンで Oracle Solaris 11.4 が、カーネルゾーンで Oracle Solaris 11.3 が実行されている:

      global$ pfexec zlogin kzone
      kzone$ dladm show-phys -i
      LINK         MEDIA        STATE     SPEED    DUPLEX      DEVICE
      net0         Ethernet     down      0        unknown     ixgbevf0
    • 大域ゾーンで Oracle Solaris 11.3 が、カーネルゾーンで Oracle Solaris 11.4 が実行されている:

      global$ pfexec zlogin kzone
      kzone$ dladm show-phys -i
      LINK              MEDIA          ID       DEVICE      ACTIVE     STANDBY
      net0              Ethernet       anet:0   vnic1000    ixgbevf0   --
使用例 14  anetzonecfg iov 値の確認

次の例は、anet 0iov 値を示しています。値は auto に設定されています。値がデフォルト値の off に設定されている場合、値は表示されません。

global$ pfbash zonecfg -z kzone1
zonecfg:kzone1> select anet id=0
zonecfg:kzone1:anet> info
anet:
        lower-link: net1
        configure-allowed-address: true
        iov: auto
        id: 0
使用例 15  anet リソースでの SR-IOV および VLAN タグ付けの構成

次の例は、anet リソース上で VLAN タグ付けが有効になるよう VLAN ID を明示的に設定する方法を示しています。これにより、タグ付けされていない、悪質な可能性のあるフレームを破棄できます。

global$ pfbash zonecfg -z kzone1
zonecfg:kzone1> select anet id=0
zonecfg:kzone1:anet> set iov=auto
zonecfg:kzone1:anet> set vlan-id=11
zonecfg:kzone1:anet> end ; exit

VLAN ID の設定や VLAN タグ付けの詳細については、カーネルゾーンでの仮想 LAN の構成を参照してください。

SR-IOV が有効になった anet リソースを含むカーネルゾーンの移行について

SR-IOV を使用しているカーネルゾーンの場合、カーネルゾーンを一時停止および再開し、ウォーム移行またはライブ移行を使用して移行を行う機能が、Oracle Solaris 11.4 を実行しているホストシステムとゾーンに限定されます。カーネルゾーンの構成に設定 iov=auto または iov=on が含まれている場合、ソースホスト、ターゲットホスト、カーネルゾーンのいずれかで古いリリースが実行されていると、移行が失敗します。

iov が有効になったカーネルゾーンを移行する必要があり、かつカーネルゾーン、ソースホストの大域ゾーン、ターゲットホストの大域ゾーンのいずれかで Oracle Solaris 11.4 より古いリリースが実行されている場合は、コールド移行を実行する必要があります。

SR-IOV が有効になったカーネルゾーンでのネットワーク高可用性の構成

SR-IOV が有効になったデータリンクマルチパス (DLMP) が大域ゾーンで使用されている場合、カーネルゾーン内の SR-IOV デバイスでネットワーク高可用性を実現できます。

高可用性を有効にするには、大域ゾーンで SR-IOV が有効になったリンクの DLMP リンクアグリゲーションを作成したあと、その DLMP アグリゲーションを下位リンクとして使用する anet リソースをカーネルゾーンに追加します。anet リソースの iov プロパティーを auto に設定し、ゾーンをブートします。

詳細は、Managing Network Datalinks in Oracle Solaris 11.4 の Datalink Multipathing Aggregationsを参照してください。

使用例 16  カーネルゾーンでのネットワーク高可用性用 DLMP リンクアグリゲーションの構成
global$ pfbash dladm set-linkprop -p iov=on net3
global$ dladm set-linkprop -p iov=on net4
global$ dladm create-aggr -l net3 -l net4 -m dlmp dlmp0
global$ zonecfg -z kz1
zonecfg:kz1> create -t SYSsolaris-kz
zonecfg:kz1> add anet
zonecfg:kz1:anet> set lower-link=dlmp0
zonecfg:kz1:anet> set iov=auto
zonecfg:kz1:anet> set id=0
zonecfg:kz1:anet> end

global$ zoneadm -z kz1 boot
global$ dladm show-aggr -C dlmp0
LINK       PORT           SPEED DUPLEX   STATE     CLIENTS
dlmp0      --             10000Mb full   up        --
           net3           10000Mb full   up        kz1/net0
           net4           10000Mb full   up        dlmp0

global$ zlogin kz1 dladm show-phys -i
LINK              MEDIA          ID       DEVICE      ACTIVE     STANDBY
net0              Ethernet       anet:0   vnic1000    ixgbevf0   zvnet0

カーネルゾーンでの仮想機能とシャドウ VNIC の使用

カーネルゾーンの仮想機能は、カーネルゾーンに属する anetzonecfg iov プロパティーが on または auto に設定されているときに作成されます。VF はホストシステムによってカーネルゾーンに割り当てられます。

カーネルゾーンに割り当てられた各 VF には、ホストシステム内のシャドウ VNIC が関連付けられます。シャドウ VNIC を使用してネットワーク統計情報を表示できます。

次にシステム global のシャドウ VNIC kzone1/net0 の出力例を示しています。

global$ dladm show-link
LINK                CLASS     MTU    STATE    OVER
net1                phys      1500   unknown  --
net0                phys      1500   up       --
net2                phys      1500   up       --
kzone1/net0         vnic      1500   unknown  net1

global$ dlstat show-link kzone1/net0
LINK               IPKTS   RBYTES    OPKTS   OBYTES
kzone1/net0        0        0        3      126

VF は DLMP アグリゲーションから割り当てることができます。DLMP アグリゲーションに iov=auto を設定できます。この場合、利用可能な VF リソースが存在すると VF が割り当てられます。例については、使用例 16, カーネルゾーンでのネットワーク高可用性用 DLMP リンクアグリゲーションの構成を参照してください。

DLMP またはトランクアグリゲーションで iov=on を設定することは、禁止されています。

zonecfg anet プロパティー bwshare を使用すると、ベースとなる物理リンクがサポートされている場合にのみ、リンク上にシャドウ VNIC を設定できます。追加情報については、dladm(8) および zonecfg(8) のマニュアルページを参照してください。

VNIC とネットワーク構成の追加情報については、Oracle Solaris 12 での仮想ネットワークとネットワークリソースの管理を参照してください。