域控制器数据库挂起本质是ntds.dit或日志目录磁盘空间耗尽,触发ese保护机制;需排查磁盘状态与空间占用源头,清理日志、事件日志及临时文件,校验修复数据库并设置空间告警。
域控制器因磁盘空间满导致数据库挂起,本质是 ntds.dit 文件所在卷无剩余空间,或日志目录(%systemroot%\ntds)被填满,进而触发 ese 数据库引擎保护机制——停止写入、拒绝 ldap 请求、延迟复制甚至服务崩溃。排查需聚焦“空间位置”和“空间消耗源头”两个维度。
确认 AD 数据库所在磁盘是否已满
直接检查承载 NTDS.DIT 和 EDB.LOG 等文件的磁盘(通常是系统盘或独立数据盘):
- 进入“磁盘管理”,确认该磁盘状态为“联机”,且未脱机(尤其在多磁盘 VM 中,SAN 策略未设为 ONLINEALL 时易发生)
- 右键磁盘 → “属性”,查看可用空间:若低于 300 MB,ESE 将拒绝写入;若已用尽,目录服务会直接失败
- 在修复 VM 中挂载该磁盘后,用 PowerShell 快速验证:
Get-PSDrive C | Select-Object Used, Free, DisplayRoot
定位空间被谁占满
AD 相关空间占用通常不是普通用户文件,而是以下几类:
- NTDS 日志文件(EDB*.log、Res1.log、Res2.log):最常见原因。当长事务未提交(如 WMI 轮询事件日志、挂起的组策略处理、DFS-R 同步卡死),版本存储无法清理,日志持续增长直至撑爆磁盘
- Windows 事件日志(尤其是 Security、System、Directory Service):第三方监控工具持续读取全部日志+模糊匹配,会导致日志文件膨胀并长期不轮转
- 临时文件与系统缓存:CBS 日志(%WinDir%\Logs\CBS)、WINSXS 清理残留、页面文件过大(如报错 “分页文件太小” 实际是磁盘已满导致无法扩展)
- 旧备份/快照/VHD 副本残留:手动复制 VHDX、未清理的 Hyper-V 检查点、或文件级备份工具遗留的临时文件夹
快速释放空间并阻止复发
优先执行安全、可逆的操作:
- 用 磁盘清理工具(cleanmgr)选中“系统文件” → 勾选“Windows 更新清理”“临时 Windows 安装文件”“以前的 Windows 安装”
- 手动清理事件日志:
打开“事件查看器” → 右键各日志(特别是 Security)→ “属性” → 设置“按需覆盖事件” + 限制最大日志大小(建议 512 MB 起) - 压缩 NTDS 日志目录(仅限紧急释放):
compact /c /s:C:\Windows\NTDS *.log(注意:不影响数据库一致性,但不可替代根本解决) - 检查并终止异常进程:
用 Process Explorer 查看哪些进程长时间持有 ntds.dit 或大量 .log 文件句柄;重点排查 PowerShell 脚本、WMI 客户端、DFS Replication 服务(repadmin /showrepl若持续报错 5 或 1722,说明复制停滞并堆积日志)
验证数据库恢复与预防措施
空间释放后不能直接重启服务,需确认数据库完整性:
- 启动目录服务还原模式(DSRM),运行:
esentutl /g C:\Windows\NTDS\ntds.dit(校验)→esentutl /p C:\Windows\NTDS\ntds.dit(软修复,仅当校验失败时使用) - 重启 Netlogon 和 NTDS 服务,观察事件查看器中“Directory Service”日志是否出现 ID 1000(成功初始化)
- 设置磁盘空间告警:通过性能监视器(
\LogicalDisk(*)\Free Megabytes)或 SCOM/Defender for Endpoint 配置阈值提醒(建议预警线设为 5 GB) - 禁用非必要轮询:审查所有调用
Get-WinEvent或 WMI 查询Win32_NTLogEvent的脚本,改用时间范围过滤+分页读取











