桌面文件WDS 中的高级功能

Wes Miller

目录

命令行管理
映像存储
多播
WDS 日志记录
其他问题
总结

在本专栏的最近两期中,我们研究了 Windows 部署服务 (WDS)。首先我介绍了 Microsoft 的基于预引导执行环境 (PXE) 的部署工具的历史,然后概述了 WDS。本月,我将深入探讨一些高级主题 —

WDSUtil(用于 WDS 的功能强大的命令行实用工具)、WDS 映像存储、WDS 日志记录以及针对 Windows Server® 2008 使用 WDS 的多播功能。

对于 Windows® 2000 和 Windows Server 2003 中提供的远程安装服务 (RIS),它并没有像许多人期望的那样提供足够丰富的功能。尤其是在以下三个领域:

  • 性能(更具伸缩性的部署)
  • 日志记录/审核
  • 命令行自动化

随着我们逐步展开本月的专栏,您会看到在初始版本的 WDS(更具体地说,在 Windows Server 2008 的 WDS )中,以上每个领域都得到了重大改进。

命令行管理

在上个月我曾提到过,WDS 提供了明显改进的管理控制台。但对大多数企业而言更为重要的是,WDS 提供了一个用于管理工作的新命令行实用工具 WDSUtil.exe(请参阅图 1)。WDSUtil 可随 Windows Server 2003(SP1+WDS 或 SP2)中的 WDS 可选组件以及 Windows Server 2008 中的 WDS Role 一同安装。

fig01.gif

图 1 通过 WDSUtil 将体系结构发现选项设为 yes(单击图像可查看大图)

WDSUtil 是一个功能强大得令人惊讶的实用工具,但却比较复杂。可以通过 Microsoft® 管理控制台 (MMC) 实现的所有功能甚至更多其他功能都可以通过 WDSUtil 有效地完成。我们来实际看一看下面的示例(当您遇到问题时,也可以运行它来进行诊断):

wdsutil /get-server /show:config

得到的结果与在 WDS MMC 中看到的几乎完全一样 — 只是 WDSUtil 可以通过更容易阅读的格式输出它,并可以在随后将其输出到文本文件中。

信息太少?尝试改为运行以下命令,它会返回更多信息:

wdsutil /get-server /show:all /detailed

可以通过运行以下命令来停止和重启 WDS 服务器:

wdsutil /stop-server
wdsutil /start-server

可在以下网址中找到 WDSUtil 的命令参考:go.microsoft.com/fwlink/?LinkId=112194。如果愿意,您还可以在以下网址下载它的 .chm 版本(以及所有 WDS 2008 文档):go.microsoft.com/fwlink/?LinkId=89381

使用 RIS 时,如果不是 Active Directory® 服务接口的权威人士,要想通过命令行来确定特定的 MAC 地址或 GUID 是否与 Active Directory 中的机器帐户对象 (MAO) 相关联,可能需要颇费一番周折。如使用 WDS­Util,则可利用二者中的任一个执行查询。

GUID 可能会很容易让人混淆,因为通过二进制字符串格式或 GUID 字符串格式都可以输入它们,唯一的不同之处是字节顺序和有无连字符。可使用以下任意一行代码输入带有或不带有连字符的 MAC 地址:

wdsutil /get-device /id:01-23-45-67-89-AB
wdsutil /get-device /id:0123456789AB

可使用以下命令通过二进制字符串获取设备信息:

wdsutil /get device /id:ACEFA3E81F20694E953EB2DAA1E8B1B6

或者,也可以使用以下命令通过 GUID 字符串获取设备信息:

wdsutil /get device /id:E8A3EFAC-201F-4E69-953-B2DAA1E8B1B6

许多计算机或许能够运行 64 位版本的 Windows,但遗憾的是,其中有些无法正确报告其体系结构。通过运行属于 WDS 中的一个小型网络启动程序,可让 WDS 尝试确定某个系统是否支持 x64。如图 1 所示,可使用以下命令实现此目的:

wdsutil /set-server /architecturediscovery:yes

事实上,WDSUtil /set-server 命令可用于配置大量的服务器设置。要查看可能情况,请运行以下命令:

wdsutil /set-server /?

如果已将 Windows Server 2003 WDS 服务器升级到 Windows Server 2008,可通过运行以下命令将全部 RIPrep 映像转换为 Windows 映像格式 (WIM) 的映像:

WDSUtil /convert-RIPrepImage

尽管 WDSUtil 可以转换 RIPrep 映像,但却无法转换其他 RISetup 映像(传统的 RIS/原有的 WDS 脚本安装)。

