Hyper-V 是一项基于虚拟机监控程序的虚拟化技术,用于 64 位版本的 Windows Server 2008 操作系统。虚拟机监控程序是特定于处理器的虚拟化平台,它允许多个相互隔离的操作系统共享一个硬件平台。 

Hyper-V 支持分区层面的隔离。分区是逻辑隔离单位,受虚拟机监控程序支持,并且操作系统在其中执行。Microsoft 虚拟机监控程序必须至少有一个父/根分区,用于运行 64 位版本的 Windows Server 2008 操作系统。虚拟化堆栈在父分区中运行,并且可以直接访问硬件设备。随后,根分区会创建子分区用于承载来宾操作系统。根分区使用虚拟化调用应用程序编程接口 (API) 来创建子分区。 

分区对物理处理器没有访问权限,也不能处理处理器中断。相反,它们具有处理器的虚拟视图,并运行于每个来宾分区专用的虚拟内存地址区域。虚拟机监控程序负责处理处理器中断,并将其重定向到相应的分区。Hyper-V 还可以通过输入输出内存管理单元 (IOMMU) 利用硬件加速来加快各个来宾虚拟地址空间相互之间的地址转换。IOMMU 独立于 CPU 使用的内存管理硬件运行,并用于将物理内存地址重新映射到子分区使用的地址。 

子分区对其他硬件资源也没有直接访问权限,只具有这些资源的虚拟视图,就像虚拟设备 (VDev) 一样。对虚拟设备的请求通过 VMBus 或虚拟机监控程序重定向到父分区中的设备,由父分区处理这些请求。VMBus 是用于分区之间通信的逻辑通道。父分区承载虚拟化服务提供程序 (VSP),这些提供程序通过 VMBus 通信以处理来自子分区的设备访问请求。子分区承载虚拟化服务使用程序 (VSC),这些使用程序通过 VMBus 将设备请求重定向到父分区中的 VSP。整个过程对来宾操作系统来说是透明的。 

虚拟设备还可以利用一项名为“具有启发功能的 I/O”的 Windows Server 虚拟化功能进行存储、联网、处理图形和输入子系统。具有启发功能的 I/O 是高级通信协议(如 SCSI)的支持虚拟化功能的专门实现,它直接利用 VMBus,而避开任何设备枚举层。这可以提高通信效率,但需要有支持虚拟化监控程序和 VMBus 的具有启发功能的来宾系统。Hyper-V 具有启发功能的 I/O 和支持虚拟化监控程序的内核可通过安装 Hyper-V 集成服务来提供。集成组件包含虚拟服务器客户端 (VSC) 驱动程序,还可用于其他客户端操作系统。Hyper-V 需要一个包含硬件辅助虚拟化的处理器,如通过 Intel VT 或 AMD 虚拟化 (AMD-V) 技术提供的处理器。

Hyper-V 体系结构概述

下图简要概括了 Windows Server 2008 上运行的 Hyper-V 环境的体系结构。

Hyper-V 是一项基于虚拟机监控程序的虚拟化技术,用于 64 位版本的 Windows Server 2008 操作系统。虚拟机监控程序是特定于处理器的虚拟化平台,它允许多个相互隔离的操作系统共享一个硬件平台。 

Hyper-V 支持分区层面的隔离。分区是逻辑隔离单位,受虚拟机监控程序支持,并且操作系统在其中执行。Microsoft 虚拟机监控程序必须至少有一个父/根分区,用于运行 64 位版本的 Windows Server 2008 操作系统。虚拟化堆栈在父分区中运行,并且可以直接访问硬件设备。随后,根分区会创建子分区用于承载来宾操作系统。根分区使用虚拟化调用应用程序编程接口 (API) 来创建子分区。 

分区对物理处理器没有访问权限,也不能处理处理器中断。相反,它们具有处理器的虚拟视图,并运行于每个来宾分区专用的虚拟内存地址区域。虚拟机监控程序负责处理处理器中断,并将其重定向到相应的分区。Hyper-V 还可以通过输入输出内存管理单元 (IOMMU) 利用硬件加速来加快各个来宾虚拟地址空间相互之间的地址转换。IOMMU 独立于 CPU 使用的内存管理硬件运行,并用于将物理内存地址重新映射到子分区使用的地址。 

