虚拟化技术分析
2012-02-09 23:53
141 查看
平台虚拟化:针对计算机和操作系统的虚拟化。
我们通常所说的虚拟化,主要就是指平台虚拟化。通过使用控制程序(也被称为VMM或Hypervisor),隐藏特定计算平台的真实物理特性,为用户提供抽象的、统一的、模拟的计算环境(虚拟机)。虚拟机中运行的操作系统称为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 0,1,2,为了统一和简化VMM设计,Guest OS只能和进程一样运行在ring3.
3)特权级别名
特权级别名,是指Guest OS在虚拟机中运行的级别并不是它所期望的。
VMM必须保证Guest OS不能获知正在虚拟机中运行这一事实(透明),这可以通过采用动态二进制翻译技术,将一些特权指令作指令替换,就可以在非特权级处理“翻译”过后的特权指令,由VMM完成最终的处理。
2. 超虚拟化
这是一种修改Guest OS部分访问特权状态的代码以便直接与VMM交互的技术。
在超虚拟化虚拟机中,部分硬件接口以软件形式提供给客户机操作系统,这可以通过Hypercall(VMM提供给Guest OS的直接调用,与系统调用类似)的方式来提供。由于不需要产生额外的异常和模拟部分硬件执行流程,可大幅提升性能。
软件 VMM 所遇到的以上挑战从本质上来说是因为 Guest OS 无法运行在它所期望的最高特权级,传统的 Trap-And-Emulate 处理方式虽然以透明的方式基本解决上述挑战,但是带来极大的设计复杂性和性能下降。当前比较先进的虚拟化软件结合使用二进制翻译和超虚拟化的技术,核心思想是动态或静态地改变 Guest OS 对特权状态访问的操作,尽量减少产生不必要的硬件异常,同时简化 VMM 的设计。
3. 硬件辅助虚拟化
硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。
例如,有了Intel VT技术的支持,Guest OS和VMM的执行环境自动地完全隔离开来,Guest OS有自己的“全套寄存器”,可以直接运行在最高级别。
对于虚拟化而言,使用Paging模式的一个致命之处是它不区分Privilege 0/1/2模式,因此客户机运行于Privilege 3就成了必然(0/3/3模型),这样Paging模式才可以将主机OS和客户OS隔离开来,然而在同一个Privilege模式下的不同应用程序(如,不同VM)是无法受到Privilege机构保护的,这就是目前IA32带来的隔离性问题,被称为指令压缩。
这个问题的真实表现是:Vmware在不支持INTEL VT的IA32架构CPU上无法虚拟64位客户操作系统,因为无法在客户之间安全隔离。
VT-x将IA32的CU操作扩展为两个forms(窗体),VMX root operation(根虚拟化操作)和VMX non-root operation(非根虚拟化操作),其中,根虚拟化操作设计来供VMM使用,其行为跟传统IA32并无特别不同,而非根虚拟化操作则是另一个处在VMM控制之下的IA32环境。所有的forms都能支持四个特权级,这样在非根虚拟化环境下运行的虚拟机就能完全地利用Privilege 0等级。
为了建立这种两个虚拟化窗体的架构,VT-x设计了一个VMCS(虚拟机控制结构)的数据结构,包括了客户状态区和主机状态区,用来保存虚拟机以及主机的各种状态参数并提供了VM ENTRY 和 VM EXIT两种操作在虚拟机与VMM之间切换,用户可以通过在VMCS的VM-execution control fields里面指定在执行何种指定/发生何种事件的时候,非根虚拟化环境下的虚拟机就执行VMX EXIT,从而让VMM获得控制权,因此VT-x解决了虚拟机的隔离问题,又解决了性能问题,让纯软件虚拟化解决方案的性能问题得以缓解。
http://www.ibm.com/developerworks/cn/linux/theme/virtualization/
我们通常所说的虚拟化,主要就是指平台虚拟化。通过使用控制程序(也被称为VMM或Hypervisor),隐藏特定计算平台的真实物理特性,为用户提供抽象的、统一的、模拟的计算环境(虚拟机)。虚拟机中运行的操作系统称为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 0,1,2,为了统一和简化VMM设计,Guest OS只能和进程一样运行在ring3.
3)特权级别名
特权级别名,是指Guest OS在虚拟机中运行的级别并不是它所期望的。
VMM必须保证Guest OS不能获知正在虚拟机中运行这一事实(透明),这可以通过采用动态二进制翻译技术,将一些特权指令作指令替换,就可以在非特权级处理“翻译”过后的特权指令,由VMM完成最终的处理。
2. 超虚拟化
这是一种修改Guest OS部分访问特权状态的代码以便直接与VMM交互的技术。
在超虚拟化虚拟机中,部分硬件接口以软件形式提供给客户机操作系统,这可以通过Hypercall(VMM提供给Guest OS的直接调用,与系统调用类似)的方式来提供。由于不需要产生额外的异常和模拟部分硬件执行流程,可大幅提升性能。
软件 VMM 所遇到的以上挑战从本质上来说是因为 Guest OS 无法运行在它所期望的最高特权级,传统的 Trap-And-Emulate 处理方式虽然以透明的方式基本解决上述挑战,但是带来极大的设计复杂性和性能下降。当前比较先进的虚拟化软件结合使用二进制翻译和超虚拟化的技术,核心思想是动态或静态地改变 Guest OS 对特权状态访问的操作,尽量减少产生不必要的硬件异常,同时简化 VMM 的设计。
3. 硬件辅助虚拟化
硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。
例如,有了Intel VT技术的支持,Guest OS和VMM的执行环境自动地完全隔离开来,Guest OS有自己的“全套寄存器”,可以直接运行在最高级别。
对于虚拟化而言,使用Paging模式的一个致命之处是它不区分Privilege 0/1/2模式,因此客户机运行于Privilege 3就成了必然(0/3/3模型),这样Paging模式才可以将主机OS和客户OS隔离开来,然而在同一个Privilege模式下的不同应用程序(如,不同VM)是无法受到Privilege机构保护的,这就是目前IA32带来的隔离性问题,被称为指令压缩。
这个问题的真实表现是:Vmware在不支持INTEL VT的IA32架构CPU上无法虚拟64位客户操作系统,因为无法在客户之间安全隔离。
VT-x将IA32的CU操作扩展为两个forms(窗体),VMX root operation(根虚拟化操作)和VMX non-root operation(非根虚拟化操作),其中,根虚拟化操作设计来供VMM使用,其行为跟传统IA32并无特别不同,而非根虚拟化操作则是另一个处在VMM控制之下的IA32环境。所有的forms都能支持四个特权级,这样在非根虚拟化环境下运行的虚拟机就能完全地利用Privilege 0等级。
为了建立这种两个虚拟化窗体的架构,VT-x设计了一个VMCS(虚拟机控制结构)的数据结构,包括了客户状态区和主机状态区,用来保存虚拟机以及主机的各种状态参数并提供了VM ENTRY 和 VM EXIT两种操作在虚拟机与VMM之间切换,用户可以通过在VMCS的VM-execution control fields里面指定在执行何种指定/发生何种事件的时候,非根虚拟化环境下的虚拟机就执行VMX EXIT,从而让VMM获得控制权,因此VT-x解决了虚拟机的隔离问题,又解决了性能问题,让纯软件虚拟化解决方案的性能问题得以缓解。
http://www.ibm.com/developerworks/cn/linux/theme/virtualization/
相关文章推荐
- Intel内存虚拟化技术分析
- 虚拟化技术研究及架构分析
- 思科数据中心虚拟化之vDC技术和设置深度分析
- Intel内存虚拟化技术分析
- 虚拟化实现技术分析
- UNIX平台与X86平台虚拟化技术比较分析
- 虚拟化风暴前夕 微软HyperV技术分析
- Intel内存虚拟化技术分析
- 通过虚拟化技术拯救硬盘的简单分析
- 深入分析云存储中虚拟化技术构成及应用
- 虚拟化技术有什么用?虚拟化技术是什么?IBM服务器虚拟化部署案例分析
- 优势互补 云计算与虚拟化结合技术分析(引帖)
- Part1:3D虚拟化技术透析及竞争分析
- 深入分析云存储中虚拟化技术构成及应用
- 3D虚拟化技术透析及竞争分析
- 基于Swarm Docker虚拟化技术的集群环境分析_20170110
- 存储分析:RAID技术走向何方?
- SPEED TREE技术分析
- 这七种回归分析技术,学了不后悔