在 Windows Server 2003 中如何检测 USN 回滚并从中进行恢复

文章翻译 文章翻译
文章编号: 875495 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文描述当运行 Microsoft Windows 2000 或 Microsoft Windows Server 2003 的域控制器依据未正确恢复或复制到位的 Active Directory 数据库启动时发生的情况。这种情况被称为更新序号回滚(或 USN 回滚)。

如果发生 USN 回滚,那么在一个域控制器上进行的对象和属性修改将不会复制到林中的其他域控制器。由于复制伙伴相信它们有最新的 Active Directory 数据库副本,因此监控和故障排除工具(比如 Repadmin.exe)不会报告任何复制错误。

安装了修补程序 875495 或 Windows Server 2003 Service Pack 1 后,Microsoft Windows Server 2003 域控制器会在遇到 USN 回滚时记录目录服务事件 2095。事件消息的文本可引导管理员访问本文以了解恢复选项。

由于很难检测到 USN 回滚并从中进行恢复,因此,我们建议管理员在所有 Windows Server 2003 域控制器(特别是处在虚拟宿主环境中的那些域控制器)上安装修补程序 875495 或 Windows Server 2003 Service Pack 1。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
888794 在虚拟宿主环境中承载 Active Directory 域控制器时的注意事项
有关本文的 Microsoft Windows 2000 Server 版本,请参阅 885875.

简介

本文讨论以下主题:
  • 在运行 Windows Server 2003 的域控制器上备份 Active Directory 所支持使用的方法
  • 恢复 Active Directory 感知系统状态备份时发生的典型行为
  • 在不恢复系统状态的情况下,将以前的 Active Directory 数据库复制到包含当前 Active Directory 数据库的文件夹中如何可能导致 USN 回滚
  • 当基于 Microsoft Windows Server 2003 的域控制器遇到 USN 回滚时,Active Directory 复制会受到怎样的影响
  • 在 Active Directory 域控制器遇到 USN 回滚后恢复该域控制器的方法
  • 修补程序 875495 和 Windows Server 2003 Service Pack 1 中用于检测 USN 回滚和隔离受影响域控制器的增强功能
在域控制器的生命周期中,您可能必须将 Active Directory 数据库的内容还原(或“回滚”)到一个已知正常的时间点。或者,您可能必须将域控制器主机操作系统的元素(包括 Active Directory)回滚到一个已知正常的时间点。

下面是两种可用于回滚 Active Directory 内容的支持的方法:
  • 使用采用 Microsoft 提供和经 Microsoft 测试的 API 的 Active Directory 感知备份和还原实用程序。这些 API 会以非权威性或权威性方式还原系统状态备份。所还原的备份应来源于相同的操作系统安装,并来源于正在还原的相同物理或虚拟计算机。
  • 使用采用 Microsoft 卷影复制服务 API 的 Active Directory 感知备份和还原实用程序。这些 API 可备份和还原域控制器系统状态。卷影复制服务支持在 Windows Server 2003 计算机上创建单个或多个卷的单一时间点卷影副本。单一时间点卷影副本也称为快照。有关更多信息,请访问以下 Microsoft 网站并搜索“卷影复制服务”:
    http://support.microsoft.com/

更多信息

恢复 Active Directory 感知系统状态备份时发生的典型行为

Windows Server 2003 域控制器将 USN 与调用 ID 结合使用来跟踪必须在 Active Directory 林中的复制伙伴之间复制的更新。

源域控制器使用 USN 来确定请求更改的目标域控制器已经收到了哪些更改。目标域控制器使用 USN 来确定应从源域控制器请求哪些更改。

调用 ID 标识在给定域控制器上运行的 Active Directory 数据库的版本或例示。

在域控制器上通过使用经 Microsoft 设计和测试的 API 和方法还原 Active Directory 时,将会在还原的域控制器上正确地重置调用 ID。林中的域控制器将收到有关调用重置的通知。因此,它们会相应调整其高水位标记值。

导致 USN 回滚的软件和方法

