开源虚拟化项目
目录:
一、XEN介绍
二、VT-X介绍
三、KVM 介绍
四、相关对比
一、XEN
1、最早是由剑桥大学发明,在2003-2004发布出来。
在2003年2004年的时候发布了第一个公开版本,也就是Dan2.0,在2.0里面只包含了para Liz Asian。
一个公开版本2.0是完全开源的,性能是非常非常好的。但是power to Liz Asian,必须要修改该词的操作性的内核,所以说它的适用范围是受到限制的,没办法用到像这种闭源的Windows操作系统上面去。
2、第三个版本在2006年,因特尔公司发明,开发了开源项目。
在2006年的时候,英特尔公司已经发布了新的cpu规范,从硬件层面可以支持虚拟化技术,那英特尔公司就在2.0基础上开发了。支持硬件辅助虚拟化的三个版本,也就是后来发布到的3.0版本。
3、花费五亿美金被收购
4、当前在开发的是4.6版本
二、VT-X
它的整个的所有的该智能操作系统都是需要经过修改的,并且,在这样一个架构里边,所有的io架构、中断架构都完全是自定义的,和标准的X86架构是完全不一样的。
这点是要通过修改该词的操作系统内核,以及需要在hap weather里边做相应的实现。
操作系统和应用程序都不需要修改,可以直接运行在虚拟机里边,这就要借助于英特尔公司发布的新的cpu规范,引入了VTX技术的cpu虚拟化,后来也引入VTX技术,之后在这种情况下也就不需要修改操作系统,让该死的内核直接运行在guest mode的raining er had weather直接运行在host mode的raining。
引入了VT-x技术
相关机制:
1、XEN Bus
Xen的总线
2、XEN Store
进行信息交互、可以存储信息
3、所有的P的驱动都可以挂在这个总线上面,但是到账机制可以像Windows里面的注册表一样,它是一个database,可以把各种各样的信息存在里面,各个VM之间,或者vm help weather之间,然后进行信息交互。
在最新的叫NBA虚拟化已经使用了扩展列表的机制来加速性能相over to the Asian,但其实支持三种,一种是所谓的设备的全模拟方式,另外一种power plus的方式,还有一种就是设备直通,这些都是支持的。
三、KVM
是基于Linux的一个APP软件,通过在Linux内核里边增加一个内核模块,把hyper bol ix内核扩展成high pressure。
最早是由以色列的一家公司在2007年发布到Linux内核里的。
它有一个强依赖,也就是说,要依赖于最新的cpu提供love it技术。
1、2007年由以色列公司创建
2、依赖VT技术
4、只支持X86架构
5、做KVM的公司被Redhat收购,大多数都被商业公司收购,此技术可以营造极大的利益。
6、应用于Google、阿里云
7、系统架构
上图是KVM的系统架构,从系统架构上我们可以看到,2004内核儿通过KPM扩展之后,它不但Linux内核,不但可以运行一般的应用程序,在这个Linux内核上面,通过像VT这种技术的支持,也可以运行虚拟机。
把Linux内核通过KPM扩展之后,Linux内核,不但可以运行一般的应用程序,在这个Linux内核上面,通过向VT这种技术的支持,也可以运行虚拟机,真正的是把进程和虚拟机放在了一个同样的位置上。
KVM的整个架构。其实KBM是Linux内核的一个模块,通过修改过的QQ的battery,他们结合实现一个虚拟机的功能,它非常依赖于像Intel vt和AMD的SVM技术。当然cayenne在实现的时候也考虑到了,比如像资源的隔离,通过这种资源隔离的机制,可以降低该死的操作系统之间的互相的影响,通过向schedule的cap或者guarantee这样的模式来确保虚拟机的s Le。
那么从实际上来说,Kpi模块的实现,在Linux内核里边,这是一个独立的一个模块,独立的一个内核模块,它主要是负责cpu和内存的虚拟化。当然,他也会负责一些平台设备的虚拟化来加速比如像虚拟的iopiclookapic和 虚拟的ARtipit这些平台设备这个模块本身会通过一个用户的接口,然后KMU交互。
(1)Linux内核模块
通过一个模块进行修改,然后才能实现一个虚拟机的功能
(2)依赖Intel VMX或AMD SVM
(3)考虑资源隔离
实际上考虑到,比如像资源的隔离,通过这种资源隔离的机制,可以降低S操作系统之间的互相的影响,通过像schedule的pad或者根这样的模式来确保虚拟机的SLV。
8、Qemu
当然,KVM虚拟机另外一个重要的模块就是Qemu模块,ErerkUA本身是一个himalittle。
那么它是如何和KBM之间协同工作?在QQ里边它模拟了真正的cpu、内存、io设备,那么,在KL里边QQ的功能就发生了变化,在QQ里边cpu的虚拟化。不再由软件模拟来完成,而是交个VT技术来完成,这种情况下就大大加速了整个cpu虚拟化的效率。当然,内存的虚拟化也交给了硬件来完成。
在io面,KVM引入了像wow这样的power virtual eyes的io虚拟化方式,
(1)模拟CPU、内存、I\O...
(2)CPU交由VT完成
(3)内存交由硬件完成
(4)I\O由what I\o完成
9、其他性能增强
VM还有其他方面的一些PV的性能增强,自旋锁在虚拟化里边会有很大的开销,这主要是因为当一个获得自旋锁的CVCPU被调度出去之后,其他的VCPU等到这个VCPU再被调度回来的时候,才有机会把锁释放掉,这个性能的损失比较大。
在KTV里边也引入了像PP的spock去解决spin lock的性能损失问题,当然还有增强,比如像时间的虚拟化,在KL里边也采用了power to last timing的机制来解决时间虚拟化的问题。为了增加内存方面虚拟化的性能,也引入了像transparent huge page,也就是透明大业的模式,来解决内存方面的一些虚拟化的开销。
Para-virtualized spinlocks 解决性能损失问题
Para-virtualized Timing 解决时间虚拟化的问题
Para-virtualized Huge page 解决内存方面的虚拟化开销
四、对比
对Xen和KVM做一个整体对比来说,他们比较靠比较相同的部分,比如cpu和内存,他们现在的虚拟化方式都是通过硬件虚拟化的方式实现,比如像Intel vt X vt X技术和AMD的FDM技术来实现。他们还有一个共同特点,就是都使用QQ,也就是qi moo作为设备设备模型去模拟一些非关键的设备。
在IO方面,Then he k vm都引入了power to last I o虚拟化模式来增强系统的性能,当然也有很多的不同点,比如than,它是一个。Type weather所谓top line就是happ weather,直接运行在物理机上面,Erkvm是一个type to help weather,也就是说还所有的虚拟机都运行在一个Host的操作系统上面。
当然从软件复杂度方面,也可以看两个项目的不同,项目光hap weather就有30万行代码,Er k vm只有3万行代码。从这个层面上来看的话,复杂度是远远高于KVM的。
共同点:硬件虚拟化实现
使用Qemu模拟非关键设备
I\O:使用Para-virtualized模式
不同点:Xen :Type-1 Hypervisor 直接运行在物理机上
KVM:Type-2 Hyperviso 运行在其他软件上
代码不同:
Xen:300K(Hypervisor)+>
300K(management foolS)
KVM:~30K