全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操做系统和原始硬件,VMM在guest操做系统和裸硬件之间用于工做协调,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理。html
图1 全虚拟化模型网络
全虚拟化的运行速度要快于硬件模拟,可是性能方面不如裸机,由于Hypervisor须要占用一些资源。架构
表明:IBM CP/CMS,VirtualBox,KVM,VMware Workstation和VMware ESXide
优势: Guest OS无需修改,速度和功能都很是不错,更重要的是使用很是简单工具
缺点:基于Hosted模式的全虚拟产品性能方面不是特别优异,特别是I/O方面半虚拟化是另外一种相似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,可是它的guest操做系统集成了虚拟化方面的代码。该方法无需从新编译或引发陷阱,由于操做系统自身可以与虚拟进程进行很好的协做。性能
图2 半虚拟化模型spa
半虚拟化须要guest操做系统作一些修改,使guest操做系统意识到本身是处于虚拟化环境的,可是半虚拟化提供了与原操做系统相近的性能。操作系统
表明:微软的Hyper-V,Xen
优势:种模式和全虚拟化相比,架构更精简,并且在总体速度上有必定的优点
缺点:须要对Guest OS进行修改,因此在用户体验方面比较麻烦
KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux作大量的事,如任务调度、内存管理与硬件设备交互等。htm
图3 KVM虚拟化平台架构进程
Xen是第一类运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,Xen支持hypervisor和虚拟机互相通信,而 且提供在全部Linux版本上的免费产品,包括Red Hat Enterprise Linux和SUSE Linux Enterprise Server。Xen最重要的优点在于半虚拟化,此外未经修改的操做系统也能够直接在xen上运行(如Windows),能让虚拟机有效运行而不须要仿 真,所以虚拟机能感知到hypervisor,而不须要模拟虚拟硬件,从而能实现高性能。
图4 Xen虚拟化平台架构
QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具备某些后二者所不具有的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。
准确来讲,KVM是Linux kernel的一个模块。能够用命令modprobe去加载KVM模块。加载了模块后,才能进一步经过其余工具建立虚拟机。但仅有KVM模块是 远远不够的,由于用户没法直接控制内核模块去做事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚 拟化软件 QEMU。提及来QEMU也是一个虚拟化软件。它的特色是可虚拟不一样的CPU。好比说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出 可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。因此你会看到,官方提供的KVM下载有两 大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及两者的合集)。也就是说,你能够只升级KVM模块,也能够只升级QEMU工具。这就是 KVM和QEMU 的关系。
图5 KVM和QEMU关系
KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺乏了对network和周边I/O的支持,因此咱们是无法直接用它的。
QEMU-KVM就是一个完整的模拟器,它是构建基于KVM上面的,它提供了完整的网络和I/O支持。
Openstack不会直接控制qemu-kvm,它会用一个叫libvirt的库去间接控制qemu-kvm。libvirt提供了跨VM平台的功能,它能够控制除了QEMU以外的模拟器,包括vmware, virtualbox, xen等等。
因此为了openstack的跨VM性,因此openstack只会用libvirt而不直接用qemu-kvm。libvirt还提供了一些高级的功能,例如pool/vol管理。
原文:https://huangwei.me/wiki/tech_cloud_kvm_qemu_libvirt_openstack.html