将 DHCP 服务器安装迁移到另一个 Windows Server

DHCP 服务器迁移涉及将现有 DHCP 服务器的设置移动到网络上的新 DHCP 服务器。 此服务器迁移的目标是在 Windows Server作系统上安装 DHCP 服务器角色,以便它在网络上提供 DHCP 租约,而无需对 DHCP 客户端计算机进行任何可感知的更改。

本指南介绍了将现有 DHCP 服务器设置迁移到运行 Windows Server 的服务器的步骤。 使用本指南迁移 DHCP 服务器,可以简化迁移、减少迁移时间、提高迁移过程的准确性,并帮助消除在 DHCP 迁移期间可能出现的冲突。 本指南不包含在源服务器运行多个角色时迁移的说明。 如果服务器运行的是多个角色,我们建议你设计特定于服务器环境的自定义迁移过程。 有关迁移的一些说明:

  • 支持物理操作系统与虚拟操作系统之间的迁移。
  • 不支持从源服务器迁移到运行与源服务器不同系统用户界面(UI)语言的操作系统的目标服务器。
  • 建议迁移,而不是升级,即便硬件是原生 x64 架构。

本指南适用于负责在托管环境中作和部署 DHCP 服务器的 IT 管理员、IT 专业人员和其他知识工作者。 服务器管理员可以选择要迁移的现有安装的组件。 这些组件与服务器角色一起通常包括配置、数据、系统标识和作系统设置。

先决条件

  • 已设置并正在运行的现有 DHCP 服务器
  • 源服务器和目标服务器上需要以下权限:
    • 授权 DHCP 服务器所需的域管理权限。
    • 安装或管理 DHCP 服务器需要本地管理权限。
    • 需要写入迁移存储位置的权限。

服务器迁移过程

DHCP 服务器迁移分为以下主要部分:

  • 准备迁移:预迁移过程涉及手动收集数据,然后执行步骤来准备目标和源服务器。
  • 迁移 DHCP 服务器角色:迁移过程包括源服务器和目标服务器过程,这些过程使用导出和导入 cmdlet 自动收集、存储,然后迁移服务器角色设置。
  • 验证迁移:确认目标服务器已成功替换源服务器。
  • 完成迁移后任务:停用或重新利用源服务器。 排查迁移失败的问题并根据需要回滚。

该示意图展示了服务器迁移过程,包括预迁移、迁移和迁移后的步骤。

准备迁移

  • 标识 DHCP 服务器源服务器和目标服务器。

  • 确定源服务器上的域、服务器名称和密码。 若要标识原始服务器的域,请从控制面板查看系统设置。

  • 在迁移之前,请在源服务器上安装所有关键更新和服务包。 建议最佳做法是,所有当前关键更新和服务包都安装在源服务器和目标服务器上。

  • 对源服务器和目标服务器中的网络适配器数进行计数,并确保它们的数量相等。 如果运行 DHCP 服务器的源服务器具有多个网络适配器,并且 DHCP 服务器服务绑定到所有并处理不同子网上的 IP 地址,则运行 DHCP 服务器的目标服务器还必须具有多个网络适配器,以便它可以与源服务器上相同的子网提供服务。

  • 准备迁移存储文件位置。 在导出期间,必须从源服务器访问存储位置,并在导入期间从目标服务器访问存储位置。 使用可包含源服务器中所有 DHCP 服务器相关信息的公共驱动器。 存储位置应类似于以下内容:\\fileserver\users\username\。

安装迁移工具

如果尚未这样做,请在目标和源服务器上安装 Windows Server 迁移工具。 可以使用 PowerShell 或服务器管理器安装迁移工具。

对于 PowerShell,请使用 Install-WindowsFeature cmdlet:

Install-WindowsFeature -Name Migration -ComputerName Server1

使用服务器管理器,并打开“添加角色和功能向导”。 查找并安装该功能: Windows Server 迁移工具

准备目标服务器

