对kvm,qemu等的理解

https://www.cnblogs.com/liuruolin/p/kvm.htmlhtml

首先要理解什么是虚拟化linux

虚拟化技术服务器

系统虚拟化是将底层物理设备与上层操做系统、软件分离的一种去耦合技术,在一台物理机器上逻辑的划分出多台机器。
• 虚拟化的目标是实现IT资源利用效率和灵活性的最大化网络

而后要了解Hypervisor架构

hypervisor:一种运行在物理服务器和操做系统之间的中间层软件,能够容许多个操做系统和应用共享一套基础物理硬件。能够将hypervisor看作是虚拟环境中的“元”操做系统,能够协调访问服务器上的全部物理设备和虚拟机,因此又称为虚拟机监视器(virtual machine monitor)。hypervisor是全部虚拟化技术的核心,非中断的支持多工做负载迁移是hypervisor的基本功能。当服务器启动并执行hypervisor时,会给每一台虚拟机分配适量的内存,cpu,网络和磁盘资源,而且加载全部虚拟机的客户操做系统。ide

详细可见https://www.ibm.com/developerworks/cn/linux/l-hypervisor/,讲的很不错工具

开始说KVM性能

kvm就是一种中间件,是一个linux的内核模块,将linux变成一个hypervisor,能够虚拟化cpu和内存,在系统须要虚拟化功能的时候,内核把kvm模块调入内存中运行。但用户没法直接控制内核,因此须要一个处于linux内核和用户之间的一个桥梁-qemu操作系统

QEMUhtm

qemu是一个完整独立的虚拟化方案,能够对各类底层硬件进行虚拟,用于模拟用户空间,好比I/O,kvm须要借助qemu

QEMU-KVM

kvm运行在内核空间,qemu运行在用户空间,二者结合起来,其中kvm实现对cpu和内存的虚拟化,qemu实现对其余硬件的虚拟化(好比网卡, 硬盘)和对虚拟硬件的调用管理,这样用户建立的虚拟机的cpu指令就不用通过qemu转译,能够直接运行,性能获得很大的提高。

Libvirt

libvirt是目前使用最为普遍的对KVM虚拟机进行管理的工具和API,libvirt调用qemu-kvm来管理虚拟机。我的理解它就是给用户提供对虚拟机控制的一个工具,能够用命令也能够用图形化对虚拟机进行控制,使用 C 语言编写,能够由 Python,Ruby, Perl, PHP, Java 等语言调用。能够操做包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。

综上可见,kvm和qemu就是两种不一样的hypervisor,下图中第一个就是广泛的虚拟化结构图,

对kvm,qemu等的理解

图二就是qemu-kvm架构的虚拟化结构图

对kvm,qemu等的理解