1虚拟化
虚拟化概念很早就已出现。简单来说,虚拟化就是使用某些程序,并使其看起来类似于其他程序的过程。将这个概念应用到计算机系统中可以让不同用户看到不同的单个系统(例如,一台计算机可以同时运行多个Li
ux和Wi
dows)这通常称为全虚拟化,(fullvirtualizatio
)。虚拟化也可以使用更加复杂的格式,其中单个计算机看上去具有多个架构(对于一个用户来说,它是一个标准的x86平台;对于另外一个用户来说,它是IBMPowerPC平台)。这种虚拟化形式通常被称为硬件仿真。
2全虚拟化和准虚拟化
虚拟化最常使用的两种方法是全虚拟化和准虚拟化。使用全虚拟化,在虚拟化的操作系统和硬件之间存在一个层,用于决定访问,这个层称为系统管理程序或虚拟机监视器(VMM)。全虚拟化的例子包括商业虚拟化解决方案VMware以及商业IBMzSeries计算机上使用的IBMSystemz9VirtualMachi
e(zVM)操作系统。准虚拟化与之类似,但是系统管理程序会以一种更具协作性的方式进行操作。这是因为每个客户操作系统都了解自己正在虚拟化模式中运行,因此每个系统都与系统管理程序协作,来实现底层硬件的虚拟化。准虚拟化的例子有Xe
和UserModeLi
uxUML。
3KVM简介
KVM是Ker
elbasedVirtualMachi
e的简写,是一个开源的系统虚拟化软件,基于硬件虚拟化扩展(I
telVTX和AMDV)和QEMU的修改版,是基于硬件的完全虚拟化。其设计目标是在需要引导多个未改动的PC操作系统时支持完整的硬件模拟。Redhat自RHEL54开始完全支持KVM系统管理程序。相比xe
,KVM的优点是高性能稳定无需修改客户机系统和大量的其它功能比如可使用li
ux调度器
4KVM工作原理
KVM所使用的方法是通过简单地加载内核模块而将Li
ux内核转换为一个系统管理程序。这个内核模块导出了一个名为devkvm的设备,它可以启用内核的客户模式(除了传统的内核模式和用户模式)。有了devkvm设备,VM使自己的地址空间独立于内核或运行着的任何其他VM的地址空间。设备树(dev)中的设备对于所有用户空间进程来说都是通用的。但是每个打开devkvm的进程看到的是不同的映射(为了支持VM间的隔离)。KVM然后会简单地将Li
ux内核转换成一个系统管理程序(在安装kvm内核模块时)。由于标准Li
ux内核就是一个系统管理程序,因此它会从对标准内核的修改中获益良多(内存支持、调度程序等)。对这些Li
ux组件进行优化(例如26版本内核中的新O1调度程序)都可以让系统管理程序(主机操作系统)Li
ux客户操作系统同时受益。r