加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- AI行业应用、大数据、建站、语音技术、研发安全!
当前位置: 首页 > 服务器 > 系统 > 正文

虚拟化技术:KVM与XEN的技术分析

发布时间:2023-05-23 23:06:06 所属栏目:系统 来源:转载
导读: KVM和XEN都是开源的虚拟化技术。
一、Xen 虚拟化技术简介
XEN最初是剑桥大学Xensource的一个开源研究项目,2003年9月发布了首个版本Xen 1.0,2007年Xensource被Citrix公司收购,开源Xen转由

KVM和XEN都是开源的虚拟化技术。

一、Xen 虚拟化技术简介

XEN最初是剑桥大学Xensource的一个开源研究项目,2003年9月发布了首个版本Xen 1.0,2007年Xensource被Citrix公司收购,开源Xen转由xen.org继续推进,该组织成员包括个人和公司(如Citrix、Oracle等)。2014年03月11日,Xen发布4.4版本,更好地支持ARM架构。

云mes系统架构_盈科电讯线路 kvm架构_云系统架构KVM

图1 Xen虚拟化平台架构

Xen是运行在裸机上的虚拟化管理程序(HyperVisor),是半虚拟化(Para-Virtualization)技术的典型代表。英文前缀“Para”直译为“侧”、“旁”、“近旁”的意思,“Para-Virtualization”可以理解为“在Guest VM旁边运行着的管理VM”,Xen称这个特别的VM为Dom0,虚拟机操作系统被称做DomU。管理VM负责管理整个硬件平台上的所有输入输出设备驱动,半虚拟化中的Hypervisor不对I/O设备作模拟,而仅仅对CPU和内存做模拟,这就是“Para-Virtualization”被翻译成“半虚拟化”的原因。半虚拟化还有一个叫法:操作系统辅助虚拟化(OS Assisted Virtualization),这是因为Guest VM自身不带设备驱动,需要向“管理VM”寻求帮助。这种虚拟化技术允许虚拟化操作系统感知到自己运行在XEN HyperVisor上而不是直接运行在硬件上,同时也可以识别出其他运行在相同环境中的虚拟机。

云系统架构KVM_盈科电讯线路 kvm架构_云mes系统架构

图2 Xen半虚拟化系统架构

相对于VMwareESX/ESXi和微软Hyper-V来说,Xen支持更广泛的CPU架构,前两者只支持CISC的X86/X86_64 CPU架构,Xen除此之外还支持RISC CPU架构,如IA64、ARM等。Xen的Hypervisor是服务器经过BIOS启动之后载入的首个程序,然后启动一个具有特定权限的虚拟机(即Dom 0)。Dom 0的操作系统可以是Linux或Unix,它实现对Hypervisor控制和管理功能。在所承载的虚拟机中,Dom0是唯一可以直接访问物理硬件(如存储和网卡)的虚拟机,它通过本身加载的物理驱动,为其它虚拟机(即DomU)提供访问存储和网卡的桥梁。

Xen最重要的优势在于半虚拟化,能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。同时半虚拟化架构的最大缺点是需要特定内核的操作系统,XEN需要修改操作系统内核,Windows操作系统由于其封闭性,不能被Xen的半虚拟化所支持。

云mes系统架构_盈科电讯线路 kvm架构_云系统架构KVM

图3 Xen虚拟化平台架构示意图

为了解决这个问题,Xen也支持全虚拟化(FullVirtualization)。Xen称其为HVM(Hardware Virtual Machine)。这种虚拟化技术指运行在虚拟环境上的虚拟机在运行过程中始终感知到自己是直接运行在硬件之上的,并且感知不到在相同硬件环境下运行着其他虚拟机。Xen的全虚拟化要求CPU具备硬件辅助虚拟化,它修改的QEMU(Quick Emulator)仿真所有硬件,包括BIOS、IDE控制器、VGA显示卡、USB控制器和网卡等。为了提升I/O性能,全虚拟化特别针对磁盘和网卡采用半虚拟化设备来代替仿真设备,这些设备驱动称之为PV on HVM。为了使PV on HVM有最佳性能,CPU应具备MMU硬件辅助虚拟化。

Xen的Hypervisor层非常精简,少于15万行的代码量,不包含任何物理设备驱动,这一点与Hyper-V是非常类似的,物理设备的驱动均是驻留在Dom 0中,可以重用现有的Linux设备驱动程序。因此,Xen对硬件兼容性也是非常广泛的,Linux支持的,它就支持。

二、KVM虚拟化技术简介

KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是一个基于Linux环境的开源虚拟化解决方案,最早由以色列Qumranet公司开发,在2006年10月出现在Linux内核的邮件列表上,并于2007年2月被集成到Linux 2.6.20内核中,成为内核的一部分。2008年,Qumranet被RedHat所收购,但KVM本身仍是一个开源项目,由RedHat、IBM等厂商支持。

与VMwareESX/ESXi、微软Hyper-V和Xen等虚拟化产品不同,KVM的思想是在Linux内核的基础上添加虚拟机管理模块,重用Linux内核中已经完善的进程调度、内存管理、IO管理等代码,使之成为一个可以支持运行虚拟机的Hypervisor。因此,KVM并不是一个完整的模拟器,而只是一个提供了虚拟化功能的内核插件,具体的模拟器工作需要借助QEMU来完成。

