天互数据

登录

新闻资讯 NEWS

实时发布天互官方新闻和媒体报道,了解天互最新动态

当前位置:新闻资讯 > 托管租用相关 > 正文
Aug
2011 31

Hyper-V微软虚拟化技术全面分析

  • 时间:2011/8/31 14:47:46
  • 阅读:741694次

  毫无疑问,在业界,微软Microsoft是当之无愧的软件霸主,不仅仅在操作系统上占据巨大的市场份额,更在数据库、迁入式移动计算、搜索引擎等各个方面都具有很强的影响力,在各个领域都不容忽视。由于低估微软在产品创新和销售执行方面的能力,众多的企业在与微软的竞争中遭遇挫折。

  微软进入虚拟化领域已经很有一段时间了(微软在2003年收购了推出VirtualPC软件的Connectix公司,并在其后推出了VirtualServer服务器虚拟化软件),在Hpyer-V推出之前,微软在虚拟化领域尤其是服务器虚拟化领域可说是略显不自信,与竞争对手VMware的频频新品相比,VirtualPC和VirtualServer的发布和宣传都十分低调,毕竟,VMware/Xen等产品凭借出色的性能已经占据了大半江山。而现在,随着Hyper-V的正式推出,企业级虚拟化领域极可能会引起一场风暴,市场格局有可能迅速改变。

  为什么微软的Hyper-V会具有这样的能力呢?

  Hyper-V是一个Hypervisor(系统管理程序),开发代号为Viridian,它主要作用就是管理、调度虚拟机的创建和运行,并提供硬件资源的虚拟化。Hyper-V是微软伴随WindowsServer2008最新推出的服务器虚拟化解决方案,在WindowsServer2008发布的时候,集成了一个Beta版本的Hyper-V,微软承诺在180天之内会提供正式版的Hyper-V。WindowServer2008是4月份发布的,180天就是不到6个月,因此微软会在9月到10月之间发布正式版的Hyper-V,而目前已经到了RTM阶段,可以正常使用了。

  Hyper-V跟微软自家的VirtualPC、VirtualServer等产品相比,有着很显著的区别,和竞争对手VMwareServer和ESXServer也有很大不同:Hyper-V在构架上绝对是一个突破性的进展!

Hyper-V架构

  Hyper-V虚拟化细节架构

  微软发布的架构图资料有很多,然而主要内容都很相似,就是上图那样。

Virtual Server 2005 R2

  VirtualServer2005R2的架构

  Hyper-V的本质是一个VMM(虚拟化管理程序),和微软之前的VirtualServer系列产品,处在的层次不同,它更接近于硬件,这一点比较像VMware的ESXServer系列,实际上Hyper-V属于微软的第一个裸金属虚拟化产品(Bare-MetalVirtualization)。然而,在一些基础架构上,Hyper-V和ESXServer又有着明显的不同,所以说,Hyper-V是很特别的。

  作为一个虚拟化产品,Hyper-V具有一个很特别的要求:处理器必须支持AMD-V或者IntelVT技术,也就是说,处理器必须具备硬件辅助虚拟化技术。

  对于一个虚拟化产品来说,要求一个硬件特性是比较奇特的事情(要求支持一个指令集不算),微软之前的VirtualServer2005R2不需要这个特性。对于VMware的产品来说,这也只是一个可选的特性,不像Hyper-V那样,是一个硬性的要求。处理器不支持VT/AMD-V,就无法运行Hyper-V。

虚拟化技术

  VT-x处理器辅助虚拟化技术,是Hyper-V的硬性要求

  VT,或者AMD-V,是一种硬件辅助虚拟化技术,用来解决RingPrivilege的问题,传统处理器下虚拟机通过使用指令转换的方法来在Ring3执行Ring0特权指令,严重影响性能,而VT则解决了这个问题。对VT的依赖和支持是Hyper-V架构的基础,也是Hyper-V最大的特点。

  也因为Hyper-V需要处理器支持硬件虚拟化辅助,一部分处理器无法应用Hyper-V,只有较新、非Value型的处理器才能应用。例如访问www.microsoft.com只有75%的几率碰到部署在Hyper-V上的虚拟化服务器,剩下的25%都是未Hyper-V虚拟化的服务器。要在这些服务器上应用虚拟化,用户只能选择VirtualServer2005R2或者其它公司的产品。

