幻影、墓碑和基础结构主机

本文介绍如何在 Windows Server 中使用虚拟。

适用于: Windows Server 2012 R2
原始 KB 编号: 248047

更多信息

虚拟对象是 Active Directory 用于内部管理操作的低级别数据库对象。 虚拟对象的两个常见实例如下所示:

  • 已删除的对象。

    已过逻辑删除生存期,但对 对象的引用仍存在于目录数据库中。

  • 域本地组具有来自 Active Directory 林中另一个域的成员用户。 虚拟对象是特殊类型的内部数据库跟踪对象,无法通过任何 LDAP 或 Active Directory 服务接口 (ADSI) 进行查看。

对象删除

从 Active Directory 中删除对象时,该对象将遵循以下过程。

阶段 1:普通对象

对象首先作为典型的 Active Directory 对象存在。 可以使用相应的 Active Directory 和 LDAP 接口查看对象。

当管理员或通过其他方式删除对象时,对象将移动到阶段 2。

阶段 2:在逻辑删除生存期到期之前删除的对象

对象现在作为逻辑删除生存期间隔长度的 Tombstone 对象存在。 虽然 对象保留其某些原始形式:

  • 对象仍然是典型的 (非虚拟) 对象。
  • objectGUID 属性未更改。

对象也从其原始形式进行了重大修改:

  • 对象将移动到 DeletedObjects 容器 (除非对象被标记为特殊系统对象)
  • 对象的 DN 属性包含 (esc) DEL:GUID
  • 对象的大多数其他属性已被完全删除。

对象的架构确定删除的属性,以及删除后保留的属性。 可以更改对象类的每个属性的指定。

无法从普通 Active Directory 管理工具中查看对象。 可以配置低级别 LDAP 接口(如 LDP)来查看这些对象。

当墓碑生存期过期时,对象将移动到两种可能的状态之一 (阶段 3 或阶段 4) 。 默认的逻辑删除生存期为 60 天。

阶段 3: (从 Active Directory 数据库完全删除普通) 对象

如果 Active Directory 中没有对此对象的引用,则会完全删除数据库中的行,并且不会留下该对象的跟踪。

阶段 4: (虚拟对象) 外部引用仍然存在

如果对此对象有任何引用保留在 Active Directory 中,则会删除该对象本身,并在其位置创建一个虚拟对象,直到删除这些引用。 删除对对象的所有引用时,将删除此虚拟对象。

无法通过任何 LDAP 或 ADSI 接口查看这些虚拟对象。

注意

从域控制器中删除全局编录期间,从全局编录中删除的只读对象不会完成删除过程。 它们会立即从数据库中删除,并且对它们的任何引用不受影响。

跨域引用和基础结构主角色

Active Directory 域中的某些组类型可以包含来自受信任域的帐户。 为了确保组成员身份中的名称准确,组的成员身份中引用了用户对象的 GUID。 当 Active Directory 工具显示具有来自外部域的用户的这些组时,它们必须能够显示外部用户的准确和当前名称,而无需依赖于与外部域或全局目录的域控制器直接联系。

Active Directory 使用虚拟对象对不是全局编录的域控制器上的跨域组到用户引用。 此虚拟对象是一种无法通过任何 LDAP 接口查看的特殊对象。

虚拟记录包含最少的信息量,以便域控制器引用原始对象所在的位置。 虚拟对象的索引包含有关交叉引用对象的以下信息:

  • 对象的可分辨名称
  • 对象 GUID
  • 对象 SID

将不同域的成员添加到本地用户组期间,对组执行加法的本地域控制器为远程用户创建虚拟对象。

如果更改外部用户的名称或删除外部用户,则必须从域中的每个域控制器更新或删除组域中的虚拟。 持有该组域的基础结构主机 (IM) 角色的域控制器处理对虚拟对象的任何更新。

无法通过任何 LDAP 或 ADSI 接口查看这些虚拟对象。

虚拟更新和清理过程

如果虚拟对象引用的对象已被删除,则必须从本地域中删除虚拟对象, (清理) 。 如果原始对象的名称发生更改,使组的组成员身份列表具有准确的列表,则还必须更新虚拟对象。 在域中拥有 IM 角色的域控制器处理其域的这两个操作。

IM 会将有关虚拟对象的信息与全局编录服务器上的最新版本进行比较,并根据需要对虚拟对象进行更改。 可以通过将“每数据库虚拟扫描天数”注册表项添加到以下注册表子项来自定义间隔:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters

若要进行此更改,请注意以下事项:

  • 注册表项:每个数据库虚拟扫描的天数

  • 类型:DWORD

  • 默认值:2

  • 函数:指定 IM 将虚拟对象与全局编录服务器上的最新版本进行比较的间隔(以天为单位)。

注意

最小 DWORD 值为 1 天。

在 IM 确定虚拟对象引用的原始对象已更改或删除后:

  • IM 在 CN=Infrastructure,DC=DomainName,DC=... 中创建 infrastructureUpdate 对象容器并立即将其删除。

  • 此 (逻辑删除) 对象由特殊代理复制到域中不是全局编录服务器的其他域控制器。

    如果重命名了原始对象,则 infrastructureUpdate 的 DNReferenceUpdate 属性中的值将包含新名称。 如果删除了原始对象,则会更改已删除的对象 DN,以便将 (esc) DEL:GUID 追加到原始 DN。

  • 然后,域控制器获取基础结构Update 对象中的信息,并相应地将更改应用到其虚拟对象的本地副本。

如果原始对象已被删除,则接收域控制器会删除本地虚拟对象,并删除引用该对象的相应属性, (如组) 的成员属性。

注意

组域中的全局编录服务器接收 CN=基础结构,DC=DomainName,DC=... 中的对象的特殊代理复制。容器。 但是,它们忽略它们,因为对象本身的只读副本已在本地数据库中实例化。 因此,他们不需要虚拟来跟踪组成员身份,并且将了解如何使用常规 AD 复制删除对象。

全局编录和基础结构主角色冲突

如果 IM 灵活单一主机操作 (FSMO) 角色持有者也是全局编录服务器,则永远不会在该域控制器上创建或更新虚拟索引。 (FSMO 也称为操作 master。) 发生此行为是因为全局编录服务器包含 Active Directory 中每个对象的部分副本 (replica) 。 IM 不存储外部对象的虚拟版本,因为它已在本地全局目录中具有该对象的部分副本 (replica) 。

若要使此过程在多域环境中正常工作,基础结构 FSMO 角色持有者不能是全局编录服务器。 请注意,林中的第一个域包含所有五个 FSMO 角色,也是全局目录。 因此,如果计划有多个域,则必须在域中安装另一个域控制器后立即将任一角色转移到另一台计算机。

如果基础结构 FSMO 角色和全局编录角色位于同一域控制器上,则目录服务事件日志中会持续收到事件 ID 1419。

在两个条件下,在全局编录上放置基础结构主角色是正常的:

  1. 域中的所有域控制器都是全局编录。 在这种情况下,无法清除任何幻象。
  2. 林模式为“Windows Server 2008 R2”,回收站功能已激活。 在此模式下,已删除的对象链接不会虚拟化,而是设置为不同的状态,并且仍存在于数据库中。

有关 AD 回收站的信息,请参阅: 还原已删除的 Active Directory 对象的方案概述

有关域中 FSMO 角色放置以及如何将 FSMO 角色转移到另一个域控制器的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

223346 Active Directory 域控制器上的 FSMO 放置和优化

223787 灵活的单主操作转移和扣押过程