概述:将 Windows 2000 域控制器升级到 Windows Server 2003
从 Windows Server 2003 介质的 \I386 文件夹运行的 Adprep.exe 实用程序准备了一个 Windows 2000 林及其域,以用于添加 Windows Server 2003 域控制器。ADPREP 新增了以下功能:
- 用于对象类的已改进的默认安全描述符
- 新的用户和组属性
- 类似 InetOrgPerson 的新的架构对象和属性
Windows Server 2003 的 ADPREP 有助于确保已升级的 Windows 2000 林和域中包含其他支持 Windows Active Directory 环境的对象、属性和权限。ADPREP 支持两个命令行参数:
adprep /forestprep:运行林升级操作。
adprep /domainprep:运行域升级操作。
adprep /forestprep 命令是在林的架构操作主机 (FSMO) 上执行的一次性操作。在可以在域中运行
adprep /domainprep 之前,
forestprep 操作必须完成并复制到每个域的结构主机。
adprep /domainprep 命令是在林中每个将承载新的或升级的 Windows Server 2003 域控制器的域的结构操作主机域控制器上运行的一次性操作。
adprep /domainprep 命令验证
forestprep 中的更改是否已在其中复制。
如果
forestprep 更改不存在,则
adprep /domainprep 命令不运行。此外,除非
/forestprep 和
/domainprep 操作已经完成并且复制到该域中的所有域控制器,否则无法执行以下操作中的任何一个:
- 使用 Winnt32.exe 将 Windows 2000 域控制器升级到 Windows Server 2003 域控制器。
注意:可以随时将 Windows 2000 成员服务器和计算机升级到 Windows Server 2003 成员计算机。
- 使用 Dcpromo.exe 将新的 Windows Server 2003 域控制器提升到域中。
只有在承载架构操作主机的域中,才需要运行
adprep /forestprep 和
adprep /domainprep 两者。在所有其他域中,只需要运行
adprep /domainprep。林必须完成端到端复制,该林中的所有域控制器才能发现 ADPREP 所做的更改。
即使您运行几次
forestprep 和
domainprep,已完成的操作也只执行一次。
adprep 命令不会将属性添加到全局目录部分属性集中,也不会导致全局目录完全同步。RTM 版本的
adprep /domainprep 确实会导致 Sysvol 树中的 \Policies 文件夹完全同步。
adprep /forestprep 和
adprep /domainprep 中的更改被完全复制后,您可以从 Windows Server 2003 介质的 \I386 文件夹运行 Winnt32.exe,将 Windows 2000 域控制器升级到 Windows Server 2003。另外,还可以使用 Dcpromo.exe 将新的 Windows Server 2003 域控制器添加到域中。
使用 adprep /forestprep 命令升级林
要准备 Windows 2000 林和域以接受 Windows Server 2003 域控制器,请先在实验室环境中按照以下步骤操作,然后再在生产环境中按照以下步骤操作:
- 确保已经完成了“林清点”阶段的所有操作,尤其要注意以下几项:
- 已经创建了系统状态备份。
- 林中的所有 Windows 2000 域控制器已经安装了所有相应的修复程序和 Service Pack。
- Active Directory 的端到端复制在整个林中发生
- FRS 在每个域中都正确复制了文件系统策略。
- 使用属于架构管理员组和企业管理员组的帐户登录到架构操作主机的控制台。
- 在架构操作主机上运行 ADPREP。为此,请单击“开始”,单击“运行”,键入 cmd,然后在架构操作主机上键入以下命令:
X:\I386\adprep /forestprep
其中 X:\I386\ 是 Windows Server 2003 安装介质的路径。此命令运行林范围的架构升级。
注意:可以忽略目录服务事件日志中记录的事件 ID 为 1153 的事件(例如下面的示例):
Event Type:Error
Event Source:NTDS General
Event Category:Internal Processing
Event ID:1153
Date:MM/DD/YYYY
Time:HH:MM:SS AM|PM
User:Everyone Computer :<some DC>
Description:Class identifier 655562 (class name msWMI-MergeablePolicyTemplate) has an invalid superclass 655560. Inheritance ignored.
- 验证 adprep /forestprep 命令是否在架构操作主机上成功运行。为此,从架构操作主机的控制台中,验证以下几项:
- adprep /forestprep 命令在没有错误的情况下完成。
- CN=Windows2003Update 对象写在 CN=ForestUpdates,CN=Configuration,DC=forest_root_domain 下。记下 Revision 属性的值。
- (可选)架构版本增加到版本 30。为此,请参见 CN=Schema,CN=Configuration,DC=forest_root_domain 下的 ObjectVersion 属性。
如果 adprep /forestprep 不运行,请验证以下几项:
- 验证是否已将 adprep /forestprep 更改复制到林中的所有域控制器。这在监视以下属性时很有用:
- 递增架构版本
- 它下面的 CN=Windows2003Update、CN=ForestUpdates,CN=Configuration,DC=forest_root_domain 或 CN=Operations,CN=DomainUpdates,CN=System,DC=forest_root_domain 和操作 GUID 已经在其中复制了。
- 搜索 adprep /forestprep 添加的新的架构类、对象、属性或其他更改(如 InetOrgPerson)。查看 %systemroot%\System32 文件夹中的 SchXX.LDF 文件(其中 XX 是 14 和 30 之间的一个数字),确定应该有哪些对象和属性。例如,Sch18.ldf 中定义了 InetOrgPerson。
- 查找错位的 LdapDisplay 名称。
如果在运行 Windows Server 2003 adprep /forestprep 命令之前安装了 Exchange 2000,请参见以下 Microsoft 知识库文章中的“How to Identify Mangled Name Attributes”一节:
314649 Windows Server 2003 ADPREP Command Causes Mangled Attributes in Windows 2000 Forests That Contain Exchange 2000 Servers
如果找到错位的名称,请转到本文的“Windows 2000 林中的 Exchange 2000”一节中的方案 3。
- 使用属于承载架构操作主机的林的架构管理员组和企业管理员组的帐户,登录到架构操作主机的控制台。
使用 ADPREP /DOMAINPREP 升级域
在
/forestprep 更改完全复制到每个将承载 Windows Server 2003 域控制器的域中的结构主机域控制器之后,运行
adprep /domainprep。为此,请按照以下步骤操作:
- 确定要升级的域中的结构主机域控制器,然后使用属于要升级的域的域管理员组的帐户登录。
注意:企业管理员可能不属于林的子域的域管理员组。
- 在结构主机上运行 Adprep.exe。为此,请单击“开始”,单击“运行”,键入 cmd,然后在结构主机上键入以下命令:
X:\I386\adprep /domainprep
其中 X:\I386\ 是 Windows Server 2003 安装介质的路径。此命令在目标域中运行域范围的更改。
注意:adprep /domainprep 命令修改 Sysvol 共享中的文件权限。这些修改会导致该目录树中的文件完全同步。
- 验证 domainprep 是否成功完成。为此,请验证以下几项:
- adprep /domainprep 命令是否在没有错误的情况下完成。
- CN=Windows2003Update,CN=DomainUpdates,CN=System,DC=要升级的域的域名路径 是否存在
如果 adprep /domainprep 不运行,请验证以下几项:
- 验证 adprep /domainprep 更改是否已经复制。为此,对于域中的其余域控制器,验证以下几项:
- CN=Windows2003Update,CN=DomainUpdates,CN=System,DC=dn path of domain you are upgrading 对象是否存在,以及 Revision 属性的值与域的结构主机的同一属性的值是否匹配。
- (可选)查找 adprep /domainprep 添加的对象、属性或访问控制列表 (ACL) 更改。
在其余域的结构主机上分批重复步骤 1 到步骤 4,或者在将那些域中的域控制器添加或升级到 Windows Server 2003 时重复步骤 1 到步骤 4。现在您可以使用 DCPROMO 将新的 Windows Server 2003 计算机提升到林中。或者,可以使用 WINNT32.EXE 将现有的 Windows 2000 域控制器升级到 Windows Server 2003。
创建安装介质
本节将列出 Microsoft 指出 Windows Server 2003 域控制器必需或非常适合的修复程序。考虑将以下修复程序添加到安装介质上,或者在对新的域控制器运行 DCPROMO 之前安装它们。最后,将这些修复程序安装到 Windows Server 2003 成员计算机上,因为它们可能会受到影响或者它们的角色以后可能改变。
注意:计划发布 Windows Server 2003 的 NTFRS.EXE 的后 RTM 版本。
使用 Winnt32.exe 升级 Windows 2000 域控制器
/forestprep 和
/domainprep 中的更改完全复制而且您已经决定了与早期版本的客户机的安全互操作性之后,就可以将 Windows 2000 域控制器升级到 Windows Server 2003 并将新的 Windows Server 2003 域控制器添加到域中。
以下计算机必须是林的每个域中最先运行 Windows Server 2003 的域控制器:
- 林中的域命名主机,以便可以创建默认的 DNS 程序部分。
- 林根域的主要域控制器,以便 Windows Server 2003 的 forestprep 添加的企业范围的安全用户对 ACL 编辑器可见。
- 每个非根域中的主要域控制器,以便可以创建新的域特定的 Windows 2003 安全用户。
为此,请使用 WINNT32 升级承载您所需的操作角色的现有域控制器。或者,将该角色传递给新提升的 Windows Server 2003 域控制器。对于每个通过 WINNT32 升级到 Windows Server 2003 的 Windows 2000 域控制器和每个提升的 Windows Server 2003 工作组或成员计算机,执行以下步骤:
- 在使用 WINNT32 升级 Windows 2000 成员计算机和域控制器之前,删除 Windows 2000 管理工具。为此,请使用“控制面板”中的“添加/删除程序”工具。(仅限 Windows 2000 升级。)
- 安装本文的“创建安装介质”一节中列出的所有修复程序文件,或者安装 Microsoft 或管理员认为重要的其他修复程序。
- 检查每个域控制器,查找可能的升级问题。为此,请从安装介质的 \I386 文件夹运行以下命令:
winnt32.exe /checkupgradeonly
解决兼容性检查确定的所有问题。
- 从安装介质的 \I386 文件夹运行 WINNT32.EXE,然后重新启动已升级的 2003 域控制器。
- 根据需要,降低早期版本的客户机的安全设置。
如果 Windows NT 4.0 客户机上没有安装 NT 4.0 SP6,或者 Windows 95 客户机上没有安装目录服务客户程序,请在“域控制器”组织单元的“默认域控制器”策略中禁用 SMB Service 签名,然后将此策略链接到承载域控制器的所有组织单元。
计算机配置\Windows 设置\安全设置\本地策略\安全选项\Microsoft 网络服务器:数字签名通信(始终)
- 使用以下数据点验证升级是否成功:
- 安装 Windows Server 2003 管理工具(仅限 Windows 2000 升级和 Windows Server 2003 非域控制器)。Adminpak.msi 位于 Windows Server 2003 CD-ROM 的 \I386 文件夹中。Windows Server 2003 介质上的 Support\Tools\Suptools.msi 文件中包含已更新的支持工具。确保重新安装此文件。
- 为林的每个域中升级到 Windows Server 2003 的至少头两个 Windows 2000 域控制器创建一个新备份。将升级到 Windows Server 2003 的 Windows 2000 计算机的备份定位到锁定的存储中,这样就不会意外地使用它们恢复现在运行 Windows Server 2003 的域控制器。
- (可选)在单实例存储 (SIS) 已经完成后,在升级到 Windows Server 2003 的域控制器上执行 Active Directory 数据库的脱机碎片整理(仅限 Windows 2000 升级)。
SIS 检查存储在 Active Directory 中的对象的现有权限,然后将更高效的安全描述符应用于这些对象。当已升级的域控制器第一次启动 Windows Server 2003 操作系统时,SIS 将自动启动(由目录服务事件日志中的事件 1953 标识)。只有当目录服务事件日志中记录了事件 ID 1966 事件消息时,才会从已改进的安全描述符存储中受益:
Event Type:Information
Event Source:NTDS SDPROP
Event Category:Internal Processing
Event ID:1966
Date:MM/DD/YYYY
Time:HH:MM:SS AM|PM
User:NT AUTHORITY\ANONYMorganizational unitS LOGON
Computer:<computername>
Description:The security descriptor propagator has completed a full propagation pass.
Allocated space (MB):
XX Free space (MB):XX
This may have increased free space in the Active Directory database.User Action Consider defragmenting the database offline to reclaim the free space that may be available in the Active Directory database.For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
此事件消息表示单实例存储操作已经完成,并充当管理员使用 NTDSUTIL.EXE 执行 Ntds.dit 脱机碎片整理的队列。
脱机碎片整理可以使 Windows 2000 Ntds.dit 文件的大小减小多达 40%,提高 Active Directory 性能,并更新数据库中的页面以便更高效地存储“Link Valued”属性。 有关如何执行 Active Directory 数据库的碎片整理的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
232122 Performing an Offline Defragmentation of the Active Directory Database
- 研究 DLT Server 服务。Windows Server 2003 域控制器在全新安装和升级安装中禁用 DLT Server 服务。如果您单位中的 Windows 2000 客户机或 Windows XP 客户机使用 DLT Server 服务,请使用“组策略”启用新的或已升级的 Windows Server 2003 域控制器中的 DLT Server 服务。否则,请从 Active Directory 中逐步删除分布式链接跟踪对象。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
312403 Distributed Link Tracking on Windows-Based Domain Controllers
315229 Text Version of Dltpurge.vbs for Microsoft Knowledge Base Article Q312403
如果批量删除上千个 DLT 对象或其他对象,复制可能由于缺少版本存储而阻塞。删除最后一个 DLT 对象后请等待 tombstonelifetime 天数(默认为 60 天)以便完成垃圾回收,然后使用 NTDSUTIL.EXE 执行 Ntds.dit 文件的脱机碎片整理。
- 配置最佳做法组织单元结构。Microsoft 建议管理员在所有 Active Directory 域中主动部署最佳做法组织单元结构,并在以 Windows 域模式升级或部署了 Windows Server 2003 域控制器后,将早期版本的 API 用来创建用户、计算机和组的默认容器重定向到管理员所指定的组织单元容器。
有关最佳做法组织单元结构的其他信息,请查看“Best Practice Active Directory Design for Managing Windows Networks”白皮书中的“Creating an Organizational Unit Design”一节。要查看此白皮书,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/technet/prodtechnol/ad/windows2000/plan/bpaddsgn.asp
有关如何更改早期版本的 API 创建的用户、计算机和组所在的默认容器的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
324949 Redirecting the Users and Computers Containers in Windows Server 2003 Domains
- 对于林中每个新的或已升级的 Windows Server 2003 域控制器,根据需要重复第 1 步到第 10 步,对于每个 Active Directory 域重复第 11 步(最佳做法组织单元结构)。
总之:
- 使用 WINNT32 升级 Windows 2000 域控制器(如果用过,请从优化组合的安装介质开始)
- 验证经过修复程序修复的文件是否已经安装到已升级的计算机上
- 安装未包含在安装介质中的所有所需的修复程序
- 验证新的或已升级的服务器是否正常运行(AD、FRS、Policy 等等)
- OS 升级 24 小时后执行脱机碎片整理(可选)
- 如果必须启动 DLT Service 则启动它,否则使用 q312403 / q315229 post forest wide domainpreps 删除 DLT 对象
- 删除 DLT 对象后过 60 天或更长时间(tombstone 存留时间和垃圾回收天数)执行脱机碎片整理
在实验室环境中模拟升级
在将 Windows 域控制器升级到生产 Windows 2000 域之前,在实验室中验证并完善升级过程。如果实验室环境的升级精确反映了生产林的情况并且顺利执行,则可以认为在生产环境中会产生相似的结果。对于复杂的环境,实验室环境必须在以下方面真实反映生产环境:
- 硬件:计算机类型,内存大小、页面文件布局、磁盘大小、性能和 RAID 配置、BIOS 和固件版本级别
- 软件:客户机和服务器操作系统版本、客户机和服务器应用程序、Service Pack 版本、修复程序、架构更改、安全组、组成员身份、权限、策略设置、对象计数类型和位置、版本互操作性
- 网络结构:WINS、DHCP、链接速度、可用带宽
- 负载:负载模拟器可以模拟密码更改、对象创建、Active Directory 复制、登录身份验证和其他事件。其目的不是复制生产环境的规模,而是为了发现常见操作的成本和频率,并根据您当前和未来的要求,加入它们对生产环境的影响(名称查询、复制通信量、网络带宽和处理器使用)。
- 管理:执行的任务、使用的工具、使用的操作系统
- 操作:容量、互操作性
- 磁盘空间:在以下各操作完成后,记下每个域的全局目录域控制器和非全局目录域控制器的操作系统、Ntds.dit 和 Active Directory 日志文件的起始大小、峰值大小和结束大小:
- adprep /forestprep
- adprep /domainprep
- 将 Windows 2000 域控制器升级到 Windows Server 2003
- 在版本升级后执行脱机碎片整理
通过了解环境的升级过程和复杂性并进行仔细的观察,可以确定在执行生产环境升级时所应采取的速度和关注程度。在仅有少量通过高可用性广域网 (WAN) 链接相互连接的域控制器和 Active Directory 对象的环境中,升级过程可能只需要几个小时就可以完成。而对于具有上百个域控制器和无数个 Active Directory 对象的企业部署,则可能需要更多的关注。在这些情况中,升级过程可能需要经历几星期或几个月才能完成。
在实验室中使用“模拟”升级执行以下任务:
- 了解升级过程的内部工作机制和相关风险。
- 发现环境中部署过程的潜在问题区域。
- 测试和开发回滚计划,以防升级不成功。
- 定义适当的详细信息级别,以应用于生产域的升级过程。
磁盘空间不足的域控制器
在磁盘空间不足的域控制器上,使用以下步骤释放承载 Ntds.dit 和日志文件的卷上的多余磁盘空间:
- 删除不用的文件(包括 *.tmp 文件)或 Internet 浏览器使用的缓存文件。为此,请键入以下命令(在每个命令之后按 ENTER 键):
cd /d drive\
del *.tmp /s
- 删除所有的用户文件或内存转储文件。为此,请键入以下命令(在每个命令之后按 ENTER 键):
cd /d drive\
del *.dmp /s
- 暂时删除或重定位可以从其他服务器访问或很容易重新安装的文件。可以删除且很容易替换的文件包括 ADMINPAK、支持工具和 %systemroot%\System32\Dllcache 文件夹中的所有文件。
- 删除旧的或不用的用户配置文件。为此,请单击“开始”,右键单击“我的电脑”,单击“属性”,单击“用户配置文件”选项卡,然后删除用于旧的和不使用的帐户的所有配置文件。不要删除可能用于服务帐户的任何配置文件。
- 删除 %systemroot%\Symbols 中的符号。为此,请键入以下命令:
rd /s %systemroot%\symbols
根据服务器的符号集是完整的还是其中的一小部分,此操作可能会获得大约 70 MB 到 600 MB。
- 执行脱机碎片整理。Ntds.dit 文件的脱机碎片整理可以释放空间,但它暂时需要相当于当前 DIT 文件大小两倍的空间。请使用其他的本地卷(如果有可用的)来执行脱机碎片整理。或者,使用最佳连接网络服务器上的空间执行脱机碎片整理。如果磁盘空间仍然不足,请从 Active Directory 中逐步删除不必要的用户帐户、计算机帐户、DNS 记录和 DLT 对象。
注意:直到超过 tombstonelifetime 天数(默认为 60 天)并且垃圾回收完成后,Active Directory 才从数据库中删除对象。如果您将 tombstonelifetime 减小到的值低于林中端到端复制的值,则可能导致 Active Directory 中的不一致。