MicrosoftHyper-V和VMwareESXServer是比较相像的,都是Bare-Metal类型,但是它们的内核架构也有着明显的不同。微软在谈到竞争对手ESXServer时,总会提到,Hyper-V是微内核架构的,而ESXServer是单内核架构,Hyper-V要更好。#p#分页标题#e#

  这两者具有什么不同?到底谁更好呢?

内核

  单内核(分层的内核)与微内核

  单内核和微内核实际上是操作系统内核术语,操作系统的内核——实现核心功能的那部分——可能是微内核(Microkernel),也可能是单内核(Monolithickernel,有时也叫宏内核Macrokernel)。按照类似封装的形式,这些术语定义如下:

  微内核(Microkernel):在微内核中,最常用的功能被精心挑选设计在内核模式(或者按照上一页的说法,在x86上是Ring0模式)运行的一个或一组进程上,而其它大部分不怎么重要的核心功能都作为单独的进程在用户模式下(类似地,Ring3模式下)运行,它们通过消息传递进行通讯(例如,Windows采用的进程间通信IPC机制,IPC就是InterProcessCommunicate)。最基本的思想就是要尽量地小。通常微内核只包含了进程调度、内存管理和进程间通信这几个根本的功能。

  这种设计具有许多好处,例如增加了灵活性、易于维护和易于移植。只需要把微内核本身进行移植就能够完成将整个内核移植到新的平台上。同时微内核的模块化设计让其他核心功能模块都只依赖于微内核模块或其他模块,并不直接依赖硬件。

  同样,由于模块化的设计,不包含在微内核内的驱动程序可以动态地加载,或者卸载。同时,微内核也不依赖于固定的文件系统,用户可以随意选择对文件系统的支持。用户甚至能够在系统运行时将研发出的新系统模块或需要替换现有模块的模块直接而且迅速地加入系统。不需要的模块将不会被加载到内存中,因此微内核就能够更有效地利用内存。微内核还具有的好处是实时性、安全性比较好,并且更适合于构建分布式操作系统和面向对象操作系统。

  微内核操作系统的典型例子是,Mach(一个非原生的分布式操作系统内核,也被应用在MacOSX上)、IBMAIX、BeOS以及WindowsNT,还有著名的Minix(一个主要用于教学的Unix系统)和Amoeba(一个原生的分布式操作系统)。

  单内核(Monolithickernel):单内核是个很大的进程。它的内部又能够被分为若干模块(或层次,或其他)。但是在运行的时候,它是一个单独的大二进制映象。因为是在同一个进程内,其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是微内核那样在多个进程内进行消息传递。因此在运行效率上,单内核会具有一定的好处。

  单内核操作系统的典型例子是,大部分Linux,包括BSD在内的几乎所有的Unix、MS-DOS及Windows9x。例如SunSolaris的内核就运行着数百个线程以实现各种功能,而编译过Linux内核的人就知道Linux内核有数十MB之大。

  单内核和微内核哪个更好显然是一个很有争议性的问题,必须说明的很有趣的一点是,这种争论经常会令人想到上一个时代CPU领域中RISC和CISC的斗争。现代的CPU设计中包含了任何这两种技术,就像现在Linux(单内核)和WindowsNT(微内核)都是微内核和单内核的混合产物一样。历史上有过这样的争论,Linux(单内核)的作者Linus和Minix/Amoeba(均为微内核)的作者AndrewS.Tanenbaum博士对垒,最终Linus也同意微内核架构更为先进的论点。

  通过采用微内核架构,Hyper-V在体积上很有优势,它的大小只有300k左右(似乎新版本的更加小),而VMwareESXServer的Linux核心则非常大。就VMM虚拟化管理程序来说,需要的功能不多,因此采用微内核架构是很合适的,运行效率可以很高。不过就理论上来说,合理配置的单内核其实和微内核也很相似。哪一种性能更好?这要在测试之后才能知晓了,不过在这之前,我们接下来可以先看看微内核带来的一个好处:设备驱动程序的变迁。

