Home > Windows にまつわる e.t.c.

Windows 10 Insider Preview Build 10565 Nested Hyper-V


コンテナテクノロジーの一環として、予てから噂のあった Nested Hyper-V が Windows 10 Insider Preview Build 10565 で超早期 Preview としてお披露目されました。

Windows Insider Preview: Nested Virtualization
http://blogs.technet.com/b/virtualization/archive/2015/10/13/windows-insider-preview-nested-virtualization.aspx

 

Nested Hyper-V とは、Hyper-V の VM に Hyper-V をインストールして孫 VM を稼働させるテクノロジーです。

Blog の解説図を借用すると、こんな感じになっています。

通常のHyper-V

 

ネストされたHyper-V

 

Hyper-V では、ハードウェアによる仮想化支援(Intel-VTとか)が必須なのですが、従来の Hyper-V では VM からこの機能が見えなかったために Nested Hyper-V が実現できませんでしたが、今回のビルドでは、VM から仮想化支援機能を見えるようにしたので Nested Hyper-V が実現できたのです。

Nested Hyper-V 何が嬉しいかというと、このテクノロジーを使うと1台の物理マシン上で WSFC な Hyper-V の検証環境が作れてしまいます。

運用環境では、ハードウェア依存性が低いポータビリティを持った WSFC が作れるとか、他にも色々使い道がありそうです。
プロダクトチームは Hyper-V Container の実現を目指しているので、本命は Windows Server 2016 の Hyper-V コンテナですね。

今回のお披露目は、超早期 Preview なので以下の制限があります。

・最新の Hyper-V のみサポート(WS12R2/WS16TP3/Build 10565 より前の Windows 10 は NG)
・以下制限がある

動的メモリーはOFF
稼働状態でのメモリー追加/削除不可
稼働状態でのチェックポイント作成不可
ライブマイグレーション不可
保存/復元不可

・MACアドレスのスプーフィングをON
・Virtualization Based Security (VBS) OFF
・インテル CPU 専用

 

 

では、早速 Nested Hyper-V 環境を構築します。

前提条件は、物理マシンが Windows 10 Insider Preview Build 10565 になっていて、Hyper-V が有効になっている必要があります。(この検証は Pro 10565 でやりました)

この環境の VM に、Windows 10 Insider Preview Build 10565 をインストールします。

Build 10565 ISO ファイルは配布されていないので、Install.esd からインストール用の ISO ファイルを作ります。

Windows 10 Insider Preview ISO の作り方
http://www.vwnet.jp/Windows/w10/IPISO.htm

配布されている ISO をダウンロードします。(2015/10/19 訂正)

Download Windows 10 Insider Preview ISO
https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso

 

この手順で作った ISO ファイルはセキュアブートをサポートしていないので、Gen 2 VM を作る場合は、セキュアブートを OFF にします。

公開された ISO ファイルは セキュアブート OK でした

 

メモリーは 4G 固定にしてみました。

 

MACアドレスのスプーフィングをON

 

この環境に Windows 10 Insider Preview Build 10565 をインストールして、シャットダウンしておきます。

これで事前準備完了。

 

VM への Nested Hyper-V 許可

Blog によると、設定スクリプトをダウンロードして実行せよとあるので、早速ダウンロードします。

Blog では Invoke-WebRequest を使っていますが、ここは Alias の wget ですよね。

wget https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/hyperv-tools/Nested/Enable-NestedVm.ps1 -OutFile ~/Enable-NestedVm.ps1

 

今回初めて知ったのですが、「~」はログオンユーザーのディレクトリに置き換えられますので、ダウンロードされたスクリプトは C:\Users\ユーザー名 下に出力されます。

ダウンロードしたスクリプトを使って、VM に Nested Hyper-V を許可します。

今回は、VM 名に vWSV01 を付けたので、以下のように入力します。

~/Enable-NestedVm.ps1 -VmName vWSV01

 

すると、画面がクリアされ、入力プロンプト出るので Y を与えます。

This script will set the following for vWSV01 in order to enable nesting:
    Virtualization extensions will be enabled
Input Y to accept or N to cancel:Y
警告: Nested virtualization is an unsupported preview feature. Hypervisors other than the
Hyper-V hypervisor running in a guest virtual machine are likely to fail. Furthermore,
some Hyper-V features are incompatible with nested virtualization, such as dynamic memory,
 checkpoints, and save/restore.
PS C:\>

 