若要在目标服务器上安装 DHCP 服务器,请完成菜单驱动的安装过程。 完成以下过程以准备目标服务器。

准备目标服务器

  1. 安装 Windows Server 并配置目标服务器。

  2. 确保有足够的磁盘空间来存储 DHCP 服务器数据库。 所需的磁盘空间因每次安装而异,应等于或大于 DHCP 服务器数据库的空间。

  3. 将目标服务器添加为要替换的源服务器的域中的成员服务器。

  4. 验证目标服务器是否可以解析导入作期间属于本地组成员的域用户的名称。 如果源服务器和目标服务器位于不同的域中,则目标服务器必须能够联系源域用户帐户所在的林的全局目录服务器。

  5. 在运行 Windows Server 的计算机上,以管理员身份打开 Windows PowerShell。

  6. 将服务器管理器模块加载到 Windows PowerShell 会话中。 若要加载服务器管理器模块,请输入以下命令:

    Import-Module -Name ServerManager
    

    注释

    导入设置之前,不需要在目标服务器上安装 DHCP 服务器。 如果未在目标服务器上安装该角色,则会在导入过程中自动安装该角色。 但是,由于导入期间角色的安装可能会延长停机时间,因此建议在目标服务器上使用服务器管理器控制台安装 DHCP 服务器,作为迁移准备的一部分。

  7. 在目标服务器上,若要安装 DHCP 服务器,请运行以下命令:

    Install-WindowsFeature -Name DHCP
    

还可以使用服务器管理器手动安装 DHCP 服务器。 有关详细信息,请参阅 安装和配置 DHCP 服务器

  1. 在迁移过程结束时,目标服务器应具有静态 IP 地址。 虽然现在不会更改目标服务器 IP 地址,但请考虑以下方案,以便在迁移完成后对其进行更改。

    • 如果迁移方案要求解除授权并断开源服务器与网络的连接,则只有这样,才能使目标服务器上的 IP 地址与源服务器上的 IP 地址相同。 源服务器必须与网络断开连接或关闭,以便源服务器与目标服务器之间没有 IP 地址冲突。 但是,目标服务器仍然可以为正在寻找运行 DHCP 服务器的旧(源)服务器的客户端提供服务。

    • 如果迁移方案要求继续在网络上运行源服务器以实现其他非 DHCP 目的,则必须在源服务器所在的子网中为目标服务器分配未分配的 IP 地址,以避免 IP 冲突。

    • 尝试续订 IP 地址租约的 DHCP 服务器客户端将续订请求发送到 DHCP 服务器的以前的 IP 地址。 如果源服务器已解除授权,然后断开与网络的连接,并且新的 DHCP 目标服务器使用不同的 IP 地址运行,则此请求最初会因为 IP 地址更改而失败。 但是,客户端尝试重新发现网络上 DHCP 服务器的 IP 地址,因此会从此暂时性故障中恢复。

    警告

    如果源服务器正在运行多个角色,则重命名源服务器或更改其 IP 地址可能会导致源服务器上运行的其他角色失败。

  2. 如果 DHCP 服务器数据库路径与默认路径不匹配,则必须确保目标服务器具有与源服务器的 DHCP 服务器数据库路径中显示的同一驱动器号的磁盘。

目标服务器现已准备好进行迁移。

准备源服务器

按照以下步骤准备源服务器进行迁移。

  1. 备份源服务器。 备份应该是特定于 DHCP 服务器的备份,而不是 Windows 备份。 (Windows 备份备份完整的操作系统。)可以使用 Netsh 命令行工具Microsoft 管理控制台(MMC)创建特定于 DHCP 服务器的备份。

  2. 如果它正在运行,请停止 DHCP 服务器服务。 在 准备目标服务器的步骤 5 中所述打开的会话中,输入:

    Stop-Service -Name "DHCPserver"
    
  3. 如果 DHCP 服务器数据库路径与默认路径不匹配,请确保目标服务器具有与源服务器的 DHCP 服务器数据库路径中具有相同驱动器号的磁盘。

