Win8+Hyper-V虚拟机性能简测与虚拟化技术科普(一)
背景故事
年末了。。大D要憋一个大水文!
看到群里各位大牛在讨论各种虚拟机。
于是。计上心头!
写一个关于虚拟机的超级水文!
为什么叫超级水文。。因为实在太水了。。并且写着写着真的是太长了。。只能分成几次发了。
经过一番艰苦卓绝的斗争和艰苦卓绝的收集各类数据。
终于可以写这个文儿了。写文儿的时候,大D又把模板正文区的文字放大了1px,正所谓不折腾会死星人嘿嘿。
本文简要概述Win8+Hyper-V技术,以及Win8+Hyper-V、Win8+VMware9、Win8+VirtualBox、Win7+VMware9的性能简评以及相关知识的科普。
权当2013年来临之前的最后一个大水文。
科普时间
这次大D将科普内容放在前面了~
什么是虚拟化
虚拟化技术最早出现在上世纪六七十年代,运行在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的存在的超售问题一直受到很多草根站长的诟病。
已有 6 条评论
发表评论
电子邮件地址不会被公开。 必填项已标注。
这次文章有脑内小剧场^^
这次科普非常喜欢,尤其是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 就是 笔误啊~