KVM(Kernel Virtual Machine内核虚拟机)是一个Linux内核模块,可以用modprobe去加载KVM模块。加载模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是不行的,因为用户无法直接控制内核模块去作事情,所以还要有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的QEMU。
QEMU也是一个开源的虚拟化软件,它是一套虚拟机管理系统,只要运行的目标体系结构是相同的主机架构,那么QEMU就可以使用KVM。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。也就是说QEMU自身主要作为模拟器来用。
当一起工作的时候,KVM管理CPU和MEM的访问,QEMU仿真硬件资源(硬盘,声卡,USB,等等)当QEMU单独运行时,QEMU同时模拟CPU和硬件。
KVM项目保持QEMU的一个分支叫的qemu-kvm。由于kvm是在qemu的基础上开发的,KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具QEMU-KVM。它可以像普通Qemu一样分配RAM、加载代码。不同于重新编译或者调用callingKQemu,它创建了一个线程(这个很重要)。这个线程调用KVM内核模块去切换到用户模式,并且去执行VM代码。当遇到一个特权指令,它从新切换会KVM内核模块,该内核模块在需要的时候,像Qemu线程发信号去处理大部分的硬件仿真。它提供了最佳的性能和KVM使用QEMU在x86上的某些附加功能。
libvirt,virt-manager,virsh。由于qemu-kvm的效率及通用性问题,有组织开发了libvirt用于虚拟机的管理,带有一套基于文本的虚拟机的管理工具virsh,以及一套用户渴望的图形界面管理工具virt-manager。libvirt是用python语言写的通用的API,不仅可以管理KVM,也可用于管理XEN。
kqemu是qemu的内核加速模块,用于加速qemu,不是kvm。wiki里qemu部分有写,和kvm是分为两部分的,是两种不同的内核加速模块。
阅读(2467) | 评论(0) | 转发(0) |