虚拟化技术简介虚拟化技术发展历史
虚拟化技术最早出现在大型机时代。20世纪60年代,IBM开始尝试在其CP-40大型机系统中实现虚拟化,后来在System/360-67中采用,并衍生出VM/CMS、z/VM等产品线。主机上的虚拟化技术在接下来的20年里变得越来越成熟。但是随着小型机和x86的普及,大型机在新兴的服务器市场已经失去了影响力。
由于处理器架构的不同,已经在大型机上成熟的虚拟化技术无法被小型机和x86使用。直到2001年,VMware发布了第一款面向x86服务器的虚拟化产品。随后几年,一位来自英国剑桥大学的讲师发布了同样针对x86虚拟化的开源虚拟化项目Xen,并成立了XenSource公司(2007年被Citrix收购)。惠普为惠普UX发布Integrity虚拟机;与Solaris 10一起,Sun发布了Solaris Zone它支持x86/x64和SPARC体系结构。微软最终在2008年发布的Windows Server 2008 R2中加入了Hyper-V。在此期间,VMware被EMC收购,XenSource被Citrix收购。
随后几年,VMware逐渐在企业市场被广泛接受,Xen也逐渐在互联网领域崭露头角。在成熟的服务器操作系统中,Novell SUSE Linux Enterprise 10率先采用了Xen技术。Xen当时还不成熟,连红帽都为此取笑Novell。然而,几个月后,当RHEL 5.0发布时,红帽决定将Xen添加到其默认功能中。突然之间,在Linux服务器领域,Xen似乎成了VMware之外最好的虚拟化选择(其实其他选择并不多)。
然而,Xen作为Linux平台上的一项虚拟化技术,长期以来并没有被接受到Linux内核代码中,这不仅意味着Xen的维护人员要做大量的工作,也意味着用户在花半天时间尝试安装Xen后可能会遇到意想不到的问题(注:2011年6月发布的Linux内核3.0中已经加入了对Xen的支持。Xen的工程师说,这是为了清理7年的遗留代码。
至于红帽,或许是因为当时对这种脱离内核的维护方式的不满,或许是因为拥有Xen的RHEL在企业虚拟化方面并没有赢得太多市场,或许是因为Citrix与微软过于接近,以及种种原因,它产生了放弃Xen的想法。2008年9月,红帽收购了一家名为Qumranet的以色列小公司,开始了一项名为KVM的虚拟化技术(KVM,全称Kernel-based Virtual Machine,意为基于内核的虚拟机)。
简而言之,红帽决定选择一种新的基于内核的虚拟化技术:KVM。在KVM正式采用一年后,宣布在新的产品线中彻底放弃Xen,将资源和精力集中在KVM上。此时,主要的虚拟化技术有VMware、Xen、KVM等。已经出现并找到了自己的位置。
完全虚拟化(完全虚拟化)
全虚拟化也成为了最初的虚拟化技术。该模型使用虚拟机来协调客户操作系统和原始硬件,使用VMM来协调客户操作系统和裸硬件之间的工作,并且一些受保护的指令必须由虚拟机管理程序捕获和处理。
全虚拟化主要是在客户操作系统和硬件之间捕获和处理对虚拟化敏感的特权指令,使客户操作系统无需修改即可运行,速度会根据不同的实现而有所不同,但总体上可以满足用户的需求。这种方式是当今业界最成熟、最常见的,它同时属于托管模式和Hypervisor模式。众所周知的产品有IBM CP/CMS、VirtualBox、KVM、VMware Workstation和VMware ESX(在其4.0版中更名为VMware vSphere)。
全虚拟化运行速度比硬件模拟快,但性能不如裸机,因为Hypervisor需要占用一些资源。
优点:Guest OS不需要修改,速度和功能都很好,更重要的是使用起来非常简单,无论是VMware产品还是Oracle VirtualBox。
缺点:基于托管模式的全虚拟产品性能并不是特别优秀,尤其是在I/O方面。
未来:由于这种模式,不仅不会对Guest OS进行修改,还会通过引入硬件辅助虚拟化技术来提升其性能,未来全虚拟化仍将是主流。
准虚拟化(准虚拟化)
半虚拟化是另一种类似于全虚拟化的技术,它使用虚拟机管理程序来共享对底层硬件的访问,但其客户操作系统集成了虚拟化代码。这种方法不需要重新编译,也不会造成陷阱,因为操作系统本身就可以很好地配合虚拟进程。
有点类似于全虚拟化,也是用Hypervisor来实现对底层硬件的共享访问。但是因为运行在Hypervisor上的Guest OS已经集成了半虚拟化相关的代码,所以Guest OS可以很好的配合Hyperivosr实现虚拟化。这样就不需要重新编译或者捕获特权指令,使其性能非常接近物理机。最经典的产品就是Xen,而由于微软Hyper-V采用的技术与Xen类似,Hyper-V也可以归为半虚拟化。
(半虚拟化需要修改VM操作系统的内核,所以无法支持windows这样的闭源OS,所以Xen也开始利用CPU虚拟化技术支持全虚拟化,所以目前Xen支持半虚拟化和全虚拟化。)
半虚拟化需要对客户操作系统进行一些修改,以使客户操作系统意识到它处于虚拟化环境中,但半虚拟化提供了与原始操作系统类似的性能。
优点:与全虚拟化相比,这种模式架构更简单,整体速度有一定优势。
缺点:Guest OS需要修改,所以在用户体验方面比较麻烦。
未来:情况差不多。它应该会继续在公共云平台(如亚马逊EC2)上占据一席之地,但在其他方面很难与VMware vSphere这样的完全虚拟化产品竞争。同时,它还将使用其他技术来提高速度和简化架构。
虚拟化供应商
VMware简介
VMware的历史
早在1998年,毕业于麻省理工学院的黛安格林(Diane Greene)就注意到计算机资源利用率太低,于是她与孟德尔罗森布鲁姆(Mendel Rosenblum)博士、斯科特迪瓦恩(Scott Devine)、爱德华王(Edward Wang)博士和爱德华布尼翁(Edouard Bugnion)成立了VMware,专门研究OS in OS的软件,以便充分发挥硬件的性能,为当时的专业IT人员提供一个低成本的测试和评估环境。
1.1上的第一个虚拟机产品。X86平台:VMware工作站
当时VMware Workstation一上市就启动,让VMware直接成为虚拟机的代名词。但由于Windows系统的相对不稳定性,VMware工程师将目光转向了相对稳定的Linux系统。因此,在VMware Workstation成功推出后不久,就出现了Linux产品,允许Linux下的用户同时运行Windows或其他Linux套件。
2.2以下的虚拟机产品。Linux操作系统
虽然Windows的问题已经解决,但是VMware Workstation仍然无法摆脱生活在固定操作系统上的恐惧。既然选择了相对稳定的Linux,VMware也推出了运行在RedHat、Mandrake、SUSE Linux下的VMware GSX服务器,也有Web端的管理程序和客户端的管理程序。在Linux下,VMware不需要担心病毒或者黑客的攻击,操作系统本身宕机造成的危险也相对较小。因此,在2000年初,Linux成为了VMware产品发挥最大作用的最佳舞台。2000年初,VMware还推出了Linux下的VMware GSX服务器产品,这是后来发布VMware服务器版本的基础。当然,GSX服务器最大的特点是采用了客户/服务器架构的管理界面,也可以通过浏览器连接GSX服务器进行管理。
千伏计(kilovoltmeter的缩写)
KVM Kernel-based Virtual Machine的缩写,是一个开源的系统虚拟化模块,从Linux 2.6.20开始集成在所有主流的Linux发行版中。它使用Linux自己的调度器来管理,所以和Xen相比,它的核心源代码很少。KVM已经成为学术界的主流VMM之一。在2006年之前,Linux内核中没有虚拟化。Xen和Vmware在不同的虚拟化领域依靠自己独特的技术。特别值得一提的是,Xen几乎已经成为开源领域虚拟化事实上的标准。Avi Kivity和他的以色列初创公司Qumranet提出并推广了KVM(基于Linux内核的全虚拟化解决方案)。凭借其精简的架构和清晰的定位,很快赢得了Linux社区大多数开发者的支持,并很快被并入主干网。以Avi Kivity为主的工程师只用了不到一年的时间,就让Linux社区接受了KVM的设计方案,并通过了代码评审,最终在2006年10月并入2.6.20主干。今天,人们仍然对KVM融入Linux主干的速度感到惊讶。
为什么这么多大公司对KVM感兴趣?最明显也是最重要的因素是KVM是Linux内核的一部分。这种轻量级的虚拟化hypervisor模块可以直接与硬件交互,无需修改虚拟化操作系统,因此具有更好的性能,补丁包可以兼容Linux内核,可以轻松控制虚拟化进程,减轻管理负担。
当然KVM也有成长的烦恼。KVM属于第1类还是第2类虚拟机管理程序?这个疑问的原因在于KVM的基因——,它是操作系统的一部分,类似于直接运行在硬件系统上的裸机hypervisor,不需要修改操作系统。这符合Type 1 hypervisor的定义,通常称为硬件虚拟化引擎。它更像是安装在客户端的操作系统,性能好,运行稳定,降低了运行hypervisor本身的成本。
类型2虚拟机管理程序更像是一个应用程序,运行在基本操作系统上。如果将KVM视为Type 2,所强调的高性能很难实现,可能存在安全隐患。事实上,类型1和类型2的讨论并不是采用KVM的先决条件。KVM到底是“第一类”还是“第二类”,这是一个语义概念。
另外,这是所有新技术在发展中都会面临的一个难题:技术不成熟。KVM才出现了三四年,所以在可用资源、平台支持、管理工具、实现经验等方面都无法与出现了八年的Xen相比。虽然KVM仍然缺少一些关键特性,如动态存储迁移,但它将在后续版本中得到开发。
从性能上来说,KVM正逐渐显示出它的威力。在最近的SPECvirt虚拟化基准测试中,Red Hat Linux 6.1,其嵌入式KVM hypervisor和HP ProLiant DL980 G7服务器联合创造了——的新成就,最佳的虚拟化性能和最大数量的计算块数,六个虚拟机可以同时运行一个应用程序。
虽然只是一项新技术,但是由于KVM的性能和实现的简单性,以及在Linux企业市场份额最大的Red Hat的推广和发展,KVM将继续发展壮大。
超V
在2006年VMware将其服务器产品免费后,整个虚拟机市场立即发生了变化。原来大家心目中的‘OS中的OS’这个概念立刻被提升到了一个新的境界。微软是第一个发现这个巨大市场的竞争对手,随即宣布将投资企业级虚拟机市场,并于2008年成功推出Hyper-V。2010年发布的Windows Server 2008 R2发布了支持实时/快速迁移的Hyper-V R2的更新版本,该版本支持无需重启即可立即传输。
Hyper-V不是一个独立的产品,而是恰当地集成到Windows Server 2008系统中的“角色”中。要在Windows Server 2008中安装Hyper-V,必须以基于角色的方式将主机配置为虚拟机角色。这也让刚接触虚拟机的人直接怀疑Hyper-V native是否真的是原生架构。既然需要Windows Server 2008托管的操作系统,Hyper-V native怎么可能是原生架构?
1.Windows Server 2008是第一个虚拟机。
原生架构最重要的特性不是主机OS,而是Hypervisor的位置。如果Hypervisor位于环0或环1,运行Hyper-V的Windows Server 2008只要能控制客户端OS,并为客户端OS提供监控和分发服务,就可以视为客户端OS。
在启动Hyper-V之前,Windows Server 2008是一个普通的Windows Server操作系统。整个操作系统掌握了所有的资源,所有的硬件都是操作系统直接访问的。此时电脑没有虚拟机功能,安装虚拟服务器/PC或VMware Workstation/Server即可流畅运行。
2.特殊本地角色
然而,在Hyper-V的作用开始后,系统的性质发生了变化。首先,开机时会加载文件hvboot.sys,这是Hyper-V的Hypervisor。hvboot.sys加载后,以后加载的所有操作系统都被视为虚拟机,包括安装的Windows Server 2008。
此时Windows Server 2008会继续启动,但已经变成了虚拟机。在Hyper-V中,启动Hyper-V后的Windows Server 2008被称为‘父虚拟分区’,被视为最特殊的虚拟机。虚拟机“父虚拟分区”与后来安装的其他虚拟机完全不同。它完全控制了除CPU和网卡以外的所有资源,所以这个Windows Server 2008也必须服从Hypervisor的指挥。
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。