子分区对其他硬件资源也没有直接访问权限,只具有这些资源的虚拟视图,就像虚拟设备 (VDev) 一样。对虚拟设备的请求通过 VMBus 或虚拟机监控程序重定向到父分区中的设备,由父分区处理这些请求。VMBus 是用于分区之间通信的逻辑通道。父分区承载虚拟化服务提供程序 (VSP),这些提供程序通过 VMBus 通信以处理来自子分区的设备访问请求。子分区承载虚拟化服务使用程序 (VSC),这些使用程序通过 VMBus 将设备请求重定向到父分区中的 VSP。整个过程对来宾操作系统来说是透明的。 

虚拟设备还可以利用一项名为“具有启发功能的 I/O”的 Windows Server 虚拟化功能进行存储、联网、处理图形和输入子系统。具有启发功能的 I/O 是高级通信协议(如 SCSI)的支持虚拟化功能的专门实现,它直接利用 VMBus,而避开任何设备枚举层。这可以提高通信效率,但需要有支持虚拟化监控程序和 VMBus 的具有启发功能的来宾系统。Hyper-V 具有启发功能的 I/O 和支持虚拟化监控程序的内核可通过安装 Hyper-V 集成服务来提供。集成组件包含虚拟服务器客户端 (VSC) 驱动程序,还可用于其他客户端操作系统。Hyper-V 需要一个包含硬件辅助虚拟化的处理器,如通过 Intel VT 或 AMD 虚拟化 (AMD-V) 技术提供的处理器。

Hyper-V 体系结构概述

下图简要概括了 Windows Server 2008 上运行的 Hyper-V 环境的体系结构。

下面介绍了上图中使用的首字母缩写词和术语:

  • APIC:高级可编程中断控制器 — 一种允许向其中断输出分配优先级别的设备。 

  • 子分区:承载来宾操作系统的分区 — 子分区对物理内存和设备的所有访问都通过虚拟机总线 (VMBus) 或虚拟机监控程序提供。

  • 虚拟化调用:用于与虚拟机监控程序进行通信的接口 — 可通过虚拟化调用接口访问虚拟机监控程序提供的优化功能。

  • 虚拟机监控程序:驻留在硬件和一个或多个操作系统之间的软件层。其主要工作是提供称为分区的隔离执行环境。虚拟机监控程序控制和裁定对基础硬件的访问。

  • IC:集成组件 — 允许子分区与其他分区和虚拟机监控程序进行通信的组件。

  • I/O 堆栈:输入/输出堆栈。

  • MSR:内存服务例程。

  • 根分区:管理计算机级别的功能,如设备驱动程序、电源管理和设备热添加/移除。根(或父)分区是唯一能够直接访问物理内存和设备的分区。

  • VID:虚拟化基础结构驱动程序 — 提供分区管理服务、虚拟处理器管理服务和分区的内存管理服务。

  • VMBus:虚拟机总线 — 基于通道的通信机制,在具有多个活动虚拟化分区的系统上,用于分区之间的通信和设备枚举。VMBus 随 Hyper-V 集成服务一起安装。

  • VMMS:虚拟机管理服务 — 负责管理子分区中所有虚拟机的状态。

  • VMWP:虚拟机工作进程 — 虚拟机堆栈的用户模式组件。工作进程向子分区中的来宾操作系统提供父分区中来自 Windows Server 2008 实例的虚拟机管理服务。虚拟机管理服务会为每个运行的虚拟机生成单独的工作进程。

  • VSC:虚拟化服务客户端 — 驻留在子分区中的一种综合设备实例。VSC 利用父分区中的虚拟化服务提供程序 (VSP) 提供的硬件资源。它们通过 VMBus 与父分区中的相应 VSP 通信以满足子分区的设备 I/O 请求。

  • VSP:虚拟化服务提供程序 — 驻留在根分区中,通过虚拟机总线 (VMBus) 向子分区提供综合设备支持。

  • WinHv:Windows 虚拟机监控程序接口库 — 本质上是已分区操作系统的驱动程序和虚拟机监控程序之间的桥接,允许驱动程序使用标准 Windows 调用约定来调用虚拟机监控程序。

  • WMI:虚拟机管理服务公开一组基于 Windows Management Instrumentation (WMI) 的 API 用于管理和控制虚拟机