Articles

VMware ESXi サーバー上に Hyper-V VM を展開する手順

今日の最新のハイパーバイザー システムの上では、ビジネスの問題や技術的な課題を解決するための素晴らしい方法がたくさんあります。 VMware vSphere などの今日のハイパーバイザーでできる素晴らしいことの 1 つは、ネストされた仮想化を構成できることです。 これにより、VMware vSphereの内部でハイパーバイザーをテストし、実行するためのさまざまな可能性が広がります。 VMware vSphere 内でネストされた仮想化を実行する一般的な使用例としては、テストや学習目的で Microsoft の Hyper-V ハイパーバイザーを実行することが挙げられます。

この投稿では、VMware ESXi Server 上でネストされた Hyper-V VM を構成し、ラボやその他の環境で使用するためにどのように構成するかを見ていきます。

ネスト型仮想化とは

ESXi Server 内の Hyper-V のネスト型仮想化を有効にするための VMware vSphere 構成方法の前に、ネスト型仮想化が何であるかを正確に見ていきます。 ネストされた仮想化について考えるとき、私たちはハイパーバイザーの内部でハイパーバイザーを実行することについて話しているのです。 つまり、VMware vSphere ESXiやHyper-VなどのType 1ハイパーバイザーを、この場合はVMware vSphere ESXiの上にあるVMの内部で実行することができるのです。 VMware vSphere に関して重要な点は、vSphere VM 内で Hyper-V など他のハイパーバイザーをネストした仮想化は、サポートされていないシナリオであるということです。 これは、VMware vSphere 以外の他のハイパーバイザーだけではありません。 物理的なESXiホスト環境の内部でESXiをネストして実行することさえ、サポートされていません。 これは、VMware が KB の記事 Support for running ESXi/ESX as a nested virtualization solution (2009916) で公式に指摘しています。

VMware ESXi を他の VMware ハイパーバイザー製品内で実行する場合、次の構成は技術的に可能ですが、サポートされません。 これには以下が含まれます。

  • VMware ESXi/ESX を VMware Workstation または VMware Fusion で実行
  • VMware ESXi/ESX で実行
  • VMware ESXi/ESX で実行

当然ながら Hyper-V を実行するとこの同じタイプのサポート免責事項に該当することになります。 ネストされた仮想化がサポートされている状況は 1 つだけで、それはネストされた vSAN Witness アプライアンスです。

vSAN Witness Appliance でのこのサポートされた使用例以外では、ネストされた仮想化は本番環境ではサポートされていません。 言い換えると、ネストされた仮想化を使用して問題が発生した場合、サポートは自己責任でお願いします。

ネストされた仮想化のサポート シナリオを理解している限り、それは他の目的に活用できる素晴らしい機能です。 ラボ環境、開発、テスト、およびその他の同様のタイプのシナリオに非常に効果的に使用できます。

Why Run Hyper-V inside of VMware

Why would you run a hypervisor inside another hypervisor? より具体的には、なぜ Hyper-V を VMware ESXi VM の内部で実行したいのでしょうか。 すでに述べたように、これは実稼働環境での使用にはサポートされていない構成です。 VMwareの内部でHyper-Vを実行することは、多くの素晴らしい利点をもたらします。 以下を見てみましょう:

  • ラボ環境
  • 追加のハードウェアやネットワーク機器は不要
  • 簡単に Hyper-V ホストをプロビジョニングおよび破棄できる

ラボ環境

VMware 仮想マシン内で Hyper-V ホストをプロビジョニングする場合、間違いなく最もよく使われるのがこの方法でしょう。 ネストされた仮想化により、ラボ環境、開発、テスト、およびその他の可能なユースケースを非常に簡単にプロビジョニングすることができます。 Hyper-Vラボは、以下のような用途に使用されることがあります。

  • 学習
  • ソフトウェア テスト
  • インフラのさまざまな部分で Hyper-V を POC または代替
  • インフラの別の部分で Hyper-V 環境を模倣
  • パッチ テスト

多くの小中規模環境では、VMware vSphere 環境だけが利用できていて Hyper-V ホストはないことが考えられます。 管理者が、VMware ESXi ハイパーバイザー以外の Hyper-V ホストを使用して学習し、スキルを開発したい場合、VMware vSphere にあるネストされた仮想化機能は、VMware vSphere 環境内で Hyper-V ホストをプロビジョニングする完璧な方法を提供します。 これはすべて vSphere の内部でプロビジョニングできます。 また、vSphereの堅牢な仮想ネットワーク機能により、Hyper-Vクラスタをプロビジョニングする際に必要となる特殊なネットワークのすべてをプロビジョニングすることができます。 これには、ライブ マイグレーション、ストレージ、およびクラスタ ネットワークが含まれます。 仮想スイッチ・ポート・グループを使用すると、物理ネットワーク機器を使用した場合の構成を簡単にシミュレートすることができます。 Hyper-V ホストの簡単なプロビジョニングとティアダウン

