全虚拟化与半虚拟化的实现方式

目录

  • 目录
  • 全虚拟化
    • 软件辅助的全虚拟化
    • 硬件辅助的全虚拟化
  • 半虚拟化

全虚拟化

不需要对GuestOS操作系统软件的源代码做任何的修改,就可以运行在这样的VMM中

在全虚拟化的虚拟平台中,GuestOS并不知道自己是一台虚拟机,它会认为自己就是运行在计算机物理硬件设备上的HostOS。因为全虚拟化的VMM会将一个OS所能够操作的CPU、内存、外设等物理设备逻辑抽象成为虚拟CPU、虚拟内存、虚拟外设等虚拟设备后,再交由GuestOS来操作使用。这样的GuestOS会将底层硬件平台视为自己所有的,但是实际上,这些都是VMM为GuestOS制造了这种假象。

全虚拟化又分为:软件辅助的全虚拟化 & 硬件辅助的全虚拟化

软件辅助的全虚拟化

软件辅助全虚拟化架构图

在Intel等CPU厂商还没有发布x86 CPU虚拟化技术之前,完全虚拟化都是通过软件辅助的方式来实现的。而软件辅助的全虚拟化主要是应用了两种机制:
1. 特权解除(优先级压缩):从上述的软件辅助全虚拟化架构图中可以看出,VMM、GuestOS、GuestApplications都是运行在Ring 1-3用户态中的应用程序代码。当在GuestOS中执行系统内核的特权指令时,一般都会触发异常。这是因为用户态代码不能直接运行在核心态中,而且系统内核的特权指令大多都只能运行在Ring 0核心态中。在触发了异常之后,这些异常就会被VMM捕获,再由VMM将这些特权指令进行虚拟化成为只针对虚拟CPU起作用的虚拟特权指令。其本质就是使用若干能运行在用户态中的非特权指令来模拟出只针对GuestOS有效的虚拟特权指令,从而将特权指令的特权解除掉。
缺点:但是特权解除的问题在于当初设计标准x86架构CPU时,并没有考虑到要支持虚拟化技术,所以会存在一部分特权指令运行在Ring 1用户态上,而这些运行在Ring 1上的特权指令并不会触发异常然后再被VMM捕获。从而导致在GuestOS中执行的特权指令直接对HostOS造成了影响(GuestOS和HostOS没能做到完全隔离)。
针对这个问题,再引入了陷入模拟的机制。

陷入模拟(二进制翻译):就是VMM会对GuestOS中的二进制代码(运行在CPU中的代码)进行扫描,一旦发现GuestOS执行的二进制代码中包含有运行在用户态上的特权指令二进制代码时,就会将这些二进制代码翻译成虚拟特权指令二进制代码或者是翻译成运行在核心态中的特权指令二进制代码从而强制的触发异常。这样就能够很好的解决了运行在Ring 1用户态上的特权指令没有被VMM捕获的问题,更好的实现了GuestOS和HostOS的隔离。

简而言之,软件辅助虚拟化能够成功的将所有在GuestOS中执行的系统内核特权指令进行捕获、翻译,使之成为只能对GuestOS生效的虚拟特权指令。但是退一步来说,之所以需要这么做的前提是因为CPU并不能准确的去判断一个特权指令到底是由GuestOS发出的还是由HostOS发出的,这样也就无法针对一个正确的OS去将这一个特权指令执行。

直到后来CPU厂商们发布了能够判断特权指令归属的标准x86 CPU之后,迎来了硬件辅助全虚拟化。

硬件辅助的全虚拟化

硬件辅助全虚拟化主要使用了支持虚拟化功能的CPU进行支撑,CPU可以明确的分辨出来自GuestOS的特权指令,并针对GuestOS进行特权操作,而不会影响到HostOS。

从更深入的层次来说,虚拟化CPU形成了新的CPU执行状态 —— * Non-Root Mode& Root Mode* 。从上图中可以看见,GuestOS运行在Non-Root Mode 的Ring 0核心态中,这表明GuestOS能够直接执行特却指令而不再需要 特权解除陷入模拟 机制。并且在硬件层上面紧接的就是虚拟化层的VMM,而不需要HostOS。这是因为在硬件辅助全虚拟化的VMM会以一种更具协作性的方式来实现虚拟化 —— 将虚拟化模块加载到HostOS的内核中,例如:KVM,KVM通过在HostOS内核中加载KVM Kernel Module来将HostOS转换成为一个VMM。所以此时VMM可以看作是HostOS,反之亦然。这种虚拟化方式创建的GuestOS知道自己是正在虚拟化模式中运行的GuestOS,KVM就是这样的一种虚拟化实现解决方案。

半虚拟化

需要对GuestOS的内核代码做一定的修改,才能够将GuestOS运行在半虚拟化的VMM中

半虚拟化通过在GuestOS的源代码级别上修改特权指令来回避上述的虚拟化漏洞。

修改内核后的GuestOS也知道自己就是一台虚拟机。所以能够很好的对核心态指令和敏感指令进行识别和处理,但缺点在于GuestOS的镜像文件并不通用。

具体的x86架构CPU解析,请参考虚拟化的发展历程和实现方式

时间: 2024-10-28 10:47:30

全虚拟化与半虚拟化的实现方式的相关文章

虚拟化的发展历程和实现方式