WDSUtil 的强大体现在能够自动执行重复的任务。通过图 2 中的命令可对 WDSUtil 的功能有大致的了解。无论是实施新 WDS 服务器、跨多服务器添加或修改映像、管理多播基础结构,还是指定何种网络启动程序用于特定的启动客户端,WDSUtil 均能提供之前的 RIS 所不具备的一些重要功能。

图 2 WDSUtil 命令

命令 说明
/add 添加设备、映像或映像组。
/approve-AutoAddDevices 批准未决的自动添加设备并允许为其设置配置信息。
/convert-RiprepImage 将传统 RIPrep 映像转换成 WIM 映像。
/copy-Image 复制映像存储中的某个映像。
/delete-AutoAddDevices 删除所有或特定的未决自动添加设备。
/disable 禁用 WDS 服务器或传输服务器。
/disconnect-Client 从多播传输或命名空间断开某个客户端。
/enable 启用 WDS 服务器或传输服务器。
/export-Image 与 ImageX 中的 /export 一样,它会将现有映像从映像存储导出到 WIM 映像。
/get 获取设备、映像、映像组、WDS 服务器或传输服务器的属性。
/initialize-Server 配置 WDS 服务器以便在首次安装后使用。
/new 创建捕获或发现映像、多播传输和命名空间。
/progress 在执行指定命令时显示执行进度。
/reject-AutoAddDevices 拒绝所有或特定的未决自动添加设备。
/remove 删除映像、映像组、多播传输和命名空间。
/replace-Image 使用新映像来替换(覆盖)某个映像。
/set 设置设备、映像、映像组、WDS 服务器或传输服务器的属性。
/start 启动 WDS 服务器或传输服务器。
/stop 停止 WDS 服务器或传输服务器。
/uninitialize-Server 还原服务器初始化期间对服务器所做的更改(还原成未配置状态)。
/update-ServerFiles 使用服务器的 System32\RemInst 目录中的最新版本来更新服务器的 REMINST 共享中的文件。
/verbose 在执行指定命令时显示详细输出。

映像存储

我在上个月曾提到过 RIS 使用单实例存储 (SIS) 在磁盘上更有效地存储文件,此方法在 WDS 中已被弃用。现在,所有的本机模式 (WIM) 映像(无论是何种操作系统)都保存在 WDS 映像存储中。正如我在之前的专栏中提到的,当卷映像有相关文件时,单实例功能可节省 .wim 文件中的空间。WDS 映像存储采用的是同样的工作原理。实际上,它使用 WIM 功能来存储映像。

要使用映像存储,需要至少有一个映像组;WDS 初始化通常会提示您创建一个映像组。您也可以在添加安装映像时创建一个新的映像组,而此映像将被添加到其中(请参阅图 3)。

fig03.gif

图 3 创建新映像组(单击图像可查看大图)

那么,什么是映像存储?在 Images 目录中的 RemoteInstall 目录下,您会发现与创建的每个映像组所对应的目录。如图 4 所示,导入到映像组中的每个安装映像都有一个 .wim 文件,还有一个单独的 .rwm 文件(资源 WIM)。

fig04.gif

图 4 映像组的内容(单击图像可查看大图)

