设为首页 收藏本站
查看: 2810|回复: 0

[经验分享] KVM基本原理及架构五-IO虚拟化

[复制链接]

尚未签到

发表于 2015-12-24 15:36:48 | 显示全部楼层 |阅读模式
KVM基本原理及架构五-IO虚拟化
5.2 Virtio
VirtioKVM中的一套半虚拟化驱动,最初是从别的虚拟化方案(Rusty Russelllguest)中移植过来的。通过Guest OSKVM内核的配合,提供高效的通信方式,性能出众。在传统的KVM虚拟化解决方案中,需要对虚拟机提供一个完整的虚拟设备,Guest OS通过标准的IO接口对虚拟设备进行操作,由于IO操作是敏感指令,会导致VM-Exit,此时需要使用较多的指令去捕获IO请求,当IO繁忙时,VMX模式切换会非常频繁,效率很低;而virtio在设备模拟层引入了半虚拟化的方法,即在虚拟机和KVM中分别实现相应前后端virtio驱动,通过该驱动接口进行通信,效率更高。两种方式的对比如下图所示。
http://blog.iyunv.com/data:image/png;base64,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

Virtio充分利用了全虚拟化和半虚拟化各自的优势,这种场景下,VM仍为全虚拟化虚拟机,这样可以充分利用硬件提供的虚拟化特性(VT-x),提供更好的虚拟化性能(比如CPU和内存的虚拟化),且Guest OS不需任何修改即可运行于虚拟化环境中;与此同时,virtio以半虚拟化驱动的形式,使前后端(VMVMM)的通信更加高效,在全虚拟化环境中提供更高效的IO方式,提升IO性能。
基于virtio的驱动程序架构如下图所示。
http://blog.iyunv.com/data:image/png;base64,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

KVM虚拟化环境中,每个虚拟机都是以系统进程方式运行的,virtio通信方式的实质是通过共享内存实现。大致通信过程如下:
1、    Virtio通过提供一个virt queue,将Guest OS的各种IO请求保存在其对应的缓冲区中;
2、    然后kickVMM处理(一次可提交多个请求)
3、    最终会调用到Qemu-kvmnotify函数,通知Qemu-kvm;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-155844-1-1.html 上篇帖子: KVM基本原理及架构六-KVM API 下篇帖子: KVM基本原理和架构二-基本原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表