注:本文同样适用于Windows 2003/2008 R2版本的活动目录 http://support.microsoft.com/kb/197132/zh-cn 概要 Microsoft Windows 2000 Active Directory 是中央储存库,其中存储了企业中的所有对象及其各自的属性。它是启用多主机的分层数据库,能够存储数百万个对象。由于它是多主机的,因此对该数据库的更改可以在企业中任何给定的域控制器 (DC) 上进行,而不管该 DC 是否与网络相连接。   Windows 2000 多主机模式 使用启用了多主机的数据库(如 Active Directory),可以在企业中任何 DC 上进行灵活的更改,但是该数据库同时可能引起冲突,在将数据复制到企业的其他部分时可能会引发问题。Windows 2000 处理更新冲突的一种方法是通过使用冲突解决算法来处理值的差异,该算法使用最后写入更改的 DC(即,“最后写入者获胜”),而丢弃所有其他 DC 中的更改。虽然在有些情况下可以接受该解决方法,但有时候冲突太复杂而不能使用“最后写入者获胜”方法进行解决。此种情况下,最好是防止冲突发生,而不是在发生冲突后尝试解决。
针对某些类型的更改,Windows 2000 会结合使用防止发生 Active Directory 更新冲突的方法。   Windows 2000 单主机模式 为防止 Windows 2000 中的更新冲突,Active Directory 以单主机方式对某些对象执行更新。在单主机模式中,只允许整个目录中的一个 DC 处理更新。这与赋予 Windows 早期版本(如 Microsoft Windows NT 3.51 和 4.0)中的主域控制器 (PDC) 的角色相似,其中 PDC 负责处理给定域中的所有更新。
Windows 2000 Active Directory 扩展了 Windows 早期版本中的单主机模式以包括多个角色,且可以将角色转移给企业中的任何域控制器 (DC)。由于 Active Directory 角色未绑定到单个 DC 上,因此称它为“Flexible Single Master Operation (FSMO)”角色。目前在 Windows 2000 中有五种 FSMO 角色:
  • 架构主机
  • 域命名主机
  • RID 主机
  • PDC 模拟器
  • 结构主机后台程序
  架构主机 FSMO 角色 架构主机 FSMO 角色的拥有者是负责执行目录架构(即,命名上下文或 LDAP://cn=schema,cn=configuration,dc=<domain> 的架构)更新的 DC。该 DC 是唯一能够处理目录架构更新的域控制器。架构更新完成后,该更新将从架构主机复制到目录中所有其他 DC 上。每个目录中只有一台架构主机。 域命名主机 FSMO 角色 域命名主机 FSMO 角色的拥有者是负责对目录的林范围的域名空间(即,分区\配置命名上下文或 LDAP://CN=Partitions, CN=Configuration, DC=<domain>)进行更改的 DC。该 DC 是唯一能够在目录中添加或删除域的域控制器。它也可以添加或删除在外部目录中对域的交叉引用。 RID 主机 FSMO 角色 RID 主机 FSMO 角色的拥有者是负责处理来自某一给定域中的所有 DC 的“RID 池”请求的单个 DC。它还负责在对象移动过程中将对象从其域中删除并放在其他域中。
如果 DC 创建诸如用户或组之类的安全主体对象,它会将唯一的安全 ID (SID) 附加到该对象上。此 SID 由域 SID(在一个域中创建的所有 SID 的域 SID 均相同)和相关 ID (RID)(在一个域中创建的每个安全主体 SID,其相关 ID 是唯一的)组成。
为域中的每个 Windows 2000 DC 分配一个 RID 池,以允许将其分配给它所创建的安全主体。如果分配给某个 DC 的 RID 池低于阈值,该 DC 将向域的 RID 主机发布请求以获取更多 RID。域 RID 主机通过从域的未分配 RID 池中检索 RID 来响应请求,并将这些 RID 分配给请求的 DC 的池。目录中的每个域中都有一台 RID 主机。 PDC 模拟器 FSMO 角色 PDC 模拟器对于在企业中同步时间是必需的。Windows 2000 包含 Kerberos 身份验证协议所需的 W32Time(Windows 时间)时间服务。企业中所有基于 Windows 2000 的计算机都使用公共的时间。时间服务的目的是确保 Windows 时间服务使用可以控制授权且不允许循环的层级关系来确保使用合适的公共时间。
域中的 PDC 模拟器是域的权威。林根目录的 PDC 模拟器成为企业的权威,应配置其从外部源中收集时间。所有 PDC FSMO 角色拥有者都遵循域的层级来选择其入站时间伙伴。
在 Windows 2000 域中,PDC 模拟器角色拥有者保留以下功能:
  • 域中其他 DC 执行的密码更改优先复制到 PDC 模拟器中。
  • 如果由于密码错误而在域中给定的 DC 上发生身份验证失败,则在向用户报告密码错误失败信息之前先将该信息传送给 PDC 模拟器。
  • 在 PDC 模拟器上执行帐户锁定。
  • PDC 模拟器可执行基于 Microsoft Windows NT 4.0 Server 的 PDC 或早期 PDC 为基于 Windows NT 4.0 的客户端或早期客户端执行的所有功能。
PDC 模拟器的这部分角色在所有运行 Windows NT 4.0 或更早版本的工作站、成员服务器和域控制器均升级到 Windows 2000 后变得不必要。PDC 模拟器仍然执行在 Windows 2000 环境中所描述的其他功能。
下面的信息介绍在升级过程中发生的更改:
  • Windows 2000 客户端(工作站和成员服务器)和安装了分布式服务客户端软件包的下层客户端并不优先在公布自身为 PDC 的 DC 上执行目录写操作(如密码更改),它们可使用域中任何 DC。
  • 下层域中的备份域控制器 (BDC) 升级到 Windows 2000 后,PDC 模拟器不再接收下层的复制请求。
  • Windows 2000 客户端(工作站和成员服务器)和安装了分布式服务客户端软件包的下层客户端使用 Active Directory 来分配网络资源。它们不请求 Windows NT 浏览器服务。
结构主机 FSMO 角色 如果一个域中的对象被另一个域中的其他对象引用,它表示通过 GUID、SID(针对安全主体的引用),以及被引用对象的 DN 进行引用。结构主机 FSMO 角色的拥有者负责在一个跨域的对象引用中更新对象的 SID 和辨别名的 DC。
注意:结构主机 (IM) 角色应由非全局编录 (GC) 服务器的域控制器担任。如果结构主机在全局编录服务器上运行,它将会停止更新对象信息,原因是它只包含对它所拥有的对象的引用。这是因为全局编录服务器拥有林中每个对象的部分副本。因此,不会更新域中的跨域对象引用,并且将向此 DC 的事件日志中写入该影响的警告。
如果域中的所有域控制器同时也承载全局编录,则所有域控制器均拥有当前数据,此时哪个域控制器担任结构主机角色并不重要。