この利点は、ネストした仮想化に特有のものではなく、むしろ VMware vSphere 仮想化一般に当てはまります。 VMware には、PowerCLI を含む非常に豊富な自動化ツール セットがあります。 これにより、必要に応じて VM を簡単にスピンアップおよび破棄することができます。 ラボの構成全体をプロビジョニングとデプロビジョニングのために自動化することができます。 このように、インフラストラクチャを自動化するための簡単な機能により、ネストされた仮想化をさらに有用なものにします。

VMware ESXi Server 上でのネストされた Hyper-V VM の要件

ネストされた仮想化を使用することを決定したら、vSphere ESXi で新しい VM を作成して Hyper-V VM をロード開始するだけでしょうか。 しかし、ネストされた仮想化を実際に機能させるために「フード」の下で必要とされる膨大な複雑さを考えると、このプロセスはまだ非常に使いやすいと言えます。 VMware ESXi Server上でネストされたHyper-V VMを実行するための要件として、主に2つの領域を考慮する必要があります。 これには、

  • ゲスト OS へのハードウェア支援型仮想化の公開
  • MAC アドレス偽装送信の有効化

では、これらのそれぞれと VMware ESXi Server で Hyper-V VM をネストして実行する際の重要性を見ていきましょう。

Exposing Hardware-Assisted Virtualization to the Guest OS

この最初の要件は、絶対に必要です。 これは、Hyper-V インストールに使用している個々の VM の設定の下にある設定です。 ネストされた Hyper-V VM の設定を編集し、CPU を展開して、「Expose hardware-assisted virtualization to the guest OS」の横にチェックボックスを配置します。

Enabling hardware assisted virtualization in VMware for a Hyper-V VM

Hyper-V VM で VMware のハードウェア支援仮想化を有効にする

Hyper-V VM で VMware のハードウェア支援仮想化のこのフラッグを有効にしない場合はどうなるのでしょうか。 Windows Server オペレーティング システムをインストールするだけなら、他の VM をインストールするのと同じように動作するため、エラーは発生しません。 しかし、Hyper-Vのロールをインストールする段階になると、この設定が仮想マシンに対して有効でない場合、エラーが表示されます。 Hyper-V cannot be installed: プロセッサに必要な仮想化機能がありません」というエラーに注目してください。

補足すると、このフラグは Hyper-V Core インストール、または Desktop Experience をインストールした Windows Server に Hyper-V ロールをインストールした場合に設定する必要があります。 この機能は、VMware vSphere 内の Hyper-V ロールのネストされたインストールに必要です。

Error installing the Hyper-V role when hardware virtualization flag is not set on the VMware VM

Error installing the Hyper-V role when hardware virtualization flag is not set on the VMware VM

The flag is set a bit of PowerCLI code which lets easily setting the flag on the VM specified.

$vmName = ‘MyHyperVVM’

$vm = Get-VM -Name $vmName

$spec = New-Object VMware.Vim.VirtualMachineConfigSpec

$spec.nestedHVEnabled = $true

$vm.ExtensionData.VirtualMachineSpec $vmのVirtualMachineConfigSpec = ‘MyHyperVVM’ $vm = Get-VM -Name $vmNameReconfigVM($spec)

Enabling Promiscuous Mode and MAC Address Forged Transmits

Most likely, if you are configuring a Hyper-V nested installation inside of VMware vSphere, not only install a server with the Hyper-V role and run the nested Hyper-V VM on top of the nested Hyper-V Server, which you are running.

Hyper-V VM へのネットワーク接続は気にしないかもしれませんが、VMware 仮想マシンのネストされた Hyper-V ホストの上で動作するネストされた仮想マシンへの実際のネットワーク接続は確立したいかもしれません。

これは vSphere 6.7 以前の VMware vSwitch の場合なので、仮想スイッチが、ネストされたハイパーバイザー ホスト vmnic の pNIC MAC アドレスに一致しない MAC アドレスを持つパケットを受信すると(ネストした ESXi ホストの場合)、パケットがドロップされます。

この制限を回避するには、vSwitch で有効にする必要がある 2 つの設定、プロミスカス モードとフォージド トランスミッツがあります。

Configuring Promiscuous mode and Forged transmits on a VMware vSwitch

VMware vSwitch でプロミスカス モードとフォージド トランスミッツを設定

