虚拟机架构分类

  • I型原生架构

    原生架构也叫裸金属架构或者裸机架构,其通过直接在cpu处理器硬件上运行虚拟机监控程序,进一步使用处理器扩展(Intel VT-x和AMD-V)来运行虚拟机。这时候计算机所有运行的操作系统(包括根操作系统)都相当于是虚拟机。Hyper-V,VMware ESX,Xen,KVM都是使用的这种框架。
  • Ⅱ型寄居架构

    寄居架构是虚拟机监控程序以应用程序的形式在宿主机上运行(实际上准确的说应该是以内核驱动模块的形式实现虚拟机监控程序VMM的功能,因为只有内核模块中才可以使用处理器基于cpu虚拟化支持的特权指令),进而使用处理器扩展(Intel VT-x和AMD-V)来运行虚拟机。VMware WorkStantion和VirtualBox都是使用这种虚拟机架构。

Hyper-V与VMware WorkStantion的共生问题

不使用Hyper-V的时候使用VMware WorkStantion这种寄宿框架的虚拟机是没有任何问题的,但是因为Hyper-V其使用的是原生架构,Hyper-V的虚拟机监控程序hypervisor是直接在硬件之上运行,而原根操作系统在虚拟机监控程序之上运行,从cpu的角度来看根操作系统已经是一个虚拟机操作系统了,而vmware寄生在根操作系统中就无法直接访问cpu实现虚拟化。

vmax vnx 架构 vmware是什么架构_vmax vnx 架构

所以早期要想使用VMware WorkStantion需要将Hyper-V先关闭,但是因为Windows的一些功能需要依赖与Hyper-V(WSL,Hyper-V虚拟机),所以为了使用这些功能的同时使用VMware WorkStantion需要让其与Hyper-V能够共存。Microsoft与VMware公司合作,最后VMware通过Hyper-V开启后的Windows Hypervisor Platform功能使用处理器扩展(Intel VT-x和AMD-V)。

vmax vnx 架构 vmware是什么架构_虚拟化_02

但是又存在一个新的问题,虽然现在可以支持Hyper-V与VMware进行共生,但是基于VBS功能的VMware无法实现嵌套虚拟化。所以就不能在使用了Hyper-V的同时做一些嵌套虚拟化的实验和测试。

vmax vnx 架构 vmware是什么架构_vmax vnx 架构_03

测试一下:在开启的Hyper-V的系统中先通过VMware开启嵌套虚拟化支持

vmax vnx 架构 vmware是什么架构_VMware_04

现在如果使用VMware运行虚拟机的话会出现无法进行嵌套虚拟化的错误

vmax vnx 架构 vmware是什么架构_VMware_05

Hyper-V的嵌套虚拟化

如果要想使用VMware进行嵌套虚拟化实验就需要先将Hyper-V关闭,但是Hyper-V被关闭后WSL等功能也无法使用。Hyper-V本身是实现了嵌套虚拟化的,默认关闭需要手动开启。没有开启嵌套虚拟化扩展支持的Hyper-V虚拟机整体结构如下:L1来宾就是Hyper-V虚拟机,其还没有开启嵌套虚拟化扩展支持,与L1根操作系统一样都在L0 hypervisor虚拟机监控程序之上运行。

vmax vnx 架构 vmware是什么架构_嵌套_06

如果L1来宾Hyper-V虚拟机开启了嵌套虚拟化扩展支持,系统会在L0 hypervisor虚拟机监控程序之上再模拟实现一层hypervisor虚拟机监控程序(L1层虚拟机监控程序).这个时候原来L1来宾虚拟机的角色就发生变化了,其此时就是L2层的根操作系统,然后运行在L1层的虚拟机监控程序上,并且其可以添加自己的来宾虚拟机(L2层Hyper-V虚拟机)。

vmax vnx 架构 vmware是什么架构_虚拟化_07

因为默认情况下L1层Hyper-V虚拟机的嵌套虚拟化扩展功能是关闭的,需要手动开启。首先通过PowerShell打开查看需要操作的L1层Hyper-V虚拟机信息,发现ExposeVirtualizationExtensions是处于关闭状态的。

vmax vnx 架构 vmware是什么架构_虚拟化_08

然后通过Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName 给指定L1层Hyper-V虚拟机开启嵌套虚拟机扩展功能。

vmax vnx 架构 vmware是什么架构_嵌套_09

L1层的来宾虚拟机角色就变成了L2层的根操作系统,现在就可以在L2层根操作系统中使用Hyper-V创建自己的来宾虚拟机。通过L2根操作系统的任务管理器性能信息可以判断嵌套虚拟机功能是否开启成功。

vmax vnx 架构 vmware是什么架构_虚拟化_10

参考:

https://learn.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/user-guide/nested-virtualizationhttps://docs.vmware.com/cn/VMware-Workstation-Pro/16.0/com.vmware.ws.using.doc/GUID-177F1E77-BFFD-485F-90BB-2E45B6B88678.htmlhttps://docs.vmware.com/cn/VMware-Workstation-Pro/16.0/com.vmware.ws.using.doc/GUID-778DD0ED-6FC9-415F-B071-0CEC127BE719.htmlhttps://cloud.tencent.com/developer/article/1782543