参考:What Is the Difference between QEMU and KVM?

注意:上面参考文章有个错误,他把KVM算成类型一虚拟化,应该是类型2虚拟化。

关于类型一虚拟化和类型二虚拟化参考:Type 1 and Type 2 Virtualization

前言

QEMU和KVM之间的差异三言两语说不清楚。你无法说出他们是不同的,或者他们就是一个东西。或者他们都是Hypervisor

QEMU

QEMU本身并不是KVM的一部分,其本身就是以一个著名的开源虚拟机软件。QEMU是在用户空间运行的类型2 Hypervisor,用于执行硬件虚拟化,例如磁盘,网络,VGA,PCI,USB,串行/并行端口等。 它的灵活性在于它可以通过动态二进制转换(DBT)模拟CPU,允许为给定处理器编写的代码在另一个处理器上执行。 尽管QEMU可以独立运行 并 模拟虚拟机运行所需要的所有资源,但由于所有仿真都是在软件中执行的,因此速度非常慢。

与KVM关系

KVM是Linux内核的一个模块。 它是类型1型Hypervisor,仅支持硬件虚拟化(Intel VT或AMD-V)。上面说到QEMU运行速度慢,主要原因是Hypervissor模拟CPU的话(vCPU),针对vCPU的指令 与 针对物理CPU的指令 之间存在转换关系,这个转换关系必须有Hypervisor来做。可以想象这会对性能产生巨大影响。KVM仅支持硬件虚拟化,Intel VT 或 AMD-V 使vCPU的指令直接运行在物理CPU。这部分功能如果给QEMU的话,就会对QEMU的虚拟机提供硬件加速功能。事实上,KVM与QEMU的确这么做了,早期QEMU下面新建个了分支,QEMU-KVM,主要就是加入KVM给QEMU硬件加速特性。后来这两个分支合并了,现在你直接下载QEMU的代码就是支持KVM的,因此现在QEMU是加上是含有以前QEMU-KVM特性的。

QEMU简介的更多相关文章

  1. KVM和QEMU简介

    KVM/QEMU简介 KVM虚拟机是基于linux内核虚拟化,自linux2.6.20之后就集成在linux的各个主要发行版本中.它使用linux自身的调度器进行管理,所以相对于xen,其核心源码很少 ...

  2. Qemu事件处理机制简介

    Qmeu 采用了基于事件驱动的架构,所有的事件都在一个事件循环(event loop)中被处理,系统中默认的事件循环是在main-loop.c 中的主循环(main loop).我们也可以使用 –ob ...

  3. qemu 参数简介

    参数 示例 说明 -hda -hda /data/windows.img 指定windows.img作为硬盘镜像 -cdrom -cdrom /data/windows.iso 指定windows.i ...

  4. kvm/qemu/libvirt学习笔记 (1) qemu/kvm/libvirt介绍及虚拟化环境的安装

    kvm简介 kvm最初由Quramnet公司开发,2008年被RedHat公司收购.kvm全称基于内核的虚拟机(Kernel-based Virtual Machine),它是Linux的一个内核模块 ...

  5. 云计算之KVM简介(一)

    云计算之KVM简介(一) 因为很多人会将云计算和虚拟化弄混,我下面为大家介绍一下 云计算指的是资源使用和交互的一种模式 虚拟化指的是技术,可以将物理计算机虚拟成多个逻辑计算机(VMware)  他俩是 ...

  6. 剖析 Linux hypervisor--KVM 和 Lguest 简介

    慢慢弄清楚..   M. Tim Jones, 顾问工程师, Emulex Corp. M. Tim Jones 是一名嵌入式软件工程师,他是 Artificial Intelligence: A S ...

  7. KVM架构及模块简介

    1.简介 2.架构 3.KVM模块及QEMU 一.简介 KVM(Kernel Virtual Machine)基于内核的虚拟机.阿维·齐维迪(Avi Kivity)在一家名为Qumranet的初创企业 ...

  8. 001.Ceph简介概述

    一 Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同 ...

  9. KVM虚拟化技术(一)虚拟化简介

    一 .虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个 ...

随机推荐

  1. Java3d 案例程序

    今天偶尔翻出了很久以前写的java3d程序,很怀念曾经探索java3d解析.渲染ifc数据的日子 package com.vfsd.test0621; import java.applet.Apple ...

  2. Laravel 使用自己的类库三种方式

    虽然Composer使得我们可以重用很多现有的类库(例如packagist.org中的),但是我们仍然可能用到一些不兼容composer的包或者类库.另外在某一项目中,我们也可能会创建某一类库,而且可 ...

  3. 转 : 请问mysql如何确定一个库是主库还是从库。

    select user,host from mysql.user;SELECT Repl_slave_priv,Repl_client_priv,super_priv,host FROM mysql. ...

  4. NazoHell 攻略

    http://hell.one-story.cn/hell-start.html Level 0: http://nazohell.one-story.cn/nazohell-start.html 跳 ...

  5. idea中默认maven配置

    使用idea时,通常会配置自己的maven,但是发现每创建一个新项目都需要重新配置一遍,原来在idea中有一个默认配置,修改后就会全局生效,具体配置如下: 简单两步,配置完成.

  6. git clone一个仓库下的单个文件【记录】

    注意:本方法会下载整个项目,但是,最后出现在本地项目文件下里只有需要的那个文件夹存在.类似先下载,再过滤. 有时候因为需要我们只想gitclone 下仓库的单个或多个文件夹,而不是全部的仓库内容,这样 ...

  7. TypeScript之接口

    1.写法 // 属性 interface Person { name:string; age:number; hobby: string; } // 函数 interface  { todo(para ...

  8. Python 获取本月的最后一天

    一.需求 现在有一个场景,需要每月的最后一天,发送一封邮件. 二.获取本月最后一天 有没有办法使用Python的标准库轻松确定(即一个函数调用)给定月份的最后一天? 答案是有的,使用 datetime ...

  9. 创建包含CRUD操作的Web API接口2:实现Get方法

    本节是前一节的延续,上一节中我们已经为我们的Web API项目创建必要的基础设施. 在本节中,我们将在我们的控制器类中实现操作方法,这些方法用来处理HTTP GET请求. 根据Web API命名约定, ...

  10. React 了解学习

    1.nodejs安装程序https://nodejs.org/en/download/ create-react-app 类似 vs2017开发工具,集成了webpack 打包发布,loader和默认 ...