排查 Windows 停止错误 - 目录服务初始化失败
本文提供的步骤可解决 Azure 中 Active Directory 域控制器虚拟机 (VM) 停滞在循环中并指出需要重启的问题。
症状
使用启动诊断查看 VM 的屏幕截图时,屏幕截图显示 VM 需要重启,因为出现错误,在 Windows Server 2008 R2 中显示停止代码0xC00002E1,或者在 Windows Server 2012 或更高版本中0xC00002E2。
原因
错误代码 0xC00002E2 表示 STATUS_DS_INIT_FAILURE,错误代码 0xC00002E1 表示 STATUS_DS_CANT_START。 当目录服务出现问题时,这两个错误都会发生。
操作系统启动时,本地安全身份验证服务器 (LSASS.exe) 强制 自动重启,该服务器对用户登录进行身份验证。 如果 VM 上的操作系统是对其本地 Active Directory 数据库没有读/写访问权限的域控制器,则无法进行身份验证。 由于无法访问 Active Directory (AD) ,LSASS.exe 无法进行身份验证,因此必须重启 OS。
此错误可能是由以下任何条件引起的:
- 无法访问将本地 AD 数据库 (NTDS 的磁盘。DIT) 。
- 包含本地 AD 数据库的磁盘 (NTDS。DIT) 已用完可用空间。
- 本地 AD 数据库 (NTDS。缺少 DIT) 文件。
- VM 具有多个磁盘,并且存储区域网络 (SAN) 策略配置不正确。 SAN 策略未设置为 ONLINEALL,并且非 OS 磁盘在磁盘管理器上以脱机模式附加。
- 本地 AD 数据库 (NTDS。DIT) 文件已损坏。
解决方案
过程概述
- 创建和访问修复 VM。
- 磁盘上的可用空间。
- 检查包含 AD 数据库的驱动器是否已附加。
- 启用目录服务还原模式。
- 建议:在重新生成 VM 之前,请启用串行控制台和内存转储收集。
- 重新生成 VM。
- 重新配置 SAN 策略。
注意
遇到此错误时,来宾 OS 无法正常运行。 你将在脱机模式下进行故障排除以解决此问题。
创建和访问修复 VM
- 使用 VM 修复命令的步骤 1-3 准备修复 VM。
- 使用远程桌面连接连接到修复 VM。
释放磁盘上的空间
由于磁盘现在已附加到修复 VM,因此请验证包含 Active Directory 内部数据库的磁盘是否有足够的空间来正确执行。
通过右键单击驱动器并选择 “属性”,检查磁盘是否已满。
如果磁盘的可用空间小于 300 Mb, 请使用 PowerShell 将其扩展到最大 1 Tb。
如果磁盘已达到 1 Tb 的已用空间,请执行磁盘清理。
- 使用 PowerShell 从损坏的 VM 中分离数据磁盘 。
- 从损坏的 VM 分离后, 将数据磁盘附加到 正常运行的 VM。
- 使用 磁盘清理工具 释放更多空间。
可选 - 如果需要更多空间,请打开 CMD 实例并输入
defrag <LETTER ASSIGNED TO THE OS DISK>: /u /x /g
命令以在驱动器上执行碎片化:
在 命令中,将 替换为
<LETTER ASSIGNED TO THE OS DISK>
OS 磁盘的字母。 例如,如果磁盘号为F:
,则该命令将为defrag F: /u /x /g
。根据碎片的级别,删除碎片可能需要数小时。
如果磁盘上有足够的空间,请继续执行下一个任务。
检查包含 Active Directory 数据库的驱动器是否已附加
打开提升的 CMD 实例并运行以下命令:
加载注册表文件:
REG LOAD HKLM\BROKENSYSTEM f:\windows\system32\config\SYSTEM
指定
f:
假定磁盘为驱动器F:
。 使用属于包含 OS 磁盘的驱动器的驱动器号。确定 NTDS 的驱动器号和文件夹 。DIT:
REG QUERY "HKLM\BROKENSYSTEM\ControlSet001\Services\NTDS\parameters" /v "DSA Working Directory" REG QUERY "HKLM\BROKENSYSTEM\ControlSet001\Services\NTDS\parameters" /v "DSA Database file" REG QUERY "HKLM\BROKENSYSTEM\ControlSet001\Services\NTDS\parameters" /v "Database backup path" REG QUERY "HKLM\BROKENSYSTEM\ControlSet001\Services\NTDS\parameters" /v "Database log files path"
卸载注册表文件:
REG UNLOAD HKLM\BROKENSYSTEM
使用 Azure 门户,验证 NTDS 所在的驱动器。DIT 已设置,已添加到 VM。
使用来宾 OS 中的磁盘管理控制台,验证磁盘是否包含 NTDS。DIT 处于联机状态。
- 可以在管理工具>计算机管理存储中找到磁盘管理工具>,也可以使用 CMD 实例中的 命令进行访问
diskmgmt.msc
。
- 可以在管理工具>计算机管理存储中找到磁盘管理工具>,也可以使用 CMD 实例中的 命令进行访问
如果磁盘未附加到 VM,请重新附加数据磁盘以解决此问题。
如果磁盘已正常附加,请继续执行下一个任务。
启用目录服务还原模式
将 VM 设置为在 目录服务还原模式 (DSRM) 模式下启动,以绕过检查 NTDS 是否存在。启动期间的 DIT 文件。
在继续之前,请验证是否已完成将磁盘附加到修复 VM 的先前任务,并确定 NTDS 的磁盘。DIT 文件位于 中。
使用提升的 CMD 实例,列出该存储上的启动分区信息,以查找活动分区中的标识符:
bcdedit /store <Drive Letter>:\boot\bcd /enum
将 替换为
<Drive Letter>
前面步骤中确定的字母。safeboot DsRepair
在启动分区上启用 标志:bcdedit /store <Drive Letter>:\boot\bcd /set {<Identifier>} safeboot dsrepair
将 和
< Identifier >
替换为< Drive Letter >
前面步骤中确定的值。再次查询启动选项,以确保更改已正确设置。
建议:在重新生成 VM 之前,请启用串行控制台和内存转储收集
若要启用内存转储收集和串行控制台,请通过打开提升的命令提示符会话 (以管理员身份) 运行,并运行以下命令来运行以下脚本。
- 启用串行控制台:
bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON
bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
验证 OS 磁盘上的可用空间是否至少等于 VM 上的内存大小 (RAM) 。
如果 OS 磁盘上没有足够的空间,请更改将创建内存转储文件的位置,并将其引用为附加到 VM 且具有足够可用空间的任何数据磁盘。
若要更改位置,请在以下命令中将 替换为
%SystemRoot%
驱动器号 (,例如,F:
) 数据磁盘。
建议使用以下配置来启用 OS 转储
加载损坏的 OS 磁盘:
REG LOAD HKLM\BROKENSYSTEM <VOLUME LETTER OF BROKEN OS DISK>:\windows\system32\config\SYSTEM
在 ControlSet001 上启用:
REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f
REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f
REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
在 ControlSet002 上启用:
REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f
REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f
REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
卸载损坏的 OS 磁盘:
REG UNLOAD HKLM\BROKENSYSTEM
重新生成 VM
- 使用 VM 修复命令的步骤 5 重新组合 VM。
重新配置存储区域网络策略
在 DSRM 模式下启动时,唯一可以登录的用户是恢复管理员,该管理员在 VM 提升为域控制器时使用。 所有其他用户将显示身份验证错误。
- 如果没有其他可用的 DC,则必须使用
.\administrator
或machinename\administrator
和 DSRM 密码在本地登录。
- 如果没有其他可用的 DC,则必须使用
设置 SAN 策略,使所有磁盘都处于联机状态。
打开提升的 CMD 实例并输入
DISKPART
。查询磁盘列表。
DISKPART> list disk
输入以下命令以选择需要联机的磁盘并更改 SAN 策略:
DISKPART> select disk 1 Disk 1 is now the selected disk. DISKPART> attributes disk clear readonly Disk attributes cleared successfully. DISKPART> attributes disk Current Read-only State : No Read-only : No Boot Disk : No Pagefile Disk : No Hibernation File Disk : No Crashdump Disk : No Clustered Disk : No DISKPART> online disk DiskPart successfully onlined the selected disk. DISKPART> san SAN Policy : Online All
修复问题后,请确保删除标志
DsRepair safeboot
:bcdedit /deletevalue {default} safeboot dsrepair
重启 VM。
注意
如果 VM 刚刚从本地迁移,并且想要将更多域控制器从本地迁移到 Azure,应考虑执行以下文章中的步骤,以防止将来的迁移中出现此问题:
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