KVM虚拟化技术的驱动演进虚拟化

2013-04-22    来源:机房360    编辑:victor
虚拟化技术最早出现在大型机时代。上世纪60年代,IBM开始在其CP-40大型机系统中尝试虚拟化的实现,后来在System/360-67中采用,并衍生出VM/CMS到后来的z/VM等产品线。大型机上的虚拟化技

  由于处理器架构的不同,在大型机上已经成熟的虚拟化技术却并不能为小型机及x86所用。直到2001年,VMware发布了第一个针对x86服务器的虚拟化产品。之后的几年间,英国剑桥大学的一位讲师发布了同样针对x86虚拟化的开源虚拟化项目Xen,并成立XenSource公司;惠普发布了针对HP-UX的Integrity虚拟机;Sun跟Solaris 10一同发布了同时支持x86/x64和SPARC架构的Solaris Zone;而微软也终于在2008年发布的Windows Server 2008 R2中加入了Hyper-V。期间,VMware被EMC收购,XenSource则被思杰收购。

  之后的几年间,VMware逐渐在企业级市场中被广泛的接受,Xen也逐渐在互联网领域展露头角。在成熟的服务器操作系统当中,Novell SUSE Linux Enterprise 10是第一个采用Xen技术的。当时的Xen还很不成熟,乃至于红帽还为此取笑了Novell一番;不过几个月后,到了RHEL 5.0发布的时候,红帽决定也将Xen加入到自己的默认特性当中——那是2006年,也就是5年之前。一时之间,在Linux服务器领域,Xen似乎成为了VMware之外的最佳虚拟化选择(事实上也没多少其他可选的)。

  但是,作为一项Linux平台上的虚拟化技术,Xen在很长一段时间内一直没有被接受到Linux内核的代码当中,这对于Xen的维护者而言,不仅意味着要多做很多工作,还意味着用户在废了半天劲装好Xen之后可能遇到意想不到的问题(注:2011年6月发布的Linux内核3.0中已经加入了对Xen的支持——Xen的工程师们表示这是清理了7年遗留代码、提交了600多个补丁的成果)。而红帽方面,也许是因为当时对这种脱离内核的维护方式很不爽,也许是因为采用Xen的RHEL在企业级虚拟化方面没有赢得太多的市场,也许是因为思杰跟微软走的太近了,种种原因,导致其萌生了放弃Xen的心思。事实上,当时整个Xen的市场表现的确一般,2008年Hyper-V推出的时候,甚至有评论猜测思杰自己都会抛弃Xen而投奔Hyper-V(当然,思杰后来在官方博客上否认了这个猜测,表示自己和微软只是合作的比较亲密而已)。

  总之,红帽决定选择了一个新兴的、基于内核的虚拟化技术:KVM。而且在正式采用KVM一年后,就宣布在新的产品线中彻底放弃Xen,集中资源和精力进行KVM的工作。

  那么,除了是Linux内核的一部分之外,KVM到底有啥好处?2008年的时候,红帽发言人表示,KVM相比Xen有着更好的可管理性以及更高的性能。性能这一点需要基准测试来说话,不过不同的基准测试会给出不同的结果,所以性能方面孰优孰劣很难一概而论;可管理性方面,红帽在大规模服务器自动化管理方面倒是一直很有一些心得,而且相关的工具大多是免费开源的,这点很不错。具体有哪些工具,可以查询KVM的这个页面,以及Xen的维基页面。

  当然,KVM本身也有一些弱点,那就是相比裸金属虚拟化架构的Xen、VMware ESX和Hyper-V,KVM是运行在Linux内核之上的寄居式虚拟化架构,会消耗比较多的计算资源;不过针对这一点,Intel、AMD已经在处理器设计上有专门的VT-x和AMD-V扩展,这种特性在每次硬件更新的时候也会更新,往往每次更新后都对虚拟化性能和速度上有明显的提升,所以长远来看,也不是什么大问题。

  根据由IBM和红帽共同发起,IDC研究公司近期发布的名为“KVM,开放虚拟化成为企业化应用”的白皮书显示,自从2007年KVM纳入Linux核心以来,KVM取得了令人瞩目的进展,尤其是Linux服务器整合和云计算等关键应用领域对KVM的接受程度更是与日俱增。IDC白皮书表明2012年度虚拟服务器相对物理服务器的数量已经超过了2:1.IDC研究公司的调研数据还显示,截止到2011年年底有55%已配置的工作负载部署了虚拟化,新配置的工作负载中虚拟化率达到了67%。IDC研究公司还发现像KVM这种对VMware构成竞争的管理程序正在为企业用户提供越来越多的选择。

  红帽和IBM公司长期的合作关系最初是源于红帽企业 Linux,后来又扩展到对虚拟化的关注上。多年前两大行业的领导者开始围绕开放虚拟化展开合作,之后又通过KVM共同推动虚拟化的快速发展。两家公司作为2011年成立的开放虚拟化联盟的创办者一直在其中发挥着领导作用。开放虚拟化联盟推动了KVM生态系统在市场上的发展,随着开放虚拟化联盟的成员数量不断增多,企业类型也变得更加多样化,这都为KVM在服务器,存储,网络,管理,操作系统,安全,企业应用软件等领域的配置和应用创造了机会,也使得KVM成为应用最为广泛的基础架构即服务云基础之一。IBM公司还将KVM和红帽企业虚拟化作为自己的公有云产品- IBM SmartCloud Enterprise的基础应用。

  在2012年年中,红帽企业Linux 5,红帽企业 Linux 6和KVM管理程序共同配置在IBM系统中,每一个程序都获得了通用标准评估认证4+级别的认证。这些认证也为KVM管理程序和开发虚拟化在国土安全项目,指挥和控制操作以及整个政府机构中的应用铺平了道路。

  KVM的存储选项有多种,包括虚拟磁盘文件、基于文件系统的存储和基于设备的存储。

  为实现KVM存储管理,可以使用LVM(Logical Volume Manager)和创建存储池。当系统创建KVM虚拟机的时候,默认使用虚拟磁盘文件作为后端存储。安装后,虚拟机认为在使用真实的磁盘,但实际上看到的是用于模拟硬盘的虚拟磁盘文件。这一额外的文件系统层会降低系统速度。

  当然,基于磁盘镜像的虚拟磁盘并非全无益处,磁盘文件系统可以很轻松地用于其它的KVM虚拟化宿主机。但是如果您希望优化KVM虚拟化性能,最好考虑其它的存储方式。

  RHEL 6现在支持基于KVM管理程序。KVM的抽象层——称为libvirt——运行KVM网络,管理员能够在libvirt的配置文件中定制虚拟机连接并追踪网络设备。

  在libvirt中运行KVM网络有两种方法:网络地址转换(NAT)和桥接网络。网络地址转换是默认方法,桥接网络仅对非常特殊的基础设施有意义。

  对大多数管理员来说,最好从理解KVM网络在默认安装中如何工作开始。如果想创建定制安装,通过学习导航用于网络地址转换的NAT配置文件,同样可以熟悉相关设置。例如,你可以创建多个允许你改变不同虚拟机之间的网络流量的NAT接口。

  如果在主机上使用KVM,通常会激活数个客户操作系统,而且这些操作系统经常运行相同的OS,这意味着大量的内核页面被多次加载。通过应用KSM(kernel samepage merging,内核同页合并),许多虚拟机可以使用相同数量的内存启动。

  在RHEL 6和Fedora 14中,KSM默认是打开的。KSM通过两个服务:ksmd和ksmtuned实现,这两个服务在系统初始化时自动启动。管理员应该判断他们的环境并决定保持KSM处于运行状态还是关闭它。

1
3