あとは、VM を起動して Hyper-V を有効にすれば OK

VM なのに Hyper-V プラットフォームにチェックがつけられる !!!

 

Hyper-V が有効になったら、仮想スイッチを作っておきます

仮想スイッチに Hyper-V NIC が!!

 

準備が出来たら VM の構築です。

Nested Hyper-V は特に制限が無いので、普通に VM 作って起動します。

Nested Hyper-V の VM が起動した !!

 

お気づきな点がありましたら Windowsフィードバックでフィードバックしてくださいね。

 

 

WS16TP4 の問題

[2016/02/22 update]

Tokyo ComCamp 2016 powered by MVPs の Track 1 : Session 4 で「TP4 は不安定なので、Windows 10 お勧めです」とお話したら、「何が問題なの?」とフィードバックがあったのでこちらで捕捉します。

TP4 もインストール直後であれば Nested Hyper-V は正常動作するのですが、ホスト OS を Windows Update すると 0xC0350005 で Nested Hyper-V VM が起動しなくなります。(僕が使っている環境特有かもですが、検索すると事例あり)

 

Windows 10 TH2 Hyper-V では試していませんが、Windows 10 Insider Preview Hyper-V ではこの問題は起きていません。(なので TP5 は期待できそう)

TP4 でこの問題を回避するには、Nested Hyper-V を解除するしかなさっぼです。

Nested Hyper-V の解除は、Set-VMProcessor 解除設定します。

Set-VMProcessor -VMName <VM名> -ExposeVirtualizationExtensions $false

 

どの VM が Nested Hyper-V 設定になっているかの確認は、確認用スクリプトをダウンロードする必要があります。

確認スクリプトダウンロード

wget https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/hyperv-tools/Nested/Get-NestedVirtStatus.ps1 -OutFile ~/Get-NestedVirtStatus.ps1

 

スクリプトを実行すると、ステータスの「YES」が緑のバックカラー、「No」が赤のバックカラーに表示されます。

 

PS C:\> ~/Get-NestedVirtStatus.ps1
Getting system information...done.
Getting build information...done.
Validating host information...done.

The virtualization host WSTP4 supports nested virtualization: NO
The following host configuration errors have been detected:
The VBS enable reg key is set
Virtualization Based Security is partly installed on you system. To completely remove Virtualizaiton Based Security, ple
ase follow instructions under "Remove Credential Guard" found here: https://technet.microsoft.com/en-us/library/mt483740
%28v=vs.85%29.aspx


Computer                     : WSTP4
Manufacturer                 : ASUS
Model                        : All Series
ProccessorManufacturer       : GenuineIntel
Product Name                 : Windows Server 2016 Technical Preview 4
Installation Type            : Server
Edition ID                   : ServerDatacenter
Build Lab                    : 10586.103.amd64fre.th2_release.160126-1819
HypervisorRunning            : True
FullHyperVRole               : True
HostNestedSupport            : False
HypervisorLoadOptionsPresent : False
HypervisorLoadOptionsValue   :
IumInstalled                 : True
VbsRunning                   : False
VbsRegEnabled                : True
BuildSupported               : True
VbsPresent                   : True

Looking for VMs...found 3 VMs.
Validating virtual machines...done.

The virtual machine Demo supports nested virtualization: YES

Name                           : Demo
SupportsNesting                : True
ExposeVirtualizationExtensions : True
DynamicMemoryEnabled           : False
SnapshotEnabled                : False
State                          : Off



The virtual machine Demo TPM supports nested virtualization: NO
The following VM configuration errors have been detected:
This VM is not configured to expose virtualization extensions.
The VM has Dynamic Memory enabled.
This VM is not configured to expose virtualization extensions.
The VM has Dynamic Memory enabled.


Name                           : Demo TPM
SupportsNesting                : False
ExposeVirtualizationExtensions : False
DynamicMemoryEnabled           : True
SnapshotEnabled                : False
State                          : Off



The virtual machine Demo WS12R2-VM supports nested virtualization: NO
The following VM configuration errors have been detected:
This VM is not configured to expose virtualization extensions.
The VM has Dynamic Memory enabled.
This VM is not configured to expose virtualization extensions.
The VM has Dynamic Memory enabled.


Name                           : Demo WS12R2-VM
SupportsNesting                : False
ExposeVirtualizationExtensions : False
DynamicMemoryEnabled           : True
SnapshotEnabled                : False
State                          : Off


Press any key to continue...

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.