在今天的现代hypervisor系统之上,您可以做很多很棒的事情,这些系统提供了一种解决业务问题和技术挑战的好方法。使用今天的虚拟机监控程序(如VMware vSphere)可以做的一件非常巧妙的事情是,您可以配置嵌套的虚拟化. 这为在VMware vSphere内测试和运行虚拟机监控程序提供了许多不同的可能性。
许多人发现,在VMware vSphere中运行嵌套虚拟化的一个常见用例是运行Microsoft的Hyper-V虚拟机监控程序以进行测试和学习。
在这篇文章中,我们将看看如何在VMware ESXi服务器上配置嵌套Hyper-V vm,并看看如何在实验室或其他环境中使用它。
什么是嵌套虚拟化
在深入了解如何配置VMware vSphere以启用ESXi服务器内部Hyper-V的嵌套虚拟化之前,让我们先看看什么是嵌套虚拟化。当考虑嵌套虚拟化时,我们讨论的是运行一个管理程序内部的管理程序. 这意味着您可以在VMware vSphere ESXi(本例中为VMware vSphere ESXi)之上的VM内部运行类型1虚拟机监控程序,如VMware vSphere ESXi和Hyper-V。
运行在VMware vSphere ESXi服务器之上的虚拟机中的hypervisor只是将虚拟机硬件视为其物理主机硬件,并在其上运行客户虚拟机。这允许一些非常有趣的场景,当使用您的VMware vSphere环境托管其他管理程序,如Microsoft Hyper-V。
关于VMware vSphere,需要强调的一点是,vSphere VM中其他虚拟机监控程序(如Hyper-V)的嵌套虚拟化不受支持。它不仅仅是VMware vSphere之外的其他虚拟机监控程序。甚至不支持在物理ESXi主机环境中嵌套运行ESXi。这是正式的VMware在KB文章《支持将ESXi/ESX作为嵌套虚拟化解决方案运行》(2009916)中指出。
在其他VMware虚拟化环境产品中运行VMware ESXi时,以下配置在技术上是可行的,但不支持。这包括以下内容。
- 在VMware工作站或VMware Fusion中运行的VMware ESXi/ESX
- 在VMware ESXi/ESX中运行的VMware ESXi/ESX
- 运行在其他第三方虚拟化环境解决方案中的VMware ESXi/ESX
当然,运行Hyper-V属于同一类型的支持免责声明。只有一种情况支持嵌套虚拟化,即嵌套虚拟化vSAN见证设备。
在vSAN Witness设备所支持的用例之外,生产环境不支持嵌套虚拟化。换句话说,如果您在使用嵌套虚拟化时遇到问题,那么您需要自己提供支持。
只要您理解嵌套虚拟化的支持场景,就可以将其用于其他目的。它可以非常有效地用于实验室环境、开发、测试和其他类似的场景。
为什么在VMware内部运行Hyper-V
为什么要在另一个虚拟机监控程序中运行虚拟机监控程序?更具体地说,为什么要在VMware ESXi虚拟机中运行Hyper-V?如前所述,这不是生产使用的受支持配置。在VMware内部运行Hyper-V提供了许多巨大的优势。让我们看一下以下内容:
- 实验室环境
- 不需要额外的硬件或网络设备
- 轻松提供和拆除Hyper-V主机
实验室环境
这可以说是在VMware虚拟机中提供Hyper-V主机的最常见的用例。嵌套虚拟化允许非常容易地配置实验室环境、开发、测试和其他可能的用例。Hyper-V实验室可以用于:
- 学习
- 软件测试
- POC’ing Hyper-V用于基础设施的各个部分或作为替代品
- 在基础设施的另一部分模拟Hyper-V环境
- 补丁测试
在许多中小型环境中,可能只有VMware vSphere环境可用,而没有Hyper-V主机。如果管理员希望在Hyper-V主机上学习和发展VMware ESXi虚拟机监控程序以外的技能,VMware vSphere中的嵌套虚拟化功能提供了配置Hyper-V主机的完美方式在…内VMware vSphere环境。
不需要额外的硬件或网络设备
有了在VMware vSphere中嵌套Hyper-V的这一功能,就不需要为实验室环境或各种POC寻找额外的硬件。这些都可以在vSphere内部进行配置。vSphere内部强大的虚拟网络功能还允许您在决定配置Hyper-V群集时配置所有需要的专用网络。这可能包括实时迁移、存储和群集网络等等。使用虚拟交换机端口组,您可以轻松地模拟使用物理网络设备完成的配置。
轻松调配和拆除Hyper-V主机
这种优势并不局限于嵌套虚拟化,而是一般的VMware vSphere虚拟化。VMware有非常丰富的自动化工具集,包括PowerCLI。这使得您可以根据需要轻松地启动和销毁虚拟机。整个实验室结构可以自动配置和解除配置。这使得嵌套虚拟化更加有用,因为它具有自动化基础设施的简单功能。
VMware ESXi服务器上嵌套Hyper-V虚拟机的要求
一旦你决定使用嵌套虚拟化,你能简单地在vSphere ESXi中创建一个新的VM并开始加载Hyper-V VM吗?好吧,不完全是这样,但是,当您考虑到为了使嵌套虚拟化真正工作所需的巨大复杂性时,这个过程仍然非常容易使用。对于在VMware ESXi服务器上运行嵌套Hyper-V虚拟机的要求,实际上有两个主要方面需要考虑。这包括:
- 向来宾操作系统公开硬件辅助虚拟化
- 启用MAC地址伪造传输
让我们看看每一个,以及它们在VMware ESXi服务器上运行嵌套Hyper-V虚拟机的重要性。
向来宾操作系统公开硬件辅助虚拟化
你会发现第一个要求是绝对必需的。它是您用于存放Hyper-V安装的单个虚拟机设置下面的一个设置。编辑设置在嵌套的Hyper-V虚拟机上,展开CPU在旁边放一个复选框向客户操作系统公开硬件辅助虚拟化。
如果不为Hyper-V VM在VMware中的硬件辅助虚拟化启用此标志,会发生什么情况?只要安装Windows Server操作系统,您就不会看到任何错误,因为这与安装任何其他VM一样有效。但是,当您要安装hyper - v的作用,如果没有为虚拟机启用此设置,则会看到一个错误。注意下面的错误,“无法安装Hyper-V:处理器没有所需的虚拟化功能”.
作为补充说明,需要为Hyper-V Core安装或在安装了桌面体验的Windows Server中安装Hyper-V角色时设置此标志。VMware vSphere中的Hyper-V角色的任何嵌套安装都需要此功能。
您还可以使用一点PowerCLI代码设置此标志,这允许在指定的VM上轻松设置标志。
$vmName='MyHyperVVM'
$vm = Get-VM -Name
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.nestedHVEnabled=$true
$vm.ExtensionData.ReconfigVM($spec)
启用混杂模式和MAC地址
最有可能的情况是,如果你在VMware vSphere中配置Hyper-V嵌套安装,你不仅希望能够安装一个具有Hyper-V角色的服务器,而且还希望能够在你正在运行的嵌套Hyper-V服务器上运行一个嵌套Hyper-V VM。
您可能不关心是否能够与Hyper-V VM建立网络连接,但是,您可能希望能够与运行在VMware虚拟机中的嵌套Hyper-V主机之上的嵌套虚拟机建立真正的网络连接。
如果您想拥有此功能,可能需要在嵌套Hyper-V主机连接的VMware vSwitch上进行一些网络配置设置。
您可能需要这样做,因为自VMware vSphere 6.7发布以来,VMware vSwitch技术和嵌套虚拟化有了新的进步。在VMware vSphere ESXi 6.7发布之前,VMware没有像在实际物理交换机中那样在vSwitch上实施MAC学习。无论是vSphere标准交换机还是vSphere分布式交换机都是如此。
由于这是vSphere 6.7之前的VMware vSwitch的情况,当虚拟交换机收到的数据包没有与嵌套的hypervisor主机vmnic的pNIC MAC地址匹配(嵌套的ESXi主机),数据包将被丢弃。
要绕过这个限制,需要在vSwitch上启用两个设置,混合模式和伪造传输.
vSphere 6.7及更高版本怎么样?在vSphere ESX 6.7发布之前,VMware开始在虚拟交换机的嵌套虚拟化和MAC学习功能方面开展工作。发布了一个“MAC Learning Fling”,它引入了MAC Learning功能,这样您就不必启用混杂模式和伪造的传输设置。
该设置是在VMware vSphere 6.7 ESXi发布时实现的。
在ESXi 6.7中,新的MAC学习特性有什么要求?
在利用vSphere 6.7中新的MAC学习功能之前,您需要具备一些要求。详情如下:
- 将vCenter Server和ESXi服务器升级到vSphere 6.7
- 运行vSphere Distributed Switch (vDS)
- 将vDS升级至最新版本(6.6)
- 基于vSphere分布式交换机端口组管理
- 当前使用vSphere API进行管理
需要注意的是,vSphere 6.7和vds6.6 vSwitch的MAC学习功能默认情况下是不启用的。您必须使用API适当地设置标志。
为了使这一过程更加简单,William Lam,一个员工解决方案体系结构编写了两个PowerCLI函数,使在vSphere环境中检查MAC学习状态和设置MAC学习变得极其简单。从他的Github存储库下载William的PowerCLI脚本,请单击此处:
https://github.com/lamw/vghetto-scripts/blob/master/powershell/MacLearn.ps1
输出的一个示例Get-MacLearn功能检查vSphere分布式交换机端口组如下图所示。备注字段:
- MacLearning
- NewAllowPrimiscuous
- 新锻造变速箱
- NewMacChanges
- 限制
- 限制政策
这是vDS 6.7 vSwitch端口组在默认设置下的外观。
对于嵌套的ESXi安装,以及在vSphere ESXi hypervisor中运行的Hyper-V vm,你需要设置如下设置:
- MAC学习:真的吗
- 滥交模式:错误
- 伪造的传输:真
- MAC更改:False
- 限制:4096(您可以设置或保持默认值)
- 限制策略:Drop(您可以设置或保留默认值)
可以使用以下PowerCLI代码设置上述建议:
- 设置- maclearn -DVPortgroupName @(" dpd - servers ") -EnableMacLearn $true -EnablePromiscuous $false -EnableForgedTransmit $true -EnableMacChange $false
正如我们现在所预期的,正如您在上文中所注意到的混合模式设置配置为错误的. 即使启用了MAC学习功能伪造的传输仍然设置为真正的.
在vSphere 6.7中包含的MAC学习功能通过防止混杂模式的启用,可以避免在vSphere 6.7环境中运行嵌套虚拟机的一些安全影响。
可以备份嵌套环境吗?
尽管VMware vSphere仅支持针对vSAN见证设备运行嵌套虚拟化,但如果您在VMware vSphere ESXi内运行嵌套Hyper-V虚拟机,则可能需要备份嵌套环境。这能做到吗?
是的,当然。
使用现代化的备份解决方案,如Vembu BDR套件,允许您不仅备份您的生产VMware vSphere或Microsoft Hyper-V环境,而且还可以备份任何嵌套安装的ESXi或Hyper-V,您可能在环境中。
收尾
VMware ESXi服务器上的嵌套Hyper-V虚拟机使您能够使用Hyper-V,即使您只有VMware vSphere环境。如图所示,嵌套虚拟化有许多很好的用例。这包括学习、软件测试、POC’ing和修补Hyper-V主机。
尽管VMware vSphere中的嵌套虚拟化功能强大,但您可能认为实现该功能的过程极其困难。但是,在配置将包含Hyper-V安装的VMware vSphere VM时,您只需要考虑几点。这包括在Hyper-V虚拟机的虚拟CPU上公开硬件辅助虚拟化标志,并实施混杂模式或MAC学习,以将任何嵌套的Hyper-V虚拟机连接到网络。
总而言之,VMware ESXi服务器上的嵌套Hyper-V虚拟机是一种极其强大的功能,允许您在没有运行Hyper-V虚拟机监控程序的物理设备的情况下测试和学习Hyper-V。


