You are on page 1of 5

Active Directory(AD)复制是如何工作的?

当它不能正常运行的时候我们应该做
些什么?

  在这之前,你的公司已经部署了 Windows 2000 及 Active Directory,所有


的事情已经很完美地工作了一段时间,但现在你开始感觉到 Windows 2000 并没
有完全像 Microsoft 所承诺的那样完美。许多管理员并没有对排除正常的目录服
务逐渐变坏所产生的故障做好准备。不幸的是,AD 的复制是 Windows 2000 中一
个很少去理解的功能,现在是逐步展开理解复制的内部工作原理并发现可用的
故障排除工具的时候了。

  复制概述

  AD 是一个数据库,默认地,每个域控制器(DC)在它的“\winnt\ntds”文
件夹中以 ntds.dit 文件形式存储这个数据库的一个副 本。AD 数据库从逻辑上划
分为三个目录分区,又称为命名上下文(Naming Context,NC),它们分别是架
构 NC(Schema NC)、配置 NC(Configuration NC)以及域 NC(Domain NC)。森林中所
有的 DC 都拥有同样的架构 NC 和配置 NC,因为这些信息是在森林范围被定义的,
而在一个 AD 域中的每个 DC 上拥有本域的域 NC 的同样的副 本。如果 DC 被指派为
全局编录(GC)服务器,那么这台 DC 同时包含森林中其他域的域 NC 的一部分副
本,这部分副本包括所有来自个域中的对象,但仅仅是属 性的一个子集。

  复制是 AD 在域或森林中对拥有这些信息的所有 DC 之间的信息进行同步的


一种机制。AD 使用知识一致性检查器(Knowledge Consistency Checker ,
KCC)、站点(Site)、站点链路(Site Link)和连接对象(Connection Object)来实
现这个复制操作。

  KCC 是运行在所有 DC 上的一个内置进程,用来创建森林的复制拓扑。你可以


使用站点来组织附近网络中被高速连接在一起的 DC,你的网络与 AD 构 架决定
了一台 DC 是否属性高速连接,许多公司认为连接各 DC 的网络速度达到 10M 以
上带宽就可称之为高速连接。站点的创建通常以子网为基础,如果多个子网 高
速连接在一起,你也可以把他们组织为一个站点。一个站点内 DC 之间的复制称
为站内复制,为了建立一个站内复制拓扑,KCC 自动在站点内的 DC 之间创建连
接对象。连接对象同样也是跨站点连接 DC 的单向连接器。每个链路就像一条通道,
表示一个从源 DC 到目的 DC 的入站链接。在站点内两台 DC 相互之间复制目录 数
据之前,你必须建立两个分离的连接对象。

  如果有些 DC 之间没有高速连接,你就需要创建多个站点,分离的站点之间
的复制称为站间复制。AD 管理员使用 Active Directory 站点与管理控制台(MMC)
管理单元来创建站点链路,它提供了站点之间进行数据复制的通道。在 AD 管理
员建立这些通道之后,KCC 在链 接的站点之间创建连接对象。典型情况下,并
不是所有的 DC 共享所有的信息(比如,各个域中的 DC 可能维护不同的数据)。因
此,KCC 可能需要建立多个连接 对象来确保在整个企业中的每个 NC 被完全复制。
在图 1 中显示了一个站间连接对象的例子,站点 A 与站点 B 通过一个手工创建
的站点链路连接。在这个例子中, KCC 已经创建了两个单向连接对象复制来自
同一个域中二台 DC 之间的三个 NC。

  

  图 1

  桥头服务器(bridgehead server)是复制拓扑中另一个组件,如果你使用过
Microsoft Exchange 服务器,你应该熟悉这个服务器的角色。为了增加复制的
有效性,KCC 不会对一个站点内所有的 DC 与另一个站点内所有的 DC 之间创建单
个连 接对象,相反,KCC 在两台桥头服务器(每个站点中一台)之间使用存储并
转发的信息复制机制。然后桥头服务器使用站内复制把信息复制到它所在站点的
其余 DC 上。关于桥头服务器的更多信息,请参见附文《桥头服务器》 。

  复制得到了什么?

  考虑 AD 对更改一个 DC 的目录对象的能力,AD 需要一种有效的方法去判断


哪一个对象已经被更改以及是否需要被复制到复制伙伴的其他 DC 中。AD 使用更
新顺序号(Update Sequence Number,USN)来跟踪什么时候目录发生变化,USN
是由 AD 在本地每台 DC 指定的 64 位计数器。当 AD、用户、管理员或者应用程序更
新一个属性 时,DC 查看属性的当前 USN 值,把值增加,并且对更新的对象指定
一个新的值作为它本地的 USN。

在 AD 复制拓扑内部,复制伙伴以一种高水印(high-watermark)值的方式来保持
他们对来自源 DC 最近更新的跟踪。当一个目的 DC 从源 DC 请求更新时,为返回
更新,目的 DC 会把它的高水印值发送给源 DC,源 DC 以这个高水印值作为一个
基准,仅发送高水印值高于这一基准的目录对象到目的 DC,因此减少了网络线
路中不必要的复制数据流量。
  最新矢量(Up-to-dateness Vector)与高水印值协同工作可以把复制数据量