仔细查看图 4 中的文件。此映像组包括:

  • install.wim(Windows Server 2008,Standard Edition)
  • install-(2).wim(Windows Server 2008,Enterprise Edition)
  • install-(3).wim(Windows Server 2008,Datacenter Edition)
  • install-(4).wim(Windows Server 2008,Standard Edition (Server Core)
  • install-(5).wim(Windows Server 2008,Enterprise Edition (Server Core)
  • install-(6).wim (Windows Server 2008,Datacenter Edition (Server Core)

现在,将这些文件的大小与 MMC 中的进行比较(如图 5 所示)。图 4 中每个 .wim 文件的大小与 Res.rwm 文件的大小相比只占很小的比例。为什么呢?嗯 — 为了节省空间,图中显示的 .wim 文件只是实际文件的存根。它们包括用来恢复 .wim 文件的元数据,但并不实际包含文件资源。映像组中所有文件资源都存储在该映像组的 .rwm 文件中。

fig05.gif

图 5 服务器管理器中显示的映像(单击图像可查看大图)

要编辑映像存储中的安装映像,可导出映像、进行编辑,然后替换映像(或重新导入),也可以通过从 MMC 禁用相应的安装映像并通过安装和修改 .wim 文件进行编辑,以实现与它的交互。

RIS 始终存在的一个问题是映像复制。通过缆线复制经过 SIS 处理的文件时,SIS 会丢失,因为它是 NTFS 属性。这意味着如果有 40GB 的 RISetup 和 RIPrep 映像并要将它们复制到另一服务器,即使 SIS Groveler 已将其减少到 5GB,仍会通过缆线复制 40GB。对于 WDS 映像存储而言却并非如此。实际上,由于映像存储体系结构的原因,您可将其存储在分布式文件系统 (DFS) 服务器上,并使用 DFS 复制 (DFS-R) 在站点间复制它。

具体细节会随 WDS 版本的不同而异。对于 Windows Server 2003,请参阅 go.microsoft.com/fwlink/?LinkId=81031 中所提供文档的“使用图像”一章。对于 Windows Server 2008,请参阅位于 go.microsoft.com/fwlink/?LinkId=121960 中的“使用 DFS 存储和复制图像”。由于资源都存储在 .rwm 文件中,因此即使将映像组从一个服务器复制到另一个,通过缆线传输的数据量也只占需要传输的(或在旧的 RIS SIS 体系结构中)每个完整 .wim 文件数据量的一小部分。

那么,何时需要创建新映像组,何时需要使用旧映像组呢?这些规则通常与用于 .wim 文件的规则完全相同。尽管可以将 Windows XP Professional SP3 的映像放入主要由 Windows Server 2008 映像构成的映像组中,但这样做意义并不大,因为它不会节省很多空间。与 .wim 一样,您通常都会希望至少有针对以下软件的映像组:

  • 每个特定版本的 Windows — 同时包括版本 SKU (Windows XP Professional) 和 Service Pack 修订版 (SP3)。
  • Windows Server 2003 和更低版本:各个本地化语言版本(非多语言用户界面)。在 Windows Vista® 之前,本地化版本是完全不同的二进制文件,因此它们没有作为单实例存储在 .wim 文件中。
  • 各个版本的每个 Service Pack。尽管可以将 Windows Server 2008 和 Windows Vista SP1 映像存储在一起,但需要考虑该功能在组织中是否有意义。

映像存储即使多于之前的 SIS,也能很显著地节约空间 — 无论是在磁盘上还是通过缆线传输时,而且通常不需要什么操作即可使其顺畅运行。

RIS 的最大缺点之一是可伸缩性不足。多播部署是专门为改善这一问题而设计的。人们通常认为多播就是“更快”地部署,但实际上它与速度无关 — 它只是“更多”。可通过 RIS 部署多个系统。实际上,RIS 可同时处理约 75 个系统的部署。

但在远未达到此数量之前,性能就已受到影响,并且每个安装所需的时间也会越来越长。更糟糕的是,随着安装数量的增加,失败的可能性也在增加。同时,多个安装的服务器消息块 (SMB) 网络流量会使网络处于满负荷状态(因此在部署期间,员工可能会无法访问关键网络资源,如 Microsoft Exchange Server)。

多播的目的在于增加部署数量。无论是部署四个服务器还是部署具有 100 个系统的会议中心,多播都可以帮助您快速完成部署,并且不会使网络处于满负荷状态。尽管可以使用多播来部署单个系统,但是必须等到获得侦听传输的多个系统后,规模部署的好处才会得以实现。

要使用多播,必须具有支持多播的路由器。通常情况下,这意味着应启用 Internet 组管理协议 (IGMP) Snooping。此外还必须拥有 Windows PE 2.1(Windows Server 2008 RTM 或 Windows Vista SP1),因为 Windows Vista RTM 附带的版本 (2.0) 无法接收多播传输。

如果在同一个网络上有多个 WDS(或其他多播)服务器,还应指定一个自定义 IP 地址范围。可以通过 WDS MMC 来方便地更改它,方法是右键单击服务器、单击“属性”,然后单击“网络设置”选项卡。

在执行多播广播时,多播服务器既可以调整最慢客户端的接收速度,也可以将速度固定在较高水平而丢弃速度跟不上的客户端。出于可靠性考虑,WDS 会以最慢客户端接收传输时的速度运行。

如果发现传输性能低于您的预期,可运行 wdsutil /Get-Multicast­Transmission/­Show-clients。这可以找出限制传输速度的主客户端。然后可以断开该客户端,它会改为继续使用 SMB 而非多播。如需自动断开慢速客户端的示例脚本,请转到 go.microsoft.com/fwlink/?LinkId=121961

要创建多播传输,可右键单击安装映像并选择“创建多播传输”,也可右键单击 WDS 控制台中的“多播传输”并选择“创建多播传输”。在创建多播传输时,既可创建 Auto-Cast,也可创建 Scheduled-Cast。如果有多个定期联机的客户端并且它们都需要完全相同的映像,则 Auto-Cast 会非常有用;新客户端会自动添加到正在进行的传输中,此传输是为最早请求安装映像的客户端启动的。Scheduled-Cast 允许您设置组大小,达到此值后即开始进行传输。

也可将传输设为在指定时间启动。客户端使用多播传输后,您可以通过单击映像名称来查看它们。在右侧窗格中,您会看到有关连接到传输的客户端的具体细节。

通常情况下,最终用户从“WDS 设置”客户端来使用多播。但是,Windows Server 2008 Windows 自动安装工具包 (WAIK) 随附了一个名为 WDSMCast 的命令行实用工具,利用它可通过多播传输从 WDS 请求 .wim 文件。.wim 文件必须完整地传输并应用到客户端 — 因此,您需要确保有足够的磁盘空间来存储和应用映像。下个月,我将介绍如何把 WDSMCast 集成到您自己的自定义部署过程中。

WDS 日志记录

WDS 可执行大量日志记录和跟踪,但为了节省空间默认禁用了其中的大部分功能。有两种类型的事件日志记录 — 当客户端写入 Windows 事件日志时以及写入用于 WDS 其他方面的跟踪日志时。

但是,在 Windows Server 2008 中,WDS 默认会执行大量日志记录。这些日志均位于“管理工具”|“事件查看器”下。WDS 日志显示在“应用程序和服务日志”| Microsoft | Windows |“部署服务诊断”下的“事件查看器”中。更为方便的是,这些日志与您在 MMC 中查看 WDS 角色时显示的是相同的日志(请参阅图 6)。

fig06.gif

图 6 在服务器管理器中查看 WDS 事件(单击图像可查看大图)

通过使用以下参数来运行 WDSUtil 可启动 WDS 客户端日志记录(如图 6 中的事件日志所示):

wdsutil /wdsclientlogging /enabled:yes /logginglevel:info

也可针对 WDS 的多个不同子组件启用跟踪日志记录。要配置跟踪,可在注册表项下设置相应的 DWORD 注册表值,如图 7 所示。所有跟踪日志都存储在 \Windows\tracing 下。然后,您需要重启相应的组件以便开始执行日志记录。

图 7 设置跟踪日志记录

WDS 组件 注册表项 注册表值 日志名称
服务器 HKLM\SOFTWARE\Microsoft\Tracing\WDSServer\EnableFileTracing 1 wdsserver.log
多播功能 HKLM\System\CurrentControlSet\Services\WDSServer\Providers\WDSMC\TraceDisabled 0 wdsserver.log
管理组件 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\WDSMGMT\EnableFileTracing 1 wdsmgmt.log
MMC HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\WDSMMC\EnableFileTracing 1 wdsmmc.log

WDS 还具有性能计数器(如 go.microsoft.com/fwlink/?LinkId=121962 所述),您可以在系统性能出现问题时监视它们(或提前执行系统性能分析)。正如之前提到的,在遇到问题时,可使用 WDSUtil 的 /detailed、/verbose 或 /progress 开关来获取更详细的信息。

如果连接到 WDS 服务器的客户端或与之交互的 WDS 客户端存在问题,可使用 Microsoft Network Monitor (Netmon) 来进行调试,它是一个用于调试问题的极佳工具。Network Monitor 的下载地址为:go.microsoft.com/fwlink/?LinkId=121491

其他问题

我发现有许多值得一提的问题。首先是内存 — 请记住,在核心部分 WDS 是基于 Windows PE 2.x 的。这意味着 WDS 客户端至少需要 384MB RAM — 实际上,应确保 512MB 以获得最优性能。还要记住,Windows PE 2.x 无法在非高级配置和电源接口 (ACPI) 系统上启动 — 这并不一定指旧的硬件。据报告,有些较新的系统也不支持 ACPI。

请注意,这些系统也不支持 Windows Vista 或 Windows Server 2008。对于不支持 ACPI 的系统,您可以预先在其中存放一份 Windows Server 2003 或更低版本的 WDS 或 RIS Server,也可以通过非 PXE 机制安装 Windows。

最后请牢记,如果希望从服务器引导 Windows PE 1.x,还需要使用 Windows Server 2003 或更低版本的 WDS 或 RIS Server,因为 Windows Server 2008 中的 WDS 无法引导 Windows PE 1.x 映像(RAMDisk 或 PXE)。

总结

到目前为止,我已深入探讨了 WDS 的历史、基础知识和一些高级主题。在下个月,我将介绍一些自定义的 WDS 方案 — 具体来说,包括如何与 WDS 交互以及如何对其进行调整以执行所需的任务,但通常不会用到现有的 WDS/安装体验。

Wes Miller 是位于德克萨斯州奥斯汀市的 CoreTrace 公司 (www.CoreTrace.com) 的高级技术产品经理。在此之前,他在 Winternals Software 公司任职,并曾在 Microsoft 担任项目经理。可通过电子邮件 technet@getwired.com 与 Wes 联系。