什么决定了 VMware VM PXE 启动 WDS 服务器时使用的协议?

什么决定了 VMware VM PXE 启动 WDS 服务器时使用的协议?

大家好,

我已经在我的环境中成功实施了 Windows 部署服务器,使用 Microsoft 部署工具包 (v8450) 构建了 x86 和 x64 启动映像以支持 UEFI 和 Legacy BIOS,并且能够成功地对物理机 (惠普 Z4)和虚拟机(在 ESXi 6.5 主机上运行的虚拟机版本 13)。此外,我还创建了相关的 DHCP 供应商类和策略,以确保将正确的启动文件提供给适当的 PXEClient(即 UEFI 与 BIOS)。

也就是说,使用 UEFI 启动时(启用安全启动),我观察到两件事(第二个问题值得关注,因此我发布了这个问题):

  1. 在启动过程中,物理机成功联系WDS服务器,并在大约6秒内拉下启动映像,然后在大约6到8分钟内完成操作系统安装。

  2. 在启动过程中,虚拟机也成功联系了 WDS 服务器并下载了启动映像。但是,获取启动映像需要 45 分钟到 1 小时的时间。之后,操作系统的安装大约与物理机箱安装的时间相同(大约 8 分钟)。

为了进行故障排除,我确认 WDS 服务器没有遇到任何会影响其 NIC 性能的技术问题。我确实检查了虚拟机的 NIC 配置,发现它正在使用E1000E适配器类型- 所以我把它改成了使用VMXNET 3 适配器类型相反。这带来了一点改善。

因此,我决定进行 Wireshark 数据包捕获,看看物理机和虚拟机与 WDS 服务器通信的方式是否有什么不同。对我来说唯一突出的是以下内容:

  1. 物理机使用TFTP协议
  2. 虚拟机使用 UDP 协议

像这样,是否有人知道是否存在某个地方的设置可以指示虚拟机优先使用 UDP 协议而不是 TFTP 协议? 除了声明通过 PXE 启动 VM 是可行的并且受支持之外,我在 VMware 文档中没有找到任何明确的说明。

任何帮助我都非常感谢,谢谢,并对冗长的叙述表示歉意。

答案1

因此,对于遇到此问题的人来说,解决方案是调整“ramdisktftpblocksize”“ramdisktftpwindows大小”相应体系结构的引导配置数据 (BCD) 文件中的设置(即 x86 或 x64) 位于 WDS RemoteInstall Boot 文件夹中。之后我重新启动了 WDS 服务。现在,我发现使用大约 400MB 的启动映像,虚拟机上的启动映像加载时间约为 10-15 秒,物理机上的启动映像加载时间约为 6-10 秒。

我唯一注意到的是,这会产生碎片化的 IP 数据包,但它们无论如何都会被重新组装,所以这不会对我造成太大困扰,因为根据我进行 PXE 引导系统进行成像的频率和时间,这对我的最终用户或网络的影响很小。但是,如果这对您来说是个问题,请寻求其他解决方案。

在我的环境中,路径如下(当然,你的可能会有所不同,因此请进行相应调整):

For 32-bit (x86):  "F:\SCCM\RemoteInstall\Boot\x86\default.bcd"
For 64-bit (x64):  "F:\SCCM\RemoteInstall\Boot\x64\default.bcd"

警告: 出于显而易见的原因(我希望),在进行更改之前请备份 default.bcd 文件。

以下是我为实现该解决方案所做的事情:

  1. 在 PXE 服务器上打开 WDS 管理控制台 (在我的情况下,它是运行 Windows 部署服务角色的 SCCM 服务器) 和停止服务器。您也可以停止 WDS 服务 - 但我更喜欢前者(在我看来,这是一种更清洁的方法)。
  2. 启动管理命令提示符窗口 (不要试图使用 PowerShell 控制台,我在与 BCDEdit 命令交互时运气不佳)。
  3. 在单独的 Windows 资源管理器窗口中,找到相应的“默认.bcd”文件并记下其路径,或者直接将其复制到剪贴板中“SHIFT+右键单击”“复制为路径”
  4. 在 WDS 服务器停止并且掌握 default.bcd 文件的路径后,返回命令提示符并键入以下命令(替代x86或者x64作为适当的):
    • 使用此命令列出当前的引导存储参数:
      • bcdedit /enum all /store F:\SCCM\RemoteInstall\Boot\x86\default.bcd
    • 将 TFTP 窗口大小设置为值 8:
      • bcdedit /store F:\SCCM\RemoteInstall\Boot\x86\default.bcd /set {68d9e51c-a129-4ee1-9725-2ab00a957daf} ramdisktftpwindowsize 8
    • 将 TFTP 块大小设置为值 16384:
      • bcdedit /store F:\SCCM\RemoteInstall\Boot\x86\default.bcd /set {68d9e51c-a129-4ee1-9725-2ab00a957daf} ramdisktftpblocksize 16384
    • 再次列出当前引导存储参数并验证您的更改是否存在:
      • bcdedit /enum all /store F:\SCCM\RemoteInstall\Boot\x86\default.bcd
  5. 返回 WDS 管理控制台并启动 WDS 服务器
  6. 使用以下命令向 WDS 服务器发出信号,让其使用您的更改重建启动文件:**

    - sc control wdsserver 129
    

就是这样。通过这些更改,我能够在 PXE 服务器上启动 Wireshark,pxe 启动我的虚拟机。当我在 Wireshark 中观察时,我看到初始对话以“TFTP窗口大小 = 4”“TFTPBlock大小 = 1456”但不久之后,当引导加载程序本身开始下载时,我看到重新协商,其中我设置的值生效了 - 就在那时,我看到虚拟机在 10-15 秒内加载了启动映像。

正如我之前提到的,我看到了大约 8 个“碎片化 IP 协议”数据包但它们都重新组装并且最终目标也实现了 - 虚拟机和物理机都快速启动并成功安装了操作系统。

希望这些信息对某些人有帮助——抱歉写了一本书……哈哈。

感谢以下帖子: https://blog.uvm.edu/jgm/2010/11/04/tuning-microsoft-pxe-tftp/

相关内容