kvm 虚拟化技术原理_kvm虚拟化技术原理 - CSDN
  • 版权声明:转载请注明出处 JmilkFan_范桂飓:http://blog.csdn.net/jmilk https://blog.csdn.net/Jmilk/article/details/51853511 ...KVM虚拟化架构 devkvm QEM...

    版权声明:转载请注明出处 JmilkFan_范桂飓:http://blog.csdn.net/jmilk https://blog.csdn.net/Jmilk/article/details/51853511

    目录

    KVM虚拟化架构

    这里写图片描述

    KVM是嵌入在Linux操作系统标准内核中的一个虚拟化模块,它能够将一个Linux标准内核转换成为一个VMM,嵌有KVM模块的Linux标准内核可以支持通过kvm tools来进行加载的GuestOS。所以在这样的操作系统平台下,计算机物理硬件层上直接就是VMM虚拟化层,而没有独立出来的HostOS操作系统层。在这样的环境中HostOS就是一个VMM。

    每个由KVM创建的GuestOS都是HostOS(或VMM)上的一个单个进程。而在GuestOS上的User-space中运行的Applications可以理解为就是进程中的线程。

    需要注意的是:KVM只是虚拟化解决方案的一部分,想要实现全虚拟化,还需要其他的条件:
    1. CPU处理器提供的虚拟化支持(VT-x 硬件辅助虚拟化,可以为GuestOS创建虚拟化处理器,本质是对寄存器的隔离模拟和对指令集的划分)。
    2. 内存可以通过kvm虚拟化成独立的虚拟化地址(/dev/kvm)
    3. I/O虚拟化(QEMU)

    ==> KVM虚拟化 = KVM内核模块 + /dev/kvm + QEMU

    /dev/kvm

    Linux操作系统标准内核中的KVM内核模块生成了一个名为/dev/kvm的设备,有了/dev/kvm设备,使得GuestOS的地址空间(内存地址、磁盘地址)能够独立于标准内核或其他任何GuestOS的地址空间。Linux操作系统目录结构包含的/dev目录树下的设备对于所有User-space进程或线程(无论是在GuestOS上,还是在VMM上)来说都是通用的,但是每个打开/dev/kvm设备的不同的进程或线程,所能使用的都是唯一且各不相同的地址映射(为了支持GuestOS间的隔离)。

    KVM内核模块通过/dev/kvm设备提供了内存虚拟化,给予GuestOS与内核或者其他GuestOS相对独立的地址空间。每个GuestOS都有自己的地址空间,并且这些地址空间是在实例化GuestOS时创建映射的。映射给GuestOS的物理内存实际上是映射给这个GuestOS在VMM中相应进程的虚拟内存。
    有两种支持Guest地址到Host(VMM)地址的转换方法:

    • 应用LinuxOS维护的一组影子页表(shadow page table)
    • CPU也可以通过在访问未经映射的内存位置时使用VMM(主机内核)来支持内存转换进程。

    所以总的来说,/dev/kvm设备的作用就是:将不同的GuestOS之间的地址隔离,或将GuestOS和HostOS(VMM)之间的地址隔离

    QEMU

    QEMU是一个I/O虚拟化解决方案,能够对一个完整的计算机物理层环境进行虚拟化(EG. 磁盘、图形适配器、网络设备)。

    在GuestOS中生成的所有I/O请求都会被QEMU中途截获,并重新发送到QEMU进程模拟的User Mode中。

    Openstack、KVM、QEMU 的关系

    KVM 用来模拟 CPU 的运行,但缺少了对 Network 和 I/O 的支持。QEMU-KVM 是一个完整的模拟器,它基于 KVM 上,提供了完整的 Network 和 I/O 支持。其中 Openstack 为了跨 VM 性,所以不会直接控制 QEMU-KVM,而是通过 libvit 的库去间接控制 QEMU-KVM 。

    KVM的虚拟化实现

    这里写图片描述

    KVM内核模块为Linux标准内核引入了一种除现有的Kernel ModeUser Mode之外的新进程模式。这种新模式就称为Guest Mode模式,顾名思义,它用来执行GuestOS的代码。
    Linux标准内核的执行模式可以针对不同的运行内容和目的进行定义。Guest Mode的存在就是为了执行GuestOS的代码,但是只针对那些非I/O的代码。I/O代码还需要QEMU来作为支持。

    GuestOS可以在两种模式下运行:

    • 在Guest Mode中运行的GuestOS可以支持标准的内核。
    • 在User Mode下运行的GuestOS则支持自己的内核和User-space(Applications)。

    相同的是,GuestOS只能够在User Mode下执行I/O操作,而且这是单独使用QEMU-KVM进行管理的。

    展开全文
  • KVM虚拟化技术:实战与原理解析》不仅系统介绍了KVM虚拟机的功能、特性和使用方法,而且还深入地剖析了KVM虚拟机的核心技术和工作原理,对KVM做了全面而透彻的讲解。
  • 1、软件虚拟化和硬件虚拟化:实现虚拟化的重要一步在于:虚拟化层必须能够截获计算元件对物理资源的直接访问,并将其重定向到虚拟资源池中。硬件虚拟化,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持 ...

    1、软件虚拟化和硬件虚拟化:实现虚拟化的重要一步在于:虚拟化层必须能够截获计算元件对物理资源的直接访问,并将其重定向到虚拟资源池中。硬件虚拟化,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持

    2、准虚拟化与全虚拟化:改动客户操作系统,使他以为自己运行在虚拟环境下,能够与虚拟机监控协同工作叫做准虚拟化,准虚拟化弱化了对虚拟机特殊指令的被动截获要求,需要修改客户机操作系统的源代码实现主动通知

    3、内存管理:内存页面共享通过一项名为内核同页合并ksm)的内核功能来支持。KSM扫描每个虚拟机的内存,如果虚拟机拥有相同的内存页面,将它合并到一个在虚拟机之间共享的页面,仅存一个副本。如果一个客户机尝试更改这个共享页面,他讲得到自己的专用副本

    4、kvm的作用:kvm仅支持硬件虚拟化,他打开并初始化系统硬件以支持虚拟化的运行,在被内核加载的时候,kvm模块会先初始化内部的数据结构,检测当前的cpu,打开cpu控制寄存器的cr4中的虚拟化控制开关,执行VMXON指令将宿主操作系统置于虚拟化模式种的根模式,最后,kvm模块创建特殊设备/dev/kvm并等待来自用户空间的命令,接下来虚拟机的创建和运行将是一个用户空间的程序qemu与kvm配合交互过程

    5、处理器中的内存管理单元(MMU)是通过页表的形式将程序运行的虚拟地址转换成为物理内存地址。在虚拟机模式下,内存管理单元的页表则必须在一次查询的时候完成俩次地址转换,客虚地址-->客物地址-->真物地址

    解决方案:影子页表,客户机运行的时候,处理器使用的页表不是客户机操作系统维护的页表,而是kvm模块根据这个页表维护的另外一套影子页表,但他开销蛮大的,intel的EPT技术解决,即通过·引入第二级页表来描述客户机虚拟地址和真是物理地址的转换,硬件可以自动进行俩级转换生成正确的内存访问地址,kvm称二维分页机制 (影子:单层表;ERT:俩层表)

    VPID:虚拟处理器标志,是在硬件上对TLB资源管理(tlb用于缓存页表)的优化,通过在硬件上为每个TLB项增加一个标志,用于不同虚拟处理器的地址空间,从而区分开hypervisor和不同处理器的TLB。

    6、内存过载使用:内存交换swapping + 气球+页共享(ksm)

    7、总的来说,内存访问密集型的应用,使用huge page 可以提高客户机性能,但注意大页内存不能被换出(swap out),也不能使用气球机制自动增长

    8、buffer/cache:前者缓存超级块、inode信息,后者缓存文件信息;free命令显示的总内存是除去内核执行文件占用内存和一些系统保留的内存之后使用的内存 (buffer/cache),查内存用dmesg     

    9、Cache写机制:Write-through与Write-back    http://witmax.cn/cache-writing-policies.html

                 Write-through(直写模式)在数据更新时,同时写入缓存Cache和后端存储。此模式的优点是操作简单;缺点是因为数据修改需要同时写入存储,数据写入速度较慢.  Write-back(回写模式)在数据更新时只写入缓存Cache。只在数据被替换出缓存时,被修改的缓存数据才会被写到后端存储。此模式的优点是数据写入速度快,因为不需要写存储;缺点是一旦更新后的数据未被写入存储时出现系统掉电的情况,数据将无法找回。  

    10、半虚拟化驱动:virtio,i/o频繁时cpu过高;  qemu是全虚拟化模拟,vm频繁进出exit;VT-d是设备直接分配   。。。SR-IOV使网卡产生多个独立的虚拟网卡

    展开全文
  • XEN 与 VMware ESXi,Hyper-V 以及 KVM 特点比较:XEN 有简化虚拟模式,不需要设备驱动,能够保证每个虚拟用户系统相互独立,依赖于 service domains 来完成一些功能;Vmware ESXI 与 XEN 比较类似,包含设备驱动...

    XEN 与 VMware ESXi,Hyper-V 以及 KVM 特点比较:

    XEN 有简化虚拟模式,不需要设备驱动,能够保证每个虚拟用户系统相互独立,依赖于 service domains 来完成一些功能;

    Vmware ESXI 与 XEN 比较类似,包含设备驱动以及管理栈等基本要素,硬件支持依赖于 VMware 创建的驱动;

    Hyper-V 是基于 XEN 管理栈的修改;

    KVM 与 XEN 方式不同,KVM 是以 Linux 内核作为管理工具得。

    虚拟机的体系结构

    XEN 体系结构


    图 3. XEN 体系结构图
    图 3. XEN 体系结构图

    一个 XEN 虚拟机环境主要由以下几部分组成:

    XEN Hypervisor;

    Domain 0 —— Domain Management and Control(XEN DM&C);

    Domain U Guest(Dom U)

    下图 4 显示除了各部分之间的关系:


    图 4. Xen 三部分组成之间关系图
    图 4. Xen 三部分组成之间关系图

    XEN Hypervisor :

    XEN Hypervisor 是介于操作系统和硬件之间的一个软件描述层。它负责在各个虚拟机之间进行 CPU 调度和内存分配。XEN Hypervisor 不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。XEN Hypervisor 不会处理网络、存储设备、视频以及其他 I/O.

    Domain 0:

    Domain 0 是一个修改过的 Linux kernel,是唯一运行在 Xen Hypervisor 之上的虚拟机,它拥有访问物理 I/O 资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain 0 需要在其它 Domain 启动之前启动。

    Domain U:

    运行在 Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如 Linux、Solaris、FreeBSD 等其它 UNIX 操作系统。所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如 Windows 等。

    2.Hyper-V 体系结构


    图 5. Hyper-V 体系结构图
    图 5. Hyper-V 体系结构图

    Hyper-V 是微软提出的一种系统管理程序虚拟化技术,采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V 底层的 Hypervisor 运行在最高的特权级别下,微软将其称为 ring -1(而 Intel 则将其称为 root mode),而虚机的 OS 内核和驱动运行在 ring 0,应用程序运行在 ring 3 下,这种架构就不需要采用复杂的 BT(二进制特权指令翻译)技术,可以进一步提高安全性。从架构上讲 Hyper-V 只有“硬件-Hyper-V-虚拟机”三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。

    Hyper-V 支持分区层面的隔离。分区是逻辑隔离单位,受虚拟机监控程序支持,并且操作系统在其中执行。Microsoft 虚拟机监控程序必须至少有一个父 / 根分区,用于运行 64 位版本的 Windows Server 2008 操作系统。虚拟化堆栈在父分区中运行,并且可以直接访问硬件设备。随后,根分区会创建子分区用于承载来宾操作系统。根分区使用虚拟化调用应用程序编程接口 (API) 来创建子分区。

    分区对物理处理器没有访问权限,也不能处理处理器中断。相反,它们具有处理器的虚拟视图,并运行于每个来宾分区专用的虚拟内存地址区域。虚拟机监控程序负责处理处理器中断,并将其重定向到相应的分区。Hyper-V 还可以通过输入输出内存管理单元 (IOMMU) 利用硬件加速来加快各个来宾虚拟地址空间相互之间的地址转换。IOMMU 独立于 CPU 使用的内存管理硬件运行,并用于将物理内存地址重新映射到子分区使用的地址。从系统的结构图,我们可以看出来 Hyper-V 与 Xen 的架构很相似。


    图 6. Vmware ESXI 体系结构图
    图 6. Vmware ESXI 体系结构图

    由上图我们可以看出来管理工具也是直接嵌入到了 ESXi vmKernel 中,没有再分化出单独的管理工具,这一点与 Xen 是相区别的。


    图 7. KVM 体系结构图
    图 7. KVM 体系结构图

    KVM 是一个独特的管理程序,通过将 KVM 作为一个内核模块实现,在虚拟环境下 Linux 内核集成管理程序将其作为一个可加载的模块可以简化管理和提升性能。在这种模式下,每个虚拟机都是一个常规的 Linux 进程,通过 Linux 调度程序进行调度。

    通过以上四种虚拟机的体系结构图,我们可以看出他们在整个系统中的位置,以及相互之间的区别。

    回页首

    XEN 工作原理

    上面我们针对 Xen 的体系结构进行了简单的描述,我们知道 Xen 主要由 Xen Hypervisor,Domain0,DomainU 三部分组成。下面通过 Domain 0 与 Domain U 的通信以及这三部分的交互来探讨一下 Xen 的工作原理。

    之前我们已经提到过 Domain U 分为 PV 客户系统和 HVM 客户系统两种,我们首先讨论一下 PV 客户系统,也就是半虚拟化操作系统工作原理。

    首先我们需要知道在 Domain 0 中有两个驱动 Network Backend Driver 和 Block Backend Driver,它们分别用来处理来自 Domain U 的网络和本地磁盘请求。由于 Xen Hypervisor 不会支持网络和磁盘请求的,因此一个 PV(半虚拟化)客户系统必须通过和 Xen Hypervisor、Domain 0 通信,从而来实现网络和磁盘请求。由于 Xen 文档中已经探讨过 PV 客户系统如何将一个数据写到本地硬盘,下面我们就来讨论一下 PV 客户系统如何将一个数据发送到网络中去。在这之前我们首先要了解到一点,那就是 Domain U PV Guest 中也包括两个驱动“PV Network Driver”和“PV Block Driver”,它们分别也是用来处理发送网络和本地磁盘请求用的,这与 Domain 0 中的两个驱动是相对应的。

    当一个 PV 客户系统的网络设备驱动程序接收到一个发送数据请求的时候,并且通过 Xen Hypervisor 发送数据到本地网络设备(网卡之类的设备)中,这个网络设备是和 Domain 0 共享的。在 Domain 0 和 Domain U 之间存在一个事件通道(event channel),通过该通道二者进行异步的域间中断通信。Domain 0 会接收到一个来自 Xen Hypervisor 的中断,触发 PV Network Backend Driver 访问上述网络设备,读取来自 PV 客户系统的数据,然后将这些数据发送出去。

    下图中事件通道表示为连接 Domain 0 与 Domain U 的一个区域,这是系统工作流的一个简化。事实上事件通道运行在 Xen Hypervisor 中,通过 Xenstored(Xenstored 维护一个信息档案,包括内存和建立在 Domain 0 与 Domain U 之间的事件通道。Domain 0 通过改变这个档案来设置和其他虚拟机的设备通道)中的特定中断实现,提供 Domain 0 与 Domain U 之间的快速共享网络设备,见图 8。


    图 8. Domain 0 与 Domain U PV Guest 通信示意图
    图 8. Domain 0 与 Domain U PV Guest 通信示意图

    上面我们已经分析了 PV 客户系统的工作原理,下面我们再简要的介绍一下 HVM 客户系统的工作原理。

    由于一个 HVM Guests 虚拟机中没有上面提到得 PV driver,所以 Xen 在 Domain 0 中为每一个 HVM Guest 都启动一个守护进程 Qemu-dm 处理来自客户系统的网络和磁盘请求,所以当一个 HVM Guest 有相应的网络和 I/O 请求的时候,它就会直接与 Domain0 中和它相对应的 Qemu-dm 来进行交互,通过 Domain 0 最终达到访问网络设备或者磁盘的目的。见下图 9:


    图 9. Domain 0 与 Domain U HVM Guest 通信示意图
    图 9. Domain 0 与 Domain U HVM Guest 通信示意图

    结束语

    通过这一部分的介绍,我们了解了 Xen 目前的发展及现状,另外我们详细的说明了如何在 Fedora13 下安装 Xen,以及 Xen 下一些基本操作,再这之后我们又讨论了一下 Xen 与 VMware ESXi,Hyper-V 以及 KVM 异同点,最后我们通过示例来讲解了一下 Xen 的工作原理。本系列的第二部分我们将阐述如何搭建 Xen 的开发环境、Xen 下开发需要具备的相关技术以及 Xen 下的如何利用 XenAPI 做开发,最后通过一个例子来演示。

    出处:https://www.server110.com/xen/201404/10378.html

    https://wenku.baidu.com/view/548ccc46bb1aa8114431b90d6c85ec3a87c28bf5.html

    展开全文
  • 虚拟化模型下图中显示了虚拟化模型 处于底层的是整个物理系统,主要包括处理器、内存和输入输出设备。 在物理设备之上,运行的是虚拟监控器(VMM),也称为Hypervisor。...KVM支持嵌套虚拟化技术,只是该技术没有达到

    虚拟化模型

    下图中显示了虚拟化模型
    处于底层的是整个物理系统,主要包括处理器、内存和输入输出设备。
    在物理设备之上,运行的是虚拟监控器(VMM),也称为Hypervisor。虚拟机监控器的主要职能是:管理真实的物理硬件平台,并为每个虚拟客户提供对应的虚拟硬件平台。
    虚拟化模型

    其实,在每个虚拟机中,我们也可以运行自己的虚拟机监控器,这种情况我们可以称为嵌套虚拟化。KVM支持嵌套虚拟化技术,只是该技术没有达到非常稳定和成熟的状态。

    一个X86平台的核心是其中的处理器,X86平台虚拟化技术的核心部分是处理器的虚拟化。只要处理器虚拟化技术支持“截获重定向”,内存和输入输出设备的虚拟化都可以基于虚拟器虚拟化技术之上实现。在处理器虚拟化基础之上,为了增强虚拟机的性能,内存虚拟化和IO虚拟化的新技术也不断加入到X86虚拟化技术之中。X86平台虚拟化技术从开始的单一处理器开始,逐步涉及芯片组、网卡、存储设备以及GPU的虚拟化。

    KVM框架

    我们将虚拟机分为两种:称之为类型一类型二

    类型一

    “类型一”虚拟机是在系统上电之后首先加载运行虚拟机监控程序,而传统的操作系统则是在运行在其创建的虚拟机中。从某种意义上来说,类型一的虚拟机监控程序可以视为是一个特别为虚拟机而优化剪裁的操作系统内核。虚拟机监控程序作为运行在底层的软件层,必须实现诸如系统的初始化、物理资源的管理等操作系统的职能;它对虚拟机的创建、调度和管理,与操作系统对进程的创建、调度与管理有共通之处。这样的虚拟机监控程序一般会提供一个具有一定特权的特殊虚拟机,由这个虚拟机来运行需要供给用户日常操作和管理使用的操作系统环境。类型一的代表是:Xen、VMware、ESX/ESXi、和微软的Hyper-V。

    类型二

    类型二虚拟机监控程序,在系统上电以后仍然运行一般意义上的操作系统(也就是俗称的宿主机操作系统),虚拟机监控程序作为特殊的应用程序,可以视为操作系统功能的扩展。对于类型二的虚拟机来说,其最大的优势在于可以充分利用现有的操作系统。因为虚拟机监控程序通常不必自己实现物理资源的管理和调度算法,所以实现起来比较简洁。
    但是,这一类型的虚拟机监控程序既然依赖操作系统来实现管理和调度,就同样也会受到宿主操作系统的一些限制。例如:常常会因为无法对操作系统进行修改来优化虚拟机。KVM、VMware workstations 、virtualBox是属于类型二的虚拟机。

    KVM基本架构

    KVM架构
    KVM是一个基于宿主机操作系统的类型二虚拟机。类型二的虚拟机监控程序是作为内核的一个模块,其他的部分则尽可能充分利用Linux内核的既有实现,最大限度地重用代码。
    图中,左侧部分是一个标准的linux操作系统,可以是RHEL、Fedora、Ubuntu等。KVM内核模块在运行时需要加载进入内核空间运行。KVM本身不执行任何设备模拟,需要用户空间程序QEMU通过/dev/kvm接口设置一个虚拟客户机的地址空间,向它提供模拟的I/O设备,并将它的视频显示映射回宿主机的显示屏。

    KVM模块

    处理器虚拟化

    KVM模块是KVM虚拟机的核心模块,主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。
    为了软件的简介和性能,KVM仅支持硬件虚拟化。KVM的职责就是打开并初始化系统硬件以支持虚拟机的运行。以KVM在Intel的CPU上运行为例,在被内核加载的时候,KVM模块会先初始化内部的数据结构;做好准备之后,KVM模块检测系统当前的CPU,然后打开CPU控制寄存器CR4中的虚拟化模式开关,并通过执行VMXON指令将宿主操作系统(包括KVM模块)置于虚拟化模式中的根模式;最后,KVM模块创建特殊设备文件/dev/kvm 并等待来自用户空间的命令。接下来虚拟机的创建和运行将是一个用户空间的应用程序(QEMU)和KVM模块相互配合的过程。
    KVM模块与用户空间QEMU之间的通信接口主要是一系列针对特殊设备文件的IOCTL调用。
    在KVM模块加载之初,只存在/dev/kvm文件,而针对该文件的最重要的IOCTL调用就是创建虚拟机。这里,创建虚拟机可以理解成KVM为了某个特定的虚拟客户机(用户空间程序穿件并初始化)创建对应的内核数据结构。同时,KVM还会返回一个文件句柄来代表所创建的虚拟机。针对该文件句柄的IOCTL调用可以对虚拟机做相应的管理,比如创建用户空间的虚拟地址和客户机物理地址及真是内存物理地址的映射关系,再比如创建多个可供运行的虚拟处理器(vCPU)。同样,KVM模块会对每个创建出来的虚拟处理器生成对应的文件句柄,对虚拟处理器相应的文件句柄进行相应的IOCTL调用,就可以对虚拟处理器进行管理。
    针对虚拟处理器的最重要的IOCTL调用就是执行虚拟处理器。通过它,用户空间准备好的虚拟机在KVM模块的支持下,被置于虚拟化模式中的非根模式下,开始执行二进制指令。在非根模式下,所有敏感的二进制指令会被处理器捕捉到,处理器在保存现场之后自动切换到根模式下,由KVM决定如何处理(要么由KVM模块直接处理,要么返回用户空间交由用户空间程序处理)

    内存虚拟化

    实际上,内存虚拟化往往是一个虚拟机实现过程中代码量最大、实现最复杂的部分(至少,在硬件支持二维地址之前是这样)。处理器的内存管理单元(MMU)是通过页表的形式将程序运行的虚拟地址转换为物理内存地址。在虚拟机模式下,内存管理的页表则必须在一次查询的时候完成两次地址转换——除了要将客户机程序的虚拟地址转换为客户机物理地址之外,还需要将客户机物理地址转换成为真实物理地址。KVM模式开始使用了影子页表的技术来解决这个问题:在客户机运行的时候,处理器真正使用的页表不是客户机操作系统维护的页表,而是KVM模块根据这个页表维护的另外一套影子页表。
    影子页表实现复杂,并且有时候开销很大。为解决这个问题,新的处理器在硬件上做了增强(Intel的EPT技术)。通过引入第二级页表来描述客户机虚拟地址和真实物理地址的转换,硬件可以自动进行两级转换生成正确的内存访问地址,KVM将其称为二维分页机制
    处理器对设备的访问主要是通过IO指令和MMIO,其中IO指令会被处理器直接截获,MMIO会通过配置内存虚拟化来捕捉。但是外设的模拟一般并不由KVM模块负责。一般来说,只有对性能要求比较高的虚拟设备才会由KVM内核模块开直接负责。比如虚拟中断控制器和虚拟时钟,这样可以大量减少处理器的模式切换的开销。大部分的输入输出设备还是会交给下一节将要介绍的用户态程序QEMU来负责。

    QEMU设备模型

    QEMU本身是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能低下。它的优点是,在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机还可以与宿主机不是统一架构。作为一个存在已久的虚拟机,QEMU中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化,以及KVM用到的虚拟设备模拟(如,网卡、显卡、存储器和硬盘等等)。
    为了简化开发和代码重用,KVM在QEMU的基础上进行了修改。虚拟机运行期间,QEMU会通过KVM模块提供的系统调用进入内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行。遇到虚拟机进行输入输出操作,KVM模块会从上次的系统调用出口返回QEMU,由QEMU开负责解析和模拟这些设备。

    从QEMU角度来看,也可以说QRMU使用了KVM模块的虚拟化功能,为自己的虚拟机运行以来的虚拟设备,虚拟机运行时的用户操作环境和交互每一集一些针对虚拟机的特殊技术(诸如动态迁移),都是由QEMU自己实现的。

    Intel虚拟化技术

    Intel虚拟化技术是一系列硬件技术的集合,虚拟化监控机软件同构选择利用各项技术,从而提高虚拟化软件的性能或者实现各种不同的功能。
    如下图所示,Intel虚拟化技术可以分为三大类:

    • 处理器相关的,称为VT-x,是实现处理器虚拟化的硬件扩展,这也是硬件虚拟化的基础
    • 芯片组相关的,称为VT-d,是从芯片组的层面为虚拟化那个必要支持,通过它,可以实现诸如直接分配物理设备给客户机的功能
    • 输入输出设备相关的,主要目的是通过定义新的输入输出协议,使新一代的输入输出设备可以更好地支持虚拟化环境下的工作,比如Intel网卡自有的VMDq技术和PCI组织定义的单根设备虚拟化协议(SR-IOV)

    Intel虚拟化技术进化图

    展开全文
  • KVM虚拟化技术实战和原理解析》第一章和第二章读书笔记
  • kvm虚拟化技术:实战与原理解析 pdf扫描 图书详细介绍了kvm虚拟化技术的应用场景与原理
  • KVM虚拟化技术实战与原理解析 全书一共9章:第1章介绍了云计算和虚拟化的概念,并对KVM等几种流行的虚拟化技术做了比较;第2章介绍了KVM的基本架构、QEMU的作用以及Intel的硬件虚拟化技术;第3章详细讲解了KVM依赖的...
  • 资源共享----《KVM虚拟化技术:实战与原理解析》 资源共享----《KVM虚拟化技术:实战与原理解析》 资源共享----《KVM虚拟化技术:实战与原理解析》 资源共享----《KVM虚拟化技术:实战与原理解析》 资源共享----...
  • KVM虚拟化技术 实战与原理解析.pdf;KVM虚拟化技术 实战与原理解析.pdf
  • KVM虚拟化技术__实战与原理解析_带书签,KVM虚拟化技术__实战与原理解析_带书签,KVM虚拟化技术__实战与原理解析_带书签
  • KVM虚拟化技术__实战与原理解析 + Linux KVM虚拟化架构实战指南(带书签)
  • KVM虚拟化架构 devkvm QEMU KVM的虚拟化实现KVM虚拟化架构KVM是嵌入在Linux操作系统标准内核中的一个虚拟化模块,它能够将一个Linux标准内核转换成为一个VMM,嵌有KVM模块的Linux标准内核可以支持通过kvm tools来...
  • KVM 虚拟化介绍及原理

    2017-07-27 01:09:11
    KVM 虚拟化介绍及原理 kvm : Kernel-based Virtual Machine 虚拟化的目的:将底层硬件虚拟化,形成一个将既有的...虚拟化技术的分类、主流技术及实现其技术的应用1.模拟:Emulation ,硬件被模拟后的结果可以和上一
  •  第1章介绍了云计算和虚拟化的概念,并对KVM等几种流行的虚拟化技术做了比较;  第2章介绍了KVM的基本架构、QEMU的作用以 及Intel的硬件虚拟化技术;  第3章详细讲解了KVM依赖的硬件环境配置,编译和安装KVM...
  • kvm虚拟化原理

    2020-06-14 09:51:22
    如果把物理平台,包括CPU,内存,外设作为资源,那么对应的虚拟化技术就是平台虚拟化。 VMM(virtual machine monitor) 虚拟机监视器,也叫hypervisor。虚拟机监视器运行的环境叫做host,而虚拟出来的虚拟机成为guest...
  • KVM 虚拟化原理探究— overview标签(空格分隔): KVM写在前面的话本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验。同时希望借此系列博客,能够对KVM底层有一些清晰直观的认识,当然我没有通读...
  • KVM 虚拟化原理探究

    2018-12-12 17:03:01
    KVM 虚拟化原理探究— overview标签(空格分隔): KVM写在前面的话本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验。同时希望借此系列博客,能够对KVM底层有一些清晰直观的...
  • KVM虚拟化技术

    2020-06-09 17:10:18
    1. 为什么需要 CPU 虚拟化 X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件。x86 架构提供四个特权级别给操作系统和应用程序来访问硬件。 Ring 是指 CPU 的运行级别,Ring ...
  • kvm虚拟化技术 实战与原理解析》1、kvm原理简介2、kvm核心基础功能3、kvm管理功能4、kvm性能测试以及参考数据
1 2 3 4 5 ... 20
收藏数 4,199
精华内容 1,679
关键字:

kvm 虚拟化技术原理