当使用以下环境、程序或子系统时,管理员可能会忽略 Microsoft 设计为在还原域控制器系统状态时进行的检查和验证操作:
  • 启动其 Active Directory 数据库文件已通过使用映像程序(比如 Norton Ghost)还原(复制)到位的 Active Directory 域控制器。
  • 启动以前保存的域控制器虚拟硬盘映像。以下情形可能会导致 USN 回滚:
    1. 在虚拟宿主环境中提升域控制器。
    2. 创建虚拟宿主环境的快照或替代版本。
    3. 允许域控制器继续进行入站复制和出站复制。
    4. 启动在步骤 2 中创建的域控制器映像文件。
  • 导致这种情形的虚拟宿主环境的示例包括 Microsoft Virtual PC 2004、Microsoft Virtual Server 2005 和 EMC VMWARE。其他虚拟宿主环境也可能会导致此情形。
  • 有关虚拟宿主环境中域控制器的支持条件的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    888794 在虚拟宿主环境中承载 Active Directory 域控制器时的注意事项
  • 通过使用以前保存的操作系统映像(而不需要 Active Directory 的系统状态还原),启动位于磁盘子系统从中加载的卷中的 Active Directory 域控制器。

    情形 A:启动位于磁盘子系统(存储一个卷的多个版本)上的 Active Directory 的多个副本
    1. 提升域控制器。在可存储卷的多个版本(该卷承载 Ntds.dit 文件)的磁盘子系统上找到 Ntds.dit 文件。
    2. 使用磁盘子系统为域控制器创建承载 Ntds.dit 文件的卷的快照。
    3. 继续让域控制器从您在步骤 1 中创建的卷中加载 Active Directory。
    4. 启动 Active Directory 数据库在步骤 2 中保存的域控制器。
    情形 B:从损坏的镜像中的其他驱动器中启动 Active Directory
    1. 提升域控制器。在镜像驱动器上找到 Ntds.dit 文件。
    2. 损坏镜像。
    3. 通过使用镜像中第一个驱动器上的 Ntds.dit 文件继续进行入站复制和出站复制。
    4. 通过使用镜像中第二个驱动器上的 Ntds.dit 文件启动域控制器。
即使不是有意为之,以上每种情形都可能导致域控制器通过不支持的方法回滚到 Active Directory 数据库的某个较旧版本。唯一支持用于回滚 Active Directory 内容或 Active Directory 域控制器本地状态的方法是:使用 Active Directory 感知备份和还原实用程序来还原系统状态备份,该备份来源于相同的操作系统安装,并来源于正在还原的相同物理或虚拟计算机。

Microsoft 不支持用于获取 Active Directory 域控制器系统状态元素的快照和将该系统状态的元素复制到操作系统映像的任何其他过程。除非管理员介入,否则这种过程将会导致 USN 回滚。这种 USN 回滚将导致未正确还原的域控制器的直接或可传递的复制伙伴在其 Active Directory 数据库中出现不一致的对象。

USN 回滚的影响

如果发生了 USN 回滚,之前看到过该 USN 的目标域控制器将不会以入站方式复制对象和属性的修改内容。

由于这些目标域控制器认为它们是最新的,因此 Directory Service 事件日志中或监控和诊断工具不会报告任何复制错误。

USN 回滚可能会影响任何分区中任何对象或属性的复制。最常见的副作用是:在回滚域控制器上创建的用户帐户和计算机帐户在一个或多个复制伙伴上不存在。或者,在回滚域控制器上更新的密码在复制伙伴上不存在。

