【技术圆桌】第4期:虚拟化技术哪家强?xen vs kvm,欢迎回帖交流!
  

不懂就问 64333人觉得有帮助

{{ttag.title}}
技术圆桌第4期.png

大家好,我是社区技术顾问——不懂就问,主要从事虚拟化、系统、网络等方面工作,受管理员小姐姐所邀参与社区【技术圆桌】话题发起人活动,与大家一起讨论一个经典的问题: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、架构对比
686525e49f4a16d477.png
Xen作为最优秀的半虚拟化引擎,在基于硬件的虚拟化帮助下,现在也完全支持虚拟化MS Windows。xen被设计成一个独立的内核,它只需要Linux执行 I/O,这样使得它非常的强大,并且它有自己的调度程序、内存管理器、计时器和机器初始化程序。Domain 0(特权虚拟机)是其他虚拟机的管理者和控制者,可以构建其他更多Domain,并管理虚拟设备。它还能执行管理任务,比如虚拟机的休眠、唤醒和迁移其他虚拟机。
379655e49f4cdc27c9.png
  • 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并管理虚拟设备。











824225e49f51f78f87.png 304915e49f52f8558a.png

  • 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实践》一本;
630965e49f701e9e58.png


本期最佳回复用户
423825e6732a713f5d.png


【回帖规则】
1、回复须与主题相关且为原创,如回复无实质性或非原创内容,管理员将判定为灌水,进行删除处理。
2、如恶意抄袭,以不良手段获取礼品行为,一经发现取消获奖资格,并对账号进行1月以上禁言警示。
3、以上多重奖励可叠加发放,可盖楼回复但每个帖子回帖仅奖励一次,活动结束后将进行统一发放。

↓↓↓
欢迎大家回帖补充/提问交流

蚊子 发表于 2020-2-17 20:46
  
KVM更好一些吧,大厂的虚拟化引擎好像很多都是基于kvm进行二次开发的,毕竟kvm免费开源
新手606176 发表于 2020-2-17 11:36
  
为楼主点赞,希望楼主多多分享干货!
静态路由 发表于 2020-2-17 12:03
  
楼主你好,我还想了解,KVM,vmware,Xen 这些一般是什么场景下的最佳实践,还有就是K8S平台物理机跑什么虚拟化比较合适。
灵峰气韵 发表于 2020-2-17 13:13
  
最新技术千千万,找到最适合的最重要
厌児 发表于 2020-2-17 13:55
  
我现在关于虚拟化技术了解还不是很多,借楼主的帖子多学习一点。谢谢呢
新手585731 发表于 2020-2-17 16:12
  
自己厨房做饭,需要自己有地建个厨房且还要买锅碗瓢盆柴米油盐等,此外,吃完总要洗碗刷锅等运维吧,就是私有云。

到饭店吃饭,你只是饭店其中一个客户,按需胡吃海塞吃完结账抹嘴走人,餐馆后厨如何安排做菜顺序并加快出菜速度就是负载均衡和虚拟化概念,就是公有云。

请厨师到家里上门做饭则属于典型的混合云,在资产安全的情况下有限使用公有云。

饭店只针对某个特定群体如学生开放,同时可能还会有学生在饭店做兼职。这就相当于社区云。

饭店比较大,自己也比较有钱,于是到饭店租了个包间,无论我用不用,我租用的期限都不能给其他人使用,这就是托管云。

自己朋友来,厨房能力不足,于是全部去饭店吃,这是私有云转公有云。
feeling 发表于 2020-2-17 16:49
  
了解的不是很多,用了hyper-v,感觉还可以,但是维护起来不太方便。
平凡的小网工 发表于 2020-2-17 22:21
  
现在就是想知道X86架构和非X86架构的差别。
盘藤 发表于 2020-2-18 07:32
  
学习知识,谢谢!
发表新帖
热门标签
全部标签>
GIF动图学习
每日一问
信服课堂视频
技术笔记
项目案例
在线直播
产品连连看
技术咨询
技术圆桌
专家分享
SDP百科
新版本体验
功能体验
畅聊IT
答题自测
问题分析处理
原创分享
网络基础知识
安装部署配置
安全攻防
上网策略
每日一记
排障笔记本
专家问答
VPN 对接
SANGFOR资讯
产品预警公告
MVP
升级
测试报告
日志审计
流量管理
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
技术顾问
信服故事
标准化排查
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人