无论采用什么内核,驱动程序和文件系统总是必要的,虚拟机需要使用服务器的硬件就需要驱动程序,虚拟机的文档需要保存在适当的文件系统上。在单内核的VMwareESXServer上,驱动程序包含在单内核内部,虚拟机映像文件则保存在VMFS(一种类似EXT的文件系统)上,那么微内核架构的Hyper-V呢?#p#分页标题#e#

  这就要谈到Hyper-V的VSP/VSC架构了,VSP是VirtualServicesProvider,VSC则是VirtualServicesClient,还有一个VMBus部件,将放在“宿主操作系统”的VSP和虚拟机操作系统的VSC连接起来。实际上“宿主操作系统”也是一个虚拟机——就是你最初安装的、带有Hyper-V的WindowsServer2008,微软将其称为ParentPartition操作系统,而每一个虚拟机则成为ChildPartition。

VSP

  VSP与VPC,注意VSP并不是VirtualStorageProvider的缩写。VirtualStorageProvider属于VSP

  上图很好地解释了Hyper-V使用VSP/VSC架构解决驱动程序/文件系统的方式,通过加入VSP和VSC以及它们互相沟通的VMBus总线,Hyper-V将虚拟机的操作映射入ParentPartition的对应驱动程序/文件系统中,简化起来就如下图:

Hyper-V

  Hyper-V的VSPs/VSCs、VMBus架构

  这种方式具有不少好处,例如,最明显地,Hyper-V可以兼容大量的驱动程序,而不必为虚拟机开发专用的驱动程序(ESXServer就是这样干的),只要设备能在WindowsServer2008下工作,那么Hyper-V虚拟机就能使用这些设备资源,再加上Windows驱动天生就比其他操作系统(如Linux)的驱动丰富,因此在硬件支持上Hyper-V具有着无可比拟的优势。VMwareESXServer甚至不能直接应用Linux驱动程序,需要另外进行额外的操作才能使用,因此VMwareESXServer容易受到设备方面的问题,当然用户可以使用具备VMware认证的全套硬件以避免这个问题。

  有利就有弊,VSP/VSC架构需要支持Hyper-V技术的客户端的支持,这样就大为限制了虚拟机操作系统的选择,不支持Hyper-V的客户操作系统只能使用设备模拟的方式,性能和以前的VirtualServer2005R2没有太大的分别,要享受到Hyper-V性能的提升,需要虚拟机使用WindowsServer2008,或者内含Xen的Linux/Unix。Hyper-V的客户机操作系统的选择确实只注明了Windows和少数几种Linux,虽然笔者猜测或多或少有着商业策略上的因素,不过从技术上来看,确实也有一些限制。

  Hyper-V设备驱动的这个优点正好就和微内核驱动程序架构的优点一样,模块化,架构灵活,不需要更改就可以提供新硬件的支持。

  顺便提一下,设备虚拟硬件辅助VTd技术在Hyper-V下的实现很轻松,只需要开发WindowsServer2008下的驱动程序。

  Hyper-V还具有一个关于性能的重要特性:多处理器虚拟机,Hyper-V支持4CPU的WindowsServer2008虚拟机,和2CPU的WindowsServer2003虚拟机。多处理器虚拟机并不是Hyper-V才具有的特性,VMware的ESXServer早已经实现4CPU的虚拟机,并且是在各种操作系统下(WMwareWorkstation也能提供2CPU的虚拟机)。

  如果服务器工作负载需要很高的性能,我们可以考虑使用多处理器的虚拟机。数据库服务器可以消耗掉大量的处理器资源,这时,多处理器虚拟机就是很必须的,就像我们做过的测试那样。当然,只有当工作负载确实需要的时候,才应该使用多处理器虚机,因为管理更多的处理器会带来一些额外的开销。就像早期WindowNT具有单处理器和多处理器两种内核一样(单处理器版本去掉了一些多处理器才有的如同步之类的模块,并作了相关优化)。

