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を参照してください。
詳細は、Creating and Using Oracle Solaris Zones の Assigning Rights to Non-Root Users to Manage Zonesを参照してください。
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
$ 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
$ 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
$ zoneadm -z kernel-zone boot
たとえば、システム global でカーネルゾーン kzone1 をブートするには:
global$ zoneadm -z kzone1 boot
$ 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 --
次の例は、anet 0 の iov 値を示しています。値は 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 を使用しているカーネルゾーンの場合、カーネルゾーンを一時停止および再開し、ウォーム移行またはライブ移行を使用して移行を行う機能が、Oracle Solaris 11.4 を実行しているホストシステムとゾーンに限定されます。カーネルゾーンの構成に設定 iov=auto または iov=on が含まれている場合、ソースホスト、ターゲットホスト、カーネルゾーンのいずれかで古いリリースが実行されていると、移行が失敗します。
iov が有効になったカーネルゾーンを移行する必要があり、かつカーネルゾーン、ソースホストの大域ゾーン、ターゲットホストの大域ゾーンのいずれかで Oracle Solaris 11.4 より古いリリースが実行されている場合は、コールド移行を実行する必要があります。
移行や iov プロパティーの制限の詳細については、次を確認してください。
Oracle Solaris Zones Configuration Resources の Zone Global Properties
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
カーネルゾーンの仮想機能は、カーネルゾーンに属する anet の zonecfg 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 での仮想ネットワークとネットワークリソースの管理を参照してください。