Active Directory 复制错误 1127:访问硬盘时,即使重试,磁盘操作也失败

本文介绍了 Active Directory 复制失败并出现 Win32 错误 1127 的问题:“访问硬盘时,磁盘操作即使在重试后也失败。

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

症状

本文介绍 AD 操作失败并出现 Win32 错误 1127 的情况的症状、原因和解决步骤:“访问硬盘时,磁盘操作即使在重试后也失败。

  1. 新域控制器的 DCPROMO 升级失败并出现错误 1127:访问硬盘时,即使重试,磁盘操作也会失败

    DCPROMO 中显示的屏幕错误是:

    对话框标题文本:Active Directory 安装向导
    消息文本:

    操作失败,原因如下:
    Active Directory 无法从帮助程序 DC> 的远程域控制器<完全限定的计算机名称复制失败分区的目录<分区> DN 路径。
    “访问硬盘时,即使重试后,磁盘操作也会失败。”DCPROMO。LOG 包含以下文本:
    [INFO]复制 <分区名称> 目录分区
    [INFO]错误 - Active Directory 无法从远程域控制器<帮助程序 DC> 复制目录分区<分区 DN>。 (1127)
    [INFO]返回的 DNS 域>的 NtdsInstall <1127
    [INFO]DsRolepInstallD 返回 1127 [错误] 无法安装到目录服务 (1127)

  2. DCDIAG 报告 Active Directory 复制测试失败,错误状态 (1127) :访问硬盘时,即使重试,磁盘操作也失败

    DCDIAG 中的示例错误文本如下所示:

    测试服务器: <站点><DC 名称>
    开始测试:复制
    * 复制检查
    [复制检查、<DC 名称>] 最近的复制尝试失败:
    从 <源 DC> 到 <目标 DC>
    命名上下文:DC=<DN 路径>
    复制生成错误 (1127) :
    访问硬盘时,即使重试,磁盘操作也会失败。
    失败发生在 <日期><时间>。
    最后一次成功发生在 (从未) | <date>。

  3. REPADMIN.EXE 报告上次复制尝试失败,状态为 1127

    通常引用 1127 状态的 REPADMIN 命令包括但不限于:

    • REPADMIN /REPLSUM
    • REPADMIN /SHOWREPL
    • REPADMIN /SHOWREPS
    • REPADMIN /SYNCALL
  4. Active Directory 站点和服务中的“立即复制”命令 (DSSITE。MSC) 失败,出现屏幕错误“访问硬盘时,即使重试后磁盘操作也失败”

    对话框标题:立即复制
    消息文本:尝试从域控制器<源 DC 同步目录分区>的命名上下文 <DNS 名称期间发生以下错误>
    到域控制器 <目标 DC>:
    访问硬盘时,即使重试,磁盘操作也会失败。
    此操作不会继续。

  5. 目录服务事件日志中的事件引用错误状态 1127

    通常引用 1127 状态的事件包括但不限于:

    事件源和事件 ID 消息字符串
    NTDS KCC 1926 尝试建立指向具有以下参数的只读目录分区的复制链接失败
    NTDS 复制 1084 内部事件:Active Directory 无法使用从以下源域控制器接收的更改更新以下对象。 这是因为在域控制器上将更改应用到 Active Directory 期间发生了错误。
    NTDS 复制 1699 本地域控制器无法检索针对以下目录分区请求的更改。 因此,无法将更改请求发送到以下网络地址的域控制器。
    NTDS 复制 2108 此事件包含以前记录的 1084 事件的 REPAIR 过程。 此消息指示 Active Directory 数据库在此复制目标上的一致性存在特定问题。 将复制的更改应用于以下对象时发生数据库错误。 数据库包含意外内容,导致无法进行更改。
  6. NTDS 复制事件 2108 可能记录在目录服务事件日志中,引用对象、源 DC 和 jet 错误,这些错误触发了屏幕上错误、记录的事件和诊断工具输出中的 1127 状态的日志记录。

    已知出现在状态为 1127 的 NTDS 复制事件 2108 中的喷气式错误包括但不限于:

    Jet 错误 (十进制) 符号错误 错误字符串
    -510 JET_errLogWriteFail 写入日志文件失败
    -1018 JET_errReadVerifyFailure 数据库页上的校验和错误
    -1019 JET_errPageNotInitialized 空白数据库页
    -1021 JET_errDiskReadVerificationFailure 从文件 IO 返回的 OS ERROR_CRC
    -1022 JET_errDiskIO 磁盘 IO 错误
    -1605 JET_errKeyDuplicate 非法重复密钥
  7. NTDS ISAM 事件可能会记录在目录服务事件日志中,指示是否存在与 1127 状态相关的喷气式错误,这些错误显示在其他屏幕错误、记录的事件和诊断工具输出中

    事件源 + 事件 ID 事件文本
    NTDS ISAM 474 从文件<驱动器:\path\ntds.dit> 读取的数据库页在十进制页大小偏移量 <> (<十六进制偏移) ><十进制页大小> (<十六进制页大小>) 字节未能验证到页校验和不匹配。...读取操作将失败, (<十六进制>喷气式错误>) <。 ). 如果这种情况仍然存在,请从以前的备份还原数据库。 此问题可能是由硬件故障引起的。 请联系你的硬件供应商,以获取进一步的帮助来诊断问题。
    NTDS ISAM 475 从文件<驱动器:\path\ntds.dit> 读取的数据库页在十进制页大小偏移量 <> (<十六进制偏移量>) <十进制页大小> (<十六进制页大小>) 字节未能验证为页码不匹配。...读取操作将失败, (<十六进制>喷气式错误>) <。 ). 如果这种情况仍然存在,请从以前的备份还原数据库。 此问题可能是由硬件故障引起的。 请联系你的硬件供应商,以获取进一步的帮助来诊断问题。

