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