Microsoft Hyper-V和VMware ESX Server是比较相像的,都是Bare-Metal类型,但是它们的内核架构也有着明显的不同。微软在谈到竞争对手ESX Server时,总会提到,Hyper-V是微内核架构的,而ESX Server是单内核架构,Hyper-V要更好。
这两者具有什么不同?到底谁更好呢?
单内核(分层的内核)与微内核
单内核和微内核实际上是操作系统内核术语,操作系统的内核——实现核心功能的那部分——可能是微内核(Micro kernel),也可能是单内核(Monolithic kernel,有时也叫宏内核Macro kernel)。按照类似封装的形式,这些术语定义如下:
微内核(Micro kernel):在微内核中,最常用的功能被精心挑选设计在内核模式(或者按照上一页的说法,在x86上是Ring 0模式)运行的一个或一组进程上,而其它大部分不怎么重要的核心功能都作为单独的进程在用户模式下(类似地,Ring 3模式下)运行,它们通过消息传递进行通讯(例如,Windows采用的进程间通信IPC机制,IPC就是Inter Process Communicate)。最基本的思想就是要尽量地小。通常微内核只包含了进程调度、内存管理和进程间通信这几个根本的功能。
这种设计具有许多好处,例如增加了灵活性、易于维护和易于移植。只需要把微内核本身进行移植就能够完成将整个内核移植到新的平台上。同时微内核的模块化设计让其他核心功能模块都只依赖于微内核模块或其他模块,并不直接依赖硬件。
同样,由于模块化的设计,不包含在微内核内的驱动程序可以动态地加载,或者卸载。同时,微内核也不依赖于固定的文件系统,用户可以随意选择对文件系统的支持。用户甚至能够在系统运行时将研发出的新系统模块或需要替换现有模块的模块直接而且迅速地加入系统。不需要的模块将不会被加载到内存中,因此微内核就能够更有效地利用内存。微内核还具有的好处是实时性、安全性比较好,并且更适合于构建分布式操作系统和面向对象操作系统。
微内核操作系统的典型例子是,Mach(一个非原生的分布式操作系统内核,也被应用在Mac OS X上)、IBM AIX、BeOS以及Windows NT,还有著名的Minix(一个主要用于教学的Unix系统)和Amoeba(一个原生的分布式操作系统)。
单内核(Monolithic kernel):单内核是个很大的进程。它的内部又能够被分为若干模块(或层次,或其他)。但是在运行的时候,它是一个单独的大二进制映象。因为是在同一个进程内,其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是微内核那样在多个进程内进行消息传递。因此在运行效率上,单内核会具有一定的好处。
单内核操作系统的典型例子是,大部分Linux,包括BSD在内的几乎所有的Unix、MS-DOS及Windows 9x。例如Sun Solaris的内核就运行着数百个线程以实现各种功能,而编译过Linux内核的人就知道Linux内核有数十MB之大。
单内核和微内核哪个更好显然是一个很有争议性的问题,必须说明的很有趣的一点是,这种争论经常会令人想到上一个时代CPU领域中RISC和CISC的斗争。现代的CPU设计中包含了任何这两种技术,就像现在Linux(单内核)和Windows NT(微内核)都是微内核和单内核的混合产物一样。历史上有过这样的争论,Linux(单内核)的作者Linus和Minix/Amoeba(均为微内核)的作者Andrew S.Tanenbaum博士对垒,最终Linus也同意微内核架构更为先进的论点。
通过采用微内核架构,Hyper-V在体积上很有优势,它的大小只有300k左右(似乎新版本的更加小),而VMware ESX Server的Linux核心则非常大。就VMM虚拟化管理程序来说,需要的功能不多,因此采用微内核架构是很合适的,运行效率可以很高。不过就理论上来说,合理配置的单内核其实和微内核也很相似。哪一种性能更好?这要在测试之后才能知晓了,不过在这之前,我们接下来可以先看看微内核带来的一个好处:设备驱动程序的变迁。
无论采用什么内核,驱动程序和文件系统总是必要的,虚拟机需要使用服务器的硬件就需要驱动程序,虚拟机的文档需要保存在适当的文件系统上。在单内核的VMware ESX Server上,驱动程序包含在单内核内部,虚拟机映像文件则保存在VMFS(一种类似EXT的文件系统)上,那么微内核架构的Hyper-V呢?
这就要谈到Hyper-V的VSP/VSC架构了,VSP是Virtual Services Provider,VSC则是Virtual Services Client,还有一个VMBus部件,将放在“宿主操作系统”的VSP和虚拟机操作系统的VSC连接起来。实际上“宿主操作系统”也是一个虚拟机——就是你最初安装的、带有Hyper-V的Windows Server 2008,微软将其称为Parent Partition操作系统,而每一个虚拟机则成为Child Partition。
VSP与VPC,注意VSP并不是Virtual Storage Provider的缩写。Virtual Storage Provider属于VSP
上图很好地解释了Hyper-V使用VSP/VSC架构解决驱动程序/文件系统的方式,通过加入VSP和VSC以及它们互相沟通的VMBus总线,Hyper-V将虚拟机的操作映射入Parent Partition的对应驱动程序/文件系统中,简化起来就如下图:
Hyper-V的VSPs/VSCs、VMBus架构
这种方式具有不少好处,例如,最明显地,Hyper-V可以兼容大量的驱动程序,而不必为虚拟机开发专用的驱动程序(ESX Server就是这样干的),只要设备能在Windows Server 2008下工作,那么Hyper-V虚拟机就能使用这些设备资源,再加上Windows驱动天生就比其他操作系统(如Linux)的驱动丰富,因此在硬件支持上Hyper-V具有着无可比拟的优势。VMware ESX Server甚至不能直接应用Linux驱动程序,需要另外进行额外的操作才能使用,因此VMware ESX Server容易受到设备方面的问题,当然用户可以使用具备VMware认证的全套硬件以避免这个问题。
有利就有弊,VSP/VSC架构需要支持Hyper-V技术的客户端的支持,这样就大为限制了虚拟机操作系统的选择,不支持Hyper-V的客户操作系统只能使用设备模拟的方式,性能和以前的Virtual Server 2005 R2没有太大的分别,要享受到Hyper-V性能的提升,需要虚拟机使用Windows Server 2008,或者内含Xen的Linux/Unix。Hyper-V的客户机操作系统的选择确实只注明了Windows和少数几种Linux,虽然笔者猜测或多或少有着商业策略上的因素,不过从技术上来看,确实也有一些限制。
Hyper-V设备驱动的这个优点正好就和微内核驱动程序架构的优点一样,模块化,架构灵活,不需要更改就可以提供新硬件的支持。
顺便提一下,设备虚拟硬件辅助VTd技术在Hyper-V下的实现很轻松,只需要开发Windows Server 2008下的驱动程序。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
回顾年度9大虚拟化技术
虚拟化管理员从未放弃追寻更好虚拟化技术,以使他们的工作更快、更易于管理以及更好地优化。 我们看到,虚拟化工具在 […]
-
从Azure VM到Hyper-V:想想这些技巧
多年来,IT行业已经推动IT人员把工作负载转到云中。虽然在公有云中有一些好处,但有些工作负载更适合运行云本地数据中心中。
-
功能多样的Get-VM PowerShell cmdlet,你知道多少?
Hyper-V管理员能够使用Get-VM PowerShell cmdlet查看并调整一系列虚拟机配置信息。微软花费大量精力对PowerShell进行优化,以提升其对本地或者远程服务器的管理功能。
-
支持Linux虚拟机:新版Hyper-V来帮忙
大家都知道,Linux虚拟机无法利用Hyper-V针对Windows虚拟机提供的众多特性。幸运的是,情况已经发生变化,Hyper-V现在能够为Linux提供更多的支持。