大家好,我是社区技术顾问——不懂就问,主要从事虚拟化、系统、网络等方面工作,受管理员小姐姐所邀参与社区【技术圆桌】话题发起人活动,与大家一起讨论一个经典的问题:xen和kvm两种虚拟化技术哪家强?欢迎对云计算、虚拟化技术感兴趣的朋友回帖交流,一起学习,一起温故而知新,一起不懂就问!
本次技术圆桌分为三个模块: 模块一:知识普及,介绍两种虚拟化技术xen和kvm的发展背景以及基本原理; 模块二:圆桌讨论,大家结合行业发展趋势和两种虚拟化各自的特点,谈谈你眼中哪种虚拟化技术更优?或者两种虚拟化技术分别有什么优缺点? 模块三:圆桌互动,关于虚拟化技术大家如果有其他的疑问,欢迎在本帖下面留言,我会知无不言,大家一起学习一起成长!
模块一:知识普及 1、引子 多年来,在开源虚拟化领域,Xen和KVM一直在不断竞争,但现在来看,这场竞争基本已经结束。 早在2014年,很多人还在谈论应该使用Xen还是KVM进行虚拟化。 然而,到2019年初,这场竞争似乎已经结束,因为每个人都在使用KVM。 本次我们就来聊一聊xen和kvm这两种经典的开源虚拟化技术,看看谁优谁劣?kvm真的好用吗?xen为什么会被kvm所打败?
2、xen和kvm的简单发展背景 楼主刚接触虚拟化时,除了VMware之外,玩的就是xen。Xen第一次面世是在2003年,由剑桥大学开发,后被Citrix所收购,当时就可以通过半虚拟化技术实现对包括x86-64 多个平台的虚拟化支持。 从Xen发布到现在,随着技术的进步,Xen的虚拟化技术也在不断的优化和改进自身的架构和技术,使之保持与时俱进的技术先进性,并不断成熟。从早期的xen2.0(只支持32位CPU)到具有突破意义的xen3.0版本(真正能企业级商用),再到现在的4.X版本,xen用自己的实力一次次的证明了自己。 那有人会问:我们的超融合acloud用的是xen虚拟化技术吗?答案是no!目前用的最多的开源虚拟化技术是kvm,这是为什么呢? 2006年10月以色列公司Qumranet发布kvm,同年12月将kvm合入内核(Linux 2.6.20rc),2007年2月Linux2.6.20正式版发布。2008年9月Redhat以1.07亿美元收购Qumranet。2009年9月RHEL5.4开始支持kvm(同时支持Xen)但是2010年11月发布的RHEL6.0之后仅支持kvm。 Kvm是一个开源的全虚拟化方案,目前支持的体系结构有:x86(32位,64位)、IA64、PowerPC、S390;它依赖x86硬件支持:Intel VT-x/ AMD-V;kvm作为Linux内核模块,使得linux内核成为虚拟化角色中的hypervisor。
3、架构对比 Xen作为最优秀的半虚拟化引擎,在基于硬件的虚拟化帮助下,现在也完全支持虚拟化MS Windows。xen被设计成一个独立的内核,它只需要Linux执行 I/O,这样使得它非常的强大,并且它有自己的调度程序、内存管理器、计时器和机器初始化程序。Domain 0(特权虚拟机)是其他虚拟机的管理者和控制者,可以构建其他更多Domain,并管理虚拟设备。它还能执行管理任务,比如虚拟机的休眠、唤醒和迁移其他虚拟机。 Xen通过hypervisor软件访问物理层硬件,实现在一台单独的计算机上运行多个各自独立、彼此隔离的子操作系统。Hypervisor指挥硬件访问和协调来自各子系统的请求。 Xen环境中,主要是虚拟机控制器(VMM),也叫Hypervisor。Hypervisor层硬件与虚拟机之间,是最先被载入到硬件的第一层。Hypervisor载入就可以部署虚拟机。在Xen中的Domain(域)由Xen控制,可高效的利用CPU资源。Domain可以分为Domain0,Domain1,Domain2··· Domain0:属于有特权的Domian。在虚拟机中,Domain0具有很高的特权,负责一些专门的工作,并提供虚拟的资源服务。由于Hypervisor中不包含任何与硬件对话的驱动,也没有与管理对话的接口,这些驱动就有Domain0完成。 Domain1,Domain2···:属于无特权的Domain,管理员利用Xen工具通过Domain0来创建其他虚拟机Domain1,Domian2···Domain0是其他虚拟主机的管理者和控制者,Domain0可以构建其他更多的Domain并管理虚拟设备。
KVM 全称是 Kernel-Based Virtual Machine。KVM是嵌入在Linux操作系统标准内核中的一个虚拟化模块,是基于 Linux 内核实现的。KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。 KVM能够将一个Linux标准内核转换成为一个VMM,嵌有KVM模块的Linux标准内核可以支持通过kvm tools来进行加载GuestOS。所以在这样的操作系统平台下,计算机物理硬件层上直接就是VMM虚拟化层,而没有独立出来的Host OS操作系统层。在这样的环境中Host OS就是一个VMM。Guest OS的CPU指令不用再经过Qemu转译,直接运行,大大提高了速度,KVM通过/dev/kvm暴露接口,用户态程序可以通过ioctl函数来访问这个接口。 KVM内核模块本身只能提供CPU和内存的虚拟化,所以它必须结合QEMU才能构成一个完整的虚拟化技术,这就是qemu-kvm。 作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu。IO 的虚拟化,比如存储和网络设备就交给 Linux 内核和Qemu来实现。 Qemu将KVM整合进来,通过ioctl调用/dev/kvm接口,将有关CPU指令的部分交由内核模块来做。kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备。qemu模拟IO设备(网卡,磁盘等),kvm加上qemu之后就能实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以称之为qemu-kvm。Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬件,Guest OS认为自己和硬件直接打交道,其实是同Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。由于所有的指令都要从Qemu里面过一手,因而性能较差。 Qemu模拟其他的硬件,如Network, Disk,同样会影响这些设备的性能,于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能。
模块二:圆桌讨论话题1:你在工作中接触过哪种虚拟化技术?你认为xen和kvm两种虚拟化技术各自的优缺点是什么?(可以从性能、兼容性、节点扩展性、厂商社区支持度等多方面讨论)
话题2:目前生态圈对kvm的支持是最好的,你认为有哪些原因导致了这种现状?
如果你对虚拟化技术有自己的研究,或者你对虚拟化技术很感兴趣,欢迎大家从技术的层面上对以上问题进行探讨。如您还有其他想了解疑问,欢迎回帖提问补充 !
模块三:圆桌互动 关于虚拟化技术大家如果有其他的疑问,欢迎在本帖下面留言,我会知无不言,大家一起学习一起成长! 回帖格式:我还想了解+具体的虚拟化相关的知识点... 凡是有效提问者,可额外获得20S豆奖励哦;
讨论时间:2020年2月17日---2020年2月24日
【奖品设置】 1、基础回帖奖:凡有效回帖者可获得20S豆奖励;(凡有效提问者可额外获20S豆奖励) 2、参与幸运奖:本帖设置800S豆回帖奖励,每次回复有机会获得20S豆; 3、优秀回复奖:凡回复的内容,被管理员设置为优秀回复的,即可获得100S豆打赏! 4、最佳回复奖:活动结束后,由话题发起人评选出1位最佳回复者,赠送热门学习书籍《KVM实践》一本;
本期最佳回复用户
【回帖规则】 1、回复须与主题相关且为原创,如回复无实质性或非原创内容,管理员将判定为灌水,进行删除处理。 2、如恶意抄袭,以不良手段获取礼品行为,一经发现取消获奖资格,并对账号进行1月以上禁言警示。 3、以上多重奖励可叠加发放,可盖楼回复但每个帖子回帖仅奖励一次,活动结束后将进行统一发放。
|