LINUX的XEN和KVM到底区别在什么地方?
kvm 是linux的内核的一个module,而xen 是一个linux的应用。
目前xen 和kvm都支持虚拟化和半虚拟化。
kvm 必须CPU 支持虚拟化,而xen都可以。
kvm的I/O性能比较强。
xen较为老旧,后期发展没有kvm迅猛。
kvm集成到了不少linux的发行版中,使用门槛较低。xen与linux的整合度没那么高。
两者整体性测试,xen略优于kvm.
性能隔离度上,kvm做的比xen要好的多.
增容性方面,kvm到21个,兼容性就跪了.xen在这方面有良好的表现.
建议百度一下以下几个关键字:半虚拟化与全虚拟化的区别,intel的VT-X技术,影子页表及EPT
KVM是一个全虚拟化的解决方案。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。
【以上整理自知乎】
-----------------+--------------------+--------------------+------------------------+-----------------
Xen与KVM的比较
Xen是Linux下的一个虚拟化解决方案,但由于被Citrix收购后,变成了和红帽企业版一样了,卖服务收取费用,Redhat从rhel6.0开始已经从内核中把XEN踢出去了,全心投入开发免费的KVM,虽然市场上老用户还在用Xen,但相信kvm会逐步占领大面积的市场,必竟有redhat做为强大支持源。
Xen的实现方法是运行支持Xen功能的kernel,这个kernel是工作在Xen的控制之下,叫做Domain0,使用这个kernel启动机器后,你可以在这个机器上使用qemu软件,虚拟出多个系统。Xen的缺点是如果你需要更新Xen的版本,你需要重新编译整个内核,而且,稍有设置不慎,系统就无法启动。
相比较,KVM就简化的多了。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小。所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。
KVM和Xen虚拟化平台对比分析
一、 概述
Xen是一个开放源代码虚拟机监视器,由剑桥大学开发。其目标是为了实现在单个计算机上运行128个有完全功能的操作系统。在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。2013年4月,Linux基金会宣布Xen成为Linux基金会合作项目。
KVM,全称为Kernel-based Virtual Machine(基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施。KVM目前支持Intel VT及AMD-V的原生虚拟技术。KVM在2007年2月被导入Linux 2.6.20核心中。
本文分别从架构原理、相关技术和各自优势来对比分析Xen和KVM虚拟化平台,并讲述了对这两种虚拟化技术发展趋势的看法。
二、架构和原理
Xen通过hypervisor软件层来访问物理硬件,实现在一台单独的计算机上运行多个各自独立彼此隔离的子操作系统。hypervisor指挥硬件访问和协调来自各子操作系统的请求。
在Xen环境中,主要有两个组成部分。 一个是虚拟机监控器(VMM),也叫hypervisor。Hypervisor层硬件与虚拟机之间,最先被载入到硬件的第一层。 Hypervisor载入就可部署虚拟机。在Xen中,虚拟机叫做Domain。在这些虚拟机中,Domain0具有很高的特权,负责一些专门的工作。由于hypervisor中不包含任何与硬件对话的驱动,也没有与管理员对话的接口,这些驱动就由 domain0来提供了。通过domain0,管理员可以利用一些Xen工具来创建其它虚拟机(DomainU)。这些domainU属于无特权domain。
而KVM是基于Linux环境的开源虚拟化解决方案,其思想是在Linux内核的基础上添加虚拟机管理模块,重用Linux内核中已经完善的进程调度、内存管理与硬件设备交互等部分,使之成为一个可以支持运行虚拟机的Hypervisor。因此,KVM并不是一个完善的模拟器,而只是一个提供虚拟化功能的内核插件,具体的模拟器工作是借助工具(QEMU)来完成。
三、相关技术
Xen同时支持全虚拟化和半虚拟化(修改过的客户机能有更好的性能)。Intel对Xen贡献修改以支持其VT-X Vanderpool架构扩展。如果主系统支持Vanderpool或者Pacifica扩展(Intel和AMD对本地支持虚拟化的扩展),这项技术将允许未修改的客作业系统运行在Xen虚拟机中。事实上,那意味著性能的提升,并且你可以在没有进行任何协议不允许的修改的情况下对Windows进行虚拟。而且,通过可以半虚拟化的技术获得高性能,甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有上佳的表现。与那些传统通过软件模拟实现硬件的虚拟机不同,在Intel VT-X支持下3.0版本之前的Xen需要系统的来宾权限,用来和Xen API进行连接。Xen目前可以运行在x86系统上,并正在向x86_64、IA64、PPC移植。移植到其他平台从技术上是可行的,未来有可能会实现。
KVM是一个全虚拟化的解决方案。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。它包含一个为处理器提供底层虚拟化 可加载的核心模块KVM.ko(KVM-intel.ko或KVM-AMD.ko)。KVM还需要一个经过修改的QEMU软件(qemu-KVM),作为虚拟机上层控制和界面。KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器)。在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。
四、优势对比
1.Xen的优势
可用资源:Xen的问世要比KVM早4年之久(两者分别是2003年和2007年)。比较容易找到精通Xen的IT技术人员,更容易让这些技术人员接受Xen相关的培训、更容易得到Xen的咨询帮助以及获得Xen证书。
平台支持:Xen在新版本中支持更多的主机和客体工作环境,包括泛虚拟化技术、硬件辅助支持以及修改过或未修改过的客体操作系统。
可管理性: Xen具有一个更加宽泛的第三方配给、备份、存储管理、P2V、容量规划、性能监控、进程自动化、安全和其它管理规则的社区。
实施: Xen的运行和管理都是在较低级别的(Ring 0)。对于新虚拟机创建,客体机器并不需要像KVM那样共享内存块、CPU指令或者任何底层的Linux操作系统(虽然偶尔也会越权)。
支持动态迁移: Xen支持非中断的动态迁移,可以允许动态工作负载平衡和例行维护而几乎没有任何宕机时间。
性能: Xen具有更好的处理性能(接近于本地处理),支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。
2.Xen的缺点
Xen是一个安装在Linux内核下层的一个产品。其工作环境的补丁包不能够和Linux内核兼容。
Xen使用泛虚拟化技术需要修改操作系统,默认Windows的安装并不支持泛虚拟化工作环境。
Xen不能良好的与Linux内核整合,将会使Linux内核的负担越来越重。
3.KVM优势
KVM是Linux内核的一部分,KVM在Linux内核内部部署,可以很容易控制虚拟化进程。
KVM更加灵活。由于操作系统直接和整合到Linux内核中的虚拟化管理程序交互,所以在任何场景下都可以直接和硬件进行交互,而不需要修改虚拟化的操作系统。
KVM在Ret Hat的大力支持下,将会使虚拟化技术的后来者——KVM同Xen一样功能齐全。
4.KVM缺点
KVM不如Xen技术成熟,并且缺少某些关键特性,如动态迁移和泛虚拟化支持。
五、发展趋势的看法
Xen同时支持全虚拟化和半虚拟化(修改过的客户机能有更好的性能). KVM当前不支持半虚拟化。而且KVM就是所有新生技术在发展中都会面临的难题:技术不成熟。KVM的出现不过三四年时间,在可用资源、平台支持、管理工具、实施经验方面不能与Xen相比。目前KVM还缺少某些关键特性,例如存储的动态迁移。性能方面,Xen支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。KVM随着工作负载的增加性能逐渐下降。所以就目前来看,Xen在各方面都占有优势。同时,Xen成为 Linux 基金会项目。但是KVM得到了Ret Hat的大力支持,将会使其功能更加齐全