以下步骤显示了可能导致 USN 回滚的事件的顺序。当使用不支持的系统状态还原将域控制器系统状态回滚到某个时间时,将发生 USN 回滚。
  1. 管理员提升了某个域中的三个域控制器。(在本例中,域控制器为 DC1、DC2 和 DC3,域为 Contoso.com。)DC1 和 DC2 是直接复制伙伴。DC2 和 DC3 也是直接复制伙伴。DC1 和 DC3 不是直接复制伙伴,但通过 DC2 以中间方式接收原始更新。
  2. 管理员在 DC1 上创建了与 USN 1 至 10 对应的 10 个用户帐户。所有这些帐户都复制到 DC2 和 DC3。
  3. 在 DC1 上捕获了操作系统的磁盘映像。此映像有一个对象记录,这些对象与 DC1 上的本地 USN 1 至 10 对应。
  4. 在 Active Directory 中进行了以下更改:
    • 在 DC1 上重置了在步骤 2 中创建的所有 10 个用户帐户的密码。这些密码对应于 USN 11 至 20。所有 10 个更新的密码都复制到 DC2 和 DC3。
    • 在 DC1 上创建了与 USN 21 至 30 对应的 10 个新用户帐户。这 10 个用户帐户复制到 DC2 和 DC3。
    • 在 DC1 上创建了与 USN 31 至 40 对应的 10 个新计算机帐户。这 10 个计算机帐户复制到 DC2 和 DC3。
    • 在 DC1 上创建了与 USN 41 至 50 对应的 10 个新安全组。这 10 个安全组复制到 DC2 和 DC3。
  5. DC1 遇到硬件故障或软件错误。管理员使用磁盘映像实用程序将在步骤 3 中创建的操作系统映像复制到位。DC1 现在使用知道 USN 1 至 10 的 Active Directory 数据库启动。

    由于操作系统映像已复制到位,并且未使用支持的系统状态还原方法,因此 DC1 将继续使用创建数据库初始副本的同一调用 ID 和直至 USN 50 的所有更改。DC2 和 DC3 也为 DC1 保留同一调用 ID,并为 DC1 保留 USN 50 的最新矢量。(最新矢量是要在给定目录分区的所有域控制器上进行的最新原始更新的当前状态。)

    除非管理员介入,否则 DC2 和 DC3 不会以入站方式复制与本地 USN 11 至 50(源自 DC1)对应的更改。同时,根据 DC2 使用的调用 ID,DC1 已经知道了与 USN 11 到 50 对应的更改。因此,DC2 不会发送这些更改。由于步骤 4 中的更改在 DC1 上不存在,因此登录请求将失败,并出现“拒绝访问”错误。之所以发生此错误,原因是密码不匹配,或者是较新的帐户在以随机方式向 DC1 进行身份验证时帐户不存在。
  6. 在林中监控复制状况的管理员会注意到以下情形:
    • Repadmin /showreps 命令行工具会报告 DC1 和 DC2 之间以及 DC2 和 DC3 之间正在发生双向 Active Directory 复制,并且没有错误。这种情形使得任何复制不一致情况难以被检测到。
    • 运行 Windows Server 2003 的域控制器的目录服务事件日志中的复制事件不会在目录服务事件日志中指明任何复制错误。这种情形使得任何复制不一致情况难以被检测到。
    • 在将 DC2 和 DC3 上的域目录分区与 DC1 上的分区进行比较时,“Active Directory 用户和计算机”或 Active Directory 管理工具 (Ldp.exe) 会显示不同的对象计数和不同的对象元数据。不同之处是在步骤 4 中映射到 USN 更改 11 至 50 的更改集合。

      注意:在本例中,不同的对象计数牵涉到用户帐户、计算机帐户以及安全组。不同的对象元数据代表不同的用户帐户密码。
    • 在步骤 2 中创建的 10 个用户帐户的用户身份验证请求偶尔会产生“拒绝访问”或“密码不正确”错误。之所以可能发生此错误,原因是 DC1 上的这些用户帐户与 DC2 和 DC3 上的帐户之间存在密码不匹配情况。遇到此问题的用户帐户对应于在步骤 4 中创建的用户帐户。步骤 4 中进行的用户帐户和密码重置未复制到域中的其他域控制器。
  7. DC2 和 DC3 开始以入站方式从 DC1 复制与大于 50 的 USN 编号对应的原始更新。此复制过程在没有管理介入的情况下将正常进行,因为已超出了以前记录的最新矢量阈值 USN 50。(USN 50 是在使 DC1 脱机并对其进行还原之前在 DC2 和 DC3 上为 DC1 记录的最新矢量 USN。)但是,在进行了不支持的还原后,与原始 DC1 上的 USN 11 至 50 对应的新更改将从不会复制到 DC2、DC3 或他们的可传递的复制伙伴。
尽管步骤 6 中提到的症状代表了 USN 回滚可能会对用户和计算机帐户产生的一些影响,但 USN 回滚可能会使任何 Active Directory 分区中的任何对象类型无法进行复制。这些对象类型包括:
  • Active Directory 复制拓扑和计划
  • 域控制器在林中的存在性,以及这些域控制器保留的角色

    注意:这些角色包括全局编录、相对标识符 (RID) 分配和操作主机角色。(操作主机角色也称为灵活单一主机操作,或 FSMO。)
  • 域和应用程序分区在林中的存在性
  • 安全组的存在性以及他们的当前组成员关系
  • 集成了 Active Directory 的 DNS 区域中的 DNS 记录注册
USN 空洞的大小可能代表数百、成千或者甚至上万个用户、计算机、信任、密码或安全组更改。(USN 空洞的定义是:进行还原系统状态备份时存在的最高 USN 数量与回滚域控制器脱机之前在其上创建的原始更改的数量之间的差。)

在运行 Windows Server 2003 的域控制器上检测 USN 回滚

由于事件日志或复制引擎中不会记录错误,因此 USN 回滚可能难于检测。

检测 USN 回滚的一种方法是:使用 Repadmin.exe 的 Windows Server 2003 版本来运行 repadmin /showutdvec 命令。此版本的 Repadmin.exe 可显示复制通用命名上下文的所有域控制器的最新矢量 USN。要检测 USN 回滚,请将域控制器上 repadmin /showutdvec 命令的输出与该域控制器的复制伙伴上的同一命令的输出进行比较。如果直接复制伙伴的域控制器 USN 编号比域控制器本身的 USN 编号高,并且 repadmin /showreps 命令未报告直接复制伙伴之间的复制错误,您就有了 USN 回滚非常有说服力的证据。

