Hyper-V架构与VMware ESXi的差异
微软的Hyper-V与VMware的ESXi在架构上有众多不同,然而很多虚拟化管理员并未意识到这些差异。而且很多管理员同样对Hyper-V是在主机操作系统上运行感到困惑。
有关微软Hyper-V的一个常见的误解就是安装Hyper-V需要使用Windows操作系统,Hyper-V运行在主机操作系统之上而不是直接安装在裸机上。有必要指出一旦Hyper-V角色通过Server Manager启用,hypervisor代码实际上是被配置为在Windows 内核空间内启动。运行在内核空间的组件能够直接访问硬件,这同样适用于Hyper-V。另一方面,VMware的ESXi采用了完全不同的方式,ESXi hypervisor被封装为一个单独的ISO文件,它实际上是一个Linux内核操作系统。
Hyper-V和ESXi都是 Type 1 hypervisor。 Type 1 hypervisor直接运行在硬件之上,从设计上能够将Type 1 hypervisor进一步划分为两类:microkernelized和monolithic。microkernelized设计与monolithic设计有一些细微的差异。两类设计唯一的差异就是设备驱动的位置以及控制功能。

正如上图所示,在monolithic设计中,驱动被作为hypervisor的一部分包括在内。VMware ESXi使用monolithic设计实现所有的虚拟化功能,包括虚拟化设备驱动。自从首次推出虚拟化产品起,VMware一直在使用monolithic设计。由于设备驱动包含在了hypervisor中,在hypervisor代码的帮助下,运行ESXi主机之上的虚拟机能够与物理硬件直接通信,不再依赖中间设备。
微软Hyper-V 架构使用了microkernelized设计,hypervisor代码运行时没有包括设备驱动。

