Windows 10 / Windows Server 2019 / Windows Server 2016 の Hyper-V は、仮想マシンのネストができます。
Hyper-V ホスト側で、Hyper-Vゲストの仮想マシンに対して ExposeVirtualizationExtensions を True にすると、Hyper-Vゲストの仮想マシンの仮想化テクノロジを有効にすることができるので、Nested Hyper-V が利用できます。
Windows 10 / Windows Server 2019 の仮想マシンを用意して、その仮想マシンの中で Hyper-V を有効化してみました。
目次
仮想マシン Windows 10 Hyper-V インストール
仮想マシンの Windows 10 Pro 64ビット版 に Hyper-V をインストールしてみます。
※仮想マシンの Windows 10 ですが、実機の Windows 10 でもインストール方法は同じです。
仮想マシンのPC名は P1CBW1001A という名前にしています。
ネットワークアダプタは1つで、メモリは4G(4096M)、プロセッサは4つ割り当てています。
先に、Hyper-V が使用できない状態で、Windows の機能の有効化 を行おうとした場合の画面を載せておきます。
仮想化テクノロジが無効だと、このように Hyper-V Hypervisor が有効にできないのでインストールすることができません。
ホスト側で、ExposeVirtualizationExtensions を有効にして Hyper-V をインストールしますが、インストール後のネットワークの差異が確認できるように、インストール前のネットワークの状態を載せておきます。
ネットワーク接続、イーサネットという名前で、1つあります。
イーサネットのプロパティです。
※ リスト内が見えるように画像を編集しています。
それでは、ExposeVirtualizationExtensions を True にしましょう。
Windows 10 は必ずシャットダウンして停止しておいてください。
確認として、現在の ExposeVirtualizationExtensions の値を確認します。
Get-VMProcessor -VMName [仮想マシン名] で仮想マシンの各値が取得できます。
PS C:\Users\Administrator> Get-VMProcessor -VMName P1CBW1001A | fl ResourcePoolName : Primordial Count : 4 CompatibilityForMigrationEnabled : False CompatibilityForOlderOperatingSystemsEnabled : False HwThreadCountPerCore : 0 ExposeVirtualizationExtensions : False EnablePerfmonPmu : False EnablePerfmonLbr : False EnablePerfmonPebs : False Maximum : 100 Reserve : 0 RelativeWeight : 100 MaximumCountPerNumaNode : 8 MaximumCountPerNumaSocket : 1 EnableHostResourceProtection : False OperationalStatus : {} StatusDescription : {} Name : プロセッサ Id : Microsoft:E8EC4041-52E6-43CC-9CF1-16D84395FB7E\b637f346-6a0e-4dec -af52-bd70cb80a21d\0 VMId : e8ec4041-52e6-43cc-9cf1-16d84395fb7e VMName : P1CBW1001A VMSnapshotId : 00000000-0000-0000-0000-000000000000 VMSnapshotName : CimSession : CimSession: . ComputerName : HV01 IsDeleted : False VMCheckpointId : 00000000-0000-0000-0000-000000000000 VMCheckpointName :
ExposeVirtualizationExtensions は、Set-VMProcessor -VMName [仮想マシン名] -ExposeVirtualizationExtensions [$true or $false] で設定します。
設定時に、結果表示はありません。
PS C:\Users\Administrator> Set-VMProcessor -VMName P1CBW1001A -ExposeVirtualizationExtensions $true
再確認
PS C:\Users\Administrator> Get-VMProcessor -VMName P1CBW1001A | ft VMName, ExposeVirtualizationExtensions
これで、Hyper-V がネストできます。
仮想マシンを起動する前に、ネットワークアダプタの MACアドレスのスプーフィングを有効にしておきましょう。
仮想マシンを起動し、Windowsの機能の有効化で Hyper-V を選択します。Hyper-V Hypervisor も有効化できるようになります。
OKを押してインストールします。インストールが完了すると再起動が必要になります。
再起動後、Hyper-V が有効になり、Hyper-V マネージャーもインストールされています。
Hyper-V マネージャーから、仮想スイッチの状態を確認。Default Switch という名前のものが追加されています。内部ネットワークですね。
これで、仮想マシン内で Hyper-V が使用できます。
一応、インストール後のネットワーク状態を確認してみます。
ネットワーク接続、vEthernet (Default Switch) というものが追加されています。これは、Hyper-V の仮想スイッチです。
元からあるイーサネットのプロパティ、設定が変わった様子はありませんが、Hyper-V 拡張可能仮想スイッチ というものが追加されています。
※ リスト内が見えるように画像を編集しています。
追加された、Hyper-V の仮想スイッチ vEthernet (Default Switch) のプロパティ
Hyper-V のほうの仮想スイッチ は、コントロールパネルのネットワークからはあまり触らず、Hyper-V の仮想スイッチマネージャーで操作するほうが良いでしょう。
仮想マシン Windows Server 2019 Hyper-V インストール
仮想マシンの Windows Server 2019 に Hyper-V をインストールしてみます。
※仮想マシンの Windows Server 2019 ですが、実機の Windows Server 2019 でもインストール方法は同じです。
Windows Server 2019 は、Standardのバージョン1809です。PC名は P1SBDOC01A という名前にしています。
ネットワークアダプタは1つで、メモリは4G(4096M)、プロセッサは4つ割り当てています。
先に、Hyper-V が使用できない状態で、サーバーの役割に Hyper-V を追加しようとした場合の画面を載せておきます。
サーバーの役割の選択で、Hyper-V の選択は出来ますが、インストールを続けようとすると
仮想化テクノロジーが無効だと、このように「必要な仮想化機能がプロセッサにありません。」とエラーが出て、Hyper-V をインストールすることができません。
ホスト側で、ExposeVirtualizationExtensions を有効にしますが、Hyper-V をインストールする前のネットワークの状態の画像を載せておきます。
ネットワーク接続、イーサネットという名前で、1つあります。
イーサネットのプロパティです。
※ リスト内が見えるように画像を編集しています。
それでは、ExposeVirtualizationExtensions を True にします。
対象の Windows Server 2019 は必ずシャットダウンして停止しておいてください。
現在の ExposeVirtualizationExtensions の値を確認します。
Get-VMProcessor -VMName [仮想マシン名] で仮想マシンの各値が取得できます。
PS C:\Users\Administrator> Get-VMProcessor -VMName P1SBDOC01A | fl ResourcePoolName : Primordial Count : 4 CompatibilityForMigrationEnabled : False CompatibilityForOlderOperatingSystemsEnabled : False HwThreadCountPerCore : 0 ExposeVirtualizationExtensions : False EnablePerfmonPmu : False EnablePerfmonLbr : False EnablePerfmonPebs : False Maximum : 100 Reserve : 0 RelativeWeight : 100 MaximumCountPerNumaNode : 8 MaximumCountPerNumaSocket : 1 EnableHostResourceProtection : False OperationalStatus : {} StatusDescription : {} Name : プロセッサ Id : Microsoft:780BF586-DF4A-42A0-B82E-E444A4B34401\b637f346-6a0e-4dec -af52-bd70cb80a21d\0 VMId : 780bf586-df4a-42a0-b82e-e444a4b34401 VMName : P1SBDOC01A VMSnapshotId : 00000000-0000-0000-0000-000000000000 VMSnapshotName : CimSession : CimSession: . ComputerName : HV01 IsDeleted : False VMCheckpointId : 00000000-0000-0000-0000-000000000000 VMCheckpointName :
ExposeVirtualizationExtensions を True にして仮想化テクノロジーを有効化します。結果表示はありません。
PS C:\Users\Administrator> Set-VMProcessor -VMName P1SBDOC01A -ExposeVirtualizationExtensions $true
再確認
PS C:\Users\Administrator> Get-VMProcessor -VMName P1SBDOC01A | ft VMName, ExposeVirtualizationExtensions
これで、Hyper-V がネストできます。
この仮想マシンを起動する前に、ネットワークアダプタの MACアドレスのスプーフィングを有効にしておきます。
Windows Server 2019 を立ち上げて、サーバーマネージャの右上にある 管理 から、役割と機能の追加をします。
次へ
役割ベースまたは機能ベースのインストールを選択して、次へ
対象サーバーの選択では、自身のPCを選択して、次へ
サーバーの役割の選択で、Hyper-V を選択します。
Hyper-V 管理ツールもインストールするか訊かれるので、管理ツールを含めて、機能の追加へ
Hyper-V にチェックが入ります。次へ
機能の選択は何もせず、次へ
Hyper-V の説明が表示されます。次へ
仮想スイッチの作成。Hyper-V 用に仮想スイッチの作成をしてくれるので、既存のネットワーク(イーサネット)を選択します。
ここで選択しないことも出来ますが、後で仮想マシンを外部に公開する場合は(Webサーバー等)、自分でネットワークを調整しなければなりません。
仮想マシンの移行。ライブマイグレーションはしないので、何も選択せず次へ
既定の保存場所。特に変える必要は無いので、このまま次へ
インストールオプションの確認。既定の保存場所。
Hyper-V のインストールには、再起動が必要なので「必要に応じて対象サーバーを自動的に再起動する」にチェックを入れても良いでしょう。これでインストールします。
「必要に応じて対象サーバーを自動的に再起動する」にチェックを入れない場合は次の画面になり、手動で再起動する必要があります。
再起動後、Hyper-V が有効になります。
Hyper-V マネージャーから、仮想スイッチの状態を確認。
Microsoft Hyper-V Network Adapter - Virtual Switch という名前のものが追加されています。これは外部ネットワークで自身のPCのネットワークでもあります。
これで、仮想マシン内から Hyper-V が使用できます。
インストール後のネットワークの状態を確認しておきます。
ネットワーク接続、vEthernet (Microsoft Hyper-V Network Adapter - Virtual Switch) というものが追加されています。これは、元にあった イーサネット を引き継いで Hyper-V の仮想スイッチとして追加された外部ネットワークです。
元からあるイーサネットのプロパティ、元の設定で有効だったものは無効になり、Microsoft LLDP プロトコルド ライバー と、Hyper-V Extensible Virtual Switch というものが追加されて有効化されています。
Hyper-V の仮想スイッチ vEthernet (Microsoft Hyper-V Network Adapter - Virtual Switch) のプロパティ。
※ リスト内が見えるように画像を編集しています。
元の イーサネット 相当の外部ネットワークです。自身のPCのIPアドレス等は、このネットワークアダプタで設定します。
Hyper-V スナップショットにもネスト状態は有効
Hyper-Vのネスト状態は、スナップショットにも有効です。
先の Windows 10 ゲスト側の仮想マシン (P1CBW1001A) を作成する過程で、あらためてクリーンインストール直後にシャットダウンしてスナップショットを取り、ExposeVirtualizationExtensions を有効にした後に再度スナップショットを取った状態で確認してみました。
まず、ネスト状態が有効な ExposeVirtualizationExtensions の値。
これは ExposeVirtualizationExtensions を有効にした後のスナップショットで、仮想化有効 と名前を付けたところに適用されている状態です。
当たり前ですが、ExposeVirtualizationExtensions は True です。
次に、ExposeVirtualizationExtensions を有効にする前のスナップショットを適用して切り替えます。
これは インストール直後のスナップショットで、ExposeVirtualizationExtensions を有効にする前のスナップショットです。
ExposeVirtualizationExtensions は False となっています。
スナップショット毎に、ExposeVirtualizationExtensions の状態が設定されていることが分かります。
Hyper-V 有効無効の差異(Windows 10)
Hyper-V が使えるかどうかは、システム情報の仮想化テクノロジから判断できますが、Hyper-V がインストールできるかどうかということでも判断基準になるかと思います。
Windows 10 ゲスト側の、ExposeVirtualizationExtensions が無効の時と有効にした時で、アプリと機能から「Windows の機能の有効化または無効化」の差異を見てみました。
ExposeVirtualizationExtensions 有効無効の差異としては、
Hyper-V Hypervisor
Windows サンドボックス
の2つでした。
もしかすると、ホスト側の環境で違う結果になるPCもあるかもしれませんが、実機の Windows 10 でも、BIOSで仮想化の設定を切り替えて試したところ同じ結果だったので、ほとんどの環境として一致していると思います。
コメントする