您的位置:首页 > 其它

kvm 相关知识总结

2016-10-18 14:10 232 查看
 KVM (名称来自英语: Kernel-basedVirtual Machine 的缩写,即基于内核的虚拟机) , 是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上。

KVM在具备Intel VT或AMD-V功能的x86平台上运行。它也被移植到S/390,PowerPC与IA-64平台上。在Linux内核3.9版中,加入ARM架构的支持。

关于KVM:

1).KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。

2).是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。

3).它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。

4).KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。

5).KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。

6).在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。

 KVM  与  vbox 的区别

vbox  是由  qemu  改写而成,包含大量 qemu  代码。

1).可以使用于"不支持"虚拟化技术的cpu。

2).值得说的一点:vbox 在图形方面比较好,能进行2D 3D加速;但cpu控制不理想(估计是因为图形支持的缘故);操作上有独立的图形界面,易于上手。

 kvm  是 linux 内核包含的东西,使用 qemu 作为上层管理(命令行)。  

1).要求cpu 必须支持虚拟化。

2).性能:作为服务器很好,可是图形能力十分的差。即使放电影,图像也是像刷油漆一样,一层一层的。

3).cpu使用率控制很好。

4).控制上比较简洁,功能比较丰富:比如使用“无敌功能”所有更改指向内存,你的镜像永远保持干净。“母镜像”功能让你拥有n个独立快照点。还有很多参数。另外,kvm作为内核级的虚拟机,刚开始发展关注的公司比较多――但是还没有达到商业应用的水平。

 总体而言: 在支持虚拟化的情况下, vbox  和  kvm  的性能差不多,主要是面向对象不同: kvm 适用于服务器, vbox 适用于桌面应用。

-------------------------------------------------------------------------------

kvm 和 qemu 的关系

 qemu  全称 Quick Emulator 。 是独立虚拟软件,能独立运行虚拟机(根本不需要 kvm )。 kqemu 是该软件的加速软件。 kvm 并不需要 qemu 进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由 kvm 驱动。KVM是Linux的一个模块。可以用modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作事情:还必须有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的开源虚拟化软件
QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出 可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分三个文件,分别是KVM模块、QEMU工具以及二者的合集。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU 的关系。

QEMU本身可以不依赖于KVM,但是如果有 KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。

qemu当作为虚拟化来用时,与KVM结合,称之为QEMU-KVM。QEMU-KVM是基于硬件虚拟化技术(例如Intel VT ,AMD SVM),并结合了QEMU提供设备虚拟化功能,来实现整个系统虚拟化。

------------------------------------------------------------------------------------------

KVM 内存管理

KVM 继承了 Linux 系统管理内存的诸多特性,比如,分配给虚拟使用的内存可以被交换至交换空间、能够使用大内存页以实现更好的性能,以及对 NUMA 的支持能够让虚拟机高效访问更大的内存空间等。

KVM 基于 Intel 的 EPT ( ExtendedPage Table )或 AMD 的 RVI ( Rapid Virtualization Indexing )技术可以支持更新的内存虚拟功能,这可以降低 CPU 的占用率,并提供较好的吞吐量。  

此外, KVM 还借助于 KSM ( Kernel Same-pageMerging )这个内核特性实现了内存页面共享 。 KSM 通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各相关虚拟机共享的单独页面。在某虚拟机试图修改此页面中的数据时, KSM 会重新为其提供一个新的页面副本。实践中,运行于同一台物理主机上的具有相同 GuestOS 的虚拟机之间出现相同内存页面的概率是很的,比如共享库、内核或其它内存对象等都有可能表现为相同的内存页,因此, KSM 技术可以降低内存占用进而提高整体性能

 . 使用 qemu-kvm 管理 KVM 虚拟机

 Qemu 是一个广泛使用的开源计算机仿真器和虚拟机。当作为仿真器时,可以在一种架构 ( 如 PC 机 ) 下运行另一种架构 ( 如 ARM) 下的操作系统和程序。而通过动态转化,其可以获得很高的运行效率。当作为一个虚拟机时, qemu 可以通过直接使用真机的系统资源,让虚拟系统能够获得接近于物理机的性能表现。 qemu 支持 xen 或者 kvm 模式下的虚拟化。当用 kvm 时, qemu 可以虚拟 x86 、服务器和嵌入式 powerpc ,以及 s390 的系统。

QEMU  当运行与主机架构相同的目标架构时可以使用 KVM 。例如,当在一个 x86 兼容处理器上运行  qemu-system-x86  时,可以利用  KVM  加速――为宿主机和客户机提供更好的性能。

Qemu 有如下几个部分组成:

处理器模拟器(x86、PowerPC和Sparc);

仿真设备(显卡、网卡、硬盘、鼠标等);

用于将仿真设备连接至主机设备(真实设备)的通用设备;

模拟机的描述信息;

调试器;

与模拟器交互的用户接口;

libvirt 的工具如 virt-manager 和 virt-install 提供了非常便捷的虚拟机管理接口,但它们事实上上经二次开发后又封装了 qemu-kvm 的工具。因此,直接使用 qemu-kvm 命令也能够完成此前的任务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: