csatblogspotdotcom

Saturday, March 29, 2008

读《Intel Virtualization Technology》[1]

文章开头列举了虚拟化技术的3个用例模型。

1.Workload isolation。作者主要从安全的角度,说虚拟化技术使操作系统相互隔离开,更安全了。在操作系统层面上来看,确实隔离开了,确实安全一些,但作者没有考虑到因为使用虚拟化技术使计算机系统更复杂了,增加了VMM层,VMM及其相关部分也会出现安全隐患,可能出现漏洞的地方更多了,所以系统受到病毒、黑客侵扰的可能性反而增大而不是减小了。我想作者不应该从安全角度看Workload isolation,而应该从软件配置的角度。因为软件配置需要特定环境,一个配置好后可能破坏另一个已配好软件所需环境,而OS相互间的隔离恰能解决这个问题,使相互间所需环境互不交叉。

2.Workload consolidation。讲了3个方面,很全面。一个是节省资源,一台物理机并非所有时候都100%满负荷运行,所以可以把多个OS运行在一个物理机上(资源不够时还可以迁移),这对大企业来说是不小开销;另一个是系统升级兼容性问题,硬件或OS升级后软件可能有所不兼容,于是可以多开一个虚拟机,一个仍然运行老系统,另一个运行新系统;最后还有增加了管理员管理能力,在同一物理机上的几个虚拟机显然要比在不同物理机上的OS要好管理。

3.Workload migration。虚拟化技术使得计算机硬件和OS之间的耦合性大大降低,这样使得迁移成为可能。有了迁移技术不仅使硬件的维护工作的复杂程度有所降低,而且可以在不同物理机间实现负载均衡。

接着是实现虚拟化的方法。传统操作系统优先级从03,操作系统运行在ring0上而应用程序运行在ring3上,ring1ring2没有用到。而增加了VMM后,就要有所改变了。可以有3中方式。一种是0/1/3模型,让guest OS降低一个优先级,到ring1上运行,把ring0让给VMM,这样做使VMM较简单,但不能在32位处理器上运行64位模式;另一种是0/3/3模型,VMMring0,但guest OSring3和应用程序公用一个优先级;第三种是使用VT技术。前两个属软件实现,最后一种是硬件实现。

然后分别讲了用软硬件实现的思路并作了一些分析。

1.仅用软件方式实现Intel体系架构实现的虚拟化。

用软件实现存在一些难点,解决方法有两个:半虚拟化和二进制指令翻译。

半虚拟化例子有XenDenali,他们把OS稍微修改下,不需要修改应用程序,运行时效率也较高,但缺点是适用面不广,有的OS不好修改,如Windows

二进制指令翻译的例子有VMware产品、Virtual PC、微软的Virtual Server,这些VMM支持的操作系统更多,但有更多的额外开销。

2.用硬件实现虚拟化。Intel虚拟化技术的首要设计目标就是不用半虚拟化技术也不用二进制指令翻译技术,使VMM既能在不修改guest OS的情况下支持各种不同类型的guest OS,也能有很高级别的性能。于是接下来就介绍了IntelVT技术--用硬件的方法实现虚拟化。

Intel的虚拟化技术包括支持32位英特尔架构的VT-x和支持安腾架构(64位)的VT-i

VT-x用两种形式的CPU操作增强了Intel32位架构:VMX root操作和VMXroot操作。VMMroot操作级,而guest OS运行在非root操作级。这两种形式的操作都支持4个优先级,这样使guest OS能自由地运行在他原来的优先级上,同时VMM也可以很灵活地使用的4个不同优先级。VMX root操作和没有VM-xIA-32相似。在VMXroot操作级中运行的软件在某种程度上优先程度有所降低。VM-x定义了两个新的转变:一个是从VMX root操作到VMXroot操作的转变,另一个是从VMXroot操作到VMX root操作的转变,换句话说,一个是从VMMguest OS,叫VM切入(VM entry),另一个是从guest OSVMM,叫VM切出(VM exit)。

引入了一个新的概念:VM控制结构(VMCS),这是一个管理VM切入、切出以及VMXroot操作中处理器行为的新数据结构。它在逻辑上被分为两部分,guest状态区和host状态区。这些区域包含与不同处理器状态组成相对应的字段。VM切入时从guest状态区加载处理器状态,VM切出时把处理器状态保存在guest状态区,并从host状态区载入处理器状态。

VT-i包括安腾处理器硬件和处理器抽象层(PAL)的扩展。

最主要的硬件扩展是在处理器状态寄存器(PSR)中增加了一个新的位(vm),VMM运行对应PSR.vm=0guest OS运行则对应PSR.vm=1。并加入了一个新的指令vmsw以修改PSR.vm位,这样使切换开销较小。PAL固件层提供了一个对VMM进行编程的接口。

总之,这篇文章从介绍实现虚拟化技术的难点引出VT技术,把它和半虚拟化技术和二进制翻译技术作对比,夸了VT的好处:用VT技术,Intel能解决或更好地解决了虚拟化中半虚拟化技术和二进制翻译技术没有解决或者解决得不是很好的问题。


[1] Rich Uhlig, Gil Neiger, Dion Rodgers, Amy L. Santoni, Fernando C. M. Martins, Andrew V. Anderson, Steven M. Bennett, Alain Kagi, Felix H. Leung, Larry Smith, " Intel virtualization technology, " Computer, May 2005, Volume: 38, Issue: 5, pp. 34-45.

Labels:

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home