现已准备好开始 DHCP 服务器迁移。

迁移 DHCP 服务器角色

在本部分中,将从源服务器将 DHCP 服务器迁移到目标服务器。 域管理员或等效成员身份是完成这些过程所需的最低要求。

将 DHCP 服务器迁移到目标服务器

  1. 如果尚未安装,请在目标服务器上安装 DHCP 服务器。

  2. 如果它正在运行,请运行以下命令停止 DHCP 服务器服务:

    Stop-Service -Name "DHCPserver"
    

从源服务器迁移 DHCP 服务器

按照本部分中的步骤从源服务器迁移 DHCP 服务器。

重要

在运行 Import-SmigServerSettingExport-SmigServerSettingGet-SmigServerFeature cmdlet 之前,请验证在迁移过程中,源服务器和目标服务器都可以联系与源服务器上的域用户或组关联的域控制器。 在运行 Send-SmigServerDataReceive-SmigServerData cmdlet 之前,请验证在迁移过程中,源服务器和目标服务器都可以联系与拥有正在迁移的文件或共享的域用户关联的域控制器。

  1. 在运行 Windows Server 的计算机上,以管理员身份打开 Windows PowerShell。

  2. 将 Windows Server 迁移工具加载到会话中。

    如果使用 “开始 ”菜单上的 Windows Server 迁移工具快捷方式打开当前会话,请跳过此步骤并转到步骤 3。 仅在使用其他方法打开的、尚未加载管理单元的会话中加载 Windows Server 迁移工具管理单元。 若要加载 Windows Server 迁移工具,请键入以下内容,然后按 Enter

    Add-PSSnapin Microsoft.Windows.ServerManager.Migration
    
  3. 以管理员身份运行 Export-SmigServerSetting cmdlet,从源服务器收集数据。 Export-SmigServerSetting cmdlet 参数可以收集单个文件(Svrmig.mig)中的所有源 DHCP 服务器数据。 或者, Export-SmigServerSetting cmdlet 可以多次运行,每次迭代都使用一个或多个参数在多个 Svrmig.mig 文件中收集和存储数据。 运行此命令之前,请查看以下内容:

    • 在步骤 4 中运行命令时,系统会提示提供密码来加密迁移存储数据。 必须提供相同的密码以便于从迁移仓库导入。

    • 路径参数可以是空目录或非空目录。 目录中的实际数据文件(Svrmig.mig)由 Export-SmigServerSetting cmdlet 创建。 因此,用户不必指定文件名。

    • 如果路径不是目标服务器可从中读取的共享位置,则必须手动将迁移存储复制到目标服务器或目标服务器可以访问的位置。

    • 如果迁移存储位置已存在,并且想要重新运行 Export-SmigServerSetting cmdlet,则必须从该位置移动 Svrmig.mig 文件并将其存储在其他位置,重命名或删除迁移存储。

    • 可以在 Windows PowerShell 提示符下,通过在单个命令行上使用 Export-SmigServerSetting cmdlet 结合 IPConfig 开关,同时执行 IP 和 DHCP 服务器迁移。

    • 额外的命令行参数信息:

      • -Users-Group 参数

        仅当 DHCP 管理员组包含本地用户时,才必须指定 -Users 参数。 否则,可以使用 -Group 参数,迁移 DHCP 管理员组的所有成员。 管理员组成员可以包括域用户。

        重要

        如果源服务器是域控制器,但目标服务器不是,则域本地组将迁移为本地组,域用户将迁移为本地用户。

      • -IPConfig 参数在源服务器上与 Export-SmigServerSetting cmdlet 一起使用时收集 IP 信息;-IPConfig 参数在目标服务器上使用 Import-SmigServerSetting cmdlet 时应用设置。

        如果源 DHCP 服务器有多个网络适配器,并且 DHCP 服务器服务绑定到多个网络适配器并在不同子网上提供 IP 地址,则目标 DHCP 服务器还必须具有多个网络适配器,以便它可以与源 DHCP 服务器相同的子网。 由于稍后将 IP 配置设置导入目标服务器时将使用 IP 配置详细信息,因此最佳做法是使用以下命令保存 IP 配置设置: IPConfig /all > IPSettings.txt

        Import-SmigServerSetting cmdlet 要求将源物理地址映射到目标物理地址。

      注释

      目标服务器可以分配与源服务器相同的静态 IP 地址,除非源服务器上的其他角色必须继续在源服务器上运行。 在这种情况下,目标服务器的静态 IP 地址可以是源服务器所在的同一子网中未分配的任何静态 IP 地址。

  4. 在源服务器上,运行 Export-SmigServerSetting cmdlet,其中 <storepath> 是完成此步骤后包含 Svrmig.mig 文件的路径。 路径的示例为 \\fileserver\users\username\dhcpstore。

    Export-SmigServerSetting -featureID DHCP -User All -Group -IPConfig -path <storepath> -Verbose
    
  5. 在源服务器上,通过运行以下命令删除源 DHCP 服务器的 DHCP 授权,其中 服务器 FQDN 是 DHCP 服务器的完全限定域名(FQDN), 服务器 IPAddress 是服务器的 IP 地址。 命令参数区分大小写,必须严格按所示指定。

    Netsh DHCP delete server <Server FQDN> <Server IPAddress>
    

