问:什么是虚拟化

答:虚拟化简单来说就是用软件的方式模拟硬件,这样说着好像有点儿(貌似不止一点儿的程度)的抽象。应该很多人玩过俗称小霸王的游戏机把,以前我们要买小霸王那种硬件来才能玩小霸王的游戏,现在我们在电脑下载一个模拟器就行了,这就算是虚拟化的一种形式,当计算机性能足够了的时候可以通过软件的形式模拟出了当时的硬件然后实现当时硬件的功能。如果还在说抽象的话,更加简单表面点的(虽然这个并不是太准确,但如果上面都无法理解的话就姑且这样认为吧)就是在一台电脑上能同时运行多个操作系统的技术就是虚拟化。

问:我一台电脑一个系统就够了,虚拟化有什么用?

答:正常使用的话的确一个系统就够了,但有时候你想在不影响物理主机的情况下想体验下其他系统,比如现在不是出了个Windows Blue的泄露版么,如果你想试试那货难不成要你重装一个还bug满天飞的系统?有了虚拟化的话你就可以不用影响你的物理主机却又能体验其他系统了。如果你是编程人员的话你想在其他系统测试下你的软件的话虚拟化技术也是一个很好的技术。

问:那么虚拟化是不是就上面那些用途?好像也没多大作用嘛?

答:上述用途仅仅是对个人而言,对企业来说就用途大了,虚拟化能够整合物理服务器资源,提高服务器的资源利用率,同时虚拟化还是云计算的技术。

正规的来说在企业里是一个系统运行一个业务,但很多情况下一个业务并不会用尽服务器的资源,根据调查大部分的服务器的利用率不到15%,但如果使用虚拟化技术之后,则平均利用率能达到60%以上,这就意味着可以减少4倍的服务器硬件采购,空间占用以及制冷费用却能达到相同的效果。同时现在说的很火的云计算也是基于虚拟化为基础的。

问:听上去,是不是虚拟化只能虚拟操作系统?

答:不是的,只是虚拟操作系统是虚拟化的一个…比较基础的特征,毕竟没任何其他虚拟化条件的情况下一台物理硬件只能同时运行一个系统。

除了虚拟化系统,虚拟化技术还有诸如应用虚拟化,桌面虚拟化,网络虚拟化等

问:你刚才说到云计算,近来好像一直在炒作这个,这个东西跟虚拟化有什么关系呢?

答:虚拟化是云计算的基础,见下图

clip_image002

(图片来自微软mva)

从图中可以看到,传统数据中心跟云计算(包含私有云和公有云)之间就是隔了一个虚拟化。

因为虚拟化,将传统数据中心的资源集合起来形成一个池,然后以互联网为基础向用户提供服务,这就是云计算的实质。所以虚拟化是现代云计算的基础(这里说的比较简略,要详情了解这个请自行搜索云计算的相关资料,本处由于涉嫌超纲所以就不多说了)

问:嗯,好像很牛的样子,那虚拟化跟物理硬件相比性能怎样呢?

答:由于虚拟化产品比较多,说产品方面的就真的两天两夜都说不完,仅仅说技术方面的。

总的来说,虚拟化技术分3种:

一种是以JVM(JAVA虚拟机)为代表的程序虚拟化

其结构如下(画图画的有点丑,别见怪)

clip_image004

从图可以看到通过JVM隔离了系统和来宾,只要对应平台上有JVM,那么其来宾就能运行,这种虚拟化的目的是为了跨平台,所以程序员不需要针对特定平台或者硬件编写,只要一次编译即可随处运行(所以JAVA才如此牛叉)

第二种是以VM Workstation为代表的混合虚拟化,结构如下图

clip_image006

这种情况下,在系统底层(Ring0层)加入相应的驱动,但在应用层(Ring3层)还有对应的交互(Ring0是系统内核层,优先级最高,Ring1-2是系统服务层,Ring3是应用层,优先级最低)。换句话说是依靠物理主机操作系统来模拟硬件,这样的特点是对物理机硬件要求低,但性能比较差,“老一辈”的虚拟化产品基本都是用了这种技术,比如微软的VPC,VMware的Workstation,VirtualBox等。

第三种是现在开始越来越火的bare metal(裸金属)架构,其结构如下

clip_image008

对于这种结构,可能有人会问,物理机哪里去了?

这种虚拟化模式是直接在硬件上跑虚拟化管理层(VMM,裸金属结构的管理层一般也叫Hypervisor)在这种模式下物理机本身也被当作了一个虚拟机,只不过运行着物理机的那块叫根分区,其他的虚拟机叫子分区。

在这种结构下,Hypervisor是运行在Ring -1级的,为什么这么说呢?因为运行在其上面的所有虚拟机(含物理机操作系统)是无法感知到自己是运行在虚拟层上面的,上面的系统都会以为自己其实是跑在真实的硬件之上。这种结构下的虚拟效率是最高的。关于这种裸金属架构还有2个比较大的分支,是以VM为代表的胖内核以及以微软为代表的瘦内核,至于哪个优劣这个还得看具体情况,具体两者区别请自行搜索资料(又超纲了)

问:听你说了一大堆神乎其神的东西,那么虚拟化产品哪一家的比较好呢?

答:这个的话,直接推哪家就有广告嫌疑了,就分别说说各家的特点

目前虚拟化市场比较大的有3家,分别是VMware,Microsoft,Citrix。

VMware,这是传统的虚拟化老字号,虚拟化市场的龙头企业….(牛吹大了…)

VM作为虚拟化的先驱,很多人认识虚拟化就是从他开始的,其技术沉淀和具体的虚拟化经验是其他厂商所无法比拟的,其产品线齐全口碑好,但其产品往往比较昂贵,而且如果要VM最佳的产品的话还要购买其认证硬件,这个往往开支会很大。

Microsoft,这就是操作系统的老字号了,现在这牌子基本无人不知无人不晓,但在虚拟化来说这只能说是一个新军(不过现在来说其实也算有点资质不新了)其有强大的研发能力导致其后劲十足,其新的Hyper-V比起VM来说一点都不落下风,且硬件兼容性好(基本上X86的意思就是等同于兼容微软)而且微软有一个是其他厂商无法比拟的优势就是其产品整合程度是最高的(试问有哪家公司能提供从系统到应用软件一条龙产品的?)

Citrix,这个基本来说就是应用虚拟化的王者,其桌面虚拟化也更接近于应用虚拟化,但由于笔者没用过,仅仅了解到他应用虚拟化是很牛(本着没用过的人无法做过多评价的原则所以保留意见)。

附上2012年虚拟化占有率的饼图

clip_image010

(图片引用自IT168)

问:说了那么一大堆,那么我们企业是否应该进行虚拟化呢?虚拟化是否就一定是好的呢?

答:从长远来看,虚拟化是肯定能带来效益的,但具体来说,如果你公司规模比较大且服务器利用率不高则应该优先进行虚拟化,而如果公司规模不大服务器也没几台那就没多大需要虚拟化的必要了。

另外虚拟化不见得总是好的,因为虽然虚拟化能带来硬件利用率提升并且减少硬件采购,增加灵活度减少IT管理人员,但也导致了在软件方面的花费增大,增加了管理的复杂度,对管理人员的要求也更高。

clip_image012

(图片引用自微软MVA)

具体是否应该虚拟化,那还是要请管理层仔细斟酌权衡各个利弊之后决定,但无论怎样,在稍微有点规模之后,虚拟化的效益就会慢慢体现出来,且其对数据中心的未来发展以及为了可能的向云计算过渡来说是有显而易见的好处的。