☰
Windows Server 2003域控迁移实战:FSMO转移与全局编录详解
2026/10/16 20:34:23 网站建设 项目流程

简介:面向需要部署Windows Server 2003域环境或进行域控制器迁移的IT运维人员,这份docx文档完整记录了主域控与辅助域控的搭建方法,包括环境准备、dcpromo向导操作、IP及DNS设置等。资源重点讲解主域控制器迁移流程,详细演示FSMO五大角色——RID主机、PDC仿真器、基础结构主机、域命名主机、架构主机的图形化迁移与命令行转移方式,并附有seize强制占用命令,便于在DC故障时进行角色接管。资料在步骤上覆盖从零搭建主域控、辅助域控加入域,到迁移主控及FSMO角色的完整闭环。压缩包内共1个docx文件,约566KB,内容结构清晰,步骤与命令并存。目前已有2061人学习下载,适合域控运维初学者及需要做控制器迁移的实践者参考。

1. 域控迁移这事儿,看着是向导点几步,实际全是坑

Windows Server 2003 的主域控搭建和迁移,放在今天看像老古董,但很多旧机房、隔离网络里的业务系统还压在它上面。我接过一个模拟项目X的活,两台 2003 的机器,一台主域控扛了七八年,系统状态里攒了一堆用户和组策略,另一台辅助域控常年闲着。要做的就是把主域控替换掉,听起来不就是跑一遍 dcpromo 再转移五个 FSMO 角色吗?真上手才发现,光是辅助域控的 DNS 指向、全局编录勾选顺序、ntdsutil 里 transfer 和 seize 的区别,就够让人翻几次车。

老域控迁移最怕的不是命令复杂,而是顺序错。先拔了主域控的全局编录再迁移角色,客户端的登录验证直接卡死;FSMO 角色没转移干净就下线旧机器,新域控整天报复制错误。这篇就把主域控搭、辅助域控加、FSMO 迁移和故障夺取按实际操作的顺序写清楚,命令和向导每一步都落到能跑通为止。适合正在摆弄 2003 域控、或者要接手这类老环境的开发者,照着走能少踩几个坑。

2. 部署前规划:计算机名、IP、DNS 和备份策略一次定好

2.1 主机名与 IP 规划:为什么文档里 A 和 B 的顺序不能乱

域控的计算机名、IP 和 DNS 是整套环境的地基。文档里主计算机名是 A,辅助计算机名是 B,域名用 Jiajie.com,NETBIOS 名 JIAJIE。这三个标识一旦定下来,后面所有复制、验证、角色转移都靠它们互相识别。计算机名不要装完系统再乱改,域控改名牵扯到 SPN 和复制拓扑,2003 上改完名字经常要等复制周期才能正常解析。

主域控 IP 设为 1.1.1.1,子网掩码 255.0.0.0,辅助域控 IP 设为 1.1.1.2。注意这里用的是 A 类掩码,整个 1.0.0.0/8 段都当成内网用,这在老实验环境里很常见,实际生产最好换成私网段,但按文档这套方案走没有问题。关键是辅助域控的 DNS 必须填主域控的 IP 1.1.1.1,不要填自己,也不要填公网 DNS,否则加入域的时候找不到域控制器。服务器网卡属性里把 DNS 后缀也确认一下,确保和域名 Jiajie.com 一致。

比较稳妥的做法是先把两台机器的时间同步做好。域控之间复制依赖 Kerberos,时间偏差超过 5 分钟,复制直接报错,现象是“拒绝访问”或者“RPC 服务器不可用”。2003 上可以用 w32tm /resync 手动同步,也可以在规划阶段直接把主域控配成时间源,辅助域控再指向它。

2.2 装系统时的预留项:密码策略、磁盘分区和角色规划

主域控这台机器我一般建议系统盘和数据盘分开。Active Directory 数据库(ntds.dit)和日志文件默认放在 C:\Windows\NTDS,如果 C 盘空间不够,域数据库膨胀之后会导致复制失败甚至服务起不来。文档里第 7 步就是让指定数据库和日志的存储位置,第 8 步是 SYSVOL 文件夹位置,这一步别图省事全扔 C 盘,数据库和日志最好放不同物理磁盘,SYSVOL 保持默认也可以。

活动目录的管理员密码文档里写的是 adchina,但这是 DSRM 密码,也就是目录服务还原模式的密码。注意它和域管理员 Administrator 密码不是一回事,安装向导里会让你单独设置。这个密码一定要记牢,丢了就只能用 ntdsutil 重置,而且得在重启进目录服务还原模式时操作。还有个容易被低估的项是 DNS 注册诊断,向导第 9 步选第二项,也就是“在这台计算机上安装并配置 DNS,并将这台 DNS 服务器设置为这台计算机的首选 DNS 服务器”。这一步选中之后,域控会自动创建 _msdcs.Jiajie.com 等 SRV 记录,少了这些记录,客户端找不到域控,其他域控也加不进来。

