为什么域控制器会在非正常关机后遇到 USN 回滚?

Mas*_*imo 8 active-directory replication domain-controller windows-server-2008-r2 unexpected-shutdown

我在一台物理戴尔服务器上运行了这个 Windows Server 2008 R2 域控制器,型号为 PowerEdge R510。

这里有一些电气问题,因此不幸的是,停电是很常见的情况;有 UPS,但它们并不像应有的那样可靠,有时服务器会遇到不正常关机的情况。

出于某种原因,我真的无法理解,有时这个特定的 DC 会在不正常关机后出现并遇到USN 回滚,迫使我们将其降级并提升回来。

这完全没有意义,因为服务器是物理服务器,并且从未对其执行过快照、克隆和/或恢复;此外,它没有安装额外的软件,它只执行 DC 职责;具体来说,不存在克隆/恢复/任何软件。

文件系统损坏至少有一定意义,但 USN 回滚确实没有意义,因为服务器无法恢复到以前的状态。不过,这两个月至少发生了3次,绝对不是一次性的疯狂事件;但我完全无法做出解释。

这个问题的原因是什么?

Rya*_*ies 6

我今天想了几个小时。这有点令人困惑,但正如我在评论中指出的那样,我最好的猜测是你要么有某种磁盘缓存正在进行中,但在断电/脏关机清除缓存内容之前没有提交到磁盘... 或者,由于您在一个包含 ntds.dit 的 RAID 卷上运行,断电可能会导致您的 RAID 卷暂时中断或变得不连贯,即使是片刻。

我们知道,USN 回滚的一方是当 DC 恢复到早期状态时,经典示例是从快照恢复虚拟化 DC。我知道这并不完全适用于您......但即使在具有写入缓存的磁盘的情况下,您也可以将磁盘上的物理数据视为包含“先前状态”,而写入缓存是实际上包含 DC 最新状态的内容……即使这两个状态仅相隔半秒。

反思微软的这些评论:

虚拟化域控制器指南

与虚拟 IDE 相比,虚拟 SCSI 磁盘提供更高的性能,并且它们支持强制单元访问 (FUA)。FUA 确保操作系统绕过任何和所有缓存机制直接从媒体写入和读取数据。

我知道你的 DC 不是虚拟机,但这个概念仍然适用。磁盘缓存和 DC 不混合。这就是为什么安装 Active Directory 会将写缓存作为 Windows 策略关闭,但您仍然可以在硬件 RAID 控制器等中使用缓存机制。

方案 B:从损坏的镜像中的其他驱动器启动 Active Directory

  1. 提升域控制器。在镜像驱动器上找到 Ntds.dit 文件。

  2. 打破镜子。

  3. 使用镜像中第一个驱动器上的 Ntds.dit 文件继续入站复制和出站复制。

  4. 使用镜像中第二个驱动器上的 Ntds.dit 文件启动域控制器。

这是一个复制杀手,它在具有 RAID 1 卷的物理 DC 上让我深受其害。我个人从未经历过由它引起的实际 USN 回滚,但它会终止该 DC 上的复制。我的意思是,想象一个有 2 个磁盘的 RAID 1 卷。1 个驱动器死亡。你删除它,弹出一个新的驱动器...... aaaaaaand DSA Not Writable。

来自AskDS 博客

如果您的 VM 主机或 Active Directory 数据库所在的存储磁盘没有不间断电源 (UPS),请确保在虚拟机的主机上禁用写入缓存。请参阅此链接以获取更多指导。相反,如果需要为托管 DC 的 VM 主机启用写入缓存,则安装 UPS 以避免损坏 DC。

同样,它讨论的是虚拟化 DC,但磁盘缓存概念也适用于物理 DC。

所以这就是我的想法。我认为这与您的存储系统有关。绝对要至少在 ntds.dit 卷上禁用任何和所有缓存机制,尤其是在您容易断电的情况下。

  • 正是我的想法。在阵列适配器上写入缓存,但不支持电池。会赌 0.05 英镑 :-) (2认同)
  • 实际上,RAID 控制器上启用了写入缓存,而操作系统无法自动禁用它;我已经手动禁用了它,我希望这能一劳永逸地解决这个问题。这种配置很可能是其根本原因。 (2认同)