虚拟机监视器 Virtual machine monitor(VMM),为虚拟机上客户机操作系统提供了一个虚拟x86硬件环境。该硬件包括虚拟cpu,虚拟I/O设备和定时器。VMM利用VMkernel中的关键技术,例如调度,内存管理以及网络和存储堆栈。
每个VMM专用于一个VM。要运行多个VM,VMkernel会启动多个VMM实例,也称为worlds。每个VMM实例分区并共享cpu,内存和I/O设备,以成功虚拟化系统。可以使用硬件虚拟化,软件虚拟化(二进制转换)或半虚拟化(不推荐使用)技术来实现VMM。
半虚拟化是指客户操作系统和管理程序之间的通信,以提高性能和效率。半虚拟化的价值主张是降低虚拟化开销,但是半虚拟化相对于硬件或软件虚拟化的性能优势可能会因工作负载而有很大差异。由于半虚拟化不能支持未修改的操作系统(例如,Windows 2000/XP),因此其兼容性和可移植性很差。
半虚拟化还可能在生产环境中引入重要的支持和可维护性问题,因为它需要对操作系统内核进行深度修改,因此,它最广泛地部署在基于Linux的操作系统上。
在vSphere如何实现
开始执行以下步骤:1.打开vSphere Web Client。
2.在主屏幕上,导航到“ 主机和群集”。
3.展开左侧导航列表。
4.在VM清单中,右键单击虚拟机,单击“ 编辑设置”。将出现“ 虚拟机编辑设置”对话框。
5.在“ 虚拟硬件”选项卡上,展开“ cpu”部分。
6.将Advanced下的cpu/MMU Virtualization选项更改为以下选项之一:
自动软件cpu和MMU硬件cpu,软件MMU硬件cpu和MMU
7.单击“ 确定”保存更改。
8.要使更改生效,请执行以下操作之一:
重启或重置VM暂停然后恢复VMvMotion VM
如何工作的
VMM确定要使用的一组可能的监视器模式,然后选择一个用作默认监视器模式,除非指定了除Automatic之外的其他模式。该决定基于:物理cpu的功能和客户操作系统类型配置文件设置监控模式有三种有效组合,如下所示:
BT:二进制翻译和影子页面表HV:AMD-V或Intel VT-x和影子页表HWMMU:带有RVI的AMD-V或带有EPT的Intel VT-x(RVI与AMD-V不可分割,EPT与Intel VT-x不可分离)BT,HV和HWMMU是ESXi用于标识每种组合的缩写。
当VM正在启动时,VMM会检查物理cpu的功能和客户机操作系统类型,以确定可能的执行模式集。它首先找到允许的模式集。然后,它通过配置文件设置来限制允许的模式。最后,在剩余的候选者中,它选择首选模式,这是默认的监控模式。如果您选择了自动,则使用此默认模式。
对于大多数工作负载,VMM选择的默认监控模式效果最佳。在对可用选项进行性能评估后,已选择每个cpu上每个客户机操作系统的默认监控模式。但是,某些应用程序具有特殊特性,可以在使用非默认监视器模式时获得更好的性能。这些应被视为例外,而不是规则。
只有在预期硬件上支持这些设置时,VMM才会遵守所选设置。例如,如果为在64位Intel处理器上运行的64位客户机操作系统选择软件cpu和MMU,则VMM将选择Intel VT-x用于cpu虚拟化而不是BT。这是因为此处理器上的64位客户机操作系统不支持BT。
其他说明
虚拟cpu由虚拟指令集和虚拟内存管理单元(MMU)组成。指令集是cpu执行的指令列表。MMU是维护存储器中虚拟地址和物理地址之间映射的硬件。用于虚拟化指令集和存储器的技术组合决定了监视器执行模式(也称为监视器模式)。VMM识别VMware ESXi硬件平台及其可用的cpu功能,然后为该硬件平台上的特定客户机操作系统选择监控模式。它可能会选择使用硬件虚拟化技术,软件虚拟化技术或硬件和软件技术组合的监控模式。
我们在硬件虚拟化方面始终面临挑战。x86操作系统设计为直接在裸机硬件上运行,因此它们假设它们可以完全控制计算机硬件。x86体系结构为操作系统和应用程序提供四级权限,以管理对计算机硬件的访问:ring 0,ring 1,ring 2和ring 3.用户级应用程序通常在ring 3中运行; 操作系统需要直接访问内存和硬件,并且必须在ring 0中执行其特权指令。
二进制转换允许VMM在ring 0中运行以实现隔离和性能,同时将客户机操作系统移动到ring 1.ring 1是比ring 3更高的权限级别和比ring 0更低的权限级别。
VMware可以使用二进制转换和直接执行技术的组合虚拟化任何x86操作系统。通过二进制转换,VMM可动态转换所有客户机操作系统指令并缓存结果以供将来使用。VMM中的转换程序不执行从一个体系结构到另一个体系结构的映射; 这将是仿效,而不是翻译。相反,它从客户操作系统发出的完全不受限制的x86指令集转换为可在VMM内安全执行的子集。特别是,二进制转换器将特权指令替换为在VM中而不是在物理机器上执行特权操作的指令序列。此转换实施VM的封装,同时保留x86语义,从VM的角度看。
同时,用户级代码直接在处理器上执行,以实现高性能虚拟化。每个VMM为每个VM提供物理系统的所有服务,包括虚拟BIOS,虚拟设备和虚拟化内存管理。
除软件虚拟化外,还支持硬件虚拟化。这允许将运行虚拟cpu指令的一些工作卸载到物理硬件上。英特尔拥有英特尔虚拟化技术(英特尔VT-x)功能。AMD拥有AMD虚拟化(AMD-V)功能。英特尔VT-x和AMD-V的目标相似,但细节不同。两种设计都旨在简化虚拟化技术。