Active Directory数据库维护核心是保障稳定性、性能与空间效率,需结合在线垃圾回收(每12小时自动运行,释放内部空间但不减物理大小)和必要时脱机压缩NTDS.dit文件;墓碑对象保留180天后由垃圾回收清除,事务日志动态增长需监控,脱机压缩须在DSRM模式下执行并确保足够磁盘空间。
active directory 数据库维护的核心目标是保障目录服务的稳定性、性能与空间效率,而 ntds.dit 文件作为其唯一主数据库文件,既是关键资产,也是日常维护的重点对象。它不会随时间自动“瘦身”,必须结合在线垃圾回收与必要时的脱机压缩来维持健康状态。
理解 NTDS.dit 的增长逻辑
NTDS.dit 文件大小自然增长是正常现象,原因包括:用户/组/策略等对象持续创建、属性变更、复制操作累积以及已删除对象暂存为“墓碑”(tombstone)等待清理。这些数据并不会在删除瞬间消失,而是保留至默认 180 天的墓碑存留期(TSL),之后才由垃圾回收(Garbage Collection)进程统一清除。
- 垃圾回收每 12 小时自动运行一次,释放内部空间、优化存储结构,但不减少 NTDS.dit 文件的物理大小
- 事务日志(Edb*.log)会随写入量动态增长,若长期未清理或磁盘空间紧张,可能触发 Edbres00001.jrs 等保留日志文件启用,进一步占用空间
- 数据库碎片(逻辑碎片)会影响查询响应速度,但 Windows Server 默认不提供图形化工具识别或处理
在线维护:触发与验证垃圾回收
无需重启或停服,可手动触发一次垃圾回收,用于验证流程是否正常或加速墓碑清理:
- 使用 ldp.exe 连接到本地域控制器(绑定后选择 Browse → Modify)
- 在 DN 字段输入:cn=Directory Service,cn=Windows NT,cn=Services,cn=Configuration,dc=yourdomain,dc=com(替换为实际林根域名)
- 修改属性名填:garbageCollPeriod,值设为 1(单位:小时),点击 Run —— 此操作仅临时缩短下次回收间隔,不影响全局设置
- 完成后查看事件查看器 → 目录服务日志,筛选 ID 700(开始)和 701(完成)事件,确认无错误即可
脱机压缩:真正缩小 NTDS.dit 文件体积
当 NTDS.dit 占用空间明显超出实际数据量(例如超过 50% 为空闲或已删除空间),且磁盘空间吃紧时,需执行脱机碎片整理(即 NTDSUTIL 压缩)。该操作会生成全新紧凑数据库文件,并重建所有索引。
- 必须进入目录服务还原模式(DSRM):通过 msconfig 启用“安全启动 → Active Directory 修复模式”,重启后用 DSRM 密码登录
- 确保目标卷有足够空间:新数据库至少需等于当前 NTDS.dit 的压缩后预估大小(通常为原大小的 60–80%),建议预留 2 倍空间以防意外
- 设置临时路径避免磁盘满错误:
set TMP=D:\temp
set TEMP=D:\temp
md D:\temp - 运行命令序列:
ntdsutil
activate instance ntds
files
info
compact to D:\compactDB
完成后将新 ntds.dit 替换原文件(需先停止 AD DS 服务),再正常重启
日常预防与风险规避
维护不是救火,而是持续习惯。以下做法能显著降低突发问题概率:
- 定期检查 NTDS 文件夹所在磁盘剩余空间,确保不低于总容量的 25%
- 将数据库文件(NTDS.dit)与事务日志(Edb*.log)分置于不同物理磁盘(Windows Server 2008 及以后支持),提升 I/O 性能与容错能力
- 禁用对域控制器计算机对象及 NTDS Settings 对象的“防止意外删除”保护,否则元数据清理可能失败
- 任何 NTDSUTIL 操作前,务必确认拥有最新可用的系统状态备份及 DSRM 密码——没有备份的操作等于高危实验

















