KVM虚拟化技术(二)KVM介绍

时间:2023-12-13 17:12:08

KVM:Kernel Virtual Machine

  KVM是基于虚拟化扩展的x86硬件,是Linux完全原生的全虚拟化解决方案。部分半虚拟化支持,主要是通过半虚拟网络驱动程序的形式用于Linux和Windows客户机系统的。

  KVM被设计为是一个内核模块,支持广泛的客户机操作系统;在KVM架构中,虚拟机实现为常规的Linux进程。这使KVM能够享受Linux内核的所有功能。

  KVM模块是KVM虚拟机的核心部分。其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟机客户机运行在虚拟机模式下,并对虚拟客户及对运行提供一定的支持。

  然而,KVM本身不执行任何模拟,需要用户空间的程序通过接口设置一个内核空间,向它提供模拟的I/O,并将它的视频显示映射回宿主的显示屏;这个应用程序就是QEMU(可理解为一个模拟器);现在主流启用libvirt来管理。

  为了软件的简洁和性能,KVM仅支持硬件虚拟化。

  QEMU本身并不是KVM的一部分,其自身就是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能低下。但是,其优点是在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。

  为了简化开发和代码重用,KVM在QEMU的基础上进行了修改。虚拟机运行期间QEMU会通过KVM模块提供的系统调用进入内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行。遇到虚拟机进行输入输出操作,KVM模块会从上次的系统调用出口处返回QEMU,由QEMU来负责解析和模拟这些设备。

  从QEMU角度来看,也可以说QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速。从而提高虚拟机的性能。

  KVM必须的硬件虚拟化扩展分别为:Intel的虚拟化技术(Intel VT)和AMD的AMD-V技术。首先处理器(CPU)要在硬件上支持VT技术,还要在BIOS中将其功能打开,KVM才能使用到。