桌面文件使用 Windows PE 进行 PC 恢复

Wes Miller

在前几期专栏中,我已经提及到 Windows PE 的最初目标是使其成为一种部署环境。像所有的好产品一样,Windows PE 的发展已经超出了此范围。客户(起初为 OEM)渴望构建一种用于制造和用户自我恢复的解决方案,一些公司已推出了

可同时满足这两方面需求的 Windows® PE 解决方案。

当今的大多数恢复工具都基于以下前提:通过镜像部署过程将系统返回到一个已知的正常状态。相对于 Windows XP 来说,Windows Vista® 使恢复变得更为轻松,还提供了现有的映像支持(请参阅本期《TechNet 杂志》中 Christine Fok 关于 Windows Vista 备份技术的文章)。

在本月专栏中,我将介绍如何基于 Windows PE 构建您自己的恢复解决方案。拥有 Windows 许可证的所有人都可免费获得作为 Windows 自动安装工具包 (AIK) 组件的 Windows PE 2.0。此许可证不仅可应用于部署,而且还可用于使用 Windows PE 进行恢复与故障排除。

显然,您必须根据自己的自定义需求做出相应调整,但无论您要部署 Windows XP 还是 Windows Vista,都需要记住几个基本点,本文中我将对此予以介绍。如果您熟悉映像,就已经了解我要讲述的很多内容了。

任何一个 Windows PE 恢复解决方案的主要组件都包括:

  • Windows PE
  • 映像实用程序
  • 使其合在一起的脚本粘合(或正式应用程序)

或者,您可能希望包括 SQL 支持与 Active Directory® Service Interfaces (ADSI) 支持。使用 SQL 连接,您可以间接地构建一个允许系统有各个类别的“材料单”(用来定义安装所需的内容)的解决方案。同样地,与 Active Directory 相连接便于设置每台机器帐户对象 (MAO) 的属性。

请注意,Microsoft 不支持在 Windows PE 中包含 ADSI,但是,有许多在线文章介绍了如何实现此目的,而且如果做法正确,效果会非常好。如果您不打算启用 ADSI,您可以添加 SQL 支持,并在工作流中进行构建从而作为 Windows PE 恢复工具。如果需要任何 ADSI 属性,您可以使用带有计划任务的服务器系统查询同一个 SQL Server™,然后通过 ADSI 查询 Active Directory — 本质上,它起着传递作用。

这并不是一项完美的解决方案,仍需要一些脚本或其他自动操作,但此设计将允许您通过 Windows PE 与 Active Directory 进行交互。

请注意,您也可以使用 LDIFDE 实用程序读取来自 Windows PE 内的 Active Direc-tory 信息(有关详细信息,请参阅 support.microsoft.com/kb/237677 上关于本主题的知识库文章)。例如,您可以使用以下命令:

ldifde -m -f x:\output.ldf -b <username> <domain netbiosname> <accountPassword> -s 
<DC or domain name> -d "DC=contoso,DC=com" -r "(&(objectclass=<computerclassname>)
(netbuisname=<mycomputername>))" - l "<attributename>"

输入此命令会将所指定的计算机对象的某个属性提取到 x:\output.ldf,在其中可对该文件中的输出内容进行分析。

SKU、位和语言

您需要考虑需要部署的 Windows 的版本、体系结构和语言。在一个较小的区域性组织中,您可能只部署一个操作系统 — Windows XP 或 Windows Vista — 或使用新的 PC 上已安装的任何系统。这时,您可能还未打算部署很多 x64 Windows 系统(如果有)。而且,有可能您仅需要支持一种语言。但是,越是大型的全局性组织,可能需要处理的体系结构、版本和配置就越多。