云mes系统架构_盈科电讯线路 kvm架构_云系统架构KVM

盈科电讯线路 kvm架构_云系统架构KVM_云mes系统架构

图4 KVM虚拟化系统架构

通过KVM模块的加载将Linux内核转变成Hypervisor,KVM在Linux内核的用户(User)模式和内核(Kernel)模式基础上增加了客户(Guest)模式。Linux本身运行于内核模式,主机进程运行于用户模式,虚拟机则运行于客户模式,使得转变后的Linux内核可以将主机进程和虚拟机进行统一的管理和调度,这也是KVM名称的由来。

KVM利用修改的QEMU提供BIOS、显卡、网络、磁盘控制器等的仿真,但对于I/O设备(主要指网卡和磁盘控制器)来说,则必然带来性能低下的问题。因此,KVM也引入了半虚拟化的设备驱动,通过虚拟机操作系统中的虚拟驱动与主机Linux内核中的物理驱动相配合,提供近似原生设备的性能。从此可以看出,KVM支持的物理设备也即是Linux所支持的物理设备。

KVM是基于硬件辅助虚拟化技术(Intel的VT-x或者AMD-V)的虚拟化解决方案,Guest OS能够不经过修改直接在KVM 的虚拟机中运行,每一台虚拟机能够享有独立的虚拟硬件资源,如网卡、磁盘、图形适配器等。“基于Linux内核”是KVM在软件实现上不同于其它VMM实现的最重要特点云系统架构KVM,使得KVM在实现上能获得如下好处:

(1) 充分利用现有硬件的虚拟化功能。KVM的设计是在硬件辅助虚拟化技术成熟之后,它没有必要实现当前主流硬件已经实现的虚拟化相关功能。

(2) 充分利用现有软件的虚拟化功能。Hypervisor除了要虚拟CPU和内存外还需要其它的核心功能组件,如内存管理器、进程调度程序、I/O控制器、设备驱动、网络控制器等。Linux的内核已经包含了上述的功能模块,KVM利用Linux内核已有的成熟功能和基础服务,减少不必要的重新开发,如任务调度、物理内存管理、内存空间虚拟化、电源管理等功能。

(3) 充分利用现有硬件的软件驱动程序。在KVM的系统构架中,虚拟机以普通Linux的进程的方式来实现,由标准的Linux进程调度器来调度。实际上每个vCPU都是以一个常规的Linux进程呈现的。硬件设备的模拟则是通过一个修改过的QEMU来进行,提供了BIOS,PCI总线,USB总线和其他标准设备(如IDE和SCSI硬盘控制器以及网络控制器等)的模拟。KVM将Linux内核转化为Hypervisor,通常情况下支持Linux的硬件设备就可以被KVM支持。

三、QEMU技术简介

KVM并不是一个完整的模拟器,而只是一个提供了虚拟化功能的内核插件,具体的模拟器工作需要借助QEMU来完成。KVM是Linux kernel的一个模块,可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,KVM开发者选择了已经成型的开源虚拟化软件 QEMU。QEMU也是一个虚拟化软件,它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU 的关系。

云mes系统架构_云系统架构KVM_盈科电讯线路 kvm架构

图5 KVM和QEMU关系

四、KVM与Xen的技术优劣对比

Xen发展的时间相对较长,理论上应该更成熟,但受限于Citrix未知的战略和其半虚拟化架构;KVM起步的时间相对较晚,但具有后发优势,比如天生支持硬件辅助虚拟化等。在技术路线的选择问题上,需要考虑选型的三大原则:第一,平台,开源是未来软件行业发展的必然趋势,需要选择的是一个更具开放特质的开源平台,谁的开放性更好就选择谁;第二,架构,架构设计的优劣决定后续开发与维护的难度,更决定了性能的优劣;第三,性能,虚拟化是承载客户业务系统的底层平台,没有性能的保障就没有业务虚拟化的可能性。基于这三条选型原则, KVM应该是更佳的虚拟化软件开发的平台。自从Citrix公司将其虚拟化战略重心转移到桌面之后,Xen开源社区的活跃程度迅速降低。

云系统架构KVM_盈科电讯线路 kvm架构_云mes系统架构

图6 KVM和XEN对比图

对比Xen, KVM已经被Linux核心组织放入Linux的内核里面,而 Xen是一个外部的Hypervisor程序(虚拟机管理程序),其工作环境的补丁包不能够和Linux内核兼容;另一方面,KVM是Linux的一部分,长期享受着Linux内核技术不断成熟与进步带来的好处,可使用通常的Linux调度器和内存管理,在任何场景下都可以直接进行交互,而不需要修改虚拟化操作系统,这意味着KVM更小更易使用;另外I/O性能方面,KVM也优于Xen。2014年9月Xen被爆出了3个安全漏洞,包括AWS、Rackspace、SoftLayer在内的Iaas提供商均遭受了不同时间停机影响,重启服务对云计算带来的负面影响是无法抹去的。

现如今越来越来的厂商诸如AWS、IBM、Ubuntu、腾讯云、阿里云、华为都逐渐在规划或已经转向KVM,越来越多的虚拟化与云计算玩家向KVM转型,说明了KVM获得了更多的社区支持。而业界包括各大公有云及私有云甚至虚拟化厂商均将技术路线向KVM进行切换更是说明了这一点,未来的趋势也将会是属于KVM的。

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章