备份策略这块,很多人是迁移前才想起来用 ntbackup 备份 system state,实际上主域控刚搭好、数据量小的时候就应该做一次干净备份。system state 里包含 Active Directory 数据库、SYSVOL、注册表、COM+ 类注册数据库,出问题的时候这是唯一的后悔药。

3. 主域控搭建:dcpromo 向导每个选项背后的含义

3.1 dcpromo 安装主域控的完整流程

在 A 机器上,开始运行输入 dcpromo,进入 Active Directory 安装向导。在“域控制器类型”这一步选“新域的域控制器”,意思是这台机器将成为林中第一个域控制器。接着在“创建一个新域”里选“在新林中的域”,说明这个域是整片森林的根,后面再建的域都是它的子域或树域,这一步只能选这个选项,没有别的余地。

DNS 全名填 Jiajie.com,NETBIOS 名会自动带出,但还是手动改成 JIAJIE。为保险起见,全大写。有些老应用解析 NETBIOS 名时区分大小写有问题,全大写能省掉后续莫名其妙的连接失败。向导走到数据库和日志文件位置、SYSVOL 位置时,按规划改路径就好。DNS 注册诊断选第二项后,向导会让你输入还原模式密码,填 adchina,然后开始安装。安装结束重启,登录后确认 A 机器已经变成域控。

安装完成后第一件事是验证 DNS 记录。用 nslookup 查一下_ldap._tcp.dc._msdcs.Jiajie.com的 SRV 记录,如果查不到,多半是网卡 DNS 指向没设对,或者 DNS 服务没起来。2003 上还可以看事件查看器里的 Netlogon 日志,正常启动时会有 5774 事件,说明 SRV 记录已经注册成功。还有一件事我每次都会做:确认 C:\Windows\SYSVOL\sysvol\Jiajie.com 目录结构已经建立,里面的 Policies 文件夹存在。SYSVOL 复制是域控之间同步组策略的通道,它没初始化好,后面辅助域控加进来也会出问题。

nslookup set type=srv _ldap._tcp.dc._msdcs.Jiajie.com

以上是 DNS 验证命令。set type=srv 指定查询 SRV 记录,返回结果里应该能看到 A 机器的主机名和 1.1.1.1 地址。如果返回 timeout 或者 NXDOMAIN,检查主域控的 DNS 服务是否启动,以及网卡首选 DNS 是否指向 127.0.0.1 或 1.1.1.1。

3.2 主域控上的常规配置:DNS 转发器和时间源

主域控的 DNS 服务安装后,正常情况它能解析内部区域的记录,但客户端要上外网还需要配转发器。在 DNS 管理控制台里,右击服务器名,属性,转发器页签,填一个上游 DNS。如果这个环境完全隔离,不填也没关系。注意不要在主域控 DNS 上勾“如果没有转发器则使用根提示”,否则它会把所有外部域名查询都发到根服务器,隔离环境里会产生大量无意义的超时流量。

时间源配置上,我习惯在主域控上跑一遍 w32tm /config /manualpeerlist:"0.pool.ntp.org,0x1" /syncfromflags:manual /update。这会让域控从外部 NTP 服务同步时间,再通过域层次逐步分发。域内所有成员默认从域控同步时间,所以主域控自己是全域的时间源头,配好它一台,其他机器不用折腾。

4. 辅助域控搭建:加域复制与全局编录的先后逻辑

4.1 辅助域控加域前检查:通信、DNS 解析、权限

在 B 机器上先设置 IP:1.1.1.2,子网掩码 255.0.0.0,首选 DNS 填 1.1.1.1。然后在命令行 ping 1.1.1.1,能通再继续。ping 通只是第一步,真正关键的是 nslookup 能不能解析到主域控,以及能不能通过域身份验证。

检查 DNS 解析用这条命令:

nslookup Jiajie.com 1.1.1.1

这个命令向 1.1.1.1 查询 Jiajie.com 的域控记录,能返回 A 机器对应的地址就说明 DNS 链路正常。比 ping 更可靠,因为 ping 只测了 ICMP,不保证 DNS 服务活着。接下来还要确认 B 机器能解析 A 机器的主机名,nslookup A.jiajie.com 能返回 1.1.1.1,才是真正准备好了。

