Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM。

作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业化运作公司的基础技术,其中包括Citrix系统公司的XenServer和Oracle的虚拟机。Xen技术的倡导者们声称Xen的性能强劲,并且拥有一个广泛的管理工具和能够交付卓越性能,以及其它诸多优点。

但是最近有一些Linux厂商——包括Red Hat和Canonical把基于内核的虚拟机(KVM:Kernel-based Virtual Machine)技术内置在RHEL和Ubuntu中。KVM是一个轻量级的虚拟化管理程序模块,该模块主要来自于Linux内核。虽然只是后来者,但是由于其性能和实施的简易性,以及对Linux重量级的持续支持,所以还是有必要认真对待KVM技术的。

在本期中,两位IT专家将会对Xen和KVM做出比较,并给出各自的理由。

Andi Mann:Xen比KVM优越的六大原因

Sander van Vugt:KVM比Xen能够带来更好的Linux集成

  XenKVM优越的六大原因

作为开源的虚拟化技术,对比Xen和KVM可以看到,Xen以6个无与伦比的优势领先:更好的可用资源、平台支持、可管理性、实施、动态迁移和性能基准。

  • 可用资源:Xen的问世要比KVM早4年之久(两者分别是2003年和2007年)。随着Citrix、Novell、Oracle、Sun、Ret Hat和Virtual Iron等公司在市场领域的实施,就比较容易找到精通Xen的IT技术人员,更容易让这些技术人员接受Xen相关的培训、更容易得到Xen的咨询帮助以及获得Xen证书。企业管理协会(EMA:Enterprise Management
    Associates)2008年这对虚拟化和管理趋势的研究报告表明,这些关键因素占到那些抱怨缺少必要虚拟化技术资源和技术企业的60%。
  • 平台支持:Xen在新版本中支持更多的主机和客体工作环境,包括泛虚拟化技术、硬件辅助支持以及修改过或未修改过的客体操作系统;对UNIX、Linux和Microsoft  Windows的特定支持;包括芯片组,如x86、IA64和AMD、Fujitsu、IBM、Sun等公司的ARM,以及x86/64 CPU商家和Intel嵌入式的支持等。
  • 可管理性:EMA在2009年度针对虚拟系统管理的研究结果表明:对于83%的企业来讲,在选择虚拟化技术过程中,管理是一项非常关键或者重要的因素。在对比Xen和KVM时,就可以看到Xen具有一个更加宽泛的第三方配给、备份、存储管理、P2V、容量规划、性能监控、进程自动化、安全和其它管理规则的社区,比如Citrix、IBM、CA、Novell或者Platespin、Enomaly、Microsoft以及HP等。
  • 实施:无论KVM是“第一类”还是“第二类”,这都是语义上的概念。Xen的运行和管理都是在较低级别的(Ring 0)。甚至对于新虚拟机创建,客体机器并不需要像KVM那样共享内存块、CPU指令或者任何底层的Linux操作系统(虽然偶尔也会越权)。
  • KVM不支持动态迁移:过去在证明VMware ESX比Microsoft Hyper-V优越的最重要的一个观点也同样适用于Xen和KVM的比较,但是这是一个很大的问题。与KVM不同,Xen支持非中断的动态迁移,可以允许动态工作负载平衡和例行维护而几乎没有任何宕机时间。KVM的固有属性决定了其肯定有宕机时间。
  • 性能:大多数Xen和KVM性能基准的对比都表明Xen具有更好的处理性能(接近于本地处理),只有在磁盘I/O方面略逊于KVM。进一步来讲,独立测试表明随着工作负载的增加KVM的性能逐渐下降。通常情况下,在试图支持四个以上的客体虚拟机时就会崩溃。Xen支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。

