虚拟化技术深度解密(下)

云计算 虚拟化
随着技术的发展,目前主流的虚拟化软件包括KVM、Xen、Hyper-V、Vmware ESXI、QEMU等,主流软件其功能方面做的都还不错,尤其是在Intel提供了VT技术之后,虚拟化软件都做的很完美。

主流虚拟化软件介绍

随着技术的发展,目前主流的虚拟化软件包括KVM、Xen、Hyper-V、Vmware ESXI、QEMU等,主流软件其功能方面做的都还不错,尤其是在Intel提供了VT技术之后,虚拟化软件都做的很***。

KVM

KVM是什么? KVM全称是Kernel-based Virtual Machine,即基于内核的虚拟机。

KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的工作,如任务调度、内存管理与硬件设备交互等。

Xen

Xen 是***类运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,Xen支持hypervisor和虚拟机互相通讯,而且提供在所有Linux版本上的免费产品,包括Red Hat Enterprise Linux和SUSE Linux Enterprise Server。

Xen最重要的优势在于半虚拟化,此外未经修改的操作系统也可以直接在xen上运行(如Windows),能让虚拟机有效运行而不需要仿 真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。

Xen 最初是作为剑桥大学的一个项目,目前 xen.org 社区在负责它的开发及维护,它已经在开源社区中得到了极大的发展。Xen 是一种直接运行在硬件之上软件,它可以让电脑硬件上同时跑多个用户的操作系统。由于对 x86, x86-64, Itanium, Power PC, 和 ARM 这些处理器的支持,所以 Xen 管理工具可以支持的操作系统有 Linux, NetBSD,FreeBSD,Solaris, Windows 和其他一些运行在 XEN 上的正常的操作系统。 如下图所示 Xen 在系统中的位置:

Xen 目前具有以下几种产品:

Xen Hypervisor — 后面会详细讲解,在此不作赘述。会导致转换有问题;

XCI — 一种嵌入式管理工具,在 Xen Hypervisor 的基础之上修改而来,相对于标准的 Xen Hypervisor,它使用的库更小,目前主要用在笔记本以及一些移动设备上,可以使用 Intel 或者 AMD 的架构;

Xen Cloud Platform — 目前它为 ISVs 和服务提供商提供了一套基于强大的管理栈的云架构平台,这个栈是基于开放的标准 API;

Hyper-V

Hyper-V 是微软提出的一种系统管理程序虚拟化技术,采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V 底层的 Hypervisor 运行在***的特权级别下,微软将其称为 ring 1(而 Intel 则将其称为 root mode),而虚机的 OS 内核和驱动运行在 ring 0,应用程序运行在 ring 3 下,这种架构就不需要采用复杂的 BT(二进制特权指令翻译)技术,可以进一步提高安全性。从架构上讲 Hyper-V 只有“硬件-Hyper-V-虚拟机”三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机 系统性能更接近真实系统性能。架构图如下:

Hyper-V 支持分区层面的隔离。分区是逻辑隔离单位,受虚拟机监控程序支持,并且操作系统在其中执行。Microsoft 虚拟机监控程序必须至少有一个父 / 根分区,用于运行 64 位版本的 Windows Server 2008 操作系统。虚拟化堆栈在父分区中运行,并且可以直接访问硬件设备。随后,根分区会创建子分区用于承载来宾操作系统。根分区使用虚拟化调用应用程序编程接口 (API) 来创建子分区。

分区对物理处理器没有访问权限,也不能处理处理器中断。相反,它们具有处理器的虚拟视图,并运行于每个来宾分 区专用的虚拟内存地址区域。虚拟机监控程序负责处理处理器中断,并将其重定向到相应的分区。Hyper-V 还可以通过输入输出内存管理单元 (IOMMU) 利用硬件加速来加快各个来宾虚拟地址空间相互之间的地址转换。IOMMU 独立于 CPU 使用的内存管理硬件运行,并用于将物理内存地址重新映射到子分区使用的地址。从系统的结构图,我们可以看出来 Hyper-V 与 Xen 的架构很相似。

Vmware ESXI

Vmware ESXI 体系结构图

由上图我们可以看出来管理工具也是直接嵌入到了 ESXi vmKernel 中,没有再分化出单独的管理工具,这一点与 Xen 是相区别的。

QEMU

QEMU是一款由Fabrice Bellard所编写的开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。QEMU主要提供两种功能给用户使用。一是作为用户态模拟器,利用动态代码翻译机制来执行不同于主机架构的代码。二是作为虚拟机监管器,模拟全系统,利用其他VMM(Xen, KVM, etc)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。

双剑合璧 QEMU and KVM

准确来说,KVM是Linux kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作做事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚 拟化软件 QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个MIPS的CPU,并可利用它编译出 可运行在MIPS上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两 大部分(QEUM和KVM)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是 KVM和QEMU 的关系。

可以用下面一张图来简单描述QEMU和KVM之间的关系。

 

其它虚拟化软件

KVM or Xen?

Xen 现阶段在稳定和功能上略胜一筹。KVM获得的社区支持更多。

前一阵在Ubuntu上想安装Xen,发现原来的那些链接和很多安装方法改变了,看来被商业公司收购之后,Xen会在各方面有所改变。虽然KVM现在还无法和Xen相比,但是其植入Linux内核,以及被社区支持,让我更看好它的未来。

开源社区抛弃Xen,就像抛弃OpenOffice一样。Xen的发展可能要依靠来自Citrix Oracle的支持。在开源社区Xen的式微是不可避免。RedHat,SUSE,Ubuntu已经处于转换中。

IBM丢弃Xen用KVM,Ubuntu丢弃Xen用KVM。RedHat就更不用说了,当然支持自家的KVM。KVM完全开源,而Xen只有核才开源。Citrix 指望Xen及外围工具挣钱呢。

KVM ***的优势是随着kernel更新。

Xen ***的弊端是恰好是Dom0 不能用***的kernel,kernel 3.0之后估计会好很多。

还是要多看看应用场景,IO问题是不是关键,XEN和KVM的混合设计可根据业务场景的技术层面关注点来设计,简单来看还是KVM更好,但毕竟市场份额现有的还是XEN的高,有点类似于.NET刚出来时vs JavaEE的感觉,还是需要一定的应用历程才能发展起来。

未来趋势,应该是KVM,但是现在最成熟,还是Xen。

责任编辑:武晓燕 来源: 腾凌科技
相关推荐

2017-11-29 14:42:28

虚拟化深度解密

2019-03-06 11:16:16

服务器虚拟化内存

2024-02-23 10:11:00

虚拟化技术

2013-03-19 09:37:10

开源虚拟化KVM

2011-07-12 10:04:02

虚拟化IT容灾

2009-05-26 16:37:23

2011-07-12 09:32:46

云计算虚拟化IT容灾

2017-06-16 15:18:15

虚拟化WindowsIO

2013-03-18 10:12:25

存储虚拟化虚拟化技术

2014-05-09 11:22:38

虚拟化技术云安全

2015-04-17 10:48:49

Docker虚拟化

2013-08-01 11:31:50

存储虚拟化虚拟化

2012-06-08 09:46:26

大数据

2010-03-17 14:33:44

云计算

2009-04-14 19:39:55

虚拟化NovellIT

2009-04-14 22:23:12

LinuxNovell虚拟化

2012-04-06 11:09:36

戴尔

2018-07-11 15:21:25

GPU虚拟化技术

2019-04-16 16:23:29

GPU虚拟化CPU

2009-05-20 18:53:01

微软虚拟化服务器
点赞
收藏

51CTO技术栈公众号