如上图所示,设备驱动安装在主机操作系统内,虚拟机访问硬件设备的请求交由操作系统处理。换句话说由主机操作系统控制对硬件的访问。有两种类型的设备驱动运行在主机操作系统内:合成的与模拟的。合成的设备驱动要比模拟的更快。只有在虚拟机上安装了Hyper-V集成服务时虚拟机才能够访问合成设备驱动。集成服务在虚拟机内实现了VMBus/VSC设计,使直接访问硬件成为了可能。例如,为访问物理网卡,运行在虚拟机内的网络VSC驱动会与运行在主机操作系统内的网络VSP驱动进行通信。网络VSC与网络VSP之间的通信发生在VMBus之上。网络VSP驱动使用虚拟合成设备驱动库直接与物理网卡通信。运行在主机操作系统内的VMBus,实际是在内核空间内运转以改进虚拟机与硬件之间的通信。如果虚拟机没有实现VMBus/VSC设计,那么只能依赖于设备模拟。
无论虚拟化厂商选择哪种设计,必须要有一个控制功能对hypervisor进行全方位的控制。控制功能有助于创建虚拟环境。微软Hyper-V架构在其Windows操作系统内实现了控制功能。换句话说,主机操作系统控制直接运行在硬件之上的hypervisor。在VMware ESXi中,控制功能在ESXi内核中实现,被Linux核心shell所控制。
很难说哪种设计更好。然而,每种设计都有各自的优势与不足之处。由于设备驱动被编码为ESXi内核的一部分,所以只能够在受支持的硬件上安装ESXi。而微软Hyper-V架构不存在这种限制,能够在任何硬件上运行hypervisor代码。这降低了维护设备驱动库的开销。使用microkernelized设计的另一个优势在于不需要在每台虚拟机上安装单个设备驱动。毫无疑问ESXi也部署了直接访问硬件的虚拟化组件,但你无法增加其他角色或服务。尽管不建议在hypervisor上安装任何其他角色及功能,但运行Hyper-V的主机还可以被配置为具有其他角色,比如DNS以及故障转移集群。
Hyper-V架构与VMware ESXi的差异的更多相关文章
- XEN与VMware ESXi、Hyper-V 以及 KVM 架构与特点比较【非原创】
XEN与VMware ESXi.Hyper-V 以及 KVM 架构与特点比较 2018年06月03日 12:47:15 Kim_Weir 阅读数 9402收起 分类专栏: 云计算 版权声明:本文为 ...
- VMware ESXi 8.0 SLIC 2.6 & macOS Unlocker (Oct 2022 GA)
ESXi 8.0.0 GA (General Availability) 请访问原文 VMware ESXi 8.0 SLIC 2.6 & macOS Unlocker (Oct 2022 G ...
- 初试集群虚拟化搭建(二)—— Xen, kvm, OpenStack, VMware ESXi, Citrix XenServer等种种选择
小伙伴们找到了一些主流方案的资料,最终选择了XenServer6.5作为平台搭建. Xen 特点: 功能强大,支持Linux的各种发行版本 通常是在现有Linux操作系统上安装,是一种半虚拟化的安装方 ...
- VMware vSphere虚拟化-VMware ESXi 5.5组件安装过程记录
几种主要的虚拟化 ESXi是VMware公司研发的虚拟机服务器,ESXi已经实现了与Virtual Appliance Marketplace的直接整合,使用户能够即刻下载并运行虚拟设备.这为 即插即 ...
- VMware ESXi 5.5无法与Windows 2012 NTP Server同步时间
这次笔者需要面对的环境对时间的同步有比较高的要求, 而虚拟化的环境中时间是比较容易出问题的, 您可以参考上一篇博文为什么Domain controller上的time synchronization非 ...
- Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析
Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析 2018年04月03日 13:51:55 阅读数:936 XEN 与 VMware ESXi,Hyper-V 以及 K ...
- vmware esxi 查看网卡、Raid卡驱动
vmware esxi 查看网卡.Raid卡驱动 http://blog.51cto.com/adamcrab/1942763 查看网卡 [root@localhost:~] esxcfg-nics ...
- Hyper V NAT 网络设置 固定IP / DHCP
Hyper V 默认的Default Switch同时支持了NAT网络以及DHCP,虚拟机能够访问外网. 但使用过程中发现这个IP网段经常变化,而且Hyper V没有提供管理其NAT网络与DHCP的图 ...
- VMware ESXi 和 VMware Server 有区别
VMware ESXi 和 VMware Server 有区别: VMware ESXi 是一个企业级虚拟机管理程序,提供接近本机性能的祼机体系结构.各种旨在提高整合率的功能(例如取消内存复制),以及 ...
随机推荐
- 七个结构模式之外观模式(Facade Pattern)
定义: 为子系统的一组接口提供一个统一的入口,从而降低系统之间的耦合度,提高子系统的可用性.外观模式又称为门面模式,是迪米特法则的一个体现,主要目的就是降低耦合. 结构图 Facade:抽象外观类,子 ...
- Lua-泛型for循环 pairs和ipairs的区别
先看一段简单的代码: local mytable = { , , aa = "abc", subtable = {}, , } --for循环1 print("for - ...
- WPF实现强大的动态公式计算
数据库可以定义表不同列之间的计算公式,进行自动公式计算,但如何实现行上的动态公式计算呢?行由于可以动态扩展,在某些应用场景下将能很好的解决实际问题. 1.VS2012新建一个WPF应用程序WpfApp ...
- windows10 网络热点
(1)快捷键 :win + x (2)判断自己的电脑是否支持无线接口,输入以下命令,会出现提示是否支持无线接口,如果不支持,请不要往下看了.. netsh wlan show drivers (3)若 ...
- requirejs:让人迷惑的路径解析
接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模块依赖声明都是很重要的一步.而其中涉及到的模块路径解析,对于新手来说,有的时候会让人觉得 ...
- js的一些坑,持续增加,学习js应该注意的问题
大家来补充 1.变量类型模糊,容易出现问题; var a='1',b=1; a==b; //true a===b; //false 2.全局变量与函数内部变量同名时,在函数内部声明变量,声明位置虽然在 ...
- web前端命名规范
在做web项目的时候,命名的规范是很重要.初学者一般急于求成对命名规范没有概念,觉得花时间这些还不如多看几遍框架.其实在我看来,一个良好的命名习惯是很重要的.下面就来介绍一下我总结的命名规范: (1) ...
- ArcGIS Engine环境下创建自定义的ArcToolbox Geoprocessing工具
在上一篇日志中介绍了自己通过几何的方法合并断开的线要素的ArcGIS插件式的应用程序.但是后来考虑到插件式的程序的配置和使用比较繁琐,也没有比较好的错误处理机制,于是我就把之前的程序封装成一个类似于A ...
- Learn RxJava
Learn RxJava http://reactivex.io/documentation/operators.html https://github.com/ReactiveX/RxJava/wi ...
- JavaScript学习11 数组排序实例
JavaScript学习11 数组排序实例 数组声明 关于数组对象的声明,以前说过:http://www.cnblogs.com/mengdd/p/3680649.html 数组声明的一种方式: va ...