Hyper-V和ESXi底层架构的区别

nick814 Hyper-v 7,195 次浏览 没有评论

 

说明

本文主要讨论Hyper-V和ESXi系统的底层架构的区别。

 

 

Visio图我不太画,所以画的不好大家见谅。下面的图中就是2张图的底层架构。


一台服务器安装了hyper,硬件之上是一个hypervisor,原来的操作系统就抽调到上层Parent OS。一个父分区。其他是一个个子分区,相当于一个个容器,这时候每个分区都是同等的,相互独立的,共享的资源是平等的。我们称之为微内核的hyperv。

一台服务器安装了vmware,我们称之为胖内核的hyperv,其实最终我们访问硬件资源都要调用驱动,他把driver都放到hypervisor层,在hypervisor代码的帮助下,运行ESXi主机之上的虚拟机能够与物理硬件直接通信,不再依赖中间设备。

不同之处在于hyper-v把内核精简了,代码只有几百k,把driver放到上面父操作系统中,有两种类型的设备驱动,合成和模拟的合成比模拟的更快。只有在子操作系统安装虚拟机集成服务,才能够访问合成设备驱动。这些合成驱动通过vmbus,高速总线来调用,vm在调用driver时有个透明的通道,映射到vmbus,vmbus是没有延迟的,直接访问硬件。

微软认为自己的内核非常可靠,只有几百K。VMware有第三方的Driver存在,所以有新的硬件出来,就需要在增加这个新型号的支持,所以内核中有第三方的代码,意味着有兼容性问题,所以物理服务器一定要在兼容列表中,Hyper-v只要能装Windows,就可以装Hyper-V。由于微软不提供用于访问管理层API,因此系统的攻击面得以显著缩小。而VMware提供访问管理层所必须的API,因此恶意代码可能拥有注入管理层的权限,从而获得对vSpere服务器上全部虚拟机系统的掌控能力。

从微软角度认为vmware是个胖内核,那么就会面临稳定性和兼容性的问题,还有受攻击的危险,因为这个内核非常核心,一旦受攻击,就会随着驱动bug攻击进来,这时就可以获取虚拟机所有的东西。微软的里面没有第三方代码,所以攻击最多攻击到父分区,从微软角度认为安全。从VMware角度,微软依靠父操作系统,父操作系统如果跨了,其他虚拟机也将同时崩溃。所以其实都差不多。只要你不把我微软的整个系统都黑掉,我的系统还是可以运行的。父操作系统没多少东西。

VMware和Hyper-v性能都是一样的,都差不多。不过Windows本身有重启的毛病,所以差不多每三个月重启一次宿主机,顺便进行补丁的安装和维护。

 


 

发表评论

Go