在前期专栏中,我提及到您可以在同一个 Windows 映像格式 (WIM) 文件中存储 x64 和 x86 卷映像 — 但这不会节省空间。如果您正在构建一项恢复解决方案并需要考虑到这两种体系结构,则应将其分别存储在单独的 WIM 中。同样,如果您要部署和支持 Windows XP 和 Windows Vista,将这两个操作系统存储在同一个映像中不会实现节省空间的效果。您会发现,唯有在这两种部署中包含同一应用程序(例如 2007 Microsoft® Office system)的许多实例时才能实现空间节省。在这种情况下,不需要多次存储应用程序文件,但是这仍然不大可能在空间方面实现明显的节省。

Windows PE 引导方法

Windows PE 1.6

通过远程安装服务 (RIS) 进行 PXE 引导

(无 RAMDisk)

硬盘驱动器

USB 闪存驱动器

RAMDisk PXE

RAMDisk CD/DVD

RAMDisk USB 闪存驱动器

RAMDisk 硬盘驱动器

Windows PE 2.0

RAMDisk PXE

RAMDisk CD/DVD

RAMDisk USB 闪存驱动器

RAMDisk 硬盘驱动器

如果需要 PXE,通过 RIS 进行 PXE 引导 是最佳方法,但是需要注意的是相对于使用 PXE RAMDisk 来讲,此方法要花费更长的时间进行引导,而且要使用更多的网络资源。

硬盘驱动器 使用极少内存,但会锁定驱动器。如果要使用双区触发器恢复方案,此方法再理想不过了。

USB 闪存驱动器 便于引导;但是,如果引导系统没有经 OEM 验证为 UFD 可引导的,并且无 Windows Vista Capable 徽标(徽标要求确保支持 UFD 引导),则 UFD(对于 RAMDisk 和非 RAMDisk 方案)是随机的。UFD 引导需要高性能的闪存驱动器(用于读取和写入)以及受 USB 控制器和 BIOS 支持的高速 USB 支持。

RAMDisk 引导 (不管什么类型)需要更多的内存,但是,它可提供最佳性能,并且可通过将 Windows PE 置于内存中的 RAMDisk 中对其充分利用。Windows PE 1.6 的 RAMDisk 引导通常只应在至少具有 256MB RAM 的系统上使用。Windows PE 2.0(始终是 RAMDisk WIM 引导)通常只应在至少具有 384MB RAM 的系统上使用。

但是,请注意,如果将特定版本 Windows 的多个 SKU 存储在同一个 WIM 中,会节省很多空间。例如,假如您已将 Windows XP Professional 与 Windows XP Tablet PC Edition 合并或将 Windows Vista Business Edition 与 Windows Vista Ultimate Edition 合并,这些合并就会有效地利用空间,因为同一个版本和 Service Pack 级别的两个 SKU 会共享大多数相同的代码和文件。

最后,需要考虑语言。组织越大,需要考虑使用的语言就越多。对于 Windows XP,您可以选择使用本地化版本或多语言用户界面 (MUI)。对于 Windows XP 的完全本地化版本,几乎每一个小字符串都已经本地化为目标语言。另一方面,MUI 的基本语言是英语,而 MUI 语言包(和更高版本,语言界面包)已更改了尽可能多语言字符串。(MUI 在 Windows 2000 中的结果尚可,在 Windows XP 和 Windows Server 2003 中的结果更佳。)

如果您的组织使用的是 MUI,则在同一个 WIM 中合并了不同语言版本后,会获得良好效果。这是因为他们的核心使用的都是英语二进制文件。但是,对于早于 Windows Vista 的本地化版本来说,情况并非如此。因为二进制文件本身已经本地化了,所以同一个二进制文件不能跨语言匹配,这意味着您必须为每种语言存储几乎整个操作系统(和任何已本地化的应用程序)。

对于 Windows Vista,您可以认为本地化版本(本地化为带有资源的单个二进制文件的一部分)已被弃用。Windows Vista 中包括英语在内的每种语言均使用 .mui 资源文件。实际上,Windows Vista 是独立于语言的,因为所有语言信息都在 MUI 文件中。因此,在同一个 WIM 中存储一种以上语言版本的 Windows Vista 会节省更多的空间。存储两种、四种或更多种语言作为一个 WIM 意味着您不再需要显著增加映像,而且在以后可随着需求变化切换或添加语言。

