问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

kvm和qemu的关系 kvm为什么没有做io虚拟化 半虚拟化和全虚拟化的区别 kvm是否在内

发布网友 发布时间:2022-04-26 19:14

我来回答

1个回答

热心网友 时间:2023-10-23 04:21

不同的基于KVM的虚拟化平台,可能会采用不同的虚拟化组件,目前主流的采用QEMU-KVM组件,但在不同的产品里版本有所不同,功能也有差异,下面就几个概念进行梳理下


KVM:Kernel-Based Virtual Machine 基于内核的虚拟机,是Linux内核的一个可加载模块,通过调用Linux本身内核功能,实现对CPU的底层虚拟化和内存的虚拟化,使Linux内核成为虚拟化层,需要x86架构的,支持虚拟化功能的硬件支持(比如Intel VT,AMD-V),是一种全虚拟化架构。KVM在2007年年2月被导入Linux 2.6.20内核中。从存在形式来看,它包括两个内核模块:kvm.ko  和  kvm_intel.ko(或kvm_amd.ko),本质上,KVM是管理虚拟硬件设备的驱动,该驱动使用字符设备/dev/kvm(由KVM本身创建)作为管理接口,主要负责vCPU的创建,虚拟内存的分配,vCPU寄存器的读写以及vCPU的运行。


QEMU:是一套由Fabrice Bellard编写的模拟处理器的自由软件,它是一个完整的可以单独运行的软件,可以独立模拟出整台计算机,包括CPU,内存,IO设备,通过一个特殊的“重编译器”对特定的处理器的二进制代码进行翻译,从而具有了跨平台的通用性。QEMU有两种工作模式:系统模式,可以模拟出整个电脑系统,另一种是用户模式,可以运行不同与当前硬件平台的其他平台上的程序(比如在x86平台上运行跑在ARM平台上的程序);其代码地址 http://git.qemu.org/qemu.git  ,有兴趣的同学可以自己去看看,目前最新的版本是2.7.0,在0.9.1及之前版本还可以使用kqemu加速器(可以理解为QEMU的一个插件,用来提高QEMU的翻译性能,支持Windows平台),但1.0以后版本就只能使用qemu-kvm(只支持Linux)进行加速了,1.3版本后QEMU和QEMU-KVM合二为一了。


QEMU-KVM:从前面对KVM内核模块的介绍知道,它只负责CPU和内存的虚拟化,加载了它以后,用户就可以进一步通过工具创建虚拟机(KVM提供接口),但仅有KVM还是不够的,用户无法直接控制内核去做事情(KVM只提供接口,怎么创建虚拟机,分配vCPU等并不在它上面进行),还必须有个运行在用户空间的工具才行,KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,并对其进行了修改,最后形成了QEMU-KVM。

在QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建,管理各种虚拟硬件,QEMU将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但kvm不能虚拟其他硬件设备,因此qemu还有模拟IO设备(磁盘,网卡,显卡等)的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化

当然,由于qemu模拟io设备效率不高的原因,现在常常采用半虚拟化的virtio方式来虚拟IO设备,另文再谈

综上所述,QEMU-KVM具有两大作用:

1.提供对cpu,内存(KVM负责),IO设备(QEMU负责)的虚拟

2.对各种虚拟设备的创建,调用进行管理(QEMU负责)


libvirt

顺带提一提libvirt,这是RedHat开始支持KVM后,大概是觉得QEMU+KVM方案中的用户空间虚拟机管理工具不太好用或者通用性不强,所以干脆搞了个libvirt出来,一个针对各种虚拟化平台的虚拟机管理的API库,一些常用的虚拟机管理工具如virsh(类似vim编辑器),virt-install,virt-manager等和云计算框架平台(如OpenStack,OpenNebula,Eucalyptus等)都在底层使用libvirt提供的应用程序接口。

libvirt主要由三个部分组成:API库,一个守护进程 libvirtd 和一个默认命令行管理工具 virsh。


总结:

目前来说,QEMU是一个独立的虚拟化解决方案,并不依赖KVM(它本身自己可以做CPU和内存的模拟,只不过效率较低),而KVM是另一套虚拟化解决方案,对CPU进行虚拟效率较高(采用了硬件辅助虚拟化),但本身不提供其他设备的虚拟化,借用了QEMU的代码进行了定制,所以KVM方案一定要依赖QEMU

即使后来RedHat后来开发了libvirt,也只能简单的认为是个虚拟机管理工具,仍然需要通过用户空间QEMU来与KVM进行交互


声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谷歌浏览器怎么设置成中文_谷歌浏览器设置中文语言 【谷歌浏览器技巧】谷歌浏览器如何更改语言? 史上最全ETF全解 证券ETF是深市的吗 怎样把莲藕肉丸子做的好吃? 高三语文小说赏析小说形象分析与答题技巧 人物形象题答题技巧 借助什么分析小说的人物形象 脖子旁边疼是什么原因 在群里不是好友怎么把群里人建另一个群 Hyper-V是什么类别的虚拟化 是操作系统级虚拟化还是半虚拟化? 好听的qq网名女生有哪些? 不用米家app米家智能电饭煲当前时间不准如何较正 微信被封了,没人帮助辅助解封怎么办? 现在新注册,怎么需要好友辅助才能注册啊!怎么辅助? 被封了没有好友辅助验证怎么办? 被封了没有好友辅助验证怎么办? 苹果手机知道客户端怎么保存图片 求一款可以单独存放照片并浏览的苹果APP 在手机照片里不会出现所存图 电脑系统盘可以重新分盘么? 苹果手机下载的app打开相册显示不了图片,也不能拍照。是什么原因呢,有什么操作能够解决 想重装系统,并把原来的系统盘(C盘)一分为二,其它分区不动,请教高手怎么做? 苹果手机不显示图片怎么回事 江苏启东特产是什么 重新分区系统盘不动还用装系统吗? 想把C盘D盘重新分区其它盘不动怎么操作? 不重装系统,不毁资料的情况下重新分盘. 苹果手机里的照片如何秘密保存,不被别人看见? 南京特产菊花脑的历史由来 请问,如何在不动系统的情况之下,讲硬盘的四个区重新分区,我是w7 64位系统 谢谢,请说的详细一些!!! 还款是分每个月还,还是到期还本付息呢 每个月都还款吗? 豆腐干梵蒂冈梵蒂冈 为什么豆腐干含碘高 哪些网站可以下载免费的中文版音效调试软件,效果比较丰富的? 哪种冰箱的冷冻室空间比较大?请大家推荐一些啊,要绝对够用的! 豆腐干是什么做的 哪里可以下载各种声音 有没有人能推荐一款冷冻室面积超大的冰箱 哪里可以下载到大自然中的各种音效,比如说“雷声、雨声,老虎声等” 在哪里可以下载到 动画人物说的话的音效? 比如数码宝贝里的人物变身时说的话  之类的 大容量家用双开门冷冻空间大的冰箱什么牌子的好? 那里下载各种音效? 沧州李氏族谱 河北沧州李氏家谱。请教大家 我沧州李氏长辈们 我沧州李氏辈分 义 万 任 长 文 玉后面的字哪位长辈或知情人士知道 请告知于我 俺家是河北人李氏家族是属于哪一支啊?,现在居住在天津 李氏的家族家训 沧州回族万氏家谱 沧州刘姓回族都有哪些起源?