虚拟化技术分析

平台虚拟化:针对计算机和操作系统的虚拟化。

我们通常所说的虚拟化,主要就是指平台虚拟化。通过使用控制程序(也被称为VMMHypervisor),隐藏特定计算平台的真实物理特性,为用户提供抽象的、统一的、模拟的计算环境(虚拟机)。虚拟机中运行的操作系统称为Guest OS,而运行VMM的操作系统被称为Host OS. 当然,某些VMM也可以脱离操作系统直接运行在硬件之上(Bare Metal)。运行虚拟机的真实系统我们称之为主机系统。

平台虚拟化技术又可以分为如下几个子类:

1. 全虚拟化

虚拟机模拟了完整的底层硬件,使得Guest OS不需要任何修改。而Guest OS与真实硬件的交互可以看成是通过一个预先规定的硬件接口进行的。全虚拟化VMM以完整模拟硬件的方式提供全部接口,同时还必须模拟特权指令的执行过程。如果硬件不提供虚拟化的特殊支持,那么这个模拟过程将十分复杂:一般而言,VMM必须运行在ring 0,而Guest OS降级运行在ring 3,从而不能执行特权操作(因为,VMM必须对主机系统资源具有完整的控制权限)。

Guest OS执行特权指令时,主机系统产生异常,执行控制权将转到VMM,由VMM通过一系列的模拟操作来实现此特权指令,然后返回Guest OS,可描述为Trap-And-Emulate.

虚拟机对Guest OS完全透明,但是VMM的设计会比较复杂,系统性能会受到明显的损害。

因此,在设计纯软件VMM的时候,面临这样一些挑战:

1)确保VMM控制所有系统资源:运行在ring 0,而Guest OS运行在ring 3

2)特权级压缩

VMM使用分布或段限制的方式保护物理内存访问,但64位模式下段限制不起作用,而分页不区分ring 012,为了统一和简化VMM设计,Guest OS只能和进程一样运行在ring3.

3)特权级别名

特权级别名,是指Guest OS在虚拟机中运行的级别并不是它所期望的。

VMM必须保证Guest OS不能获知正在虚拟机中运行这一事实(透明),这可以通过采用动态二进制翻译技术,将一些特权指令作指令替换,就可以在非特权级处理“翻译”过后的特权指令,由VMM完成最终的处理。

2. 超虚拟化

这是一种修改Guest OS部分访问特权状态的代码以便直接与VMM交互的技术。

在超虚拟化虚拟机中,部分硬件接口以软件形式提供给客户机操作系统,这可以通过HypercallVMM提供给Guest OS的直接调用,与系统调用类似)的方式来提供。由于不需要产生额外的异常和模拟部分硬件执行流程,可大幅提升性能。

软件 VMM 所遇到的以上挑战从本质上来说是因为 Guest OS 无法运行在它所期望的最高特权级,传统的 Trap-And-Emulate 处理方式虽然以透明的方式基本解决上述挑战,但是带来极大的设计复杂性和性能下降。当前比较先进的虚拟化软件结合使用二进制翻译和超虚拟化的技术,核心思想是动态或静态地改变 Guest OS 对特权状态访问的操作,尽量减少产生不必要的硬件异常,同时简化 VMM 的设计。

3. 硬件辅助虚拟化

硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。

例如,有了Intel VT技术的支持,Guest OSVMM的执行环境自动地完全隔离开来,Guest OS有自己的“全套寄存器”,可以直接运行在最高级别。

对于虚拟化而言,使用Paging模式的一个致命之处是它不区分Privilege 0/1/2模式,因此客户机运行于Privilege 3就成了必然(0/3/3模型),这样Paging模式才可以将主机OS和客户OS隔离开来,然而在同一个Privilege模式下的不同应用程序(如,不同VM)是无法受到Privilege机构保护的,这就是目前IA32带来的隔离性问题,被称为指令压缩。

这个问题的真实表现是:Vmware在不支持INTEL VTIA32架构CPU上无法虚拟64位客户操作系统,因为无法在客户之间安全隔离。

VT-xIA32CU操作扩展为两个forms(窗体),VMX root operation(根虚拟化操作)和VMX non-root operation(非根虚拟化操作),其中,根虚拟化操作设计来供VMM使用,其行为跟传统IA32并无特别不同,而非根虚拟化操作则是另一个处在VMM控制之下的IA32环境。所有的forms都能支持四个特权级,这样在非根虚拟化环境下运行的虚拟机就能完全地利用Privilege 0等级。

为了建立这种两个虚拟化窗体的架构,VT-x设计了一个VMCS(虚拟机控制结构)的数据结构,包括了客户状态区和主机状态区,用来保存虚拟机以及主机的各种状态参数并提供了VM ENTRY 和 VM EXIT两种操作在虚拟机与VMM之间切换,用户可以通过在VMCSVM-execution control fields里面指定在执行何种指定/发生何种事件的时候,非根虚拟化环境下的虚拟机就执行VMX EXIT,从而让VMM获得控制权,因此VT-x解决了虚拟机的隔离问题,又解决了性能问题,让纯软件虚拟化解决方案的性能问题得以缓解。

 

http://www.ibm.com/developerworks/cn/linux/theme/virtualization/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值