更加深入广泛的Xen与 KVM对比也将会表明Xen在虚拟网络支持、虚拟存储支持、安全增强、高可用性、容错处理、电源管理、HPC或者实时支持、虚拟CPU可扩展性、跨平台兼容性。虚拟机可移植性、虚拟应用设备市场以及已经建立起来的云服务社区等诸多方面都要比KVM优越。因此KVM只是在技术上比较与众不同,并且拥有几个不错的应用场景。但是作为企业级的服务器虚拟化技术,和Xen比起来,KVM尚有较大差距。

  Andi Mann是企业管理协会(EMAEnterprise Management AssociatesIT分析部门中研究系统管理和存储管理的副总裁。Mann在技术和管理领域有20多年的IT经验,对主机、中型机、服务器和台式机上企业形态和软件方面都有深刻理解。MannEMA系统管理研究项目的主要负责人,他主要关注数据中心自动化和虚拟化。访问EMA的主页了解更多有关Mann的信息。

  KVMLinux整合中优于Xen

即使没有实施广泛的Xen和KVM性能基准研究,仍然有很多理由足以说明Linux领导者(诸如Red Hat和Ubuntu)对待KVM态度的原因。其中最明显并且最重要的因素就是KVM是Linux内核的一部分,Xen只是一个安装在Linux内核下层的一个产品而已。

为什么这一点如此重要呢?其之所以重要是因为在过去Xen工作环境的补丁包不能够和Linux内核兼容。但是如果实施KVM的话,这个问题就可以很容易地得到解决。另外一个选择KVM的原因是KVM在Linux内核内部部署,这样可以很容易控制虚拟化进程。

Xen的拥护者们声称KVM不如Xen技术成熟,并且缺少某些关键特性,如动态迁移和泛虚拟化支持。确实如此,Xen工作环境中的泛虚拟化技术可以使虚拟机的操作更加高效,因为泛虚拟化技术直接和硬件进行交互。然而使用泛虚拟化技术需要修改操作系统,默认Windows的安装并不支持泛虚拟化工作环境。至于动态迁移,KVM也可以做到,只是需要安装正确的KVM版本而已。KVM过去在动态迁移方面确实存在一个问题,但是现在已经解决了。

从另外一个角度来讲,KVM更加灵活。由于操作系统直接和整合到Linux内核中的虚拟化管理程序交互,所以在任何场景下都可以直接和硬件进行交互,而不需要修改虚拟化的操作系统。这一点非常重要,因为对虚拟机运行来讲KVM可以是一个更快的解决方案。KVM需要Pacifica(AMD)或者Vanderpool(Intel)虚拟化CPU这一事实现在已经不能成为KVM发展的限制条件,因为当前大多数服务器CPU都有这些处理器。

支持不选择KVM虚拟化技术的一个可信原因是Xen相对来讲历史更久一点,产品更加成熟些。但是长远来看,Xen将会使Linux内核的负担越来越重,因为Xen缺少很好的整合(并且以后也不会解决这个问题),尽管Xen的开发者们正在积极地解决这个整合问题。

最后一点是KVM是Linux内核的一部分,而Xen做到最好也无非是整合到Linux中。随着时间的推移,Ret Hat(目前掌握KVM技术),作为Linux企业市场中份额最大的企业,将会使虚拟化技术的后来者——KVM同Xen一样功能齐全。

  最后,笔者补充关于二者的技术细节的一点不同:

 kvm虚拟化提供cpu虚拟化,内存虚拟化,但I/O与输入设备的虚拟化由qemu来提供,管理工具为libvirt(vrish),而xen虚拟化也仅提供内核及内存的虚拟化,对I/O的所有操作与虚拟机和外部的沟通由domain0这台虚拟机来管理,虚拟化的网络,虚拟机的调度,迁移也由domain0来进行管理,domain0便是xen虚拟化的超级管理员。输入设备也由qemu来进行模拟,而libvirt也可以给xen提供给virsh管理工具。

附:

 Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh

 ibvirtd是服务程序,接收和处理 API 请求;

 API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具;
 virsh 是我们经常要用的 KVM 命令行工具

kvm与xen虚拟化的比较(转)的更多相关文章

  1. KVM与XEN虚拟化环境究竟有何不同

    虚拟化的概念在近些年收到了很大程度上的普及,求其原因很简单:虚拟化能够最大程度利用资源,为企业节约成本.目前市面较受欢迎的虚拟架构主要有KVM.XEN和VMware,其中,KVM和XEN都是免费开源的 ...

  2. 一文带你速懂虚拟化KVM和XEN

    来源 :蛋蛋团 前言 "云计算"这个技术经过十余年的普及到如今已经可以称得上是家喻户晓了,基于云计算平台,在多个领域内创造了一个又一个的记录:电子商务里亿万人同时在线抢购的的&qu ...

  3. 虚拟化之kvm与xen对比

    xen XenServer is the leading open source virtualization platform, powered by the Xen Project hypervi ...

  4. 基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具

    1.Proxmox proxmox是一个开源的虚拟化管理平台,支持集群管理和HA.在存储方面,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph,这也是 ...

  5. [转帖]PC虚拟化主流:KVM、XEN、OpenVZ详解

    PC虚拟化主流:KVM.XEN.OpenVZ详解 https://zhuanlan.zhihu.com/p/90920566 1.pc虚拟化——KVM KVM是完整的硬件虚拟化,可以在Windows ...

  6. CentosX64使用yum快速搭建xen虚拟化环境

    Xen的大名想必已经被众SA所熟知.Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达100个满特征的操作系统.操作系统必须进行显式地修改(“移植”)以在Xen上运行( ...

  7. 性能基准测试:KVM大战Xen

    编译自:http://major.io/2014/06/22/performance-benchmarks-kvm-vs-xen/作者: Major Hayden原创:LCTT https://lin ...

  8. Xen虚拟化基础篇

    一.xen的简介 Xen是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达128个有完全功能的操作系统. 在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改(& ...

  9. Xen虚拟化

    Xen虚拟化基础 Xen虚拟化类型 hypervisor Xen组件 Xen hypervisor Colletion CPU.Memory.Interrupter Domain0 ---> D ...

随机推荐

  1. Django使用MySQL数据库的流程

    Django使用MySQL数据库的流程 手动创建一个MySQL数据库 配置数据库 ENGINE MySQL NAME 数据库的名字 HOST ip PORT 3306 USER 用户名 PASSWOR ...

  2. APScheduler学习

    说明 APScheduler是一个 Python 定时任务框架,使用起来十分方便.提供了基于日期.固定时间间隔以及 crontab 类型的任务,并且可以持久化任务.并以 daemon 方式运行应用. ...

  3. PHPStorm 初遇 Xdebug (xdebug代码调试及性能分析)

    centos 7 下PHP7安装xdebug # 下载xdebug wget https://xdebug.org/files/xdebug-2.7.2.tgz # 解压 tar -xf xdebug ...

  4. javascript中的toString()

    基本介绍 javascript中的toString方法是我们在写前端时经常要用的一个函数,也就是将我们的变量转换成字符串的方法. javascript中各种类型的toString方法 javascri ...

  5. Nginx 常用模块

    Nginx 常用模块 1. ngx_http_autoindex_module # ngx_http_autoindex_module模块处理以斜杠字符(' / ')结尾的请求,并生成一个目录列表. ...

  6. Web安全测试学习笔记-DVWA-存储型XSS

    XSS(Cross-Site Scripting)大致分为反射型和存储型两种,之前对XSS的认知仅停留在如果网站输入框没有屏蔽类似<script>alert('ok')</scrip ...

  7. python __iter__和__getitem__区别

    __getitem__ 单独实现这个魔法函数,可以让这个类成为一个可迭代的对象,并且可以通过使用下标获取类中元素值下标的元素 class Library(object): def __init__(s ...

  8. JavaWeb中验证码校验的功能实现

    后台生成验证码工具方法 /* * 设置图片的背景色 */ public static void setBackGround(Graphics g, int WIDTH, int HEIGHT) { / ...

  9. Mysql将日期转为字符串

    select date_format(time, '%Y-%m-%d %H:%i:%s') from info # 2019-08-22 21:03:21

  10. 资深程序员对于Python各个方向的面试经验分享,非常给力!

    之前早有前辈们说过,"裸辞一时爽,一直裸辞一直爽",这话一点不假,裸辞你要面临没有收入来源,但是每天眼睁睁看着各种花销不断支出的煎熬,我主要是觉得一边在上家公司工作一边去下家面试可 ...