虚拟化实现技术分析

虚拟化平台X主要由Hypervisor和Domain0组成。Hypervisor是虚拟化子系统的核心,它位于操作系统和硬件之间,负责为上层运行的操作系统提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机之间的相互隔离;Hypervisor向Domain0提供了一个抽象层,其中包含了管理和虚拟硬件的API。Domain0是一个特权虚拟机,内部包含了真实的设备驱动(原生设备驱动),可直接访问硬件,负责与Hypervisor提供的管理API交互,并通过Agent接受管理系统的管理指令,实现对其它虚拟机的管理。


为了提高I/O性能,X使用了分享设备驱动模型。


X的性能优化技术

1)使用CPU硬件辅助虚拟化技术

VT-X扩展了传统的X86处理器架构,它引入了两种操作模式,根虚拟化操作和非根虚拟化操作,统称为VMX操作模式。

VMX根虚拟化模式是VMM运行所处模式,设计给VMM/Hypervisor使用,其行为跟传统的IA32并无特别不同。而VMX非根虚拟化模式则是客户机运行所处的模式,在VMM控制之下的IA32/64环境。所有模式都能支持4个特权级别。

在以往,特权指令需要模拟执行。采用这种方式,VMM能从模拟运行特权指令当中解放出来,这样既能解决Ring Alias问题(软件运行的实际Ring与设计运行的Ring不相同带来的问题),又能解决Ring Compression问题,从而大大提升运行效率。

为了建立这种两个操作的架构,VT-x设计了一个VMCS(虚拟机控制结构)的数据结构,包括了客户状态区和主机状态区,宿主机通过VMCS结构灵活监控客户机的运行,环境切换时硬件自动保存、恢复各自的状态,并提供了VM entry和VM exit两种操作在虚拟机和VMM之间切换,用户可能通过VMCS的VM-excution control fields里面指定在执行何种指令/发生何种事件的时候,VMX non-root operation环境下的虚拟机就执行VM exit,从而让VMM获得控制权,因此VT-x技术弥补了X86虚拟化漏洞,减小计算虚拟化的软件处理开销。

在以往,特权指令需要模拟执行。采用此种方式,VMM能从


2)使用内存硬件辅助虚拟化技术

虚拟化层的引入,使得内在地址空间引入了一层新的地址空间,即客户机物理地址空间。内存虚拟化的任务就是实现地址空间的虚拟化,内存虚拟化是通过两次地址转换支持地址空间虚拟化,即客户机虚拟地址GAV->客户机物理地址GPA->宿主机物理地址HPA的轮换。

在使用纯软件模式,实现两次地址的转换,是通过影子页表方式。这种方式的原理是在VMM上,为每个VM中的进程建立一份GVA->HPA的页表,当VM切换进程时(需要更换CR3),VMM拦截修改CR3的指令,将VMM中的页表地址装载进CR3。所以,VM中通过GVA->GHA访问内存,实际在物理CPU是通过GVA->HPA访存。

使用影子页表会带来一些问题:

VMM参与客户机的每次页表修改,开销大,性能差;

代码逻辑复杂,引入锁机制损害了可扩展性;


内存的硬件辅助虚拟化技术是用于替代虚拟化技术中软件实现的"影子页表"的一种硬件辅助虚拟化技术。

首先,VMM预先把客户机物理地址转换到机器地址的EPT页表设置到CPU中;

其次,客户机每次修改客户机页表无需VMM干预;

最后,地址转换时,CPU自动查找两张页表完成客户机虚拟地址到机器地址的转换。

使用内存的硬件辅助虚拟化技术,客户机运行过程中无需VMM干预,去除了大量的软件开销,内存访问性能接近物理机;而且代码逻辑简单,可扩展性强。


3)自伸缩内存调节技术

自伸缩内存调节技术是一种VMM通过“诱导”客户机操作系统来回收或分配客户机所拥有宿主机物理内存的技术。

当客户机物理内存足够时,客户机从其闲置客户机物理内存链表中返回客户机物理内存给VMM中的内存管理模块(自定义实现);当客户机物理内存资源稀缺时,客户机操作系统必须回收一部分客户机物理内存,以满足气球申请客户机物理内存的需要。通过VMM中的内存管理模块模块,从源虚拟机申请可用内存页面,通过Grant Table授权给目标虚拟机,并更新虚拟机物理地址和机器地址的映射关系表。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值