Hyper-V

  进程状态及其转换示意图,进程的就在这些状态之间“旋转”

众所周知,为了保护共享数据,需要一些同步机制,例如锁、信号量等。通常,多处理器操作系统内核和驱动会采用自旋锁(SpinLock,类似于互斥锁,但是保持时间更短。更详细的信息可以参考《WindowsInternals》第四版,P152)的机制,在获得自旋锁之前,线程并不会阻塞,而是一直处于自旋状态,前提是自旋锁只会保持很短的时间。然而在虚拟化条件下,这个前提会被打破,因为虚拟处理器是按照时间片进行调度的。如果在保持自旋锁的时候竞争虚拟处理器,则其他虚拟处理器就要自旋很长时间,导致CPU循环的浪费。#p#分页标题#e#

  在WindowsServer2008内核以及Hyper-VHypervisor中加入了一个创新设计,尽可能防止出现自旋锁的长时间等待条件,如果确实存在长时间等待条件,也会有效地加以检测并对其进行处理。这个方法叫做自旋锁启发方法,未实现自旋锁启发方法的虚拟机系统将停在一个紧凑循环上旋转以等待其他虚拟处理器释放自旋锁,通常这个旋转可能会阻塞其中一个硬件CPU,从而降低虚拟化性能。而在自旋锁启发式操作系统中,自旋锁代码会在将要发生旋转时通过HypercallAPI通知Hyper-VHypervisor管理程序,这样Hypervisoer管理程序就可以立即调度执行另一个虚拟处理器并降低不必要的CPU使用。Hyper-V还在调度程序和内存虚拟化逻辑上进行了优化以使它们在大多数临界区中都不会被锁定,从而确保多处理器系统能够获得很好的延展性。

  在前些天的媒体测试见面会上,微软中国的工程师展示了Hyper-V虚拟机的效率,表明4CPU的WindowsServer2008虚拟机,其延展性可以和物理4CPU系统一较高下。当然,具体的提升仍然需要通过测试来评估。

  注:自旋锁启发方法其实不完全是Hyper-V的内容,它更多是WindowsServer2008的核心内容。Vista也实现了这个自旋锁启发方法。

  不知不觉间说了很多显得有些深涩的内容,不过Hyper-V的特点总结起来就是:VT/AMD-V实现、微内核设计、VSP/VSC虚拟设备驱动架构以及虚拟处理器自旋锁启发架构,这些特性糅合在一起就形成了独特的Hyper-V。此外,28美元的价格(或者,购买WindowsServer2008:免费)也很值得一提。

服务器虚拟化

  微软服务器虚拟化战略的里程碑:Hyper-V

  更好的性能、更广泛的兼容性、更强的安全性,以及更便宜——这就是Hyper-V,从2003年收购Connetix后就沉寂的微软并没有睡着。从最早的TerminalServices,到早期的VirtualPC、VirtualServer、SoftGrid,到今天Hyper-V的推出,这些看似不经意的动作,现在看来均是为其全面的虚拟化战略实施做铺垫。而经过这样一系列的铺垫,微软从数据中心到桌面虚拟化、全面的端到端的虚拟化战略已经正式部署完毕,我们已经可以看到,虚拟化市场即将到来的一场暴风雨。

——THE END——

上一篇: Hyper-VPS在IDC环境下的应用优势分析

下一篇: “火眼金睛”上线了:快来领取你的免费体验机会!

为你推荐
天互数据助力成长
  • 售前咨询电话

    400-675-6239

  • 在线客服

    在线客服,立即响应

  • 建议反馈

    天互数据渴望您的建议

关注天互数据                   关注美猴云

7*24小时咨询热线
400-675-6239

关注微信公众号

公司地址:西安市高新区高新六路42号中清大厦2层
邮编:710075 传真:029-89566419

在线客服

电话咨询

扫码咨询