Windows Server 2012 Hyper-V の SR-IOV 構築手順 (2)
それでは、WS2012RC Hyper-V での構築に入っていきたいと思います。
SR-IOV モードの仮想スイッチを作成する
まずは SR-IOV モードの仮想スイッチを作成します。
「外部ネットワーク」に SR-IOV 対応の未チーム NIC を選択し、WS2012 で追加された「Single-Root I/O Virtualization (SR-IOV) を有効にする」にチェックに入れて仮想スイッチを作成します。通常の仮想スイッチと SR-IOV モードの仮想スイッチは変更できませんのでご注意ください。
作成しましたら、次の PowerShell を実行します。
PS C:\Users\Administrator> Get-VMSwitch | fl *iov* IovEnabled : True IovVirtualFunctionCount : 0 IovVirtualFunctionsInUse : 0 IovQueuePairCount : 0 IovQueuePairsInUse : 0 IovSupport : False IovSupportReasons : { このシステムで SR-IOV を使用するには、システムの BIOS を更新して、Windows で PCI Express を制御できるようにする必要があります。更新については、システムの 製造元に問い合わせてください。, SR-IOV はこのシステムで使用できません。PCI Express ハードウェアでは、どのルー ト ポートでもアクセス制御サービス (ACS) をサポートしません。詳細については、 システム ベンダーに問い合わせてください。, このシステムのシステム I/O 再マッピング ハードウェアにはセキュリティの脆弱性 があります。安全を考慮して、SR-IOV を使用する機能は無効になっています。ルート ポートの代替エラー配信メカニズムを有効にする更新されたBIOS については、システ ムの製造元に問い合わせてください。すべての仮想マシンで SR-IOV を使用して信頼 できるワークロードを実行する場合は、DWORD 型の IOVEnableOverride という名前の レジストリ キーを 値 1 で HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization に追加し、信頼できる仮想マシンの状態を変更して SR-IOV を有効にできます。 SR-IOV デバイスを仮想マシンに割り当てた後に、システムのパフォーマンスが低下し たり、不安定になる場合は、SR-IOV の使用を無効にすることをお勧めします。, このネットワーク アダプターは SR-IOV をサポートしません。 }
まずは「IovSupport」の値を見てください。
ここが True にならないと SR-IOV は利用できません。
False の場合、理由が「IovSupportReasons」に記載されています。
長文に見えますが、実はこの文章はカンマ (,) で区切られており、上記は複数の理由から SR-IOV を利用できないことを示しています。1つずつ潰していきましょう。
サーバー BIOS で SR-IOV を有効化する
このシステムで SR-IOV を使用するには、システムの BIOS を更新して、 Windows で PCI Express を制御できるようにする必要があります。 更新については、システムの製造元に問い合わせてください。
SR-IOV はこのシステムで使用できません。PCI Express ハードウェアでは、 どのルート ポートでもアクセス制御サービス (ACS) をサポートしません。 詳細については、システム ベンダーに問い合わせてください。
上記のようなメッセージが表示される場合、サーバー BIOS で遮断されています。
BIOS 上のパラメータ名はベンダーによってまちまちで、VT-d2 の「2」が省かれていたり、VT-d2 と SR-IOV が1つのパラメータにまとめれているケースもあります。
WS2012 が RTM するまで設定が隠されているケースもありますので、現行サーバーにもかかわらず、見当たらない場合はベンダーの担当者に聞いてみましょう。
また、Microsoft が "SLAT" と呼んでいる Intel VT-x2 (EPT) や AMD RVI も有効にする必要があるそうです。
カードを挿す PCIe スロットを変更する (2012.06.27 追記)
SR-IOV はこのネットワーク アダプターで使用できません。 PCI Express ハードウェアは、アクセス制御サービス (ACS) をサポートしません。 このデバイスは、代替の PCI Express スロットで機能します。 詳細については、ハードウェア ベンダーに問い合わせてください。
SR-IOV 対応サーバーであっても、特定の PCIe スロットでしか動作しないこともあります。上記のようなメッセージが出た場合は、カードを挿入する PCIe スロットを変えてみてください。
Hyper-V のレジストリ・エントリで SR-IOV を有効化する
このシステムのシステム I/O 再マッピング ハードウェアにはセキュリティの脆弱性 があります。安全を考慮して、SR-IOV を使用する機能は無効になっています。ルート ポートの代替エラー配信メカニズムを有効にする更新されたBIOS については、システ ムの製造元に問い合わせてください。すべての仮想マシンで SR-IOV を使用して信頼 できるワークロードを実行する場合は、DWORD 型の IOVEnableOverride という名前の レジストリ キーを 値 1 で HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization に追加し、信頼できる仮想マシンの状態を変更して SR-IOV を有効にできます。 SR-IOV デバイスを仮想マシンに割り当てた後に、システムのパフォーマンスが低下し たり、不安定になる場合は、SR-IOV の使用を無効にすることをお勧めします。
このメッセージは指示のとおりで、Hyper-V のレジストリ・エントリで IOVEnableOverride = 1 (DWORD) というパラメータを追加する必要があります。
NIC の BIOS で SR-IOV を有効化する
このネットワーク アダプターは SR-IOV をサポートしません。
このメッセージが出る場合、
おそらく NIC のファームウェアかデバイスドライバでロックされています。
特に、PowerShell の Get-NetAdapterSriov コマンドの実行結果で「Enabled」の値が False の場合は Firmware でロックされていますケースが高いです。
Option ROM に入って SR-IOV の有効状態を確認しましょう。
なお、SR-IOV 非対応の NIC は Get-NetAdapterSriov の実行結果に現れません。
PS C:\Users\Administrator> Get-NetAdapterSriov Name : 554FLR-1 InterfaceDescription : HP NC555a 10Gb 2-Port FlexFabric Network Adapter Enabled : False SriovSupport : NoOscSupport SwitchName : 既定のスイッチ NumVFs : 32
Emulex OneConnect CNA (HP 554FLR) の Option ROM:
加えて、ドライバレベルで無効化されていないか確認しておきます。
Broadcom BCM57810S (HP 530FLR) のデバイスドライバ:
「IovSupport」が True になることを確認
ここまでの条件がクリアできれば、「IovSupport」の値が True になるはずです。
PS C:\Users\Administrator> Get-VMSwitch | fl *iov* IovEnabled : True IovVirtualFunctionCount : 16 IovVirtualFunctionsInUse : 0 IovQueuePairCount : 16 IovQueuePairsInUse : 0 IovSupport : True IovSupportReasons : {OK}
複数ゲストからの I/O 調停をハードウェアにやらせるだけあって、色々設定しなければなりませんが、ここが True になれば SR-IOV は利用できます。
「IovVirtualFunctionCount」の数字がこの NIC で調停できるゲストの最大数です。
なお、 IovSupportReasons がどうしても「このネットワーク アダプターは SR-IOV をサポートしません。」になってしまう場合は 前回の記事 にて、NIC/CNA が WS2012 の SR-IOV 対応であるどうかを確認してみてください。
上記の Broadcom 57810S は画面から分かるとおり SR-IOV に対応していますが、WS2012RC では動作させることはできませんでした。同じ Broadcom の SR-IOV 対応 NIC でも、コントローラ・チップによって WS2012 対応に差があるようです。