AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 966574
Accepted
Kismet Agbasi
Kismet Agbasi
Asked: 2019-05-10 06:52:45 +0800 CST2019-05-10 06:52:45 +0800 CST 2019-05-10 06:52:45 +0800 CST

什么决定了在 VMware VM PXE 引导期间针对 WDS 服务器使用的协议?

  • 772

各位好,

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

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

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

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

为了排除故障,我确认 WDS 服务器没有遇到任何会影响其 NIC 性能的技术问题。我确实检查了 VM 的 NIC 配置,发现它使用的是E1000E 适配器类型- 所以我将其更改为使用VMXNET 3 适配器类型。这带来了轻微的改善。

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

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

因此,是否有人知道某处是否存在指示虚拟机更喜欢 UDP 协议而不是 TFTP 的设置? 我在 VMware 文档中没有找到任何确定的内容,只是声明了 PXE 引导 VM 是可能的和受支持的这一事实。

绝对感谢任何帮助,感谢我对冗长的叙述表示歉意。

windows
  • 1 1 个回答
  • 1091 Views

1 个回答

  • Voted
  1. Best Answer
    Kismet Agbasi
    2019-05-14T03:11:40+08:002019-05-14T03:11:40+08:00

    因此,对于遇到此问题的任何人,我的解决方案是调整WDS RemoteInstall 引导文件夹中相应体系结构(即 x86 或 x64 )的引导配置数据 (BCD) 文件中的“ramdisktftpblocksize”和“ramdisktftpwindowsize”设置. 之后我重新启动了 WDS 服务。我现在看到虚拟机上的启动映像加载时间约为 10-15 秒,而使用大约 400MB 启动映像的物理机上的启动映像加载时间约为 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 资源管理器窗口中,找到相应的“default.bcd”文件并记下其路径,或者通过“SHIFT+右键单击”和“复制为路径”将其复制到剪贴板。
    4. 停止 WDS 服务器并获得 default.bcd 文件的路径后,返回命令提示符并键入以下命令(根据需要替换x86或x64):
      • 使用以下命令列出当前引导存储参数:
        • bcdedit /enum all /store F:\SCCM\RemoteInstall\Boot\x86\default.bcd
      • 将 TFTP Windows 大小设置为值 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 中看到的那样,我看到最初的对话以“TFTPWindowSize = 4”和“TFTPBlockSize = 1456”开始,但不久之后,当引导加载程序本身开始下载时,我看到了重新协商,我设置的值开始生效 - 那时我看到虚拟机在 10-15 秒内加载了启动映像。

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

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

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

    • 1

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve