将 Hyper-V 引入“Windows 8”

本篇博文介绍我们将如何在 Windows“客户端”操作系统上支持虚拟化。虚拟化技术最初是为 Windows Server 发布的,事实证明它大受欢迎并取得成功,因此我们希望将虚拟化引入使用 Windows 的专业人员的一组核心应用场景中。我们重点关注的两个最常见应用场景分别针对跨多个平台、客户端和服务器工作的软件开发人员,以及想要无缝管理虚拟化客户端和服务器的 IT 专业人员。Mathew John 是我们 Hyper-V 团队的一名项目经理,他撰写了这篇博文。要说明的一点是,与所有其他功能一样,我们讨论的是工程方面的工作,而不是最终组包方式,因为那些选择在项目的较晚阶段才会提供。–Steven
备注:我们本没有计划连续发布这么多篇博文,因此我们将恢复为更容易持续下去的速度。 -- 如果我们无意中设定了太高的预期,在此表示歉意。现在我们正在为了准备 BUILD 大会而全力以赴!

无论是一名软件开发人员、IT 管理员还是只是一位发烧友,你们许多人都需要运行多个操作系统,通常是在多台不同的计算机上。不是每个人都可以拥有一整套实验室来容纳所有这些计算机,因此可通过虚拟化来节省空间和时间。

在构建 Windows 8 的过程中,我们努力使 Hyper-V(最近两个 Windows Server 版本中包含的计算机虚拟化技术)在客户端操作系统上也能够运行。简单来说,通过 Hyper-V,您可以在同一台计算机上同时运行多个 32 位或 64 位 x86 操作系统。操作系统不直接使用计算机硬件,而是在一个虚拟机 (VM) 内运行。

Hyper-V 使开发人员能够轻松地维护多个测试环境,并提供一种简单的机制在这些环境间快速切换,而不会产生额外的硬件成本。例如,我们发布了包含旧版本 Internet Explorer 以支持 Web 开发人员的预配置虚拟机。IT 管理员可以从 Windows Server 和 Windows 客户端中的 Hyper-V 获得虚拟机奇偶校验和通用管理体验方面的额外好处。我们还知道,你们许多人都使用虚拟化来尝试新事物,而不愿意冒险对正在使用的 PC 进行更改。

Hyper-V 介绍

Hyper-V 需要具有二级地址转换 (SLAT) 的 64 位系统。SLAT 是 Intel 和 AMD 生产的最新一代 64 位处理器中提供的功能。您还需要 64 位版本的 Windows 8 以及至少 4GB 的 RAM。Hyper-V 支持在虚拟机中同时创建 32 位和 64 位操作系统。

Hyper-V 的动态内存允许动态分配和取消分配虚拟机所需的内存(由您指定最小值和最大值)并在虚拟机之间共享未使用的内存。您可以在具有 4GB RAM 的计算机运行 3 或 4 个虚拟机,但如果有 5 个或更多虚拟机,则需要更多 RAM。另一方面,您还可以使用 32 个处理器和 512GB RAM 创建大型虚拟机。

关于虚拟机的用户体验,Windows 提供了两个机制来访问虚拟机:虚拟机控制台和远程桌面连接。

虚拟机控制台(也称为 VMConnect)是虚拟机的控制台视图。它提供虚拟机的单个监视器视图,分辨率最高为 1600x1200,颜色为 32 位。通过该控制台,您可以查看虚拟机的启动过程。

为了获得更丰富的体验,您可以使用远程桌面连接 (RDC) 连接到虚拟机。使用 RDC,虚拟机可以利用物理 PC 上的功能。例如,如果您有多个监视器,虚拟机就可以在所有这些监视器上显示其图形。类似地,如果您的 PC 上有一个启用了多点触控的界面,则虚拟机就可以使用该界面为您提供触控体验。虚拟机还可以通过利用物理系统的扬声器和麦克风来提供完整多媒体功能。根操作系统(即,管理虚拟机的主 Windows 操作系统)还可以与虚拟机共享其剪贴板和文件夹。最后,使用 RDC,您还可以将任何 USB 设备直接连接到虚拟机。

关于存储,您可以向虚拟机中可用的 IDE 或 SCSI 控制器添加多个硬盘。可以使用直接传递给虚拟机的虚拟硬盘(.VHD 或 .VHDX 文件)或实际磁盘。VHD 还可以位于远程文件服务器上,这使您能够轻松地维护一组常用的预定义 VHD 并在团队中共享。

Hyper-V 的“实时存储移动”(Live Storage Move) 功能可帮助虚拟机基本上摆脱对基础存储设备的依赖。这样一来,您就可以在不停止虚拟机的情况下,将虚拟机的存储从一个本地驱动器移动到另一个本地驱动器,或者移动到 USB 记忆棒或远程文件共享。我发现此功能对快速部署非常有帮助:当我需要快速创建虚拟机时,我从某个文件共享上维护的虚拟机库中启动一个虚拟机,然后将该虚拟机的存储移动到我的本地驱动器。

Hyper-V 的另一个出色功能是能够在虚拟机运行时拍摄虚拟机快照。快照可保存有关虚拟机的所有内容,使您能够返回到虚拟机使用过程中以前的某个时间点;当您尝试调试某些棘手问题时,快照是一个非常有用的工具。同时,Hyper-V 虚拟机还具有 Windows 的所有易管理性优势。Windows Update 可以修补 Hyper-V 组件,因此您不需要设置其他维护过程。此外,安装 Hyper-V 后,Windows 仍具有所有相同的固在功能。

