1、KVM 是一个开源的系统虚拟化模块。它使用Linux自身的调度器进行管理。
•KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。
•可允许运行多个虚拟机,包括 Linux 和 Windows操作系统。
KVM的结构如下图所示
•KVM从存在形式看,是两个内核模块kvm.ko和kvm_intel.ko(对AMD处理器来说,就是kvm_amd.ko),这两个模块用来实现CPU的虚拟化,如果要让用户在KVM上完成一个虚拟机相关的操作,显然需要用户空间的东西,同时还包括IO虚拟化,
•KVM是Linux的一个模块。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作事情:还必须有一个用户空间的工具才行。这个用户空间的工具就是QEMU。它的特点是可虚拟不同的CPU。
2、qemu全称Quick Emulator。是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。
•qemu的功能大致分为两类:
1> 模拟(emulator)
2> 虚拟化(virtualizer)
•qemu是一个独立的虚拟化系统,可以不依赖kvm
•kvm只是通过内核对处理器进行了虚拟化,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案,QEMU+KVM.
3、qemu+kvm
•Qemu在最上层,将虚拟机的整体呈现到host用户上,可以理解成客户模式;Qemu通过中间层libkvm或者ioctl等控制/dev/kvm设备接口,从而掌握内核态中kvm驱动进行的资源分配,即用户态模式;kvm驱动接收用户态操作指令,控制虚拟机在内核态的资源分配,称之为内核模式。
•Kvm只是完成对cpu和内存进行虚拟化,需要依赖其他的虚拟化工具。
•Qemu是一个完整的虚拟化工具,但是效率很低,可以通过使用kvm的内核虚拟化提高效率。
4、libvirt
•libvirt种实现 Linux 虚拟化功能的Linux® API。
•主要包括libvirtAPI,libvirtd进程和virsh工具集三部分