在目标服务器上完成迁移

返回到目标服务器,并按照以下步骤完成迁移。

  1. 在使用 Import-SmigServerSetting cmdlet 导入 DHCP 服务器设置之前,请注意以下条件:

    • 可以将单个命令行与所有参数一起使用来导入 DHCP 设置(就像从源服务器导出数据时一样),也可以使用 cmdlet 多次导入数据,一次导入一个参数。

    • 如果决定单独运行 Import-SmigServerSetting cmdlet 以导入 IP 设置,请使用在上一过程的步骤 3 中引用的源 IPSettings.txt 文件。 在此过程的步骤 3 中,将源物理地址映射到目标物理地址。 如果计划单独导入角色和 IP 设置,则应首先导入 IP 设置以避免任何 IP 冲突。 然后,可以导入 DHCP 角色。

    • 如果 DHCP 管理员组包含本地用户,则使用 -Users 参数与 -Group 参数结合使用,将本地用户导入 DHCP 管理员组。 如果它仅包含域用户,则仅使用 -Group 参数。

    注释

    如果源服务器是域成员服务器,但目标服务器是域控制器,则导入的本地用户将提升到域用户,并且导入的本地组将成为目标服务器上的域本地组。

    • 如果要迁移的 DHCP 服务器角色尚未安装在目标服务器上, Import-SmigServerSetting cmdlet 将安装 DHCP 服务器角色及其依赖项。 在 cmdlet 安装 DHCP 服务器角色后,可能需要重启目标计算机才能完成安装。 然后,若要在重新启动计算机后完成导入作,必须再次运行 Import-SmigServerSetting cmdlet 以及 -Force 参数。
  2. 在目标服务器上运行以下命令,其中< storepath> 是包含 Svrmig.mig 文件的可用路径,<SourcePhysicalAddress-1> 和<SourcePhysicalAddress-2> 是源网络适配器的物理地址的逗号分隔列表,<TargetPhysicalAddress-1> 和<TargetPhysicalAddress-2>是目标网络适配器的物理地址的逗号分隔列表:

    Import-SmigServerSetting -FeatureID 'DHCP' -User All -Group -IPConfig <All | Global | NIC>
        -SourcePhysicalAddress <SourcePhysicalAddress-1>,<SourcePhysicalAddress-2>
        -TargetPhysicalAddress <TargetPhysicalAddress-1>,<TargetPhysicalAddress-2>
        -Force -Path <storepath> -Verbose
    

    如果用户想要导入所有源设置,则应将 -IPConfig 开关与值 全部 一起使用。

    重要

    如果将源服务器 IP 地址与 DHCP 角色一起导入目标服务器,而不会断开或更改源服务器的 IP 地址,则会发生 IP 地址冲突。

  3. 运行以下命令以启动 DHCP 服务: Start-Service -Name "DHCPServer"

  4. 授权目标服务器。 命令参数区分大小写,必须严格按所示指定。 在目标服务器上运行以下命令,其中 服务器 FQDN 是 DHCP 服务器的 FQDN, 服务器 IPAddress 是服务器的 IP 地址:

    netsh DHCP add server <Server FQDN> <Server IPAddress>
    