原因

Active Directory 无法写入 Active Directory 数据库或日志文件。 根本原因包括:

  1. 本地计算机上的软件干扰了 Active Directory 将更改写入 Active Directory 数据库和/或日志文件的能力
  2. 磁盘子系统中存在缺陷,包括主板/驱动程序控制器、固件、驱动程序、物理驱动器。

解决方案

  1. 在目录服务事件日志中找到 NTDS 复制事件 1084 事件

    对于记录 1127 状态的 DC,请打开目录服务事件日志并关注 NTDS 复制事件 1084。

    NTDS 复制事件 1084 指示 Active Directory 无法将更新写入到 Active Directory 的本地副本中的对象。

    事件 1084 中的元数据标识 (1.) DN 路径 (,从而标识无法更新的对象宿主分区) , (2.) 有关对象的 objectGUID, (3.) 发送更新的源 DC 的完全限定 CNAME 记录

  2. 找到紧跟在每个 NTDS 复制 1084 事件之后记录的 NTDS 复制事件 2108,并标识 2108 事件中记录的喷气式错误。

    NTDS 复制事件 2108 是 NTDS 复制 1084 事件的“用户操作”。

    对于记录的每个 NTDS 复制 1084 事件,目录服务事件日志中应记录相应的 NTDS 复制 2108 事件,引用 (1.) 相同的对象 DN 路径和 (2.) objectguid 和 (3.) 源 DC 记录在前面的 NTDS 复制 1084 事件中,以及定义/限定原因和恢复计划以解决错误条件的 jet 错误。

  3. 针对 NTDS 复制事件 2108 中记录的 Jet 错误执行操作计划:

    如果下表列出了 NTDS 复制事件中记录的 Jet 错误,请执行用户操作,否则跳到步骤 4:

    Jet 错误 (十进制) 符号错误 + 错误字符串 用户操作
    -510 JET_errLogWriteFail /
    写入日志文件失败
    目标 DC 上发生日志写入失败。

    检查目标 DC 上的磁盘、分区和文件系统运行状况。

    检查可能在 Active Directory 日志文件(如目标 DC 上的防病毒软件)上创建锁的软件。

    查看重新启动后问题是否仍然存在,或尝试干净启动

    方法 1:停止对文件系统中的文件创建锁并专门关注防病毒软件的服务。

    方法 2:在 OS 启动期间按 F8 并选择“使用网络的安全模式”。

    方法 3:禁用与非启动相关的第三方服务。 重新 启动。

    Windows 密钥 + R -> MSCONFIG -> 服务选项卡 - > 隐藏所有 Microsoft
    服务 -> 禁用第三方服务的复选框

    Windows 键 + R -> MSCONFIG -> 启动选项卡 - > 隐藏所有 Microsoft
    服务 -> 单击“全部禁用”
    -1018 JET_errReadVerifyFailure /
    数据库页上的校验和错误
    DB 已损坏

    由硬件故障引起的错误。

    评估磁盘堆栈,包括主板/控制器、固件、连接电缆和物理驱动器,并联系相关供应商了解已知问题。 将当前配置与供应商参考配置进行比较。

    评估问题是否可以由最新的固件更新解决或由最近的固件更新触发。

    如果某些 DC 记录为 -1018,而同一环境中的其他 DC 则不记录,请在硬件配置中查找差异。

    无法在 NTDSUTIL 或 ESENTUTL 中通过完整性检查或语义数据库分析来恢复或修复记录此错误的数据库。

    在不太可能由索引一致性问题引起的问题的情况下,脱机碎片整理可以解决该问题。

    尝试脱机碎片整理,否则,还原早于损坏日期的系统状态备份,或强制降级,执行完整的元数据清理,并重新升级。 如果出现 -1018 错误,请重复此操作,直到解决硬件根本原因。

    一个客户报告了仅在使用板载 raid 控制器的计算机上在同一虚拟主机上运行的虚拟化 DC 上的 jet 错误 -1018s。 目前的想法是,UPS 缺乏足够的电源,板载突袭控制器在断电后提交磁盘更改。 解决方法是配置 UPS 软件,以在断电时关闭虚拟化来宾。 具有专用 (未载入) 具有自身电池备份的 raid 控制器的服务器没有遇到 -1018 jet 错误。
    -1019 JET_errPageNotInitialized /
    空白数据库页
    类似于 -1018 错误,但由页面刷新丢失导致。

    丢失的刷新可能表示关键的 USN 更改。 如果存在单个复制路径,则无法对本地 DC 或可传递复制伙伴应用相同可能会造成危害。

    在服务器类硬件和磁盘子系统组件上部署 OS

    在主计算机上安装 UPS。

    安装具有板载电池备份的磁盘控制器。

    在驱动器控制器上禁用写回缓存。

    避免放置 NTDS。IDE 驱动器上的 DIT 和日志文件

    无法在 NTDSUTIL 或 ESENTUTL 中通过完整性检查或语义数据库分析来恢复或修复记录此错误的数据库。

    如果问题是由索引一致性问题引起的,则脱机碎片整理可以解决问题。

    尝试脱机碎片整理,否则,还原早于损坏日期的系统状态备份,或强制降级,执行完整的元数据清理,并重新升级。 重复此操作,直到硬件根本原因得到解决。
    -1021 JET_errDiskReadVerificationFailure/从文件 IO 返回的 OS ERROR_CRC Jet 错误 -1021 是 Windows Server 2008 R2 的新增功能。

    对于这种情况,Windows Server 2008 R2 之前的操作系统返回 -1022。

    -1021 标识磁盘级别发生 -1018 错误。 重述-1021 指示磁盘驱动器返回错误检查和错误,是磁盘堆栈中问题的具体来源。

    问题可能是由硬盘驱动器可能跟踪的硬盘上的坏块引起的。

    降级和重新升级域控制器可能会触发在正常块上存储数据。
    -1022 JET_errDiskIO/磁盘 IO 错误 泛型磁盘错误

    磁盘 IO 错误意味着 OS 在访问磁盘时遇到非特定错误。 当控制器返回一般错误(如“设备无法工作”)时,可能会记录此错误。 对于 CRC 问题,某些磁盘和版本的 jet 会返回此错误。

    验证整个驱动程序堆栈。
    -1605 JET_errKeyDuplicate/非法重复密钥 偶发错误。
    降级和重写。
    可能是由索引损坏引起的。
    运行 NTDUSITL 语义数据库分析。 如果仍未解决,请执行脱机碎片整理。
  4. 如果 NTDS 复制事件中的 Jet 错误不在上表中,请验证垂直 Jet 数据库堆栈

    如果 2108 事件记录了表中未引用的喷气式错误,请使用 Microsoft Exchange Server 错误代码查找实用工具,使用语法“err <jet error”将 jet 错误解析为其符号和友好错误>字符串。 使用 ERR.EXE 解决喷气式错误时,必须添加前导的“-”前缀字符。 例如, (“c:\>err -1018”) 。

    NTDS 复制事件 2108 中的事件消息文本包含 NTDS 复制 1084 事件的部分用户操作。

    链接的知识库文章 MSKB 837932中介绍了 NTDS 复制 2108 用户操作。 如果上表中未引用针对事件的用户操作,请在 MSKB 837932 中执行修改版本的操作计划,方法是从下到上验证垂直 jet 数据库堆栈, (仅在底层签出“良好”) 时才继续下一层,就像使用 TCP 一样。

    Layer NTDSUTIL 命令 ESENTTUL 命令
    (1.) 物理一致性 无等效项 ESENTUTL /K
    (2.) ESE 逻辑一致性 NTDSUTIL FILES INTEGRITY ESENTUTL /G
    (3.) 应用程序逻辑一致性 NTDSUTIL -> 语义数据库分析

    +

    NTDSUTIL -> 脱机碎片整理
    SDA 没有等效项


    +

    ESENTUTL / D

数据收集

如果需要 Microsoft 支持方面的帮助,建议按照 使用 TSS 收集 Active Directory 复制问题的信息中所述的步骤收集信息。