vSphere 6.7 以上の場合はどうでしょうか? vSphere ESX 6.7 のリリース前に、VMware は仮想スイッチに関連するネストされた仮想化および MAC 学習機能の領域で作業を開始しました。 プロミスキャスモードを有効にしたり、送信設定を偽造したりする必要がないように、MAC学習機能を導入した「MAC Learning Fling」がリリースされました。

この設定は、VMware vSphere 6.7 ESXiのリリースで実装されました。

ESXi 6.7 の新しい MAC 学習機能の要件は?

vSphere 6.7 の新しい MAC 学習機能を利用する前に、いくつかの要件があります。 それらは次のとおりです。

  • vCenter Server および ESXi サーバを vSphere 6.7
  • vSphere Distributed Switch (vDS) を実行する
  • vDS を最新バージョン (6.7) にアップグレードする。6)
  • vSphere分散スイッチのポートグループ単位で管理
  • 現在vSphere APIで管理

注意点として、vSphere 6.7とvDS 6.6 vSwitchで新しく搭載されたMAC Learning機能はデフォルトでは有効ではありません。

このプロセスをはるかに容易にするために、スタッフ ソリューション アーキテクチャである William Lam は、MAC 学習の状態のチェックと vSphere 環境での MAC 学習の設定を非常に簡単にするいくつかの PowerCLI 関数を書きました。 William の PowerCLI スクリプトは、彼の Github リポジトリから、ここからダウンロードできます。

https://github.com/lamw/vghetto-scripts/blob/master/powershell/MacLearn.ps1

vSphere Distributed Switch Port Group をチェックする Get-MacLearn 関数の出力例は、次のようになります。 フィールドに注意してください:

  • MacLearning
  • NewAllowPrimiscuous
  • NewForged Transmits
  • NewMacChanges
  • Limit
  • LimitPolicy

デフォルト設定で vDS 6.7 vSwitch ポート グループはこのように表示されます。

Checking the state of MAC Learning on a vSphere 6.7 vDS switch

Checking state of MAC Learning on a vSphere 6.7 vDS switch

For nested ESXi installations, and by extension, Hyper-V VMs running inside your vSphere ESXi hypervisor, you want to set the settings into following:

  • MAC Learning: true
  • Promiscuous mode.Of MAC Learning: true Permiscuous mode.For the nested ESXi installation, in which is the vSphere vDS switch on the MAC Learning on the vSphere ESXi hypervisor: False
  • Forged Transmit: True
  • MAC Changes: False
  • Limit: 4096 (設定可能、またはデフォルト値のまま)
  • Limit Policy: Drop (設定可能、デフォルト値のまま)

上記の推奨事項は、以下のPowerCLIコードで設定可能です。

  • Set-MacLearn -DVPortgroupName @(“DPG-Servers”) -EnableMacLearn $true -EnablePromiscuous $false -EnableForgedTransmit $true -EnableMacChange $false

今予想するように、上に気付いたように Promiscuous モード設定は False に構成されています。 MAC Learning を有効にしても、Forged Transmit は True に設定されたままです。

vSphere 6.7 に含まれる MAC Learning 機能により、プロミスキャス モードを有効にする必要がないため、vSphere 6.7 環境内でネストした VM を実行する際のセキュリティ上の影響の一部を回避することが可能です。

Can You Backup Nested Environments?

ネストした仮想化の実行は VMware vSphere で vSAN Witness アプライアンスでのみサポートされていますが、もし VMware vSphere ESXi 内でネストした Hyper-V VM を実行しているなら、ネストした環境をバックアップしたい場合があるかもしれません。 これは可能でしょうか?

はい、もちろんです。

Vembu BDR Suite のような最新のバックアップ ソリューションを使用すると、本番の VMware vSphere または Microsoft Hyper-V 環境だけでなく、環境内にある ESXi または Hyper-V のネストしたインストールもバックアップすることができます。 このように、ネストされた仮想化には多くの素晴らしい使用事例があります。 これには、学習、ソフトウェアテスト、POC、Hyper-Vホストのパッチ適用などが含まれます。

VMware vSphere でネストされた仮想化が強力であるほど、それを有効にするためのプロセスは非常に困難であると予想されるかもしれません。 しかし、Hyper-V インストールを含む VMware vSphere VM をプロビジョニングする際に、いくつかの考慮事項が必要なだけです。 これには、Hyper-V VMの仮想CPUでハードウェア支援仮想化フラグを公開すること、ネストされたHyper-V VMをネットワークに接続するためのプロミスキャスモードまたはMACラーニングを実装することが含まれます。

全体として、VMware ESXi サーバー上で Hyper-V VM をネストすることは非常に強力な機能であり、Hyper-V ハイパーバイザーを実行するための物理装置なしで Hyper-V をテストし学習することが可能です。

Follow our Twitter and Facebook feeds for new releases, updates, insightful posts and more.

Like what you read? 評価する