降到最小。二者的区别是高水印值考虑的是对象,最新矢量考虑的是属性。在一
次复制数据交换期间,一台目 的 DC 发送它的最新矢量到源 DC,源 DC 使用这个
值来判断目的 DC 对一个特定的属性是否有最新的值。如果值是最新的,源 DC 就
会从它发送到请求数据的目的 DC 的数据中将这一属性过滤掉。

  在你部署 AD 之后,你需要在你的工具百宝箱中装载解决任何存在的问题所
必须的实用程序。Microsoft Windows 2000 Resource Kit 中包含许多这样的工
具,还可以在 Windows 2000 Server CD-ROM 的“\support\tools”文件夹(即
Windows 2000 Server 支持工具)中找到大约 50 个这样的程序。为了解决可能的
复制问题,你有时需要同时使用这些工具中的其中几个。

  事件查看器。Windows 默认的事件查看器位于“开始”*“程序”*“管理工
具”中,事件查看器一般在发生问题的第一时间内告诉你一些基本的 情况。在
一个 AD 部署过程中,DC 有一个称为目录服务的新的日志类型。为即时跟踪最新
复制相关的事件,你应该监视你 DC 上的目录服务日志。尽管你能够连接 到其他
DC 来查看他们的日志,但事件查看器一次只能显示一个服务器的日志,为获得
一份包括来自你所有 DC 上复制相关的事件项目的报告,我推荐你使用复制监
视器程序。

  复制监视器。Replmon.exe 是一个 GUI 程序,它包含在 Windows 2000


Server 的支持工具中。你能够使用 Replmon 获得你企业中 AD 复制的一个概况,
你可以从 DC 中收集这样的信息来判断复制是否已经发生。当复制发生 时,DC 之
间的数据包就会相互传递,并且很多。

  Replmon 为收集所有来自你 DC 上复制相关的事件项目提供了一个来源。为了


运行 Replmon,单击“开始”*“运行”,并输入:

  Replmon

  这个程序打开时没有与任何服务器连接,你需要手工添加希望监视的服务
器。一个快速添加服务器的方法是创建一个包含服务器列表的.ini 文件,每 一
行一个名称。然后,从 Replmon 菜单条上单击“File”*“Script”,并找到你
创建的.ini 文件,单击“open”,Replmon 会显 示你的 DC 及 DC 所拥有的 NC。
在图 2 所示的例子中,我添加了 testdc01 这台服务器,在 testdc01 项目下面,
你能够看到这个 DC 所拥有的三个 NC。为查看你能够使用 Replmon 所实施的任务,
如图 2 所示那样,右击服务器名称。你应该熟悉这里的各个你需要排除 NC 复制
问题时能够提供在事件中的 任务及信息。
  

  图 2

  一个特别有用的 Replmon 特性是它具有快速收集与复制失败相关的目录服


务项目的能力。为了从你收集的数据中打开一个分离的窗口,单击 Replmon 菜
单栏上的“Action”*“Domain”*“Search Domain Controllers for
Replication Errors”,单击“Run Search”,Replmon 提示你输入你希望进
行搜索的域,输入 DNS 域名,然后单击“OK”,程序查询域的 DC 并且收集与复
制失败相关的错误,显示 这个产生错误事件的 DC,受影响的目录分区或者
NC,包括的复制伙伴及失败代码与原因。Replmon 独立地查询每台 DC 而不是从一
台 DC 上收集所有的目 录信息。

  域控制器诊断。Dcdiag.exe,你可以在 Windows 2000 Server CD-ROM 上发


现这个命令行工具,它是一个强大的诊断工具,提供关于你运行这个程序的 DC
上的大量数据。Dcdiag 可以诊断 DC 上的连接、复制、拓扑 完整性、用户权限、定位
器功能、站内健康状态、信任校验、文件复制服务(FRS)及关键服务器的状态。

如果你运行 Dcdiag,会产生大量的信息供你进行详细审查。我推荐你使用这样
的语法:

  dcdiag > .txt


  把输出结果重定向到一个文本文件中,然后你能够在记事本或者
Microsoft Word 中打开这个文本文件并且可以非常容易地浏览信息。当你在排
除一个问题时,就可以检查文件中任何失败记录或者注意那些可能提供关于问
题本质的线索记录。

  Repadmin。Repadmin.exe 是一个你可以在 Windows 2000 Server CD-ROM 中


发现的命令行工具,可能是你复制百宝箱中的一把锤子。这个工具能够揭示出复
制的内部工作过程,并帮助你排除和修复问题。查看 Repadmin 命令行选项,输
入下面的命令:

  Repadmin /?

  Repadmin 其中一个特别有用的就是显示一台 DC 的复制伙伴。输入下面的命


令:

  Repadmin /showreps

You might also like