Hyper-V 仮想マシンのネスト

2020-11-07 | コメント(0)

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 Pro 64ビット版 に Hyper-V をインストールしてみます。
※仮想マシンの Windows 10 ですが、実機の Windows 10 でもインストール方法は同じです。

仮想マシンのPC名は P1CBW1001A という名前にしています。

ネットワークアダプタは1つで、メモリは4G(4096M)、プロセッサは4つ割り当てています。

先に、Hyper-V が使用できない状態で、Windows の機能の有効化 を行おうとした場合の画面を載せておきます。

Windows 10 の Hyper-V が利用できない

仮想化テクノロジが無効だと、このように Hyper-V Hypervisor が有効にできないのでインストールすることができません。

ホスト側で、ExposeVirtualizationExtensions を有効にして Hyper-V をインストールしますが、インストール後のネットワークの差異が確認できるように、インストール前のネットワークの状態を載せておきます。

ネットワーク接続、イーサネットという名前で、1つあります。

Windows 10 の ネットワーク

イーサネットのプロパティです。
※ リスト内が見えるように画像を編集しています。

Windows 10 の イーサネット

それでは、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 Windows 10 仮想マシンのExposeVirtualizationExtensions有効化

これで、Hyper-V がネストできます。

仮想マシンを起動する前に、ネットワークアダプタの MACアドレスのスプーフィングを有効にしておきましょう。

Hyper-V Windows 10 仮想マシンのMACアドレスのスプーフィングを有効化

仮想マシンを起動し、Windowsの機能の有効化で Hyper-V を選択します。Hyper-V Hypervisor も有効化できるようになります。

Windows 10 Hyper-V 有効化

OKを押してインストールします。インストールが完了すると再起動が必要になります。

Windows 10 Hyper-V インストール完了

再起動後、Hyper-V が有効になり、Hyper-V マネージャーもインストールされています。

Windows 10 メニュー Hyper-V マネージャー

Windows 10 ネストされた Hyper-V マネージャー

Hyper-V マネージャーから、仮想スイッチの状態を確認。Default Switch という名前のものが追加されています。内部ネットワークですね。

Windows 10 Hyper-V 仮想スイッチ Default Switch

Windows 10 Hyper-V 仮想スイッチ Default Switch 拡張

これで、仮想マシン内で Hyper-V が使用できます。

一応、インストール後のネットワーク状態を確認してみます。

ネットワーク接続、vEthernet (Default Switch) というものが追加されています。これは、Hyper-V の仮想スイッチです。

Windows 10 Hyper-V インストール後のネットワーク

元からあるイーサネットのプロパティ、設定が変わった様子はありませんが、Hyper-V 拡張可能仮想スイッチ というものが追加されています。
※ リスト内が見えるように画像を編集しています。

Windows 10 Hyper-V インストール後のイーサネット

追加された、Hyper-V の仮想スイッチ vEthernet (Default Switch) のプロパティ

Windows 10 Hyper-V vEthernet (Default Switch)

Windows 10 Hyper-V vEthernet (Default Switch) TCP/IPv4

Hyper-V のほうの仮想スイッチ は、コントロールパネルのネットワークからはあまり触らず、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 の選択は出来ますが、インストールを続けようとすると

Windows Server 2019 の Hyper-V のインストールエラー

仮想化テクノロジーが無効だと、このように「必要な仮想化機能がプロセッサにありません。」とエラーが出て、Hyper-V をインストールすることができません。

ホスト側で、ExposeVirtualizationExtensions を有効にしますが、Hyper-V をインストールする前のネットワークの状態の画像を載せておきます。

ネットワーク接続、イーサネットという名前で、1つあります。

Windows Server 2019 の ネットワーク

イーサネットのプロパティです。
※ リスト内が見えるように画像を編集しています。

Windows Server 2019 の イーサネット

それでは、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 Windows Server 2019 仮想マシンのExposeVirtualizationExtensions有効化

これで、Hyper-V がネストできます。

この仮想マシンを起動する前に、ネットワークアダプタの MACアドレスのスプーフィングを有効にしておきます。

Hyper-V Windows Server 2019 仮想マシンのMACアドレスのスプーフィングを有効化

Windows Server 2019 を立ち上げて、サーバーマネージャの右上にある 管理 から、役割と機能の追加をします。

Hyper-V Windows Server 2019 役割と機能の追加ウイザード

次へ

Hyper-V Windows Server 2019 インストールの種類の選択

役割ベースまたは機能ベースのインストールを選択して、次へ

Hyper-V Windows Server 2019 対象サーバーの選択

対象サーバーの選択では、自身のPCを選択して、次へ

Hyper-V Windows Server 2019 サーバーの役割の選択

サーバーの役割の選択で、Hyper-V を選択します。

Hyper-V Windows Server 2019 Hyper-V 管理ツール

Hyper-V 管理ツールもインストールするか訊かれるので、管理ツールを含めて、機能の追加へ

Hyper-V Windows Server 2019 Hyper-V チェック済み

Hyper-V にチェックが入ります。次へ