B 机器加入域之前还需要确认自己有足够的 DNS 后缀。在网卡 TCP/IP 属性里,高级,DNS 页签,把“此连接的 DNS 后缀”设为 jiajie.com,并勾上“在 DNS 注册此连接的地址”。这样 B 机器的计算机全名会变成 B.jiajie.com,域控之间互相引用全名时不会解析失败。这个细节漏掉,后面连接域控时经常报“找不到网络路径”。

4.2 运行 dcpromo 选择“现有域的额外域控制器”

B 机器上按 Win+R 输入 dcpromo,在域控制器类型这一步选“现有域的额外域控制器”,这是辅助域控和主域控搭建唯一的向导分叉点。接下来输入有权限把机器加入域的账号,格式用 JIAJIE\administrator,密码用域管理员的密码。然后输入要加入的域,Jiajie.com。向导会去联系主域控,如果在“其他域控制器”界面出现,说明 DNS 和网络已经通了,这里可以直接填 A.jiajie.com。

数据库路径和日志路径按规划设好,目录服务还原密码同样设成 adchina。注意辅助域控的 DSRM 密码可以和主域控一样,也可以不同,系统不会强制一致,但为了以后故障夺取时少记一个密码,我一般保持一样。

安装完成后重启。开机后先别急着做任何操作,等几分钟让复制跑完。用 repadmin /showrepl 看复制状态,确认从 A 到 B 的复制已经完成,没有错误条目。检查方法:

repadmin /showrepl

这条命令会列出当前域控的复制伙伴和最近一次复制是否成功。如果显示 “last attempt成功” 且没有 “last failure”,说明初始复制已经完成。再往下就是验证 SYSVOL:在 B 机器的 C:\Windows\SYSVOL\sysvol 下能看到 Jiajie.com 目录,而且里面有和主域控一致的文件夹结构。

4.3 全局编录:为什么辅助域控默认不是 GC

辅助域控搭建完成后,默认不启用全局编录。2003 的域中第一台域控自动成为 GC,额外域控都要手动启用。很多人在这个环节栽跟头:不加全局编录的辅助域控没法处理域内用户登录时的 UPN 解析,尤其当主域控出问题后,客户端找不到 GC,登录直接失败。

打开“Active Directory 站点和服务”,展开 Sites、Default-First-Site-Name、Servers,找到 B 机器,展开 NTDS Settings,右击属性,勾选“全局编录”,应用并确定。建议在加域之后立刻做这一步,不要拖到迁移前。勾选后 GC 副本开始从主域控复制全部目录分区的数据,期间会看到 B 机器 CPU 占用升高,这正常,等 repadmin /showrepl 显示所有分区都复制完成再继续。判断 GC 是否生效,可以在命令行跑:

repadmin /options B.jiajie.com

输出里能看到 “IS_GC” 标记,有它说明全局编录已经在这台域控上启用。稳妥的做法是,主域控在迁移前保持 GC 状态不变,等所有角色转到 B 之后,再把 GC 从 A 移到 B。顺序反了会导致短暂时间内域内没有全局编录服务器,用户登录会卡在验证环节。

5. 主域控迁移前的备份与 FSMO 角色转移

5.1 system state 备份:迁移之前唯一的后悔药

主域控的迁移不是直接拔线关机,先把系统状态备份了再说。2003 上用 ntbackup 备份 system state,运行里输入 ntbackup,进入备份向导,选“备份系统状态数据”。备份内容包括注册表、Active Directory 数据库、SYSVOL、启动文件等一整套。备份介质建议放到本机另一块磁盘或网络共享,别放在 C 盘,否则系统盘崩了备份也跟着没了。

备份完成后验证一下备份文件能不能读取。在 ntbackup 的“还原和管理媒体”标签里,右键备份文件,选“编录”,能正常列出 system state 组件说明文件没坏。旧环境里我见过不少备份文件看着挺大,实际编录失败,多半是写入时磁盘空间不足导致文件不完整。这个验证步骤别跳。

如果主域控已经彻底坏了、system state 备份又没有,那就只能做“灾难恢复”性质的强行夺取,后面第 6 章的 seize 命令就是为这种情况准备的。有备份和没备份,迁移的心态完全两样,备份好的环境动起手来有底气。

5.2 FSMO 五个角色分别管什么

FSMO 是 Flexible Single Master Operation 的缩写,五个角色分布在域和林的层面。RID 主机负责分配域内安全主体的相对 ID,PDC 仿真主机管密码更改同步和时间同步,基础结构主机管跨域对象的引用更新,域命名主机管林中域的添加和删除,架构主机管整个林的架构扩展。这五个角色在单域环境里默认都落在第一台域控上,迁移的目的就是让它们换到 B 机器上继续干活。

