Win8+Hyper-V虚拟机性能简测与虚拟化技术科普(一)
参与测试的各个虚拟化软件介绍
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特性。
这里大D个人觉得,“启蒙”的含义无非就是是否支持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支持虚拟化,在性能方便,作为服务器使用性能很好,但是图形能力惨不忍睹(大D在测试过程中亲身体验),播放视频等操作时,仿佛幻灯片一般……
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,大D也就不做过多介绍了。
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多测试上无法进行。
这次文章有脑内小剧场^^
这次科普非常喜欢,尤其是HyperV的那部分,以前没有认真学习过。
对了,在HyperV的客户OS中,能找到VMBus这个硬件么。
@dave 嘿嘿,我学习了D大的脑内小剧场风格~~ 在Hyper-V的客户OS里面,还真没注意能不能看到VMBus这个硬件,光顾着跑各种测试软件了,主要是想在13年来临之前将这个系列的文章写完。
@大D 哈哈,果断写完了嘛。赞一个
typo一枚:在内核模块上,通过kvm.k0(kvm-intel.ko/kvm-AMD.ko)。 // 前面的居然是k0 ???
@52computer 话说typo是什么意思。。。有Bug。。。我现在去修改
@大D 就是 笔误啊~