简言之,构建解决方案时,您应考虑到哪种版本的 Windows 以及哪种版本的其他应用程序可共享相同的二进制文件,从而允许文件的单个实例存储。这将有助于确定整个组织所需的 WIM 文件的数量。

用户方案

一般来说,组织越大,就会越复杂。规模的大小并不是主要原因,而是由于引进的所有可变因素(您拥有了更多的用户和业务部门)带来了更多的特定要求。

我记得有一个独特的跨国组织,它拥有数万用户,并且完全从一个位置(从地理角度和组织角度来说)来管理部署过程。经营此组织的人总会面临一些非常具有挑战性的难题。例如,他曾经关注位于非洲特定地区的远程用户,他们没有良好的网络连接 — 事实上,他们中的许多人距电话线都有上百英里远。他需要了解,这些用户怎样才能在不用连续数日停机并且不用走很长路的情况下恢复他们的系统。

当您开发了某个产品后(在这个意义上,您应将自己的恢复解决方案作为一个产品),应考虑到用户因素。不仅考虑特定的业务需要,还要考虑到与不同类别的用户相关的各种复杂性。您应合并使用案例,使用简短的描述介绍您需要支持的最终用户的每种类型。这样,可帮助您识别任何无意中未包含在恢复解决方案的用户,并确保考虑到了每种类型的用户的需要。

Windows PE 的正确版本

另一个重要的决定就是确定 Windows PE 的哪个版本符合您的需要。本专栏的以前几期内容可能会有所帮助,但在此我将对此决定进行更清晰的说明。如果满足以下任一情况,您应使用 Windows PE 1.6:

  • 您只打算恢复 Windows XP(或 Windows Server 2003)
  • 您要恢复的是不符合高级配置和电源接口 (ACPI) 标准的系统
  • 您要恢复的是拥有少于 512MB RAM 的系统
  • 您要恢复的是使用少于 256MB RAM 并需要预引导执行环境 (PXE) 启动的系统

如果满足以下任一情况,您应使用 Windows PE 2.0:

  • 您只打算恢复 Windows Vista(或 Windows Server 2008)
  • 您要恢复的是 Windows Vista 以及 Windows XP
  • 您使用的是 BitLocker™

请注意,ImageX(请参阅“创建、更新和存储”部分)和大多数第三方映像解决方案都可用于 Windows PE 的任一版本。

引导 Windows PE

接下来您应该考虑的是如何引导 Windows PE。此处,用户方案发挥了主要作用。用户随身携带 CD 或 DVD 进行恢复是否现实?在旅行过程中,他们是否可将其用于便携式计算机?您如何使恢复媒体保持最新状态?可移动媒体上的恢复映像可能很快会过时。

无疑的,我所见到的最常见的方案是辅助硬盘分区。另一种方案是 PXE 引导。或者,您可能见过使用外部 USB 驱动器,甚至是 USB 闪存驱动器 (UFD) 的方案,但是请注意,相关硬件必须明确支持通过 UFD 设备的引导。

“Windows PE 引导方法”侧栏概括了引导每种版本的 Windows PE 所支持的方法,并提供了有关每种方法的一些重要注意事项。

您引导 Windows PE 的目标应该是在满足特定条件的同时启动恢复过程:

  • 需要极少的用户交互
  • 使用极少的移动部件(可移动媒体或可移动设备)
  • PC 可能不存在网络连接
  • PC 可能无法进行本地引导(Windows 引导失败)

由于担心驱动器故障,管理员经常认为将 Windows PE(平面或在 RAMDisk 中)置于硬盘上是不可行的方案。但事实上,鉴于现今磁盘的可靠性,这是可行的。实际情况是,如果物理驱动器确实出现了故障,用户将不能用任何方法恢复他们的系统。

