虚拟世界无处不在 如何在其中部署 Windows

云计算 虚拟化
虚拟计算无处不在。如果您尚未利用此功能,以后应该注意利用它。虚拟化主要通过创建自身的硬件抽象层、允许在主机系统间移动一个或多个来宾系统(如 Windows Server 或 Windows 客户端操作系统)来减少硬件依赖性。

虚拟计算无处不在。如果您尚未利用此功能,以后应该注意利用它。虚拟化主要通过创建自身的硬件抽象层、允许在主机系统间移动一个或多个来宾系统(如 Windows Server 或 Windows 客户端操作系统)来减少硬件依赖性。

当然,虚拟化与仿真不同,因为它并不模仿来宾处理器。在某种程度上,它只是表示来宾系统可访问的主机系统资源。所以,主机系统对于来宾而言是通用的。一般情况下,您可将虚拟来宾从某个 OEM 构建的系统移动到另一个 OEM 构建的系统,主机硬件一般不会影响该过程的正常进行。不过,要注意一些事项。例如,如果将来宾从使用某个 CPU 供应商(如 AMD)的处理器的硬件移动到使用其他 CPU 供应商(如 Intel)的处理器的硬件,可能会遇到问题(取决于使用的虚拟化技术)。这是因为虚拟计算技术只在主机和来宾间来回传递信息,它并不为来宾模拟具体 CPU(例如,像基于 PowerPC 的旧式 Macintosh 上运行的 Microsoft® Virtual PC 那样)。

但是,虚拟化可为来宾模拟主要的硬件组件。这大多只限于网络连接、视频(通常是限制非常严格的设备,不具有高级模拟的 GPU)以及大容量存储。这些复合内容全凭向来宾展示一种或多种类型的软件模拟设备来发挥作用。如果您阅读我的专栏已有一段时间,现在您会发现这其实与 Windows® PE 所关注的设备列表相同。在虚拟化中,这些设备与使 Windows 真正执行任何任务所需的设备类型相同。此外,所有虚拟化技术都必须模拟 BIOS。虽然这些技术还可以模拟可扩展固件接口 (EFI),但目前可供选择的基于 EFI 的操作系统有限,所以使用也受到了限制。所有模拟都允许启动虚拟来宾。BIOS 和每个设备在软件中模拟实际设备并将该设备呈现给来宾。这就意味着它们与实际设备一样需要驱动程序(并非一定是 Windows 提供的驱动程序)。这是一个需要牢记的重要概念。

尽管有些虚拟化技术还允许 USB(或 USB 2.0)设备与其进行交互,但在此我不针对这些特定技术细节进行阐述。除了这些 USB 设备需要使用驱动程序(打印机、USB 无线 NIC 等)或特定 DirectX® 支持(大多数虚拟化技术中不常用)外,您不必再做更多的事情就能使它们正常运行了。切记,是否支持 USB 或其他非模拟设备完全取决于使用的虚拟化技术。在尝试将虚拟化产品用于新设备前,请确保了解您所使用的虚拟化产品的限制(就象我常说的:“工欲善其事,必先利其器”)。

当前,在 Windows 方面有两个主要虚拟化技术供应商:Microsoft 和 VMware (vmware.com)。还有其他正在崭露头脚的供应商,如 Parallels (parallels.com)。

现在您已对虚拟化有了大致了解,我将在专栏剩下的部分介绍如何对其设置、如何避免最常见的缺陷以及如何在您环境中的多台计算机上进行部署。

虚拟部署

虚拟系统部署不一定必须不同于实际系统部署。但您将会发现,有些原因使其不得不异于实际系统部署。

在 Windows NT® 早期阶段,必须通过安装进行部署。您可以针对它进行脚本编写,但是必须运行完整个过程。完成安装后,要将映像复制到多个系统,此操作在概念上很容易理解,但实际上却不受支持。

不过,最终 Microsoft 确定很有必要支持磁盘复制或“克隆”的 Windows NT 系统。所以,当前部署实际系统的每种方法同样适用于虚拟系统部署。您可以使用:Winnt32(在使用 Windows Vista® 和 Windows Server® 2008 的情况下使用 setup.exe);Windows PE(1.x 或 2.x,如我在专栏前半部分所说的,这取决于要部署的客户端);远程安装服务 (RIS) 或 Windows 部署服务 (WDS);或 Sysprep(Windows NT 4.0 用于部署的系统准备工具)以及您喜欢用的磁盘复制技术(例如,ImageX)。

当然,只有在第一次部署特定操作系统时才需要执行上述操作。完成后,只要进行复制即可。但刚才我提到的这些基于磁盘的复制方法存在一个问题。

使用 Sysprep