完成此迁移后,网络服务器上的客户端计算机由运行 Windows Server 的新基于 x64 的目标服务器提供服务。 当目标服务器准备好向网络提供 IP 地址时,迁移已完成。

验证迁移

完成所有迁移步骤后,可以使用以下过程来验证 DHCP 服务器角色迁移是否成功。 如果迁移失败,可以按照 迁移后任务中的步骤返回到以前的有效配置。

验证目标服务器的配置

按照以下步骤确认 DHCP 目标服务器现在正在为域提供服务。

  1. 通过在 Windows PowerShell 窗口中运行以下命令,确保目标服务器获得授权:

    netsh DHCP show server
    

    此命令的输出必须包含 DHCP 目标服务器的名称。

  2. 检查 DHCP 服务器是否在目标服务器上运行。 在任务管理器的“服务”选项卡上,DHCP 服务器的状态应为“已启动”。 还可以使用任务管理器来确认源服务器的状态 已停止

  3. 通过在客户端计算机上的命令提示符处运行以下命令,验证客户端计算机是否在请求时正确接收 IP 地址:

    ipconfig /release
    
    ipconfig /renew
    

    如果 DHCP 服务器的 IP 地址未更改,则无需运行 ipconfig /release 命令。 运行 ipconfig /renew 应足够。

    这些命令的输出应显示客户端计算机已发出 IP 地址。

  4. 使用 DHCP 控制台验证是否已迁移范围和其他设置。 若要连接到目标服务器,请选择 “作”,选择“ 添加服务器”,然后键入 DHCP 服务器的 IP 地址或主机名。 在控制台树中,展开服务器节点,然后展开 IPv4 和 IPv6 节点,以确认范围已迁移。 然后找到作用的文件夹并查看地址范围、预留、范围选项和活动租用以验证相同内容。 还可以转到“服务器选项”文件夹并验证迁移的服务器选项。

迁移后的任务

源服务器的这些迁移后任务是可选的,具体取决于迁移方案。

在验证目标服务器(而不是源服务器)现在为网络提供服务后,迁移已完成。

停用源服务器上的 DHCP

验证迁移后,可以断开连接、重新调整用途或停用源服务器。 如果源服务器正在运行其他服务器角色,则应将其保留在网络上。 如果不必使用此计算机,可以将其存储为备份,以防必须还原到以前的 DHCP 配置。

如果迁移方案包括独立的 DHCP 服务器,则在创建导出文件后,此源服务器处于脱机状态。 在这种情况下,DHCP 服务从停止到新服务器上的迁移完成为止一直中断。

如果迁移方案在域中包括多个 DHCP 服务器,则备份或其他 DHCP 服务器在迁移过程中继续为 IP 地址提供服务,以便永远不会中断到客户端的服务。 将源服务器的 IP 地址迁移到目标服务器时,迁移在新的服务器上完成。

停用源服务器

确认目标服务器正在执行以前由源服务器处理的函数后,可以根据需求停用或重新调整源服务器用途。 遵循组织的有关服务器停用的策略。 有关解除域控制器的信息,请参阅降级域控制器和域

如果迁移失败,请还原 DHCP