我偏爱创建辅助分区并在其中存储恢复映像。我不太相信能隐藏分区,那只不过是迷惑用户。对它使用访问控制列表 (ACL) 也是不可行的,除非用户不是本地管理员。

通过缩减用于 Windows 的分区(请参阅侧栏“创建恢复分区”),您可以创建足够的空间来存储 Windows PE 和恢复映像。若要将 Windows PE 置于辅助分区上,您只要在恢复分区创建相应的引导扇区并将 Windows PE 置于此分区(随 Windows AIK 和 Windows PE 早期版本附带的文档中介绍了此过程,所以这里我就不详细介绍了)即可。关键是记住用于引导的分区由被标记为活动的分区确定。Diskpart 具有一个活动标记,还具有一个同样重要的不活动标记。若要从 Windows 内部(或从 Windows PE 副本内部)引导该恢复分区,请使用 diskpart 切换活动分区(请参见图 1)。以下是用于切换单个磁盘、双分区系统的 diskpart 脚本(使用 diskpart /s nameofscript.txt)的示例:

SEL DIS 0 
SEL PAR 1 
INACTIVE
SEL PAR 2
ACTIVE
EXIT 

图 1 用于更改活动分区的 Diskpart

图 1** 用于更改活动分区的 Diskpart **(单击该图像获得较大视图)

这是许多使用者使用恢复工具来更改分区的过程,更改分区的过程仅可针对特定分区类型(如隐藏的 OEM 分区)在 Windows PE 内部完成。有时,这些工具也将显示隐藏的 OEM 分区类型。

创建、更新和存储

创建恢复分区

只要您了解了创建恢复分区所需的步骤,则在保持 Windows 不变的同时创建恢复分区的过程就不会很困难。下面是对需要执行的操作的快速演示。请注意,此过程需要使用 Windows PE 2.0。虽然您可以不使用 Windows PE 2.0 进行部署或恢复,但完成此任务必须使用 2.0 版本。此过程也可以用于部署 Windows Vista 和创建用于 BitLocker 引导文件的引导分区,因为 BitLocker 至少需要两个分区(一个用于引导文件,一个用于 Windows 系统的其余部分)。

  1. 对磁盘进行碎片整理(此操作可帮助加快缩减进程,缩减进程会花费大量的时间)
  2. 引导到 Windows PE 2.0
  3. 运行 diskpart(如果需要,您可以根据步骤 4 到步骤 9 创建一个脚本,并将 diskpart 传递到以下参数:/s name_of_your_script
  4. SEL VOL 1(或您打算缩减的卷)
  5. SHRINK DESIRED=N MIN=N(以兆字节 (MB) 为单位进行指定,DESIRED 是目标,MIN 是您需要的绝对最低值)
  6. 完成缩减后,运行 SEL DIS 0
  7. CRE PAR PRI (如果您要指定磁盘剩余部分以外的大小,您可以指定 SIZE=N)
  8. ASSIGN LETTER=N:(此字母仅在 Windows PE 下使用)
  9. 退出 diskpart
  10. FORMAT N:/Q /Y /FS:NTFS(NTFS 格式化新分区)
  11. 运行 bootsect N:/nt60 用于 2.0,/nt52 用于 1.x)
  12. 将所需的 Windows PE 文件复制到恢复分区
  13. 关闭系统

因为 ImageX 是免费提供的解决方案,您可能已经使用映像工具一段时间了。您可以使用您最熟悉的一种工具。如果您正在考虑使用 ImageX,关于它,有几个我本人很喜欢的特性(除了免费外)值得关注一下。尤其是 ImageX 对于压缩的巨大改进。同样很棒的是,可以相对轻松地添加和编辑映像。

我也喜欢 ImageX 允许不具破坏性地映像一个或多个卷,通过将其移开即可保留用户数据。换句话说,恢复 Windows 时没必要删除整个卷。

