虚拟化是上个世纪60年代由IBM创造的古老话题了。最初,其目的是为了更好的提高大型主机硬件利用率而为其分区。主要原因是为了平衡大型机和其主要程序运行所需要的容量。
现在我们使用的是日益强大的x86处理器和被开发的各种硬件环境。日益复杂的应用也增加了我们对在同一环境下运行多种应用的恐惧,导致的结果就是每个服务器只能运行一个应用。这致使利用率非常的低下。
虚拟化就好比把每个应用保护在容器中,这样多种应用就可以在同一服务器下运行了,看起来像是服务器和应用之间的直接连接被切断了。同时,这也让同一应用可以在不同的硬件环境下运行。
但很明显虚拟化环境很耗费计算容量。对大多数应用来说这并不是个问题,因为根据麦肯锡的调研,虚拟化数据中心可以把利用率从5%—10%提高到30%—35%。
那些有大量计算需求的公司通常被称作是高性能计算,他们并不倾向使用虚拟化,因为害怕虚拟化层会增加延迟时间。
我们需要虚拟化吗?
虚拟化把应用从特定的服务器中屏蔽了出来,所以应用可以很容易从一个服务器移到另一个服务器。虚拟化还让不同的工作量可以在同一个物理CPU下同时运行而不相互影响。
目前已有几项举措正在进行中来建立一个标准化硬件环境,这样虚拟化就不再被需要了。Facebook正在尝试开源云硬件。这是一个很有意思的想法,但我认为如果这个方法成功的话将会毁了很多的硬件创新。
Facebook这一方法的优势是绑定基础设施标准化,这样就不需要在应用和服务器之间互相屏蔽了。如果我们加入到那个运营系统标准化中,就可以不需要虚拟化了,至少那些基于此标准研发的新应用不再需要虚拟化了。
所以,虚拟化还需不需要是个很好的问题。惠普正在研究一个非常不同的云架构,该架构也许会减少对虚拟化的依赖。这项工作叫做ProjectMoonshot,该项目采取了一个非常不同的方法。
用极低功耗计算来改变游戏
现在让我们来想一下。我们虚拟化x86环境就像我们有非常强大的CPU来运行应用一样,从根本上来说其实并不需要所有的功率,这让我们花费很多时间等待IO接口或内存。所以说,通过在那些系统上同时运行多个划分开来的应用我们可以大大提高其使用率。但如果我们用更小和更低功率的CPU会怎样呢?这种情况下我们可以为每个应用配一个专属CPU。
这样的芯片存在吗?其实我们每天的手持设备上都在使用这样的芯片。它们不仅能量低,而且消耗的能量也非常少。所以转移到这些设备上让我们可以建立一个更加环保的数据中心。
您也许会说这样的系统造价会很高,因为实际处理器只是整个环境全部成本的一部分。确实,每个处理器都是由IO控制器,内存等所包围的。而且,每个服务器都有自己的处理器,芯片组,管理,存储,散热,电源和网络接口。但这些真的都需要吗?
我们目前在芯片的内核上共享所有的功能,但并不在芯片之间共享。如果我们可以把所有处理器级别以上的部分在所有服务器之间共享会怎样呢?我们可以把网络结构整合到系统中并且将其共享来减少布线。我们可以在底部架构级别实施一个管理框架,并且研发一个联合机架管理,为整个系统建立一个单一的管理。这将导致功率和成本共享,但同样重要的是,这在相对没有增加复杂性和管理的开销下极大的扩大了其规模和使用尺度。这就是ProjectMoonshot真正要做的事情。
所以,结果是什么呢?我们模拟了一个类似x86的环境,并且跟ProjectMoonshot在功耗、空间和成本上进行了比较。下面是比对结果。模拟的x86系统在10个机柜中包括400双插槽1U服务器。这需要20个网络切换器和1600根布线。每小时耗费91千瓦,并将花费330万美元。
惠普的ProjectMoonshot服务器技术能够用1600个服务器承载同样的工作量,但只占用一个半机柜,需要两个转换器和41根布线,仅耗费9.9千瓦并花费120万美元。这意味着节省89%的功耗,94%的空间,63%的成本和减少97%的复杂性。不可思议吧,有没有?
有了这样的系统,我还需要虚拟化吗?坦白说我觉得未必。
也许不适用于所有的工作负载
主流的IT工作负载(就像您在传统环境下运行的那些一样)也许看不到同样的成本和功耗节省,因为他们需要更多的处理器来执行类似的工作。这些应用和计算密集型应用比如科学和技术计算更加适用于传统工作方法。我们常常讨论是否应该使用云来为您已有的应用转型,还是要研发新的应用。一个像ProjectMoonshot这样的环境最适用于新型的,基于SOA和网络的应用,这也是未来的趋势所在。
结论
今天的讨论我们是从一个问题开始的,即我们需要虚拟化吗?它的花费也许很高;还增加了复杂性并且耗费CPU功率。这个情况开始发生变化了。70和80年代中虚拟化没那么流行因为很多工作都被移到了小型机上。后来虚拟化又随着处理器的大幅增加而流行了起来。
也许是时候重新思考一下了。2011年,数据中心使用了全世界1.3%的电,尽管这个增长幅度不大,但仍在增长。大数据为这些数字增加了额外的负担。所以现在也许真的是时候来看看我们的计算架构并且重新设计来降低功耗了。