尽管如此,使用虚拟化也存在一定的限制。依赖特定硬件的功能或应用程序在虚拟机中将无法正常工作。例如,依赖 TPM(受信任的平台模块)的 Windows BitLocker 和 Measured Boot 在虚拟机中可能无法正常运行,需要 GPU 处理(不提供软件回退)的游戏或应用程序也可能无法正常工作。此外,依赖小于 10 毫秒计时器的应用程序(即,对延迟比较敏感的高精度应用程序,如实时音乐混合应用程序等)在虚拟机中运行时也可能出现问题。根操作系统也运行在 Hyper-V 虚拟化层之上,但特殊之处在于它可以直接访问所有硬件。这就是具有特殊硬件要求的应用程序能够在根操作系统中不受妨碍地继续工作,而对延迟比较敏感的高精度应用程序在根操作系统中运行时仍出现问题的原因所在。

提醒一下,您仍需要为虚拟机中使用的任何操作系统获得许可。

下面我们来梳理一下 Hyper-V 在 Windows 8 中的工作方式。

您的浏览器不支持 HTML5 视频。

下载此视频以便在您常用的媒体播放器中观看:
高质量 MP4 | 低质量 MP4

通过无线 NIC 支持虚拟机通信

就像您在演示中看到的那样,创建外部网络交换机非常简单,只需从下拉列表中选择物理网络适配器 (NIC) 然后单击“确定”即可。这在 Windows Server Hyper-V 中一切正常,但为了在 Windows 8 中获得类似的结果,我们需要让它使用无线 NIC 工作,这是一个新的挑战。

问题

Hyper-V 中的虚拟交换机是“第 2 层交换机”,这意味着它使用唯一标识每个(物理和虚拟)网络适配器卡的 MAC 地址进行交换(即,确定特定以太网数据包采用的路线)。源和目标计算机的 MAC 地址在每个以太网数据包中发送,第 2 层交换机使用该信息确定它应将传入数据包发送到何处。外部虚拟交换机通过物理 NIC 连接到外部环境。来自虚拟机并发往外部环境中的某台计算机的以太网数据包通过此物理 NIC 发送出去。这意味着,该物理 NIC 必须能够传送连接到此虚拟交换机的所有虚拟机发来的流量,因此这意味着通过该物理 NIC 传送的数据包将包含多个 MAC 地址(每个虚拟机的虚拟 NIC 分别有一个)。这在有线物理 NIC 上受支持(通过将 NIC 置于混杂模式),但在无线 NIC 上不受支持,因为 WiFi NIC 建立的无线通道及其接入点只允许具有 WiFi NIC 的 MAC 地址的以太网数据包,而不允许任何其他内容。换句话说,如果我们继续使用当前虚拟交换机体系结构,Hyper-V 将无法对外部交换机使用 WiFi NIC。

示意图显示了计算机 1 上承载的一个根分区和一个虚拟机,两者通过以下方式连接到计算机 2(按此处列出的顺序):根分区上的虚拟 NIC(MAC:A)连接到一个虚拟外部交换机,虚拟外部交换机连接到一个物理有线 NIC(MAC:Ph1),物理有线 NIC 连接到计算机 2 上的物理 NIC(MAC:Ph2)。同时,虚拟机上的虚拟 NIC(MAC:B)连接到一个虚拟外部交换机,虚拟外部交换机连接到一个物理有线 NIC(MAC:Ph1),物理有线 NIC 连接到计算机 2 上的物理 NIC(MAC:Ph2)。图 1:虚拟机和外部计算机之间使用有线连接进行联网

解决方案

为了避开这一限制,我们使用了 Microsoft 网桥解决方案,该解决方案实现了 ARP 代理(对于 IPv4)和邻居发现代理(对于 IPv6),针对传出数据包使用 WiFi 适配器的 MAC 地址取代虚拟 NIC 的 MAC 地址。网桥会维护虚拟 NIC 的 IP 地址及其 MAC 地址之间的内部映射,以确保将来自外部的数据包发送到适当的虚拟 NIC。

Hyper-V 在创建虚拟交换机的过程中集成网桥,因此在您使用 WiFi 适配器创建外部虚拟交换机时,Hyper-V 将:

  1. 创建连接到 WiFi 适配器的单个适配器网桥
  2. 创建外部虚拟交换机
  3. 强迫外部虚拟交换机使用网桥,而不是直接使用 WiFi 适配器

在该模型中,以太网交换仍在虚拟交换机中进行,而 MAC 转换在网桥中进行。对于创建外部网络的最终用户而言,无论是选择有线 NIC 还是无线 NIC,工作流程都是相同的。

示意图显示了计算机 1 上承载的一个根分区和一个虚拟机,两者通过以下方式连接到计算机 2(按此处列出的顺序):根分区上的虚拟 NIC(MAC:A)连接到一个虚拟外部交换机,虚拟外部交换机连接到 Microsoft 网桥(MAC 转换),Microsoft 网桥连接到 WiFi NIC(MAC:Ph1),WiFi NIC 连接到计算机 2 上的物理 NIC(MAC:Ph2)。同时,虚拟机上的虚拟 NIC(MAC:B)连接到一个虚拟外部交换机,虚拟外部交换机连接到 Microsoft 网桥(MAC 转换),Microsoft 网桥连接到 WiFi NIC(MAC:Ph1),WiFi NIC 连接到计算机 2 上的物理 NIC(MAC:Ph2)。
图 2:虚拟机和外部计算机之间使用 WiFi 连接进行联网

总之,通过将 Windows Server 中的 Hyper-V 引入 Windows 客户端,我们能够提供可靠的虚拟化技术,从而满足大多数数据中心的可伸缩性、安全性、可靠性和性能要求。使用 Hyper-V,开发人员和 IT 专业人员现在可以跨多台计算机构建更高效、更经济划算的使用和测试环境。

--Mathew John