注意:经过正确还原的域控制器在通过使用支持的备份和还原方法还原了其系统状态后,在重新启动到 Active Directory 中时会重置其本地调用 ID。在以出站方式复制了重置的调用 ID 后,林中的远程域控制器会将重置的调用 ID 记录为已还原域控制器上的一个新数据库实例。尽管还原的域控制器仍然是同一域控制器,但远程域控制器会认为这个还原的域控制器是一个新的复制伙伴,因为调用 ID 发生了变化。(调用 ID 是数据库实例的身份。)还原后的域控制器本身将从其他远程域控制器接受源自远程域控制器上以及源自还原之前该域控制器上的更改。

以下示例显示了 contoso.com 域中 DC1 和 DC2 上 repadmin /showutdvec 命令的输出。在本例中,该命令是在步骤 5 的回滚之后随即运行的。
C:\>Repadmin /showutdvec dc1 dc=contoso,dc=com
Caching GUIDs...
Site1\DC1 @ USN 10 @ Time 2004-08-04 15:07:15
Site2\DC2 @ USN 24805 @ Time 2004-08-04 15:06:59
C:\>Repadmin /showutdvec dc2 dc=contoso,dc=com
Caching GUIDs...
Site1\DC1 @ USN 50 @ Time 2004-08-04 15:07:15
Site2\DC2 @ USN 24805 @ Time 2004-08-04 15:06:59
DC1 的输出显示了本地 USN 10。DC2 以入站方式复制了 USN 50,并将忽略对应于原始 DC1 中接下来 40 个 USN 编号的 Active Directory 更新。

在安装有 Windows Server 2003 SP1 或 875495 修补程序的 Windows Server 2003 域控制器上检测 USN 回滚

由于 USN 回滚难于检测,因此,当源域控制器将以前确认的 USN 编号发送到目标域控制器而未对调用 ID 进行相应更改时,安装有 Windows Server 2003 Service Pack 1 (SP1) 或 875495 修补程序的 Windows Server 2003 域控制器将记录事件 2095。

为了防止在不正确还原后的域控制器上创建 Active Directory 的唯一原始更新,已暂停了 Net Logon 服务。暂停 Net Logon 服务后,用户和计算机帐户将无法在不会以出站方式复制此类更改的域控制器上更改密码。同样,Active Directory 管理工具在对 Active Directory 中的对象进行更新时将有利于域控制器工作正常。

在安装有 Windows Server 2003 SP1 或 875495 修补程序的域控制器上,如果出现以下情况,将会记录类似于如下事件消息:
  • 源域控制器将以前确认的 USN 编号发送给目标域控制器。
  • 没有对调用 ID 进行相应更改。
消息 1

事件类型:错误
事件来源:NTDS 复制
事件类别:复制
事件 ID: 2095
日期:3/10/2005
时间:4:26:51 PM
用户:USN\2B25VB$
计算机:2B9A
描述:Active Directory 复制请求过程中,本地域控制器 (DC) 识别出一个远程 DC 已经从本地 DC 接收了复制数据,并且使用已知 USN 跟踪号。由于远程 DC 确信其 Active Directory 数据库比本地 DC 的更新,远程 DC 不会将以后的更改应用到自己的 Active Directory 数据库副本,或将更改复制到自己的直接和可传递的复制伙伴(来自本地 DC)。如果不立即纠正这个问题,将导致此源 DC 和一个或多个直接和可传递的复制伙伴之间的 Active Directory 数据库不一致。特别是用户、计算机和信任关系、相应密码、安全组、安全组成员身份和其他 Active Directory 配置数据可能不同,这将影响登录、查找有关对象和执行其他重要操作的能力。要确定是否存在此错误配置,请使用 http://support.microsoft.com 查询此事件 ID,或与您的 Microsoft 产品支持联系。此情况的常见原因是,在本地域控制器上 Active Directory 的还原不正确。用户操作:如果此情况由于还原错误或失误造成的,请强制降级该 DC。远程 DC:b55ee67f-ed73-4970-b2d4-7dc6f571439f 分区:CN=Configuration,DC=usn,DC=loc 远程 DC 报告的 USN:24707 本地 DC 报告的 USN:20485 有关更多信息,请参见位于 http://support.microsoft.com 的帮助和支持中心。

消息 2

