各位好,
我已经在我的环境中成功实现了 Windows 部署服务器,使用 Microsoft 部署工具包 (v8450) 构建了 x86 和 x64 启动映像以支持 UEFI 和 Legacy BIOS,并且能够成功地 PXE 启动物理机(HP Z4)和一个虚拟机(在 ESXi 6.5 主机上运行的 VM 版本 13)。此外,我还创建了相关的 DHCP 供应商类别和策略,以确保将正确的引导文件提供给适当的 PXEClient(即 UEFI 与 BIOS)。
也就是说,当使用 UEFI 启动时(启用了安全启动),我观察到了两件事(第二件事值得关注,因此我发布了这个问题):
在启动过程中,物理机成功连接 WDS 服务器并在大约 6 秒内拉下启动映像,然后在大约 6 - 8 分钟内继续完成操作系统安装。
在启动过程中,虚拟机也成功联系到 WDS 服务器并拉下启动映像。但是,获取启动映像需要 45 分钟到 1 小时。之后,操作系统安装完成的时间与物理机差不多(大约 8 分钟)。
为了排除故障,我确认 WDS 服务器没有遇到任何会影响其 NIC 性能的技术问题。我确实检查了 VM 的 NIC 配置,发现它使用的是E1000E 适配器类型- 所以我将其更改为使用VMXNET 3 适配器类型。这带来了轻微的改善。
因此,我决定进行 Wireshark 数据包捕获,看看是否可以看到物理机和 VM 与 WDS 服务器通信的方式有什么不同。好吧,对我来说唯一突出的是以下内容:
- 物理机使用 TFTP 协议
- 虚拟机使用 UDP 协议
因此,是否有人知道某处是否存在指示虚拟机更喜欢 UDP 协议而不是 TFTP 的设置? 我在 VMware 文档中没有找到任何确定的内容,只是声明了 PXE 引导 VM 是可能的和受支持的这一事实。
绝对感谢任何帮助,感谢我对冗长的叙述表示歉意。
因此,对于遇到此问题的任何人,我的解决方案是调整WDS RemoteInstall 引导文件夹中相应体系结构(即 x86 或 x64 )的引导配置数据 (BCD) 文件中的“ramdisktftpblocksize”和“ramdisktftpwindowsize”设置. 之后我重新启动了 WDS 服务。我现在看到虚拟机上的启动映像加载时间约为 10-15 秒,而使用大约 400MB 启动映像的物理机上的启动映像加载时间约为 6-10 秒。
我唯一注意到的是,这会创建碎片化的 IP 数据包,但无论如何它们都会重新组装,所以不会打扰我,因为无论如何根据我的频率和时间对我的最终用户或网络的影响很小将是用于成像的 PXE 引导系统。但是,如果这对您来说是个问题,那么请寻求其他解决方案。
在我的环境中,路径如下(当然你的可能不同,所以相应地调整):
注意: 出于显而易见的原因(我希望如此),请在进行更改之前备份 default.bcd 文件。
这是我为实现此解决方案所做的工作:
bcdedit /enum all /store F:\SCCM\RemoteInstall\Boot\x86\default.bcd
bcdedit /store F:\SCCM\RemoteInstall\Boot\x86\default.bcd /set {68d9e51c-a129-4ee1-9725-2ab00a957daf} ramdisktftpwindowsize 8
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
使用以下命令向 WDS 服务器发出信号以使用您的更改重建引导文件:**
就是这样。通过这些更改,我能够在 PXE 服务器上启动 Wireshark,并通过 pxe 引导我的虚拟机。正如我在 Wireshark 中看到的那样,我看到最初的对话以“TFTPWindowSize = 4”和“TFTPBlockSize = 1456”开始,但不久之后,当引导加载程序本身开始下载时,我看到了重新协商,我设置的值开始生效 - 那时我看到虚拟机在 10-15 秒内加载了启动映像。
正如我之前提到的,我看到了大约 8 个左右的“分段 IP 协议”数据包,但它们都被重新组装,而且最终目标也达到了 - 虚拟机和物理机都快速启动并成功安装了操作系统。
希望这些信息对某人有所帮助-抱歉写了一本书……哈哈。
归功于以下帖子: https ://blog.uvm.edu/jgm/2010/11/04/tuning-microsoft-pxe-tftp/