关于 Hypervisor的理解
这与操作系统级虚拟化技术不同,该技术让所有的实例共享一个内核(所谓操作系统级虚拟化技术就是指容器),即使 guest operating system 能够在 user space 不同,例如有同样的内核的 Linux distribution。Xen 的实现方法是运行支持Xen 功能的 kernel,这个 kernel 是工作在 Xen 的控制之下,叫做 Domain0,使用这个 kernel
一、如何理解
一个 hypervisor(又被称为 virtual machine monitor、VMM 或 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,QEMU,VirtualBox,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!)
更多推荐
所有评论(0)