Hyper-V Windows Server 2019 機能の選択

機能の選択は何もせず、次へ

Hyper-V Windows Server 2019 Hyper-V 説明

Hyper-V の説明が表示されます。次へ

Hyper-V Windows Server 2019 仮想スイッチの作成

仮想スイッチの作成。Hyper-V 用に仮想スイッチの作成をしてくれるので、既存のネットワーク(イーサネット)を選択します。

ここで選択しないことも出来ますが、後で仮想マシンを外部に公開する場合は(Webサーバー等)、自分でネットワークを調整しなければなりません。

Hyper-V Windows Server 2019 仮想マシンの移行

仮想マシンの移行。ライブマイグレーションはしないので、何も選択せず次へ

Hyper-V Windows Server 2019 既定の保存場所

既定の保存場所。特に変える必要は無いので、このまま次へ

Hyper-V Windows Server 2019 インストールオプションの確認

インストールオプションの確認。既定の保存場所。

Hyper-V のインストールには、再起動が必要なので「必要に応じて対象サーバーを自動的に再起動する」にチェックを入れても良いでしょう。これでインストールします。

「必要に応じて対象サーバーを自動的に再起動する」にチェックを入れない場合は次の画面になり、手動で再起動する必要があります。

Hyper-V Windows Server 2019 インストール完了

再起動後、Hyper-V が有効になります。

Windows Server 2019 メニュー Hyper-V マネージャー

Windows Server 2019 ネストされた Hyper-V マネージャー

Hyper-V マネージャーから、仮想スイッチの状態を確認。

Microsoft Hyper-V Network Adapter - Virtual Switch という名前のものが追加されています。これは外部ネットワークで自身のPCのネットワークでもあります。

Windows Server 2019 Hyper-V 仮想スイッチ

Windows Server 2019 Hyper-V 仮想スイッチ 拡張

これで、仮想マシン内から Hyper-V が使用できます。

インストール後のネットワークの状態を確認しておきます。

ネットワーク接続、vEthernet (Microsoft Hyper-V Network Adapter - Virtual Switch) というものが追加されています。これは、元にあった イーサネット を引き継いで Hyper-V の仮想スイッチとして追加された外部ネットワークです。

Windows Server 2019 Hyper-V インストール後のネットワーク

元からあるイーサネットのプロパティ、元の設定で有効だったものは無効になり、Microsoft LLDP プロトコルド ライバー と、Hyper-V Extensible Virtual Switch というものが追加されて有効化されています。

Windows Server 2019 Hyper-V インストール後のイーサネット

Hyper-V の仮想スイッチ vEthernet (Microsoft Hyper-V Network Adapter - Virtual Switch) のプロパティ。
※ リスト内が見えるように画像を編集しています。

Windows Server 2019 Hyper-V vEthernet (Default Switch)

元の イーサネット 相当の外部ネットワークです。自身のPCのIPアドレス等は、このネットワークアダプタで設定します。

Hyper-Vのネスト状態は、スナップショットにも有効です。

先の Windows 10 ゲスト側の仮想マシン (P1CBW1001A) を作成する過程で、あらためてクリーンインストール直後にシャットダウンしてスナップショットを取り、ExposeVirtualizationExtensions を有効にした後に再度スナップショットを取った状態で確認してみました。

まず、ネスト状態が有効な ExposeVirtualizationExtensions の値。

これは ExposeVirtualizationExtensions を有効にした後のスナップショットで、仮想化有効 と名前を付けたところに適用されている状態です。

Hyper-V ネスト状態有効

当たり前ですが、ExposeVirtualizationExtensions は True です。

次に、ExposeVirtualizationExtensions を有効にする前のスナップショットを適用して切り替えます。

これは インストール直後のスナップショットで、ExposeVirtualizationExtensions を有効にする前のスナップショットです。

Hyper-V ネスト状態無効

ExposeVirtualizationExtensions は False となっています。

スナップショット毎に、ExposeVirtualizationExtensions の状態が設定されていることが分かります。

Hyper-V が使えるかどうかは、システム情報の仮想化テクノロジから判断できますが、Hyper-V がインストールできるかどうかということでも判断基準になるかと思います。

Windows 10 ゲスト側の、ExposeVirtualizationExtensions が無効の時と有効にした時で、アプリと機能から「Windows の機能の有効化または無効化」の差異を見てみました。

Hyper-V Windows 10 ExposeVirtualizationExtensions 無効

Hyper-V Windows 10 ExposeVirtualizationExtensions 有効

ExposeVirtualizationExtensions 有効無効の差異としては、
Hyper-V Hypervisor
Windows サンドボックス
の2つでした。

もしかすると、ホスト側の環境で違う結果になるPCもあるかもしれませんが、実機の Windows 10 でも、BIOSで仮想化の設定を切り替えて試したところ同じ結果だったので、ほとんどの環境として一致していると思います。

カテゴリ:

コメントする

※HTMLタグは使えません

Author

あきちゃん

主に、.NETでWebシステムの設計と開発をしています。
(茨城県在住, 都内勤務)
プロフィール