当然,之后您需要决定存储该映像的位置。假如您的解决方案使用了恢复分区,则您可以在那里存储 WIM 或其他映像文件。您甚至可以考虑使用 Windows 部署服务 (WDS)、创建标准的 OS 映像以及将其存储到网络上。这可以实现在整个基础结构上都可用的常见恢复解决方案。毫无疑问,如果您有用户在实地工作(如上文提及的世界偏远地区的工作人员),您需要确保当他们不能连接网络时拥有自己可用的解决方案。

我之前提到您可以使用媒体(如 DVD),不过由于很多原因,我个人通常不喜欢采用这种方法。例如,映像的大小会迅速增长而超出 DVD 的容量,而且此类磁盘无法轻易更新。这并不是说光学媒体没有用途;您仅需要考虑不同类型的用户使用哪种方案最合适。如果您至今尚未确定最佳方案,我倾向将映像存储到恢复分区、USB 硬盘或闪存驱动器上(可行的话,可以使用 WDS 存储到网络上)。

使 WDS 成为炙手可热的选择,其中一个原因是能够很容易地更新集中式映像。现在您应该了解了 Windows Updates 每月发行,并且这些更新通常是关键更新。以使恢复映像尽可能保持最新的方式对您的解决方案进行设计。使用 WDS,您可以更新每台服务器上的映像,并且此映像是完整的。

关注用户数据和设置

对恢复解决方案进行设计时应记住几个问题。规划任何恢复解决方案的一个关键方面是确保用户数据的安全。您不希望看到在实地工作的用户在执行完恢复后发现在此过程中丢失了所有重要的数据。理想情况下,除非您对处理系统恢复的方式很谨慎,否则您会希望用户数据存储到 C: 分区之外的位置。

我之前提到,ImageX 允许您以非破坏性的方式还原磁盘。例如,它将现有的 Documents and Settings(或 Users)目录树移动到另一个目录,以便恢复结束后,用户或脚本能够手动恢复文件。在大多数情况下,将所有文件存储到配置文件的用户或使用漫游配置文件的用户应能在不丢失用户数据的情况下恢复系统。但是,请切记,除非您非常认真地制定了恢复解决方案或者拥有完美的备份解决方案,否则仍可能失去一些用户数据。

切记,尽管您已制定一切计划,但有些用户可能将信息存储到配置文件之外的位置。您应确保自己的解决方案考虑到可能会使用户数据意外丢失的情况,并在用户执行操作前提醒用户。

如果您使用加密文件系统 (EFS),请确保您已执行主要恢复计划,因为您肯定不希望由于无法恢复的加密而丢失数据。与 BitLocker 相似,请确保您已准备好使用它来恢复已加密的卷。这意味着需使用 Windows PE 2.0(1.x 不能与 BitLocker 交互)。有关 BitLocker 恢复的详细信息,请参阅 blogs.msdn.com/si_team

最后,请做好准备应对某些用户在自己的一些自定义或应用程序消失后出现不安的情况。自定义(用于应用程序和 Windows 本身)会随机存储在某些位置,而不仅仅存储在用户配置文件中。还原整个 OS 分区时,一些用户将会打电话询问“x 到哪儿去了?”或“为什么 Word 不再显示 y 了?”设置用户的预期,以便让他们了解该环境可能会与这之前的环境不完全相同。

使用 Windows PE 创建您自己的恢复解决方案需要花费时间,并且在计划解决方案和对其进行设计时需要考虑到用户。恢复解决方案不需要太过复杂,它仅需要能够帮助用户使用有限的技术支持以最少的时间完成备份。

Wes Miller是德克萨斯州奥斯汀市 Pluck 公司 (www.pluck.com) 的一位开发经理。在这之前,他在奥斯汀的 Winternals Software 公司任职,并曾在 Microsoft 担任 Windows 项目经理和产品经理。您可以通过电子邮件 technet@getwired.com 与 Wes 联系。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.