起初,主要是 Windows NT 安全标识符 (SID) 提出了 Microsoft 不支持基于磁盘的复制的决定。幸运的是,Sysprep 提供了一种解决方案。不过,让我们首先看一下它解决的问题。正如在 support.microsoft.com/kb/314828 中所讨论的,SID 由 SID 结构修订号(通常是全局唯一标识符或 GUID)组成,用于标识基于 Windows 的个人计算机。然后,该 ID 用作所有本地帐户的标识符的根部分。本地帐户具有其自身的唯一标识符,称为相对标识符 (RID)。该 RID 包含连接到 SID 末尾的帐户 ID。因此,SID 与 RID 二者共同组成了本地帐户标识符。

让我们来看一下为什么说使用管理员 SID S-1-5-21-191058668-193157475-1542849698-500 存在问题。其中的 S-1-5 是用来定义这是 SID(SID 的文本表示中必定会有 S)的描述符,1 和 5 分别代表 Windows NT SID 修订号和授权标识符值(在此是指 Windows 安全性)。其余部分才是真正的 SID,包括 500,它表明这是一个众所周知的 SID — Windows 管理员帐户。在所有 Windows 安装过程中会默认创建管理员帐户(并且无法删除),其 SID 均以 500 结束。安装后添加到 Windows 的本地用户帐户都从 1000 以上开始迭代。

Windows Sysinternals(在 technetmagazine.com/issues/2007/03/DesktopFiles 上关于 PSTools 的专栏中曾提到)提供的 PSGetSID 使您可枚举系统上给定用户的 SID 或系统的 SID。请参阅图 1 查看 PSGetSID 的输出以获取我的虚拟系统的 SID 以及我的用户帐户的 SID 1003。

Figure 1 Output of PSGetSID for a virtual system‘s SID and the SID of user account 1003

由于本地帐户 RID 基于此 SID,所以对系统进行磁盘复制或只复制虚拟计算机映像时,出现的问题应相对明确。不更改 SID(Sysprep 的主要任务但非唯一任务),最终只能得到使 Windows 系统不同于其他系统的关键组件的副本。如果系统 A 和 B 的管理员的 SID 相同,那么每个系统上的用户都可能合法地将自己识别为同一用户。当对系统 A 进行身份验证时,可能对系统 B 的所有本地帐户同样执行操作,反之亦然。更糟糕的是,当这些系统呈现给 Active Directory® 时,也将具有相同的 SID。因此,如果允许系统 A 但不允许系统 B 通过域资源的身份验证,则会相互混淆而引起冲突。如果将 B 设置为拒绝,则 A 实际上也会被拒绝。

所以,在系统上使用 Sysprep 重新生成 SID 非常重要 — 尤其是在虚拟系统方案中,因为系统映像很容易就能四处传播。您也不应使用第三方 SID 更改工具,只能使用 Sysprep。Sysprep 是由 Microsoft 设计和测试的,受 Microsoft 支持,用于准备系统进行复制(甚至是虚拟系统)。请参阅图 2 了解一下 Sysprep 示例外观,然后再更改系统上的 SID。如果下一步是要准备系统进行复制,请确保始终不选择“不重新生成安全标识符”选项。

Figure 2 "Don‘t regenerate securITy identifiers" should be unchecked when preparing for duplication

除了将 SID 更新为新的 ID 外,Sysprep 也可修改它所知的所有私有数据存储以反映 SID 和计算机名称,还可以更改这些私有数据存储的加密来使用新的 SID。例如,计划任务数据存储和 IIS 元数据库中的值(如果安装了 IIS)。

Sysprep 还会强制删除系统上的各个 NIC,并将 NIC 的网络配置数据一起删除。由于网络配置“不专属于”注册表中的 NIC,并且该 NIC 的关系基于 NIC 的硬件 ID(这在虚拟到虚拟系统移动以外的情况下往往无效),所以 Sysprep 通常会清理掉这些被废弃的数据。

Sysprep 还会清理系统中的所有 Active Directory 成员身份信息。因此,作为 Sysprep 工作的一部分,它必须强制从域中删除系统。这样可确保刚接收到新 SID 的系统可安全加入该域。有些 SID 更改实用程序允许您更改计算机 SID 而无需将其从域中删除,但这样做既不可靠也不安全。如果必须在域成员的计算机上运行 Sysprep,则可以在运行 Sysprep 之前将其从域中删除,也可以运行 Sysprep 让它为您处理上述任务。

相关提示:如果要虚拟化任何域控制器 (DC),您需要复制尚未升级为 DC 并且尚未加入到域的独立服务器的系统。除 Windows Server 2003 Small Business Server EdITion 外,您无法安全地对 DC 进行磁盘复制。要安全地创建新的 DC,您需要创建准备加入域并升级为 DC 的服务器的磁盘映像。Sysprep 不知道如何在 DC 上安全地更改 SID(在作为单林/单服务器的非常特殊的 SBS 实例中除外)。

