Hyper-V 体系结构

Hyper-V 是基于虚拟机监控程序的虚拟化技术,适用于某些 x64 版本的 Windows。 虚拟机监控程序是虚拟化的核心。 它是特定于处理器的虚拟化平台,允许多个独立的操作系统共享单个硬件平台。

Hyper-V 支持按分区隔离。 分区是虚拟机监控程序支持的逻辑隔离单元,其中将会运行操作系统。 Microsoft 虚拟机监控程序必须至少具有一个运行 Windows 的父分区或根分区。 虚拟化管理堆栈在父分区中运行,并且可以直接访问硬件设备。 根分区创建子分区以托管来宾操作系统。 根分区使用虚拟化调用应用程序编程接口 (API) 来创建子分区。

分区无法访问物理处理器,也无法处理处理器中断。 但它们具有处理器虚拟视图,并可在专用于每个来宾分区的虚拟内存地址区域中运行。 虚拟机监控程序会处理处理器中断,并且会将中断重定向到各自的分区。 Hyper-V 还可以使用独立于 CPU 所用的内存管理硬件运行的输入输出内存管理单元 (IOMMU),以对各个来宾虚拟地址空间之间的地址转换进行硬件加速。 IOMMU 用于将物理内存地址重新映射到子分区所使用的地址。

子分区也不能直接访问其他硬件资源,但系统为其提供了虚拟资源视图来作为虚拟设备 (VDev)。 对虚拟设备的请求通过 VMBus 或虚拟机监控程序重定向到父分区中的设备,从而处理请求。 VMBus 是逻辑分区间信道。 父分区托管虚拟服务提供程序 (VSP),虚拟服务提供程序通过 VMBus 进行通信以处理子分区的设备访问请求。 子分区托管虚拟服务使用方 (VSC),虚拟服务使用方通过 VMBus 将设备请求重定向到父分区中的 VSP。 此整个过程对来宾操作系统是透明的。

虚拟设备还可以将名为“启发式 I/O”的 Windows Server 虚拟化功能用于存储、网络、图形和输入子系统。 启发式 I/O 是直接利用 VMBus 的高级通信协议(如 SCSI)的专用虚拟化感知实现,并且会绕过任何设备模拟层。 这会使通信更加高效,但需要一个能够感知虚拟机监控程序和 VMBus 的启发式来宾。 Hyper-V 启发式 I/O 和虚拟机监控程序感知内核是通过安装 Hyper-V 集成服务提供的。 包括虚拟服务器客户端 (VSC) 驱动程序的集成组件也可用于其他客户端操作系统。 Hyper-V 需要一个包括硬件辅助虚拟化的处理器,如配备 Intel VT 或 AMD 虚拟化 (AMD-V) 技术的处理器。

下图提供了 Hyper-V 环境体系结构的高级概述。

Diagram of the Hyper V High Level Architecture, showing the four partitions and Hypervisor sections.

术语表

  • 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 虚拟机监控程序接口库 - WinHv 本质上是已分区操作系统的驱动程序与虚拟机监控程序之间的桥梁,它允许驱动程序使用标准 Windows 调用约定来调用虚拟机监控程序
  • WMI – 虚拟机管理服务公开了一组基于 Windows Management Instrumentation (WMI) 的 API 以管理和控制虚拟机。