1.5.8 现有虚拟化技术及缺陷
是不是一切都很简单和完美?然而在虚拟化世界并非一切都是尽善尽美的。最显而易见的就是那么多的副本操作系统同时运行在一台计算机上需要占据很多的资源并导致更昂贵的服务器开销。数据传输在任何情况下都变得更难,因为越多东西被载入,需要的存储器容量也就越多。
是的,真正的杀手就是系统开销。目前在计算机虚拟化方面有几项技术,但它们都伴有不同程度降低系统性能方面的问题。单就CPU而言,其占用率可以从10%到超过40%。很显然,我们需要新的技术来解决这些问题。Intel所要采用的VT技术背后的思想就是降低虚拟化时的系统开销。在深入了解它如何工作之前,有必要了解一下虚拟化技术到底是如何实现不同的操作系统工作在同一CPU上的。
目前主要存在有3种类型的虚拟化技术:Paravirtualisation、二元码转译和模拟器。大家最为熟悉可能就是模拟器了。你可以让一个超级任天堂的模拟器在Windows XP的一个窗口中运行,同时还可有另一个PS模拟器。这些都可看作是虚拟化的最基本形式。模拟器需耗费巨大的CPU开销,如果你非要去模拟硬件装置的每一个Bit位,你将花费大量的时间和精力。比较好的方法是跳过其中的某些部分,我们使用的模拟器就是这样,它工作得也还过得去。(https://www.daowen.com)
这个领域的另一端就是目前较流行的并被业界认可的“Paravirtualisation”(以下简称PV)技术。按字面意思理解,是编程序模拟的意思。它让主机操作系统知道它们正工作在一个虚拟化的环境中,通过修改它们以使之工作得更好。因此操作系统需针对这种方法进行修改和调整,它们必须来回于操作系统的编写人员和编写虚拟化软件人员之间。从这个角度来看,它不是完全的虚拟化,因为存在这种合作的关系。
PV技术在开源代码的操作系统中工作得不错,Linux、xBSD都是很合适的PV工作平台的候选者,可在这些系统中任意调整所需调整的地方,使PV能工作得更好。而Windows则不行,这大概能解释最近为什么众多IT巨头吹捧开源虚拟化技术Xen了。而“二元码转译”(以下简称BT)技术可说是较折中的方法了。它所要做的取决于操作系统将要做些什么,并在不知不觉中改变它。假如操作系统试图去执行指令A,但该指令A会给虚拟化引擎带来某些问题,那么BT将把它转换成某些更合适的指令并伪造指令A应该返回的结果。这是一项欺骗工作,且占用大量CPU资源,另外用许多代码取代一条代码也不会使事情运作得快些。