迁移顺序有个讲究:先移 RID、PDC、基础结构主机这三个域级别角色,再移域命名主机和架构主机这两个林级别角色。操作工具分别是“Active Directory 用户和计算机”和“Active Directory 域和信任关系”,架构主机还要先注册 schmmgmt.dll。角色全部转移完成后,B 机器才算是真正接替了 A 机器的域控职责。

5.3 图形界面迁移 RID、PDC、基础结构主机

在 B 机器上打开“Active Directory 用户和计算机”,右击 Jiajie.com 域名,选择“连接到域控制器”,在列表里选中 B 机器,确定。这一步是要让管理控制台直接连到 B,而不是默认连到主域控 A。如果漏了这一步,后面“操作主机”里的更改按钮是灰色的,因为向导默认只在当前连接的域控上操作。

右击域名,选择“操作主机”,弹出的窗口里有 RID、PDC、基础结构三个页签。当前主机那一行显示的是 A 机器,点击“更改”,系统提示确认,确定后角色就从 A 换到 B。PDC 和基础结构两个页签用同样方式变更。三个角色都迁移完后,关闭窗口再重开一次,确认当前主机都显示 B 机器,这才算真正改完。

5.4 域命名主机和架构主机的迁移

域命名主机在“Active Directory 域和信任关系”里操作。打开控制台,右击“Active Directory 域和信任关系”根节点,选择“连接到域控制器”,选 B 机器。再右击根节点,选“操作主机”,点击更改,角色就转过去了。

架构主机迁移要先注册管理单元:

regsvr32 schmmgmt.dll

这条命令注册 Active Directory 架构管理单元。然后运行 mmc,打开控制台,按 Ctrl+M 调出“添加/删除管理单元”,添加“Active Directory 架构”,确定。右击“Active Directory 架构”,选“更改域控制器”,指定名称,输入 B 机器的计算机名 B.jiajie.com,确定。最后右击“Active Directory 架构”,选“操作主机”,点更改,架构主机角色就迁走了。

5.5 全局编录从 A 迁到 B 的正确顺序

全局编录不是 FSMO 角色,但它直接影响登录验证,迁移顺序错了照样翻车。文档里那一步容易让人误读,我按实际操作的顺序重排一下:先在 B 机器的 NTDS Settings 属性里勾选全局编录,等复制完成;再在 A 机器的 NTDS Settings 属性里取消全局编录。先给 B 加上 GC,保证整个过程中域内始终存在至少一台 GC,客户端登录不间断。

有一种不好的做法是先把 A 的 GC 去掉,再给 B 加上,中间这段窗口期域内没有 GC,所有依赖 GC 的登录验证都会失败。尤其是跨域登录和 UPN 登录,表现就是登录界面输入密码后长时间无响应。如果两台域控在不同站点,这个窗口期会更长,因为 GC 复制跨站点有延迟。

6. ntdsutil 命令行转移与故障夺取:transfer 和 seize 分清楚

6.1 transfer 方式迁移 RID 主机角色

图形界面操作清楚了,命令行方式也得掌握,故障处理时比图形界面快得多。打开命令提示符,输入 ntdsutil 进入工具,依次敲以下命令:

ntdsutil roles connection connect to server B.jiajie.com quit transfer RID master

第一行 ntdsutil 进入目录服务管理工具,roles 进入 FSMO 维护模式,connection 进入服务器连接模式,connect to server 指定目标域控 B,quit 返回 FSMO 维护模式,transfer RID master 执行角色转移。transfer 和 seize 的区别是:transfer 要求源域控在线,角色通过正常复制协议移交,干净且不出后遗症;seize 是强制夺取,源域控不可达或者已经损坏时用,但夺取后源域控如果哪天恢复上线,必须重装系统或者做元数据清理,否则会带着旧角色身份回来抢位置。

transfer 执行过程中会提示确认,输入 yes 回车。日志显示 “Transferring RID master ... succeeded”,说明角色已经转移成功。其他角色把命令换成 transfer PDC、transfer infrastructure master、transfer domain naming master、transfer schema master 即可。注意 transfer schema master 时,目标必须是架构主机所在域的域控,单域环境直接连 B 没问题。命令汇总做成一张表:

命令作用
transfer PDC转移 PDC 仿真主机角色
transfer RID master转移 RID 主机角色
transfer infrastructure master转移基础结构主机角色
transfer domain naming master转移域命名主机角色
transfer schema master转移架构主机角色

6.2 seize 方式强制夺取角色

