君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

转载自 http://www.dadclab.com/archives/2509

经过一番艰苦卓绝的斗争和艰苦卓绝的收集各类数据,终于把这篇科普的文章整理完整弄上来了。本文简要概述 Win8+Hyper-V 技术,以及 Win8+Hyper-V、Win8+VMware9、Win8+VirtualBox、Win7+VMware9 的性能简评以及相关知识的科普……

什么是虚拟化

虚拟化技术最早出现在上世纪六七十年代,运行在IBM大型机系统上,通过虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件上生成许多可以独立运行操作系统的虚拟机实例。

随着近年来计算机科学科技领域中多核系统、集群、网络、云计算等技术的长足发展和相关设备设施的建立,虚拟化技术大大的降低了IT成本,增强了系统安全性和可靠性。

虚拟化是一个广义上的概念,在计算机科学领域中,该词意味着对计算资源的抽象,而不仅仅是虚拟机的概念。

虚拟化技术分类

当前的虚拟化技术主要分为三种:

1.平台虚拟化

平台虚拟化是针对计算机和操作系统的虚拟化,也就是大家最常见的一种虚拟化技术,Hyper-V,Xen,VMware等产品都是应用这类虚拟化技术。

2.资源虚拟化

资源虚拟化是指对特定的计算机系统资源的虚拟化,例如对内存、网络资源等等。

3.应用程序虚拟化

应用程序虚拟化的一个最典型的应用就是JAVA,生成的程序在指定的VM里面运行。

平台虚拟化分类

平台虚拟化分为:全虚拟化、半虚拟化、硬件辅助虚拟化、部分虚拟化、操作系统级虚拟化等。这里简单的介绍一下全虚拟化、半虚拟化、硬件辅助虚拟化和操作系统虚拟化四种。

1.全虚拟化

全虚拟化也可以称为裸金属虚拟化(并不恰当)。

准确的讲,裸金属虚拟化是讲虚拟化技术在x86架构上的一种架构上的表现。

但从广泛概念上讲,裸金属虚拟化和全虚拟化差不多~

全虚拟化指的是虚拟机完完全全的模拟了计算机的底层硬件,包括处理器,物理内存,时钟,各类外设等等。

这样呢,就不需要对原有硬件和操作系统进行改动。这时,虚拟机软件访问计算机的物理硬件就可以看做软件访问了一个特定的接口。

这个接口是由VMM(由Hypervisor技术提供)提供的既VMM提供完全模拟计算机底层硬件环境,并且这时在计算机(宿主机)上运行的操作系统(非虚拟机上运行的操作系统)会被降级运行(Ring0变化到Ring1)。

简单地说,全虚拟化的VMM必须运行在最高权限等级来完全控制主机系统,而Guest OS(客户操作系统)降级运行,不进行特权等级操作,Guest OS原有的特权等级操作交由VMM代为完成。

大致上可以理解为,使用全虚拟化技术的计算机,原有的操作系统,在启动全虚拟化技术后变为一个“虚拟机”了。Win8+Hyper-V就是这种状态。可以从过系统加载时的情况看出来。

使用全虚拟化技术的软件有:VMware ESX Server、Microsoft Hyper-V、QEMU等等。

2.半虚拟化

半虚拟化又叫超虚拟化,它是通过修改Guest OS部分特权状态的代码,以便与VMM交互。此类虚拟化技术的虚拟化软件性能都非常好。

半虚拟化通过修改操作系统内核,替换掉不能虚拟化的程序,通过超级调用直接与底层的虚拟化层来通讯。由虚拟化层来进行内核操作。

半虚拟化的典型就是VMware Tools,该程序的VMware Tools服务为虚拟化层提供了后门服务,通过该服务可以进行大量的特权等级操作。

使用半虚拟化技术的软件有:Denali、Xen等。(Xen可以使用全虚拟化和半虚拟化两种状态)

3.硬件辅助虚拟化

硬件辅助虚拟化指的就是通过处理器提供的特殊指令来实现高效的全虚拟化,例如Intel-VT技术和AMD-V技术。

