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 是一个企业级虚拟机管理程序,提供接近本机性能的祼机体系结构.各种旨在提高整合率的功能(例如取消内存复制),以及 ...
随机推荐
- ssh默认端口更改后,如何正常使用git?
由于安全或者其它原因,我们可能会修改默认的SSH服务端口号,默认情况下,已有的git项目在pull或者push的时候会报错. 现在假设原来的项目的remote设置为git@domain.com:Pro ...
- java内存模型-基础
基础 并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间 ...
- AWS CloudFront CDN直接全站加速折腾记The request could not be satisfied. Bad request
ERROR The request could not be satisfied. Bad request. Generated by cloudfront (CloudFront) Request ...
- 使用虚拟按钮(Ghost Buttons)的25个网站
2014年已经过去大半年了,我们看到网页设计领域出现新的设计趋势. 虚拟按钮(Ghost Buttons)是指具备基本的按钮形状的透明按钮,但有细实线的边框.有些虚拟钮是互动的,点击之后按钮可能会成为 ...
- Sortable – 简单灵活的 JavaScript 拖放排序插件
当需要在网站中添加拖放排序功能的时候,jQuery UI 的排序组件可能是最流行的解决方案.今天给大家介绍另一款简单灵活的 JavaScript 拖放排序插件——Sortable,它使用 HTML5 ...
- 【移动适配】一个像素的border怎么实现
一个像素里复杂纷扰的世界 文 | 啃先生 Mar.3rd.2016 首发于微信公众号(啃先生) 上一篇发了<[移动适配]移动Web怎么做屏幕适配> 壹 | Fisrt 在CSS的世界里P ...
- 后台运行进程(background job)
在一些日常业务中,总有一些长时间处理的任务,系统运行这些任务需要一晚甚至一个周末. 这就需要后台运行单元(background work process)来完成,而且其是不会发生超时(time out ...
- yii create url (二)
在Yii中经常要生成URL,不管是为了自动跳转还是仅仅是一个链接.下面对Yii中的URL生成做了一个总结.提示:以下controllerX代表控制器X,actionX代表方法X.在Controller ...
- iOS常用手势识别器
手势识别状态: typedef NS_ENUM(NSInteger, UIGestureRecognizerState) { // 没有触摸事件发生,所有手势识别的默认状态 UIGestureReco ...
- Android 手机卫士--自定义控件(获取焦点的TextView)
本文地址:http://www.cnblogs.com/wuyudong/p/5906735.html,转载请注明源地址. 本文将实现标题栏下面的textview中的文字跑马灯的效果,就是将一行文字水 ...