当主域控 A 因硬件故障彻底起不来,transfer 就没有意义了,因为目标连不上。这时用 seize 强制夺取,命令结构相同,把 transfer 换成 seize:

ntdsutil roles connection connect to server B.jiajie.com quit seize RID master

seize 执行时,如果源域控不在线,会直接在当前连接的域控上写角色标记并复制出去。注意在单域控残留的故障场景下,seize 之后源域控如果修复并重新上线,它会认为自己还是 FSMO 角色所有者,导致角色冲突。处理办法是源域控不要再接入网络,直接重装系统,或者上线后用 ntdsutil 做元数据清理。

seize 有个细节:先试 transfer,transfer 报错显示源域控不可达,再用 seize。不要一上来就 seize,角色没同步干净会留下复制隐患。这个习惯我吃了亏才养成,之前有一回图省事直接 seize,后来源域控恢复了,域内出现两个 RID 主机,账号分配 ID 冲突,日志里全是 16648 报错。

6.3 元数据清理:故障域控复活后的收尾

强制夺取后,源域控的元数据还残留在目录里,表现为“Active Directory 用户和计算机”里能看到 A 机器,但状态变成不可用。这时候需要做元数据清理。在 B 机器上:

ntdsutil metadata cleanup connections connect to server B.jiajie.com quit select operation target list domains select domain 0 list servers for site in domain select server 0 quit remove selected server quit quit

这段命令的作用是把故障域控 A 的残留对象从目录中移除。list domains 里的编号如果只有一个域就是 0,list servers for site in domain 列出域内所有域控,select server 0 选中的是待清理的 A 机器,然后 remove selected server 删除它的元数据。执行完元数据清理,目录里就不再包含故障域控的信息了。这一套做完,才算真正把旧域控的“尸体”搬出目录。

6.4 迁移后的验证清单

全部角色迁移完成后,在主域控的“Active Directory 用户和计算机”里右击域名,选操作主机,逐个页签确认当前主机都指向 B.jiajie.com。再打开“Active Directory 域和信任关系”确认域命名主机是 B,打开架构管理单元确认架构主机是 B。命令行可以快速验证 FSMO 角色归属:

netdom query fsmo

这条命令输出域内所有 FSMO 角色的当前占位主机,一眼能看出有没有漏网之鱼。运行在 B 机器上,如果全部显示 B,说明角色迁移已经完成。注意 netdom 在 2003 里默认可能没装,需要从安装光盘的 SUPPORT\TOOLS 里装支持工具。没有 netdom 的话,就用图形界面逐个确认。

复制是否正常也要验证:

repadmin /showrepl dcdiag /s:jiajie.com /e

第一条确认 B 的复制伙伴状态正常,第二条对全林所有域控做健康检查。dcdiag 如果报 “RID Master” 或 “Services” 相关错误,多半是角色迁移后复制周期还没跑完,等 15 分钟再跑一次。如果持续报错,检查两台机器的 DNS 服务器地址有没有指向正确。

7. 装完怎么验证跑通:从登录测试到故障演练的完整闭环

搭建和迁移做完,必须在业务侧真正验证一遍才算跑通。我先从客户端侧做一组冒烟测试:找一台 Windows XP 或 2003 的客户端,确保 DNS 指向 B 机器(1.1.1.2),把机器加入 Jiajie.com 域,用域账号登录。如果登录通过,说明 Kerberos 认证、GC 解析、PDC 仿真主机都在正常工作。

顺手再验证一下组策略下发。在客户端命令行敲:

gpresult

看输出里有没有列出域策略,例如 Default Domain Policy。如果 gpresult 显示组策略来自 Jiajie.com,说明 SYSVOL 在 B 机器上已经正常同步并且可以被客户端读取。这一步漏掉的话,经常出现域控迁移后登录正常但策略不生效的隐性故障。

然后再做一次“转移回滚”演练:故意把 A 机器关机,模拟主域控宕机,观察域内登录、文件共享、DNS 解析是否全部无障碍。如果全部正常,说明辅助域控已经能独立支撑整个域的工作。做完再开 A 机器,确认两者复制恢复,没有冲突事件。这个演练在真实切换前至少做一遍,比任何检查命令都靠谱。

整个流程走完之后,操作主机页签全部指向 B,全局编录也在 B 上,A 机器要么降级退域,要么保留为普通成员服务器。如果 A 还留在域里,记得把它的 DNS 也指向 B,避免它自己解析自己。从那以后,我每次做域控迁移,强制走一遍这套验证:登录测试、gpresult 查策略、netdom query fsmo 看角色归属、repadmin 看复制状态。这套组合拳打下来,迁移这事才算真正闭环,希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询