虚拟、墓碑和基础结构主机
本文介绍如何在 Windows Server 中使用幻影。
原始 KB 数: 248047
详细信息
虚拟对象是 Active Directory 用于内部管理操作的低级别数据库对象。 虚拟对象的两个常见实例如下所示:
已删除的对象。
逻辑删除生存期已传递,但对对象的引用仍存在于目录数据库中。
域本地组具有 Active Directory 林中另一个域的成员用户。 虚拟对象是特殊类型的内部数据库跟踪对象,无法通过任何 LDAP 或 Active Directory 服务接口(ADSI)查看。
对象删除
从 Active Directory 中删除对象时,该对象将遵循以下过程。
阶段 1:普通对象
该对象首先作为典型的 Active Directory 对象存在。 可以使用相应的 Active Directory 和 LDAP 接口查看对象。
当对象被管理员或通过其他方式删除时,该对象将移动到阶段 2。
阶段 2:逻辑删除生存期到期前已删除的对象
该对象现在作为 Tombstone 对象存在,用于逻辑删除生存期间隔的长度。 对象保留其一些原始形式:
- 对象仍然是典型的(非虚拟)对象。
- objectGUID 属性未更改。
该对象也从其原始形式进行了显著修改:
- 对象移动到 DeletedObjects 容器(除非该对象被标记为特殊系统对象)
- 对象的 DN 属性包含 DEL:GUID
- 大部分对象的其他属性已被完全删除。
对象的架构确定删除的属性以及删除后保留的属性。 可以更改对象类的每个属性的指定。
无法从普通 Active Directory 管理工具中看到这些对象。 可以将低级别 LDAP 接口(如 LDP)配置为查看这些对象。
当逻辑删除生存期已过期时,该对象将移动到两个可能的状态之一(阶段 3 或 4)。 默认逻辑删除生存期为 60 天。
阶段 3:从 Active Directory 数据库完全删除 (Normal) 对象
如果 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。
然后,域控制器获取 infrastructureUpdate 对象中的信息,并相应地对其虚拟对象的本地副本应用更改。
如果原始对象已被删除,接收的域控制器将删除本地虚拟对象,并删除引用它的相应属性(如组上的成员属性)。
注意
组中的全局编录服务器接收 CN=Infrastructure,DC=DomainName,DC=...容器。 但是,由于对象本身的只读副本已在本地数据库中实例化,因此会忽略它们。 因此,它们不需要虚拟来跟踪组成员身份,并将了解如何删除具有常规 AD 复制的对象。
全局编录和基础结构主角色冲突
如果 IM 灵活单主操作(FSMO)角色持有者也是全局编录服务器,则永远不会在该域控制器上创建或更新虚拟索引。 (FSMO 也称为操作主机。发生此行为的原因是全局目录服务器包含 Active Directory 中每个对象的部分副本。 IM 不会存储外对象的虚拟版本,因为它已在本地全局目录中具有该对象的部分副本。
若要使此过程在多域环境中正常工作,基础结构 FSMO 角色持有者不能是全局编录服务器。 请注意,林中的第一个域包含所有五个 FSMO 角色,也是全局目录。 因此,如果计划有多个域,则必须在域中安装另一个域控制器后立即将任一角色传输到另一台计算机。
如果基础结构 FSMO 角色和全局目录角色驻留在同一域控制器上,则连续在目录服务事件日志中收到事件 ID 1419。
在全局编录上放置基础结构主角色有两个条件:
- 域中的所有域控制器都是全局目录。 在这种情况下,无法清除任何幻影。
- 林模式为“Windows Server 2008 R2”,并激活回收站功能。 在此模式下,已删除的对象链接不会幻化,而是设置为不同的状态,并且仍然存在于数据库中。
有关 AD 回收站的信息,请参阅: 还原已删除的 Active Directory 对象的方案概述
有关域中 FSMO 角色放置以及如何将 FSMO 角色传输到另一个域控制器的详细信息,请单击以下文章编号以查看Microsoft知识库中的文章: