KVM/QEMU简介linux
KVM虚拟机是基于linux内核虚拟化,自linux2.6.20以后就集成在linux的各个主要发行版本中。它使用linux自身的调度器进行管理,因此相对于xen,其核心源码不多。KVM的虚拟化须要硬件的支持(如intel VT技术或者AMD V技术),是基于硬件的彻底虚拟化。而xen早期则是基于软件模拟的para-virtualization,新版本是基于硬件支持的彻底虚拟化。架构
qemu是一种模拟处理器,如今运用最多的就是将KVM和QEMU结合起来。工具
准确来讲,KVM是Linux kernel的一个模块,能够用命令modprobe去加载KVM模块。加载了该模块后,才能进一步经过工具建立虚拟机。可是仅有KVM模块是不够的。由于用户没法直接控制内核去作事情,还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件QEMU。提及来QEMU也是一个虚拟化软件。它的特色是可虚拟不一样的CPU。好比说在x86的CPU上可虚拟一个power的CPU,并可利用它编译出可运行在power上的CPU,并可利用它编译出可运行在power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。因此你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及两者的合集)。也就是说,你能够只升级KVM模块,也能够只升级QEMU工具。这就是KVM和QEMU 的关系。spa
以下图:操作系统
Linux Kernel-based Virtual Machine (KVM) 是一款 Linux 开放源码虚拟化软件,基于硬件虚拟化扩展(Intel VT- X 和 AMD-V)和 QEMU 的修改版。KVM 的实现模块又两个,分别是: kvm.ko是提供核心虚拟化的基础架构;特定于处理器的模块 kvm-intel.ko 和 kvm-amd.ko 。其设计目标是在须要引导多个未改动的 PC 操做系统时支持完整的硬件模拟。.net
一个普通的linux进程有两种运行模式:内核和用户。而KVM增长了第三种模式:客户模式(有本身的内核和用户模式)。在kvm模型中,每个虚拟机都是由linux调度程序管理的标准进程。设计
kvm由两个部分组成:一个是管理虚拟硬件的设备驱动,该驱动使用字符设备/dev/kvm做为管理接口;另外一个是模拟PC硬件的用户空间组件,这是一个稍做修改的qemu进程。blog
转自:http://blog.csdn.net/chenglinhust/article/details/7557791接口