专栏首页运维笔记LINUX 的 XEN 和 KVM 到底区别在什么地方

LINUX 的 XEN 和 KVM 到底区别在什么地方

LINUX 的 XEN 和 KVM 到底区别在什么地方?

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 的大力支持,将会使其功能更加齐全

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • log4j配置文件模版

    明哥的运维笔记
  • 让Mac OS X的终端多姿多彩

    与 Linux 相比,Mac OS X 的终端总是欠缺些什么。对了,是色彩,Linux 的 ls 命令使用不同颜色区分各种文件类型,Vim 编辑器也支持语法高亮...

    明哥的运维笔记
  • ORACLE 数据转换为MYSQL

    load data local infile \'文件名.txt\' into table 数据库表名  character set utf8 fields ...

    明哥的运维笔记
  • 【干货】基于Apache Spark的深度学习

    WZEARW
  • 构建基于内容的数据科学文章推荐器

    博客在数据科学界很受欢迎已经不是什么秘密了。通过这种方式,该领域反映了其在开源运动中的根源。在找到问题的创新解决方案之后,数据科学家似乎没有什么比写它更感兴趣了...

    代码医生工作室
  • 镁客网每周硬科技领域投融资汇总(9.30-10.09)

    镁客网
  • 2014年教育大数据发展的第三方报告——第1集

    大数据文摘
  • 你的产品是如何估值的?

    人称T客
  • 《利用Python进行数据分析·第2版》第6章 数据加载、存储与文件格式6.1 读写文本格式的数据6.2 二进制数据格式6.3 Web APIs交互6.4 数据库交互6.5 总结

    访问数据是使用本书所介绍的这些工具的第一步。我会着重介绍pandas的数据输入与输出,虽然别的库中也有不少以此为目的的工具。 输入输出通常可以划分为几个大类:读...

    SeanCheney
  • 《利用Python进行数据分析·第2版》第13章 Python建模库介绍13.1 pandas与模型代码的接口13.2 用Patsy创建模型描述13.3 statsmodels介绍13.4 sciki

    本书中,我已经介绍了Python数据分析的编程基础。因为数据分析师和科学家总是在数据规整和准备上花费大量时间,这本书的重点在于掌握这些功能。 开发模型选用什么库...

    SeanCheney

扫码关注云+社区

领取腾讯云代金券