目录 目录 前言 虚拟化 虚拟机Virtual Machine 虚拟化的分类 x86 CPU架构与虚拟化的关系 全虚拟化 Full virtualization 半虚拟化 Paravirtualization 硬件辅助虚拟化 HVM 内存虚拟化 内存虚拟化的映射实现 总线虚拟化 前言 现在市场上最常见的虚拟化软件有VMWare workstation(VMWare).VirtualBox(Oracle).Hyper-V(Microsoft).KVM(Redhat).Xen等,这些软件统称之为VM

首款PC半虚拟化软件:XenClient现身

日前http://www.aliyun.com/zixun/aggregation/13361.html">Citrix宣布将于今年推出XenClient虚拟化软件,这将是首款采用半虚拟化技术的个人电脑虚拟化产品,如同服务器虚拟化,可以让一台个人电脑,构建出许多虚拟的个人电脑,每台虚拟电脑都拥有独立的操作系统与应用程序,让一台实体电脑可以建置出多个应用环境. XenClient可以与Citrix VDI架构(Virtual Desktop Infrastructure)的虚拟化软件结合,如

网络虚拟化提高安全性的四种方式

  虚拟化已经给IT部门带来了很多礼物.它让不可能不仅成为可能,更成为普遍.从服务器整合到云计算,虚拟化是目前世界范围内占主导地位的计算平台. 除了扩展计算能力,虚拟化也被认为是增加网络安全性的一种方法.VMware运营和销售发展总监Rod Stuhlmuller认为,在网络虚拟化中可以通过四种方式改善安全性. 网络虚拟化如何提高安全性 在云数据中心,应用程序工作负载随意配置,迁移和下线,云管理软件按需分配计算.存储和网络容量. 添加网络虚拟化到动态环境,彻底改变网络的运作模式.这样的深刻变化往

虚拟化正成为主流IT运营方式

本文讲的是虚拟化正成为主流IT运营方式,[IT168 资讯]VMware公司在2008年取得了骄人的业绩,2008财年总收入为19亿美元,比2007财年增长了42%.通过利用虚拟化技术成功消除了长期存在于应用层与物理主机之间的障碍,再造计算蓝图.这一革命性的变化体现了虚拟化正日益成为主流的IT运营方式,在全球范围内,越来越多的IT机构利用VMware平台,成功解决了长期以来存在的业务问题,比如数据安全.灾难备份等,同时大幅度节省了成本. Lowe's公司是家用产品领域首屈一指的零售商.最近,这家

服务器虚拟化 破解存储虚拟化困局

从CPU.内存.主板到服务器,当越来越多的IT系统核心构件选择投身虚拟化阵营时,谁将是虚拟化阵营的下一个受益者?从目前的发展态势看,服务器虚拟化渐成主流,存储极有可能成为下一个因虚拟化而发生重要变革的IT构件. 叫好不叫座 事实上,存储虚拟化的概念并不新鲜,它是伴随大型计算机的发展而出现的一个经典概念.早在上世纪70年代,由于当时存储设备的容量小.价格高,大型应用程序或多程序应用都受到了极大的限制.为克服这一局面,人们开始采用存储虚拟化技术. 随着需求的增长与技术的进步,存储虚拟化被赋予新的内涵

打破虚拟化停滞僵局 虚拟化安全3个因素

本文讲的是打破虚拟化停滞僵局 虚拟化安全3个因素,虚拟化在IT领域中所覆盖的范围很广.在"一个应用,一个服务器"这一规则引领多年后,IT架构的容量已经不再能满足需求,而且也不具有成本效益.随着虚拟化的兴起,以及在单个服务器上托管多个虚拟机的趋势,很多与之相关的问题也显现出来. 由于多个虚拟机可以放到单个服务器上,IT组织就可以确定该机器的处理能力被分配到了多个应用上.通常以单个字节来衡量的利用率可增加到70%甚至更多,这样就确保了高成本,低利用率服务器上的浪费情况比较少. 虚拟化的转变

存储虚拟化与服务器虚拟化相辅相成

   服务器虚拟化技术为企业带来的利益体现在两个方面:首先,通过对物理服务器和遗留存储平台的整合,提高了现有硬件和软件的利用率,避免了新一轮的采购,从而提高投资回报率(ROI);其次,虚拟化能提高IT系统的灵活性. 毫无疑问,服务器虚拟化技术对企业IT运营发挥着积极的影响.然而随着服务器虚拟化的快速普及,成功的背后也暴露出一些棘手的运营挑战:服务器整合率逐渐达到极限,虚拟服务器蔓延已成为威胁,并直接威胁到成本优势甚至导致成本效益的消失;此外,供应商.平台过多及接口不兼容.存储网络(SAN)架构和

服务器 终端-服务器虚拟化、终端虚拟化

问题描述 服务器虚拟化.终端虚拟化 请教,服务器虚拟化与终端虚拟化的区别在于什么地方?如用能作个直白地示教授,不慎感激!

存储虚拟化和服务器虚拟化的不同

二者概念相似,但属于不同的技术.服务器虚拟和存储虚拟化技术的设计目的都是将物理系统从具体的工作负荷中分离出来,都是为了通过整合和快速分配资源达到简化环境的目的.服务器虚拟化解决方案一般将操作系统和应用程序封装到虚拟服务器中,而存储虚拟化解决方案的目的则是通过存储池化.资源分区,或让磁盘系统仿真磁带系统来优化数据存储环境. 与过去相比,在服务器虚拟化技术方面,现在最大的不同就是参与者的队伍大大扩充了--从处理器层面的AMD和Intel到操作系统层面的微软的加入,从数量众多的第三方软件厂商的涌现到服