有了Intel-VT技术和AMD-V技术,Guest OS和VMM被完全隔离开来,同时,CPU虚拟化技术给CPU增加了新的Root模式,这样就实现了Guest OS和VMM的隔离。

4.操作系统虚拟化

操作系统虚拟化更多的应用在VPS上,在传统的操作系统中,所有用户进程本质上是在同一个操作系统实例中运行,因此,操作系统的内核存在缺陷,那么势必会影响到其他正在运行的进程。

操作系统虚拟化是一种在服务器操作系统中使用的轻量级虚拟化技术,很简单,也很强大。

此类技术是内核通过创建多个虚拟的操作系统实例(N多内核和库)来隔离进程。不同实例中运行的程序无法知晓其他实例中运行了什么进程,也无法进行通讯。

应用这类技术最常见的就是OpenVZ了,但是OpenVZ的存在的超售问题一直受到很多草根站长的诟病。

Hyper-V

Hyper-V这货作为微软当前(2008年至今)在虚拟化方面的拳头产品,Hyper-V与Citrix的Xen一样的Hypervisor技术,2008年时与Windows Server 2008 Hyper-V版本一起发布。

Hyper-V的模式与传统全虚拟化模式有一些不同。

Hyper-V通过一种称为分区的方式隔离,这里的分区指一组隔离单元,被分配了物理内存空间与虚拟处理器资源,其中运行操作系统。

除了独立版本的Hyper-V服务器之外,一般的微软Hyper-V都需要一个父分区,其中运行支持Hyper-V的服务器操作系统或桌面操作系统。

父分区中的虚拟化堆栈可以直接访问物理设备,通过父分区,可以创建子分区并在其中运行操作系统(Guest Operating System,Guest OS),分区本身不能访问屋里处理器,它们只有虚拟的处理器同时运行在虚拟的内存地址空间,各个子分区的虚拟内存空间都是相互独立的。Hypervisor层(图中Microsoft Hyper-V层)执行处理器中断。

子分区不能访问其他任何物理资源,它们通过虚拟设备的方式来访问硬件,对于虚拟设备的请求,通过VMBus或者Hypervisor层来转到父分区,交由父分区代为处理。

在父分区运行的虚拟服务端程序(VSP)通过VMBus处理来自子分区的设备请求。在子分区中运行的虚拟服务用户端(VSC)通过VMBus将请求交给VSP来处理。这些操作的过程,对Guest OS来说,都是透明的。

在Hyper-V的技术架构上,子分区分为三类:

1.运行Windows操作系统并有Hyper-V意识。

2.运行非Windows系统并有Hyper-V意识。

3.无Hyper-V意识,可能运行Windows或非Windows操作系统。

这三类分区的区别在于:

1类分区可以使用VSC和Enlightenments获得最好的性能和全部Hyper-V特性。

2类分区可以通过VSC和第三方驱动实现较高的性能和部分Hyper-V特性。

3类分区只能通过模拟设备访问硬件资源,效率较低。

什么叫Hyper-V意识?从当前微软给出的资料来看,操作系统经过“启蒙”(Enlightenments),微软是这么称呼这个的,经过“启蒙”的操作系统,可以和Hpyer-V结合度更高,获得最好的性能和全部Hpyer-V特性。

这里编者个人觉得,“启蒙”的含义无非就是是否支持Hyper-V的某些核心技术,目前支持Hyper-V的Server 2008/2008 R2,Server 2012,明显都是支持Hpyer-V的。这些操作系统明显就是经过“启蒙”的操作系统。而微软上代的Windows Server 2003显然不支持Hpyer-V,那么他就是属于未经“启蒙教育”的操作系统。

Hyper-V技术特性

这里大概说一下有哪些特性,Google一下有很多资料,这里不再敖述。

1.新的64位Hypervisor架构,支持大量硬件设备,更好的安全性和高效率。

2.支持各种服务器平台的32位或64位操作系统。

