一、如何理解

一个 hypervisor(又被称为 virtual machine monitorVMM 或 virtualizer)是一种模拟器,它是创建或者运行虚拟机的软件、固件、或者硬件。一个计算机,上面运行着一个 hypervisor,hypervisor 上面又运行着一个或多个虚拟机,该计算机被称为 host machine,每一个虚拟机被叫做guest machine。

hypervisor 对 guest operating system 的运行进行管理。多个不同的操作系统能够共享虚拟化的硬件资源:例如,Linux、Windows、macOS 实例能够在一个单独的物理 x86 机器上运行。这与操作系统级虚拟化技术不同,该技术让所有的实例共享一个内核(所谓操作系统级虚拟化技术就是指容器),即使 guest operating system 能够在 user space 不同,例如有同样的内核的 Linux distribution。

hypervisor 有两种类型,一种是Type-1,一种是Typer-2。下面对这两种类型进行详细讲解。

1、Type-1,native or bare-metal hypervisors

这些 hypervisors 直接运行在 host 的 hardware 上来控制硬件资源与管理 guest operating system。

正式这个原因,有时也被称为是 bare metal hypervisors。第一种这种类型的 hypervisor 是 IBM 在1960 年代开发的,包括软件 SIMMON 和 CP/CMS 操作系统。现代的类似 hypervisor 包括 AntsleOS,Microsoft Hyper-V 和 Xbox One system software,Nutanix AHV,XCP-ng,Oracle VM Server for SPARC,Oracle VM Server for x86,POWER Hypervisor,QNX Hypervisor,VMware ESXi(formerly ESX),Proxmox Virtual Environment, Xen

2、Typer-2 or hosted hypervisors

这些 hypervisor 直接作为一种计算机程序运行在传统的操作系统上。

一个 gust operating system直接作为 host 上的一个进程运行。Typer-2 hypervisor 从 host operating system 中抽象了 guest operating system。type-2 hypervisor 包括 Parallels Desktop for Mac,QEMUVirtualBox,VMware Player、VMware Workstation

二、多款 Hypervisor 比较

1. 主流虚拟化技术及厂商

  KVM、Xen、VMware 和 Hyper-V 做了详细的对比:

  • KVM:基于 linux 的的开源 hypervisor,最初是在 2007 年 2 月份融合到 linux 内核中,现在应该是应用最广泛的开源 hypervisor。KVM 现在用在 Rdhat 的一些产品上,如:Redhat Enterprise Virtualization(RHEV)。

  • XEN:同样是一款开源的 hypervisor,2003年产生于剑桥大学的研究项目中。它运行在 linux上(半虚拟化的 hypervisor,dom0 作为宿主机,运行 Xen 平台),最初是由 XenSource 提供技术支持,2007 年被 Citrix 收购。

  • VMware:并不是 hypervisor,而是公司的名字,通常使用的 vSphere 使用了 VMware’s ESXi hypervisor。VMware’s hypervisor 是非常成熟稳定的。

  • vHpyer-V:是一款有微软提供的商业化的 hypervisor,运行在 Windows 平台上,但是内部可以运行任何其他的操作系统,并且支持多种硬件平台。

2. KVM 和 Xen 的区别

Linux 虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen 和 KVM

  • 硬件支持

KVM 是一个轻量级的虚拟化管理程序模块,该模块主要来自于 Linux 内核。KVM 是一个全虚拟化的解决方案。可以在 x86 架构的计算机上实现虚拟化功能。但 KVM 需要 CPU 中虚拟化功能的支持,只可在具有虚拟化支持的 CPU 上运行,即具有 VT 功能的 Intel CPU 和具有 AMD-V 功能的AMD CPU。

Xen 也是 Linux 下的一个虚拟化解决方案,也将很快被编入内核中。Xen 的实现方法是运行支持Xen 功能的 kernel,这个 kernel 是工作在 Xen 的控制之下,叫做 Domain0,使用这个 kernel 启动机器后,你可以在这个机器上使用 qemu 软件,虚拟出多个系统。

  • 内核支持

KVM 由以色列公司 Qumranet 开发,已经被 Linux 核心组织放入 Linux 的内核里面,其使用的 x86 处理器至少需要包含其中一项硬件辅助虚拟化技术(Intel-VT 或 AMD-V)。

而 Xen 是一个外部的 Hypervisor 程序(虚拟机管理程序);它能够控制虚拟机和给多个客户机分配资源,在 KVM 被写入 Linux 内核后,估计 Xen 很难再被写入内核;另一方面,KVM 是 Linux 的一部分, 可使用通常的 Linux 调度器和内存管理. 这意味着 KVM 更小更易使用。

  • 支持的虚拟化技术

此外,Xen 同时支持全虚拟化和准虚拟化(需要修改客户机操作系统,而修改过的客户机操作系统能有更好的性能),KVM 当前不支持准虚拟化。

  • 更新版本:

Xen 的缺点是如果你需要更新 Xen 的版本,你需要重新编译整个内核,而且,稍有设置不慎,系统就无法启动。

相比较,KVM 就简化的多了。它不需要重新编译内核,也不需要对当前 kernel 做任何修改,它只是几个可以动态加载的 .ko 模块。它结构更加精简、代码量更小。所以,出错的可能性更小。并且在某些方面,性能比 Xen 更胜一筹。

 

(SAW:Game Over!)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