最后,除了更改 SID 以及从域中删除计算机外,Sysprep 还更改计算机名。

对虚拟系统进行映像(甚至只是复制)时要执行上述所有任务,这样讲可能显得非常苛刻。但是这样做很关键,尤其是在包含其他实际或虚拟系统的网络上或在域中使用这些系统时,或是在网络上与它们自身的任何其他副本一起使用时。

如果复制虚拟系统时不使用 Sysprep,可能就会遇到大量显而易见的问题(Active Directory 或其他联网冲突)以及许多预料不到的情况。例如,虚拟映像很容易遭受黑客攻击,因为只要攻击了一个映像就能获取对其他映像的访问权限。

驱动程序和硬件抽象层

我提到过,虚拟映像中包含的虚拟设备可能不具有 Windows 的“现成”驱动程序。请确保部署时(或使用 Sysprep 部署磁盘映像时)拥有可供设备使用的驱动程序,因为将虚拟映像从一个存储总线驱动程序移动到另一个时,很容易像使用实际硬件时遇到的情况那样,出现致命的 0x0000007B 驱动程序错误。这同样适用于 NIC。虽然大多数虚拟化产品都致力于提供相当通用的虚拟设备,但可能仍需要辅助驱动程序为其提供支持。

同时,您也不能忽视令人讨厌的硬件抽象层 (HAL)。理论上,如果虚拟化技术支持,您会希望创建支持高级配置和电源接口 (ACPI) 多处理器的虚拟计算机(请参阅 intel.com/technology/iapc/acpi)。通常不支持在 HAL 间进行转换(请参阅 support.microsoft.com/kb/309283 获取更多具体信息)。但是,有些虚拟化技术(或者,更重要的是,许多迁移技术)承诺可安全地将非 ACPI 的 Windows 安装移动到 ACPI 安装,反之亦然。但实际上并非如此;此外,如果出现问题,Microsoft 并不支持因此产生的 Windows 安装。我刚才提到的关于支持网页方面的限制同样适用于虚拟化系统。请参阅图 3 查看 HAL 在我的一台虚拟计算机上“设备管理器”中的呈现示例,在此示例中使用 ACPI 单处理器 HAL 运行。不要将其与单处理器混淆,它可以与其多处理器系列相互交换。

Figure 3 HAL in Device Manager on a virtual machine

其他更改

更改可更改的内容,接受无法更改的内容

考虑在实际系统和虚拟系统之间迁移时,您需要记住可更改和无法更改的内容。可以更改 Windows 安装的下列方面:

HAL(但只可从单处理器变为多处理器,反之亦可,前提是它们要基于同一电源配置)。

大容量存储控制器(这不太容易 — 但大多数实际到虚拟迁移解决方案已在尝试自行解决此问题)。请注意,大多数供应商会提供 IDE 和 SCSI 存储解决方案。在进行部署时要明智地选择,因为从一种解决方案迁移到另一种解决方案并不是很容易的事。通常,选择 SCSI 会使设备比较可靠(对大多数供应商 SCSI 设备模拟实现而言)。

网络控制器(虽然在虚拟到虚拟迁移的情形下,这在同一个供应商提供的技术中通常相同)。

无法更改 Windows 安装的下列方面:

HAL(之前提到的使用相同电源配置时的情况除外)。不应认为执行此更改的迁移解决方案能带来稳定或可靠的 Windows 安装(更重要的是,它不受 Microsoft 支持)。

除更改 SID 和计算机名外,还需要更改特定于您使用的虚拟计算技术的某些值。尤其是,需要更改 MAC 地址(网络连接设备的唯一 ID)。另外,许多虚拟应用程序还具有自已的唯一标识符。大部分虚拟应用程序将标识符存储在自己的计算机配置文件中,因此您可能想了解如何管理这些条目(并维护它们的有效性)。请注意,许多支持预启动执行环境 (PXE) 的虚拟化产品会根据自己的唯一 ID 向计算机中输入 SMBIOS UUID 信息 — 这就强调了打算将虚拟化产品加入域中时对唯一 ID 进行更改(或者在支持的情况下,让虚拟化软件为您更改)的必要;否则,将无法管理 WDS 或 RIS 客户端系统(如果 GUID 相互冲突)。我使用过的大部分虚拟化解决方案在复制 MAC 地址的情况下都会出现严重的联网问题,所以如果您不只是移动虚拟计算机,而虚拟化软件又没有为您更改 MAC 地址,那么由您来更改 MAC 地址是非常重要的。

