Windows Server 2016 Hyper-v Nested Virtualization
在Windows Server 2016沒有發佈以前,作爲屌絲的我們在沒有太多物理機的情況下如果想要做Hyper-v羣集的實驗就必須使用VMWare Workstation的嵌套虛擬化技術!
但是隨着Windows Server 2016的發佈,微軟已經允許我們在Hyper-v平臺上使用嵌套虛擬化技術!嵌套虛擬化是一個允許我們在Hyper-v虛擬機中運行Hyper-v虛擬機的功能。換句話來說,通過Windows Server 2016的嵌套虛擬化功能,Hyper-v主機本身可以被虛擬化。
Windows Server 2016的嵌套虛擬化技術主要應用於以下場景:
1、在虛擬化容器主機中運行Hyper-v容器。
2、在虛擬化環境中運行Hyper-v實驗。
3、在不需要單獨硬件的情況下測試多機器的場景
如果想使用Windows Server 2016的嵌套虛擬化技術,必須滿足如下先覺條件:
1、運行Windows Server 2016或Windows 10週年更新的Hyper-V主機。
2、運行Windows Server 2016或Windows 10週年更新的Hyper-V VM。
3、配置版本爲8.0或更高版本的Hyper-V VM。
4、採用VT-x和EPT技術的Intel處理器。
注意:
在Windows Server 2016中開啓嵌套虛擬化技術以後,動態內存和運行時調整內存大小功能將不可用:
當Hyper-V在虛擬機中運行時,必須關閉虛擬機以調整其內存。這意味着即使啓用動態內存,內存量也不會波動。 對於未啓用動態內存的虛擬機,任何嘗試在啓動時調整內存量的嘗試都將失敗。
說了這麼多下面我們來看一下如何在Windows Server 2016中配置嵌套虛擬化。
本次實驗我將對虛擬機Nested開啓嵌套虛擬化技術:
首先我們使用管理員身份運行WindowsPowershell,鍵入如下命令:
Get-VMProcessor -VMName Nested | FL
可以看到,當前“ExposeVirtualizationExtensions”的值爲Fales,也就是說明目前虛擬機“Nested”沒有開啓嵌套虛擬化技術:
我們啓用Hyper-v將會提示如下錯誤:
鍵入如下PS命令來啓用嵌套虛擬化:
Set-VMProcessor -VMName Nested -ExposeVirtualizationExtensions $True
執行完成以後檢查“ExposeVirtualizationExtensions”,運行如下命令
Get-VMProcessor -VMName Nested | FL
我們開啓計算機Nested並啓用Hyper-v功能:
如果想關閉嵌套虛擬化功能可以使用如下PS命令:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false