目 录
1 虚拟化技术简介............................................................. 4
1.1 虚拟化技术简介 ............................................................ 4
1.1.1 虚拟化技术发展史 ........................................................ 4
1.1.2 虚拟化技术核心 - Hypervisor 简介 ......................................... 5
1.2 剖析系统虚拟化 ............................................................ 8
1.2.1 系统虚拟机的分类 ........................................................ 8
1.2.1.1 硬件仿真(Emulation) ................................................. 8
1.2.1.2 全虚拟化(Full Virtualization) ......................................... 9
1.2.1.3 半虚拟化(Para Virtualization) ......................................... 9
1.2.1.4 硬件辅助虚拟化(Hardware Assisted Virtualization) ................... 10
1.2.1.5 操作系统级虚拟化(Operating System Level Virtualization) ............ 11
1.2.2 系统虚拟化的用处 ....................................................... 11
1.2.3 虚拟化的三大特征 ....................................................... 12
1.2.4 X86 架构如何被虚拟化 .................................................... 12
1.3 CPU 虚拟化 ................................................................ 13
1.3.1 全虚拟化 ............................................................... 13
1.3.2 半虚拟化 ............................................................... 13
1.3.3 硬件辅助虚拟化 ......................................................... 13
1.4 内存虚拟化 ............................................................... 13
1.4.1 全虚拟化 ............................................................... 14
1.4.2 半虚拟化 ............................................................... 14
1.4.3 硬件辅助虚拟化 ......................................................... 14
1.5 I/O 虚拟化 ................................................................ 14
1.5.1 全虚拟化 ............................................................... 14
1.5.2 半虚拟化 ............................................................... 14
1.5.3 硬件辅助虚拟化 ......................................................... 14
1.6 总结 ..................................................................... 15
2 虚拟化厂商简介 ........................................................... 16
2.1 VMware ................................................................... 18
2.1.1 VMware 简介 ............................................................. 18
2.1.2 VMware 发展历程 ......................................................... 18
2.1.3 VMware ESX 和 VMware ESXi ............................................... 20
2.2 XEN ...................................................................... 22
2.3 KVM ...................................................................... 22
2.4 Hyper-V .................................................................. 24
2.5 XEN ESXi Hyper-V 及 KVM 比较 .............................................. 24
3 虚拟机的体系结构对比 ...................................................... 26
3.1 XEN 体系结构 ............................................................. 26
3.2 Hyper-V 体系结构 ......................................................... 28
3.3 Vmware ESXi 体系结构 ..................................................... 29
3.4 KVM 体系结构 ............................................................. 29
4 UVP 虚拟化技术 ............................................................ 32
4.1 UVP 简介 .................................................................. 32
4.1.1 UVP 基本概念 ............................................................ 32
4.1.2 区分 XEN 与 KVM .......................................................... 33
4.2 KVM 提供的功能 ............................................................ 33
4.3 KVM 架构简图 .............................................................. 33
4.4 对 KVM 进行优化 ........................................................... 34
5 FusionSphere 简介 ......................................................... 35
5.1 VMware 与 FusionSphere 对比分析 ............................................ 36
5.2 FusionSphere 与 Openstack 关系 ............................................. 38
6 Xen 和 KVM 发展历史 ........................................................ 38
7 Xen 和 KVM 的简单对比 ...................................................... 44
(本文内容大部分自于各方渠道收集整理,用于交流学习)
1 虚拟化技术简介
1 虚拟化技术简介
1.1 虚拟化技术简介
1. 二进制翻译(Binary translation)
VMware 最早期的虚拟化是通过二进制翻译的方式,将虚拟机内的指令全部 截
获,并通过宿主机翻译之后执行。这样做的主要原因是 x86 的指令设计上 有
很大的缺陷,有很多特殊的敏感指令不能让客户机操作系统直接运行,否 则
会有安全问题。而二进制翻译的过程相当于做了指令级的监管,自然它的 效
率就很低。
2. 半虚拟化(Para-virtualization)
随着 Xen 的出现,半虚拟化成为了虚拟化技术的主流,半虚拟化通过修改客
户机操作系统,让其感知到自己处于虚拟化环境下,并修改对敏感指令的使
用来弥补上文提到的敏感指令的漏洞。这样虽然不是所有的指令都被翻译过,
加快了速度,但是必须修改客户机操作系统也带来了诸多限制,比如无法启
动 Windows 虚拟机。
3. 全虚拟化/硬件辅助的虚拟化(Hardware assisted virtualization)
硬件自身的问题,终极的解决方案还是需要硬件本身来完成,随着对虚拟化
技术的需求提升,Intel 率先在自己的 CPU 上添加了 VT 技术,即由硬件来 支
持虚拟化环境。通过十年来的发展,目前硬件辅助的虚拟化已经成为主流。
1.1.1 虚拟化技术发展史
虚拟化技术最早出现在大型机时代。上世纪 60 年代,IBM 开始在其 CP-40 大
型机系统中尝试虚拟化的实现,后来在 System/360-67 中采用,并衍生出
VM/CMS 到后来的 z/VM 等产品线。大型机上的虚拟化技术在之后 20 多年的 发
展中愈发成熟,但随着小型机以及 x86 的流行,大型机在新兴的服务器市 场
中已经失去了影响力。
1 虚拟化技术简介
由于处理器架构的不同,在大型机上已经成熟的虚拟化技术却并不能为小型
机及 x86 所用。直到 2001 年,VMware 发布了第一个针对 x86 服务器的虚拟 化
产品。之后的几年间,英国剑桥大学的一位讲师发布了同样针对 x86 虚拟 化
的开源虚拟化项目 Xen,并成立 XenSource 公司(07 年 Citrix 将其收购);
惠普发布了针对 HP-UX 的 Integrity 虚拟机;Sun 跟 Solaris 10 一同发布 了
同时支持 x86/x64 和 SPARC 架构的 Solaris Zone;而微软也终于在 2008 年发
布的 Windows Server 2008 R2 中加入了 Hyper-V。期间,VMware 被
EMC 收购,XenSource 则被思杰收购。
之后的几年间,VMware 逐渐在企业级市场中被广泛的接受,Xen 也逐渐在互
联网领域展露头角。在成熟的服务器操作系统当中,Novell SUSE Linux
Enterprise 10 是第一个采用 Xen 技术的。当时的 Xen 还很不成熟,乃至于 红
帽还为此取笑了 Novell 一番;不过几个月后,到了 RHEL 5.0 发布的时候,
红帽决定也将 Xen 加入到自己的默认特性当中——那是 2006 年。一时之间,
在 Linux 服务器领域,Xen 似乎成为了 VMware 之外的最佳虚拟化选择(事 实
上也没多少其他可选的)。
但是,作为一项 Linux 平台上的虚拟化技术,Xen 在很长一段时间内一直没 有
被接受到 Linux 内核的代码当中,这对于 Xen 的维护者而言,不仅意味着 要
多做很多工作,还意味着用户在废了半天劲装好 Xen 之后可能遇到意想不 到
的问题(注:2011 年 6 月发布的 Linux 内核 3.0 中已经加入了对 Xen 的 支持
——Xen 的工程师们表示这是清理了 7 年遗留代码、提交了 600 多个补 丁的成
果)。
而红帽方面,也许是因为当时对这种脱离内核的维护方式很不爽,也许是因
为采用 Xen 的 RHEL 在企业级虚拟化方面没有赢得太多的市场,也许是因为
思杰跟微软走的太近了,种种原因,导致其萌生了放弃 Xen 的心思。2008
年 9 月,红帽收购了一家名叫 Qumranet 的以色列小公司,由此入手了一个
叫做 KVM 的虚拟化技术(KVM,全称 Kernel-based Virtual Machine,意为
基于内核的虚拟机)。事实上,当时整个 Xen 的市场表现的确一般,2008 年
Hyper-V 推出的时候,甚至有评论猜测思杰自己都会抛弃 Xen 而投奔 Hyper-
V(当然,思杰后来在官方博客上否认了这个猜测,表示自己和微软只是合
作的比较亲密而已)。
总之红帽决定选择了一个新兴的基于内核的虚拟化技术:KVM。而在正式采
用 KVM 一年后,就宣布在新的产品线中彻底放弃 Xen,集中资源和精力进行
KVM 的工作。
至此各大虚拟化技术 VMware,Xen,KVM 等均出现,并找到自己位置。
1.1.2 虚拟化技术核心 - Hypervisor 简介
1 虚拟化技术简介
在了解虚拟化技术之前,首先要了解什么是 Hypervisor,Hypervisor 是一
种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和
应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系
统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器
(Virtual Machine Monitor VMM)。Hypervisor 是所有虚拟化技术的核心。
非中断地支持多工作负载迁移的能力是 Hypervisor 的基本功能。当服务器
启动并执行 Hypervisor 时,它会给每一台虚拟机分配适量的内存、CPU、网
络和磁盘,并加载所有虚拟机的客户操
作系统。
目前市场上各种 x86 管理程序 (hypervisor)的架构存
在差异,三个最 主要架构类别包括:裸机型,托管型/
主 机型以及操作系统/容器型 Hypervisor, 前两种最
常见。
裸机型 Hypervisor Bare-metal(业界有时会统称其为 Type 1
Hypervisor):最为常见,直接安装在硬件计算资源上,直接管理和调
用硬件资源,不需要底层操作系统,可以理解为 Hypervisor 被做成了
一个很薄的操作系统。操作系统安装并且运行在 Hypervisor 之上。主
流的虚拟化产品都使用裸机型
的 Hypervisor,其中包括
VMware ESX Server、
Microsoft Hyper-V 和 Citrix
XenServer。此种方案的性能处
于主机虚拟化和操作系统虚拟
化之间。
主机型的 Hypervisor Hosted(业界有时会统称其为 Type 2
Hypervisor):也有一些这样的
Hypervisor 可以内嵌在硬件计
算资源的固件套装中——和主
板 BIOS 位于同一级别。也就是
跑在操作系统上的应用软件。
托管型/主机型 Hypervisor 运
行在基础操作系统上,构建出一整套虚拟硬件平台
(CPU/Memory/Storage/Adapter),使用者根据需要安装新的操作系统 和
应用软件,底层和上层的操作系统可以完全无关化,如 Windows 运行
Linux 操作系统。主机虚拟化中 VM 的应用程序调用硬件资源时需要经
过:VM 内核->Hypervisor->主机内核,因此相对来说,性能是三种虚拟
化技术中最差的。与使用这种方式的有 Hitachi Virtage、VMware ESXi
和 Linux KVM——基于内核的虚拟机。而宿主型的 Hypervisor 是运行在
操作系统内部的应用程序,其它操作系统和应用程序实例可以运行在
VMware Server 和 Microsoft Virtual Server 之上,以及其它很多基于
1 虚拟化技术简介
终端的虚拟化平台,诸如 VMware Workstation、
Microsoft Virtual PC 和 Parallels Workstation,这些
都是宿主型的 Hypervisor。
容器/操作系统版 Hypervisor OS- Level/Container:最后一种不常用,
虚拟机 运行在传统操作系统上,创建一个独立的虚拟化实例(容器
Container), 指向底层托管操作系统。叫操作系统版 Hypervisor,或者叫
容器版 Hypervisor,OS-Level Hypervisor 有点事性能最好,耗费资源
最少, 缺点是操作系统唯一,如果底层操作系统跑的是 Windows,那么
VPS/VE 就都得跑 Windows,代表是 Parallels 公司(以前叫 SWsoft)的
Virtuozzo(商用产品)和 OpenVZ(开源项目)
混合虚拟化架构:有些 Hypervisor 架构不好定义,有时候就将其归类
为混合虚拟化架构,比如 KVM,KVM 全称 Kernel-based Virtual
Machine 即基于内核的虚拟机。KVM 是集成到 Linux 内核的 Hypervisor,
是 X86 架构且硬件支持虚拟化技术(Intel VT 或 AMD-V)的 Linux 的全 虚
拟化解决方案。它是 Linux 的一个很小的模块,利用 Linux 做大量的 事,
如任务调度、内存管理与硬件设备交互等。如果你将 Linux 视为 OS, KVM
视为基于 OS 之上的 Hypervisor,那么就属于 Type 2 架构,如果将
Linux+KVM 视为 Hypervisor,那么 KVM 就属于 Type1 架构,业界关于
KVM 的归类一直在争论中,有些人就将 KVM 归为混合虚拟化架构了。
各类 Hypervisor 对比
1.2 剖析系统虚拟化
1 虚拟化技术简介
简单而言,虚拟化(Virtulization)是表示计算机资源的抽象方法。通过 虚
拟化可以对包括基础设施,系统和软件等计算机资源的表示,访问和管理 进
行简化,并为这些资源提供标准的接口来接受输入和提供输出。
虚拟化技术有很多种,比如,网络虚拟化,内存的虚拟化,桌面虚拟化,应
用虚拟化和虚拟内存等等。因为篇幅的原因,本系列将重点关注系统虚拟化,
特别是 X86 平台。今后此系列当中提到的虚拟化皆指系统虚拟化。
系统虚拟化的目的通过使用虚拟化管理器(Virtual Machine Monitor,简
称 VMM)是在一台物理机上虚拟和运行一台或多台虚拟机(Virtual
Machine,简称 VM)。VMM 主要有两种形式:
1、Hypervisor VM,它直接运行在硬件(Bare Metal)上面,提供接近于物
理机的性能,并在 I/O 上面做了特别多的优化,主要用于服务器类的应用,
也被称为“Type 1”。
2、Hosted(托管)VM,它运行在物理机的操作系统上,虽然其本身性能不
如 Hypervisor(因为它和硬件之间隔了一层 OS),但是其安装和使用非常方
便,而且功能丰富,比如支持三维加速等特性,常用于桌面应用,也被称为
“Type 2”。
1.2.1 系统虚拟机的分类
由于采用技术的不同,可以将系统虚拟化分为五大类:
1.2.1.1 硬件仿真(Emulation)
简介:属于 Hosted 模式,在物理机的操作系统上创建一个模拟硬件的程序
(Hardware VM)来仿真所想要的硬件,并在此程序上跑虚拟机,而且虚拟机
内部的客户操作系统(Guest OS)无需修改。知名的产品有 Bochs,QEMU 和
微软的 Virtual PC(它还使用少量的全虚拟化技术)。
图 1. 硬件仿真架构图
1 虚拟化技术简介
优点:Guest OS 无需修改,
而且非常适合用于操作系统
开发,也利于进行固件和硬
件的协作开发。固件开发人
员可以使用目标硬件 VM 在
仿真环境中对自己的实际代
码进行验证,而不需要等到
硬件实际可用的时候。
缺点:速度非常慢,有时速度比物理情况慢 100 倍以上。 未来:因为速度的
问题,渐趋颓势,但是还应该有一席之地。
1.2.1.2 全虚拟化(Full Virtualization)
全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调 Guest 操作系统和
原始硬件,VMM 在 Guest 操作系统和裸硬件之间用于工作协调,一些受保护
指令必须由 Hypervisor(虚拟机管理程序)来捕获处理。
全虚拟化主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的
特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不
同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而
且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有
IBM CP/CMS、VirtualBox、KVM、VMware Workstation 和 VMware ESX
(它在其 4.0 版,被改名为 VMware vSphere)。
全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为
Hypervisor 需要占用一些资源。
优点:Guest OS 无需修改,速度和功能都非常不错,更重要的是使用
非常简单,不论是 VMware 的产品,还是 Oracle
的 VirtualBox。
缺点:基于 Hosted 模式的全虚拟产品性能方面不是特别优异,特别是
I/O 方面。
未来:因为使用这种模式,不仅 Guest OS 免于修改,而且将通过引入
硬件辅助虚拟化技术来提高其性能,在未来全虚拟化还是主流。
1.2.1.3 半虚拟化(Para Virtualization)