准备要进行部署的虚拟系统时,需要切记的其他组件包括所有链接磁盘或快照。根据您的虚拟化解决方案,这些组件也可称为差异磁盘或其他名称。但是,如果您运行 Sysprep 来准备系统并且虚拟系统带有快照(或其他可回复的状态),则必须销毁这些快照,以便安全、可靠地复制映像。在使用快照或其他“撤消磁盘更改”技术方法的情况下,还原快照可能意味着回归到多个源于初始虚拟计算机的系统现在相互冲突的境况(甚至是初始源系统 — 如果它被还原)。因此所有快照或差异磁盘关系上应已执行过 Sysprep。

优化

大部分虚拟化技术都包含虚拟机添加件或工具,用于提高从主机与来宾进行交互的性能和体验。在各种性能增强中,通常会包括优化鼠标和键盘输入等操作,还经常包括改进的复制和粘贴(或其他主机到来宾之间)交互。部署前,在您的虚拟系统中安装这些工具的最新版本。

此外,还需要确保客户端内存已针对来宾操作系统进行最佳配置,而且与将要部署到的主机相符。您最不愿做的事是将要使用 1GB RAM 的 Windows XP 映像集部署到原本没有那么多 RAM 的主机系统。

还要切记当前大多数虚拟技术的局限,因此用户一定要了解如何与虚拟系统附带的外围设备进行交互以及哪些应用程序在来宾操作系统(例如,大多数不支持 DirectX 9 或 10,或只支持有限的较早版本)上起作用,哪些不起作用。用户可能不了解其中的含义或它如何进行自我证明(有些应用程序无法很好地处理这些故障)。

主机注意事项

注意,通常情况下,对于运行虚拟化技术的主机 PC,无论运行的是完整操作系统还是直接在硬件上运行的 Type 1 虚拟机管理程序,都无需考虑过多注意事项。大部分虚拟化技术都用于确保来宾操作系统无需了解主机的任何信息(或只需了解极少的信息)。不过,请确保了解使用的是哪个主机,以防从某个主机移动到另一个主机的来宾遇到问题。另请确保了解虚拟化供应商的产品对特定平台的限制。尽管可以从一个平台移动到另一平台,但在该过程中,可能会丢失或获得主机操作系统 Type 2 虚拟机管理程序(虚拟化应用程序)的某些功能。

其他部署机制

部署虚拟系统时,显然可以选用 Sysprep 或磁盘复制(或者直接运行 Sysprep 后复制虚拟计算机),但是还有其他方法。事实上,不管使用映像还是安装程序,使用 Windows PE 进行虚拟化都比使用物理机器更简单,因为您使用的是 ISO 文件而非物理 CD。请注意,有些虚拟化技术无法很好地处理 DVD 媒体,所以请一定要与虚拟化供应商联系以获取相关帮助。您可以使用 winnt32 或 setup.exe(在使用 Windows Vista 或 Windows Server 2008 的情况下),但是不会产生任何特别效果。如果使用其他 Microsoft 部署技术(如自动化部署服务),则虚拟化技术支持使用 PXE 启动基于网络的部署,就像使用 RIS 或 WDS 一样。

迁移

最后,除实际迁移整个 PC 外,不要忘记用户状态迁移工具 (USMT)。使用 USMT,您可以轻松地将用户的设置从实际客户端移动到新的虚拟系统。所以,举例来说,如果您的用户希望将旧数据和设置迁移到新的虚拟计算机,您就可以轻松地从 Windows XP 中获得文件和设置,将其存储到 UNC,然后将其推送到新的虚拟计算机中。

【编辑推荐】

  1. Citrix侯继涛:寻找虚拟化的价值点
  2. LSI发布新存储虚拟化管理器
  3. DataCore对外出售其虚拟化软件产品
责任编辑:符甲 来源: IT专家网
相关推荐

2017-09-14 18:02:53

伤害学神挑战

2017-12-29 10:54:01

Python编程语言系统管理工具

2022-09-16 10:44:17

物联网通信网络

2014-04-23 13:08:04

Dockerlinux

2013-01-28 15:08:12

Windows Pho设计

2021-10-29 15:05:57

网络安全爬虫技术

2018-04-27 04:52:48

物联网设备产业

2013-11-11 15:04:52

2013-04-07 13:03:34

ASP.NET

2024-06-03 17:24:34

2023-08-18 14:39:52

5G4G

2013-12-30 10:05:54

Linux操作系统

2021-10-29 15:30:37

SASE/网络安全

2015-01-08 15:31:22

CES2015智能硬件HomeKit

2011-08-25 13:45:31

应用交付F5John McAdam

2010-06-03 15:38:30

2009-03-30 11:58:03

2011-07-05 10:41:17

webOS

2021-02-18 16:41:26

大数据疫情物联网

2019-03-10 22:49:12

安卓Windows特性
点赞
收藏

51CTO技术栈公众号