在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvm
kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
因为用到了上面两个东西,所以一般都称之为qemu-kvm。
libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。

Qemu

Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬件,Guest OS认为自己和硬件直接打交道,其实是同Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。

由于所有的指令都要从Qemu里面过一手,因而性能较差。

KVM

KVM是linux内核的模块,它需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存的相关如Intel的EPT和AMD的RVI技术,Guest OS的CPU指令不用再经过Qemu转译,直接运行,大大提高了速度,KVM通过/dev/kvm暴露接口,用户态程序可以通过ioctl函数来访问这个接口。见如下伪代码:

open("/dev/kvm")
ioctl(KVM_CREATE_VM)
ioctl(KVM_CREATE_VCPU)
for (;;) {ioctl(KVM_RUN)switch (exit_reason) {case KVM_EXIT_IO: case KVM_EXIT_HLT:}
}

KVM内核模块本身只能提供CPU和内存的虚拟化,所以它必须结合QEMU才能构成一个完成的虚拟化技术,这就是下面要说的qemu-kvm。

qemu-kvm

Qemu将KVM整合进来,通过ioctl调用/dev/kvm接口,将有关CPU指令的部分交由内核模块来做。kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备。qemu模拟IO设备(网卡,磁盘等),kvm加上qemu之后就能实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以称之为qemu-kvm。

Qemu模拟其他的硬件,如Network, Disk,同样会影响这些设备的性能,于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能。

libvirt

libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API。Libvirtd是一个daemon进程,可以被本地的virsh调用,也可以被远程的virsh调用,Libvirtd调用qemu-kvm操作虚拟机。

KVM-Qemu-Libvirt三者之间的关系相关推荐

  1. PHP-FPM,Nginx,FastCGI 三者之间的关系

    2019独角兽企业重金招聘Python工程师标准>>> 本文介绍 PHP-FPM,Nginx,FastCGI 三者之间的关系,以及 Nginx 反向代理和负载均衡的配置. PHP-F ...

  2. python和pycharm之间的关系_浅析python,PyCharm,Anaconda三者之间的关系

    一.它们是什么? 1.python Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C,Java,C++等,一种编程语言. 2.Anaconda Anaconda指的是一 ...

  3. anaconda中的python如何进行关联分析_浅析python,PyCharm,Anaconda三者之间的关系

    一.它们是什么? Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C,Java,C++等,一种编程语言. 2.Anaconda Anaconda指的是一个开源的Pytho ...

  4. 浅谈javascript中原型(prototype)、构造函数、对象实例及三者之间的关系

    转自:http://www.cnblogs.com/zhangwei412827/archive/2012/12/14/2816263.html 浅谈javascript中原型(prototype). ...

  5. 构造函数,对象原型,实例对象三者之间的关系

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 1.构造函数,原型对象,实例对象三者之间的关系 每创建一个函数,该函数都会自动带有一个prototype属性.该 ...

  6. 一次性掌握JDK、JRE、JVM的概念以及三者之间的关系【2021整理】

    一.JDK.JRE.JVM概念解析 JDK(Java Development Kit):Java开发工具包,开发人员用来构建Java应用程序的软件包. JRE(Java Runtime Environ ...

  7. Firewalld,iptables概述(netfilter和Firewalld,iptables三者之间的关系,四表五链,Firewalld防火墙的配置方发,SNAT,DNAT了解)

    文章目录 Firewalld,iptables概述 Firewalld了解 iptables了解 Firewalld和iptables的关系 netfilter Firewalld.iptables ...

  8. java map与set的区别_java 集合(list,set,map)三者之间的关系和区别

    原 java 集合(list,set,map)三者之间的关系和区别 一:先上一张关系图,让大家看的更明白. 备注:其中红色部分为实现,其他地方均为接口. 二:各自的特点. List 有序,可重复Arr ...

  9. 美股,港股和A股三者之间的关系和差别

    美股,港股和A股三者之间的关系: 美股,港股和A股三个股票市场是整个股市的重要组成部分,在整个股市中发挥着巨大作用. 美股,港股和A股三者之间的区别: (1)交易时间不同 美股:从每年4月到11月初采 ...

  10. worker进程和task进程区别_worker进程和task进程区别_Storm概念学习系列之Worker、Task、Executor三者之间的关系......

    不多说,直接上干货! Worker.Task.Executor三者之间的关系 Storm集群中的一个物理节点启动一个或者多个Worker进程,集群的Topology都是通过这些Worker进程运行的. ...

最新文章

  1. 论文阅读|How Does Batch Normalization Help Optimization
  2. 建立二叉树A【openjudge】
  3. JMeter入门(03)多台JMeter联合测试
  4. 我不想再活在别人的世界里
  5. java 反编译项目_Java 7 –反编译项目硬币
  6. 【计算机科学基础】整数和小数的进制转换
  7. SWT实现Text输入自动提示
  8. BOM配置与产品构造器
  9. 今天,Java 12 正式发布了!
  10. spring中的context:include-filter和context:exclude-filter的区别
  11. 百度网盘——下载限速问题解决方案(油猴(Tampermonkey)+PanDownload网页版+IDM)
  12. FreeBSD——艺术、科学、哲学概论
  13. html5 判断手机横竖屏,移动端判断横竖屏的5种解决方案
  14. 【九层之台】Web开发教程:0. 准备
  15. python编译 pyd 工具_windows平台 python生成 pyd文件
  16. OpenXML指定位置插入图片
  17. CSDN余额充值协议
  18. html改游戏聊天字体颜色,html点击按钮改变字体颜色怎么实现
  19. app目前第三方托管平台整理
  20. repost ACM算法竞赛生涯

热门文章

  1. MOS管好坏的判别方法
  2. 阿里云宣布进入 Serverless 容器时代,推出弹性容器实例服务 ECI
  3. centos7安装FTP
  4. SQL Server中的Merge关键字
  5. Material Design(十一)--CoordinatorLayout和自定义视图
  6. [转]Erlang 大量写入出警报
  7. 如何周密规划决策制定过程
  8. 以后所有内容均以摘要方式发布
  9. Linux基础操作优化
  10. 国内阿里Maven仓库镜像及自己收集镜像库