码迷,mamicode.com
首页 > 其他好文 > 详细

虚拟化的理论

时间:2014-05-09 14:28:52      阅读:408      评论:0      收藏:0      [点我收藏+]

标签:kvm   虚拟化   openstack   

虚拟化技术的分类:
1.平台虚拟化,针对计算机和操作系统的虚拟化
2.资源虚拟化,针对特定的系统资源的虚拟化,比如内存,存储,网络资源等
3.应用程序虚拟化 包括仿真,模拟,解释等技术

平台虚拟化分类:
1.全虚拟化
   全虚拟化简而言之就是VMM提供了一整套模拟出来的硬件,使得可以像在正常的硬件上安装操作系统一样在虚拟出来的硬件上安装操作系统,安装应用程序等等,然而对于虚拟机中执行的一些特权指令是需要经过VMM处理才可以执行的。通常的操作系统在用户空间是无法执行特权指令的,特权指令的执行是通过陷入内核模式由内核(位于ring0特权级)来实现的,然而对于虚拟机中的操作系统来说是不能让其工作在ring0模式下,VMM必须运行在特权模式下完全控制主机系统。所以在虚拟机中的操作系统执行特权指令的时候就需要模拟这一VMM,当虚拟机中的OS执行特权指令的时候因为其不再特权级所
以就会产生异常,VMM通过捕获这种异常来模拟特权指令的执行,然后再x86体系的计算机中有的敏感指令(可能是特权指令)在执行的时候是不会产生异常的,这就导致了VMM实现完全虚拟化的难题。因此就有了二进制指令翻译技术的出现。

2.半虚拟化
   半虚拟化和全虚拟化的最大区别就在于虚拟出来的OS知不知道自己是在虚拟环境下,而半虚拟是知道自己处于虚拟环境下,那么为了让OS知道自己处于虚拟环境下就必须要修改OS相关的源码,Linux是可以修改其源码的,windows呢,因为不开源所以windwos无法修改源码,
那么windows就无法运行在半虚拟的平台下,对于一些敏感和特权指令的执行半虚拟化是靠调用hypervisor call来直接执行的,而全虚拟化是需要进行陷入异常然后被VMM捕获再进行模拟执行。半虚拟化性能明显优于全虚拟化

虚拟化的流派:

基于二进制翻译的全虚拟化:其主要思想是在执行时将 VM 上执行的 Guest OS 之指令,翻译成 x86 ISA 的一个子集,其中的特权指令被替换成陷入指令;翻译过程与指令执行交叉进行,不含特权指令的用户态程序可以不经翻译直接执行,该技术为 VMWare Workstation,VMWare ESX Server 早期版本,Virtual PC 以及 QEMU 所采用。

基于扫描和修补的全虚拟化:VMM 会在 VM 运行每块指令之前对其扫描,查找敏感指令;补丁指令块会在 VMM 中动态生成,通常每一个需要修补的指令会对应一块补丁指令;特权指令被替换成一个外跳转,从 VM 跳转到 VMM,在 VMM 中执行动态生成的补丁指令块;当补丁指令块执行完后,执行流再跳转回 VM 的下一条指令处继续执行;Oracle 的 Virtualbox 即采用该技术。

OS协助的半虚拟化:通过修改 Guest OS 的代码,将含有敏感指令的操作,替换为对 VMM 的超调用 (Hypercall,类似 OS 的系统调用,可将控制权转移到 VMM);该技术的优势在于 VM 的性能能接近于物理机,缺点在于需要修改 Guest OS;该技术因 Xen 项目而广为人知。

硬件协助的虚拟化:引入新的处理器运行模式和新的指令,使得 VMM 和 Guest OS 运行于不同的模式下,Guest OS 运行于受控模式,原来的一些特权指令在受控模式下全部会陷入 VMM,这样就解决了部分非特权的敏感指令的陷入 — 模拟难题,而且模式切换时上下文的保存恢复由硬件来完成,这样就大大提高了陷入 — 模拟时上下文切换的效率。该技术的引入使 x86 可以很容易地实现完全虚拟化。故皆被几乎所有之前分歧流派各方所采用,如: KVM-x86,新版 VMWare ESX Server 3,Xen 3.0。

VMM模型:

宿主模型
   VMM 通过调用 Host OS 的服务来获得资源,实现 CPU,内存和 I/O 设备的虚拟化,VMM 创建出 VM 后,通常将 VM 作为 Host OS 的一个进程参与调度;VMM 模块负责 CPU 和内存虚拟化,由 ULM 请求 Host OS 设备驱动,实现 I/O 设备的虚拟化。

优点:可以充分利用现有 OS 的设备驱动,VMM 无需自己实现大量的设备驱动,轻松实现 I/O 设备的虚拟化。
缺点:资源受 Host OS 控制,VMM 需调用 Host OS 的服务来获取资源进行虚拟化,其效率和功能会受到一定影响。采用该结构       的 VMM 有:VMware Workstation, VMWare Server (GSX), Virtual PC,Virtual Server, KVM(早期)

Hypervisor 模型
   该结构中,VMM 可以看作一个为虚拟化而生的完整 OS,掌控有所有资源(CPU,内存,I/O 设备),VMM 承担管理资源的重任,其还需向上提供 VM 用于运行 Guest OS,因此 VMM 还负责虚拟环境的创建和管理。

优点:因 VMM 同时具有物理资源的管理功能和虚拟化功能,故虚拟化的效率会较高;安全性方面,VM 的安全只依赖于 VMM 的安全。
缺点:因 VMM 完全拥有物理资源,因此,VMM 需要进行物理资源的管理,包括设备的驱动,而设备驱动的开发工作量是很大的,这对 VMM 是个很大的挑战。采用该结构的 VMM 有:VMWare ESX Server, WindRiver Hypervisor, KVM(后期)

混合模型
   该结构是上述两种模式的混合体,VMM 依然位于最底层,拥有所有物理资源,但 VMM 会主动让出大部分 I/O 设备的控制权,将它们交由一个运行在特权 VM 上的特权 OS 来控制。VMM 只负责 CPU 和内存的虚拟化,I/O 设备的虚拟化由 VMM 和特权 OS 共同完成.

优点:可利用现有 OS 的 I/O 设备驱动;VMM 直接控制 CPU 和内存等物理资源,虚拟化效率较高;若对特权 OS 的权限控制得当,虚拟机的安全性只依赖于 VMM。
缺点:因特权 OS 运行于 VM 上,当需要特权 OS 提供服务时,VMM 需要切换到特权 OS,这里面就产生上下文切换的开销。
采用该结构的 VMM 有:Xen, SUN Logical Domain35




原文链接:http://blog.csdn.net/dbanote/article/details/8938106

本文出自 “专注linux” 博客,请务必保留此出处http://forlinux.blog.51cto.com/8001278/1408725

虚拟化的理论,布布扣,bubuko.com

虚拟化的理论

标签:kvm   虚拟化   openstack   

原文地址:http://forlinux.blog.51cto.com/8001278/1408725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!