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