如果 DHCP 服务器迁移失败,则可以使用以下选项:

  • 如果源服务器尚未重新调整用途,管理员可以重新分配 IP 配置设置,重新授权服务器,并在原始服务器上重启 DHCP 服务。
  • 使用在源服务器上创建的备份文件还原原始 DHCP 服务器上的 DHCP 服务器。

排查基于 cmdlet 的迁移问题

Windows Server 迁移工具部署日志文件位于 %windir%\Logs\SmigDeploy.log。 其他 Windows Server 迁移工具日志文件在以下位置创建。

  • % windir%\Logs\ServerMigration.log

  • % localappdata%\SvrMig\Log

如果无法在以前的位置创建迁移日志文件,%临时%中创建ServerMigration.log和SmigDeploy.log,%windir%\System32 中创建其他日志。

有关特定于 DHCP 的故障排除提示,请参阅 排查 DHCP 服务器上的问题

如果源服务器或目标服务器与域控制器或全局编录服务器之间的连接无法还原

  1. 在再次运行 Export-SmigServerSettingImport-SmigServerSettingGet-SmigServerFeature 之前,请从运行 cmdlet 的服务器上删除所有属于本地组的未解析的域用户或组。

  2. 在再次运行 Send-SmigServerDataReceive-SmigServerData 之前,请删除在迁移源服务器上具有文件、文件夹或共享用户权限的所有未解析的域用户或组。

查看 Windows Server 迁移工具结果对象的内容

所有 Windows Server 迁移工具 cmdlet 都以对象的形式返回结果。 可以保存结果对象,并查询它们以获取有关已迁移的设置和数据的详细信息。 还可以将结果对象用作其他 Windows PowerShell 命令和脚本的输入。

结果对象说明

Windows Server 迁移工具 Import-SmigServerSettingExport-SmigServerSetting cmdlet 返回 MigrationResult 对象列表的结果。 每个 MigrationResult 对象都包含有关 cmdlet 处理的数据或设置、作结果以及任何相关的错误或警告消息的信息。 下表描述了 MigrationResult 对象的属性。

属性名称 类型 定义
项目类型 枚举 要迁移的项的类型。 值包括 GeneralWindowsFeatureInstallationWindowsFeatureOSSetting
身份证件 字符串 已迁移项的 ID。 值的示例包括 本地用户本地组DHCP
成功 布尔型 如果迁移成功,则显示值为 True ;否则,将显示 False
详细列表 List<MigrationResultDetails> MigrationResultDetails 对象的列表。

Send-SmigServerDataReceive-SmigServerData cmdlet 返回 MigrationDataResult 对象列表的结果。 每个 MigrationDataResult 对象都包含有关 cmdlet 处理的数据或共享的信息、 操作的结果、任何错误或警告消息,以及其他相关信息。 下表描述了 MigrationDataResult 对象的属性。

属性名称 类型 定义
项目类型 枚举 迁移项的类型。 值包括 文件文件夹共享加密文件
来源位置 字符串 项的源位置,显示为路径。
目的地位置 字符串 项的目标位置,显示为路径。
成功 布尔型 如果迁移成功,则显示值为 True ;否则,将显示 False
尺寸 整数 项大小(以字节为单位)。
错误详情 List<MigrationResultDetails> MigrationResultDetails 对象的列表。
错误 枚举 已发生错误的错误枚举。
警告消息列表 List<String> 警告消息的列表。

下表描述了 MigrationResultDetails 对象中对 MigrationResultMigrationDataResult 对象通用的对象的属性。

属性名称 类型 定义
特性标识符 字符串 与该项目相关的迁移设置的名称。 值的示例包括 IPConfigDNS。 对于数据迁移,此属性为空。
消息 List<String> 详细事件消息的列表。
明细代码 (DetailCode) 整数 与每个事件消息关联的错误或警告代码。
严重程度 枚举 事件的严重性(如果发生)。 值的示例包括 信息错误警告
标题 字符串 结果对象的标题。 值的示例包括 IP 配置的网络适配器物理地址,或用于本地用户迁移的用户名。