3.对称多处理器支持,可以在虚拟机中支持4颗处理器(注意,不是四核)。

4.网络均衡负载。

5.新硬件分享架构,通过VSP/VSC来获得高性能。

6.快速迁移。

7.虚拟机快照。

8.可扩充性,支持标准WMI界面和API,对开发人员提供方便。

9.可延展特性。

Hpyer-V的新版本增加了诸如动态虚拟机存储,最大32核处理器支持,对Jumbo帧支持等更多新的技术。这里不再详述。

KVM

核心虚拟机(Kernel-based Virtual Machine,简称 KVM),是使用Linux核心中的虚拟化基础进行建设。

目前KVM支持Inetl VT和AMD-V等原生虚拟技术。

KVM是x86架构且硬件支持虚拟化技术的Linux全虚拟化解决方案。

在内核模块上,通过kvm.ko(kvm-intel.ko/kvm-AMD.ko)。

KVM需要用过修改过的QEMU软件来作为虚拟机的上层控制和界面,相比Windows下的虚拟机程序,KVM可以再不改变Linux或Windows镜像的情况下同时运行多个虚拟机。

P.S:其实就是多个虚拟机使用同一个镜像卷。

同时还可以在使用同一个镜像卷的情况下给每个虚拟机配置不同的硬件环境。

KVM必须要求CPU支持虚拟化,在性能方便,作为服务器使用性能很好,但是图形能力惨不忍睹(编者在测试过程中亲身体验),播放视频等操作时,仿佛幻灯片一般……

CPU使用率控制非常的好。

并且KVM的一大优点就是,KVM完全置于Linux的内核里。一切都很方便~

在一般的Linux进程上,只有内核模式和用户模式两种。KVM添加了第三个模式,这个模式被称为:客户模式。

客户模式的进程是运行在虚拟机内部的,有自己内核和用户控件变量。在进程上,KVM虚拟机表现为一个正常的进程,可以像其他进程一样被kill,KVM利用硬件虚拟技术虚拟处理器的形态,虚拟机的内存管理由内核直接处理。

可以通过查看/proc/cpuinfo,在cpu flags字段有显示vmx或者smx,就可以使用KVM了。

VMware Workstation

VMware公司成立于1998年,旗下有多款虚拟机产品。包括VMware Workstation、VMware Fusion、VMware Player、VMware vSphere、VMware ACE、VMware Lab Manager、VMware Converter、VMware ThinApp等。

本次评测使用的是VMware Workstation 9.0.0(以下简称VMware)版本,VMware是一款功能强大的桌面虚拟机计算机软件,可以同时运行多个不同的操作系统。

在性能上有着不小的优势,尤其是图形3D方面。

VMware只用软件技术来管理复杂的x86架构的完全虚拟化,为了达到非常好的性能和稳定性,这样做的弊端就是VMware软件非常庞大。

并且大家也都用过VMware,编者也就不做过多介绍了。

VirtualBox

VirtualBox最早是由德国InnoTek软件公司出品的虚拟机软件,现在由Oracle(甲骨文)公司进行开发,是甲骨文公司xVM虚拟化平台技术的一部分。

使用C++开发,可以在32位/64位Windows、Solaris、Linux操作系统上虚拟其他的x86操作系统,可以再VirtualBox上安装Solaris、Dos、Windows、Linux、OS/2、OpenBSD、FreeBSD等众多操作系统。

VirtualBox也支持Intel VT-x与AMD-v硬件虚拟化技术,在磁盘当面,VirtualBox可以连接iSCSI,还可以读写VMware的VMDK文件与VirtualPC(微软收购的来的虚拟机软件,曾用于Win7下的WinXP Mode)的VHD文件。

在图形性能上,VirtualBox有一张支持VESA兼容的显卡,性能也不俗,但是比较坑爹的是,对DX9支持很差,这也直接决定了本次测试的时候VirtualBox在N多测试上无法进行。

posted on 2013-05-31 20:04  刺猬的温驯  阅读(888)  评论(0编辑  收藏  举报