事件类型:警告
事件来源:NTDS 一般事件
事件类别:复制
事件 ID:1113
日期:3/10/2005
时间:4:26:51 PM
用户:USN\2B25VB$
计算机:2B9A
描述:入站复制已经被用户禁用。有关更多信息,请参见位于 http://support.microsoft.com 的帮助和支持中心。

消息 3

事件类型:警告
事件来源:NTDS 一般事件
事件类别:复制
事件 ID:1115
日期:3/10/2005
时间:4:26:51 PM
用户:USN\2B25VB$
计算机:2B9A
描述:出站复制已被用户禁用。有关更多信息,请参见位于 http://support.microsoft.com 的帮助和支持中心

消息 4

事件类型:错误
事件来源:NTDS 一般事件
事件类别:服务控制
事件 ID: 2103
日期:3/10/2005
时间:4:26:51 PM
用户:USN\2B25VB$
计算机:2B9A
描述:使用不支持的还原过程还原了 Active Directory 数据库。如果此情况仍然存在,Active Directory 将无法使用户登录。因此,已暂停了 Net Logon 服务。用户操作: 有关详细信息,请参见前面的事件日志。有关更多信息,请参见位于 http://support.microsoft.com 的帮助和支持中心。

可能会在目录服务事件日志中捕获这些事件。但是,这些事件在管理员看到之前就可能被覆盖。

从 USN 回滚中恢复

要从 USN 回滚中恢复,请按照下列步骤操作:
  1. 从域控制器中删除 Active Directory 以强制使其成为独立服务器。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    332199 在 Windows Server 2003 和 Windows 2000 Server 中使用 Active Directory 安装向导强制降级时,域控制器无法正常降级
  2. 关闭降级的服务器。
  3. 在正常的域控制器上,清除降级域控制器的元数据。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    216498 域控制器降级失败后如何删除 Active Directory 中的数据
  4. 如果未正确还原的域控制器承载操作主机角色,请将这些角色转移到正常的域控制器。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    255504 使用 Ntdsutil.exe 捕获 FSMO 角色或将其转移到域控制器
  5. 重新启动降级的服务器。
  6. 如果有要求,请在独立的服务器上再次安装 Active Directory。
  7. 如果域控制器以前是全局编录,请将域控制器配置为全局编录。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    313994 如何在 Windows Server 2003、Windows 2000 或 Small Business Server 2000 中创建或移动全局编录
  8. 如果域控制器以前承载操作主机角色,请将操作主机角色转移回域控制器。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    255504 使用 Ntdsutil.exe 捕获 FSMO 角色或将其转移到域控制器
  9. 还原系统状态。

    评估此域控制器是否存在有效的系统状态备份。如果有效的系统状态备份是在未正确还原回滚的域控制器之前建立的,并且备份包含在域控制器上所做的新近更改,请依据最近的备份还原系统状态。

修补程序信息

Microsoft 目前提供了一个受支持的修补程序。建议您将此修补程序应用于运行 Windows Server 2003 的域控制器。此外,建议您在安装 Windows Server 2003 时安装此修补程序,以使新的域控制器包括此修补程序。

要获得此修补程序,请与 Microsoft 客户支持服务部门联系。要获取 Microsoft 客户支持服务电话号码和支持费用信息的完整列表,请访问下面的 Microsoft 网站:
http://support.microsoft.com/default.aspx?scid=fh;[LN];CNTACTMS
注意:特殊情况下,如果 Microsoft 技术支持人员确定某个特定的更新能够解决您的问题,可免收通常情况下收取的电话支持服务费用。对于所述的特定更新无法解决的其他支持问题和事项,将照常收取支持费用。

文件信息

此修补程序的英文版具有下表中列出的文件属性(或更新的文件属性)。这些文件的日期和时间按协调世界时 (UTC) 列出。当您查看文件信息时,该时间将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。
日期        版本               大小  文件名     
-------------------------------------------------
09-30-2004  5.2.3790.220  1,531,904  Ntdsa.dll
09-30-2004  5.2.3790.212     32,768  Ntdsatq.dll
09-30-2004  5.2.3790.220     79,872  Ntdsetup.dll
07-19-2004  5.5.31.0         21,504  Spcustom.dll
07-18-2004  5.5.31.0          7,168  Spmsg.dll
07-19-2004  5.5.31.0        169,984  Spuninst.exe
09-19-2004  5.2.3790.212     59,392  Ws03res.dll
07-18-2004  5.5.31.0        654,336  Update.exe

属性

文章编号: 875495 - 最后修改: 2007年4月3日 - 修订: 15.2
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
关键字:?
kbqfe kbhotfixserver KB875495
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com