开源虚拟化项目| 学习笔记

简介: 快速学习开源虚拟化项目。

开发者学堂课程【虚拟化技术入门开源虚拟化项目】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/374/detail/4699


开源虚拟化项目

 

目录:

一、XEN介绍

二、VT-X介绍

三、KVM 介绍

四、相关对比

 

一、XEN

image.png

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。

image.png

引入了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、系统架构

image.png

上图是 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 weathe r就有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

相关文章
|
存储 Linux 虚拟化
开源虚拟化平台oVirt4.3简单搭建实践(下)
开源虚拟化平台oVirt4.3简单搭建实践(下)
1186 0
开源虚拟化平台oVirt4.3简单搭建实践(下)
|
存储 调度 虚拟化
2.3.1 虚拟资源层 虚拟化软件|学习笔记
快速学习2.3.1 虚拟资源层 虚拟化软件
2.3.1 虚拟资源层 虚拟化软件|学习笔记
|
数据可视化 关系型数据库 Linux
开源虚拟化平台oVirt4.3简单搭建实践(上)
开源虚拟化平台oVirt4.3简单搭建实践
1400 0
开源虚拟化平台oVirt4.3简单搭建实践(上)
|
存储 安全 网络协议
虚拟化服务(服务器虚拟化、存储虚拟化)|学习笔记
快速学习虚拟化服务(服务器虚拟化、存储虚拟化)
1337 0
虚拟化服务(服务器虚拟化、存储虚拟化)|学习笔记
|
存储 弹性计算 安全
阿里云虚拟化架构|学习笔记
快速学习阿里云虚拟化架构
1764 0
阿里云虚拟化架构|学习笔记
|
存储 运维 监控
虚拟化技术-虚拟化概述|学习笔记
快速学习虚拟化技术-虚拟化概述
299 0
虚拟化技术-虚拟化概述|学习笔记
|
存储 虚拟化 网络虚拟化
什么是虚拟化|学习笔记
快速学习什么是虚拟化
什么是虚拟化|学习笔记
|
虚拟化 开发者 Docker
全虚拟化架构介绍|学习笔记
快速学习全虚拟化架构介绍
全虚拟化架构介绍|学习笔记
|
虚拟化 开发者 Docker
平台虚拟化介绍|学习笔记
快速学习平台虚拟化介绍
平台虚拟化介绍|学习笔记
|
Ubuntu Unix Linux
操作系统层虚拟化介绍|学习笔记
快速学习操作系统层虚拟化介绍
操作系统层虚拟化介绍|学习笔记
下一篇
无影云桌面