虚拟化分类和实现原理

6、虚拟化分类

(1)完全虚拟化

直接将Hypervisor跑在0环内核态,客户机os跑在1环,一旦触发敏感指令,由0环的VMM进行捕获翻译,从而模

拟这些指令。而运行在1环的GuestOS永远都不知道自己是个虚拟机。是完全通过软件来实现的二进制翻译BT(Binary Translation)。也可以说叫基于软件的完全虚拟化。

虚拟化分类和实现原理_第1张图片

虚拟化分类和实现原理_第2张图片

1)CPU的权限级别分为0、1、2、3,级别依次降低,

2)其中0环跑的是OS,权限最高,可以执行特权指令。1环和2环跑的是驱动程序。3环跑的是应用软件,权限最低。

3)0环主要是内核态,3环是用户态

虚拟化的引入,就发生了变化

虚拟化分类和实现原理_第3张图片

特点:虚拟机不知道自己是个虚拟机,所有的敏感指令店铺需要借助VMare(VMM)进行翻译,翻译成宿主机OS能够捕捉到的指令,反应速度很慢。所谓的虚拟机里面的操作,必须跟物理机完全一致就是,虚拟机例如创建文件等操作,需要经过VMM,向宿主机申请磁盘空间。

特权指令:对于一些敏感的管理和读写指令被定位为特权指令,只有处于Ring0才能执行。否则会丢异常

敏感指令:由于虚拟化的引入,由于OS现在处于Ring1所以不能执行特权指令,所以就由Ring0的VMM来执行,

注意:以上的这种叫做VMware BT(Binary Translation:二进制翻译技术),就是所谓的完全虚拟化/基于软件的完全虚拟化

(2)XEN虚拟化(半虚拟化)

虚拟化层位于硬件和0环之间,让guestOS直接跑在0环,并且对guestos操作系统进行修改,以便可以对虚拟化层进行超级调用。虚拟化层可以理解为domain0特权虚拟机,客户机直接跑在了0环,因此,速度要比基于软件的完全虚拟化要快。但是需要修改客户机操作系统,因此不支持windows。

虚拟化分类和实现原理_第4张图片

虚拟化分类和实现原理_第5张图片

1)需要修改客户机(修改虚拟机操作系统内核),修改的目的是为了提升虚拟机的性能

2)例如el5.1,el5.1xen,domain0是直接运行在操作系统的内核上,所以是本身的OS的一部分,其中特权虚拟机是管理基于XEN的虚拟机

3)ParaVirtualization:半虚拟化 / 类虚拟化

4)XEN不支持Windows,因为Windows是闭源的

5)特点:效率快,是相对于VMware,虚拟机有自知之明,知道自己是个虚拟机,特权指令敏感指令要经过domain0这个特权虚拟机来执行,必须升级内核才能使用。维护庞大的内核,所有内核模块,驱动程序都需要重新编译,重新安装,工作量及其大。一旦升级内核,和内核相关的所有的内核模块,驱动都需要重新编译。意味着要经常维护一套庞大的内核,这就是XEN问题所在。

(3)硬件辅助虚拟化

引入了root级别和非root级别。简单来说,硬件和vmm(hypervisor)都运行在root级别,通过cpu硬件直接捕获敏感指令集,完成虚拟化。包括英特尔虚拟化技术(VT-x)和AMD的AMD-V,它们允许 VMM在环0以下以新的根模式运行。特权和敏感的调用被设置为自动捕获到管理程序,从而消除了二进制转换和 paravirtualization半虚拟化。

虚拟化分类和实现原理_第6张图片

虚拟化分类和实现原理_第7张图片

总结:

(1)KVM是属于完全虚拟化的范畴

(2)完全虚拟化:基于软件的完全虚拟化方案是VMware,基于硬件的完全虚拟化方案是CPU硬件辅助虚拟化

(3)半虚拟化:XEN

注意:XEN是虚拟化的一种,而不是半虚拟化就是XEN。半虚拟化是为了解决早期的X86架构问题而提出的(因为早期的X86架构限制了CPU的性能),刚好XEN采用的就是。现在的XEN在有CPU硬件辅助的支持下,也支硬件辅助的完全虚拟化

你可能感兴趣的:(虚拟化kvm,Linux系统,华为,云计算,linux,华为)