Active Directory 数据库垃圾回收过程和允许间隔的计算

本文介绍 Active Directory 数据库垃圾回收过程和允许间隔的计算。

适用于:Windows Server 2012 R2、Windows Server 2016、Windows Server 2019
原始 KB 编号: 198793

摘要

Active Directory 数据库包含一个垃圾回收过程,该过程在企业中的每个域控制器上独立运行。

更多信息

垃圾回收是一个内务处理过程,旨在释放 Active Directory 数据库中的空间。 此过程在企业中的每个域控制器上运行,默认生存期间隔为 12 小时。 可以通过修改企业范围的 DS 配置对象中的 garbageCollPeriod 属性来更改此间隔, (NTDS) 。

域中对象 Contoso.com 的路径如下所示:
CN=目录服务,CN=Windows NT,CN=服务,CN=配置,DC=CONTOSO,DC=COM

使用 Active Directory 编辑工具设置 garbageCollPeriod 属性。 支持的工具包括 Adsiedit.msc、Ldp.exe 和 Active Directory 服务接口 (ADSI) 脚本。

删除对象时,不会从 Active Directory 数据库中删除该对象。 相反,对象被标记为稍后删除。 然后,此标记将复制到其他域控制器。 因此,垃圾回收过程首先从数据库中删除以前删除的对象的残骸。 这些对象称为 墓碑。 接下来,垃圾回收过程会删除不必要的日志文件。 最后,进程启动碎片整理线程以声明额外的可用空间。

此外,还有两种方法可用于对 Active Directory 数据库进行碎片整理。 一种方法是作为垃圾回收过程的一部分运行的联机碎片整理操作。 此方法的优点是服务器不必脱机即可运行操作。 但是,此方法不会减小 Active Directory 数据库文件的大小 (Ntds.dit) 。 另一种方法使服务器脱机,并使用 Ntdsutil.exe 实用工具对数据库进行碎片整理。 此方法要求数据库在修复模式下启动。 此方法的优点是调整数据库的大小并删除了未使用的空间。 因此,Ntds.dit 文件的大小会减少。 若要使用此方法,必须将域控制器脱机。

garbageCollPeriod 的限制:
最小值为 1,一周的最大值为 168。 该值的默认值为 12 小时。

逻辑删除生存期的最小值:
对于 KCC 执行计算的保留期,Tombstone 生存期的最短为 2 天。

AD 数据库层强制实施其他指标。 TSL 天数不得小于垃圾回收器间隔的三倍。 根据默认值 12 小时,TSL 至少为 2 天。 如果 GC 间隔为 20 小时,则 TSL 最小值为 3 天, (必须大于 60 小时) 。 如果 GC 间隔为 25 小时,则超过 3 天 (75 小时) TSL 最小值为 4 天。

检查数据库层和 KCC 执行的捕获值是,如果 TSL 低于允许的最小值,则不会还原最小值 2 天或更多天,而是默认为 60 天或 180 天。

重要

如果 TSL 由于不匹配而更正为默认值,则垃圾回收间隔的值也会设置为默认值 12 小时。

逻辑删除生存期默认值

历史记录

Windows Server 2003 中 (TSL) 的默认逻辑删除生存期为 60 天,并且已证明太短。 例如,预留域控制器的传输时间可能超过 60 天。 在超出 TSL 之前,管理员可能无法解决复制失败或使脱机域控制器进入运行状态。 Windows Server 2003 Service Pack 1 (SP1) 在以下方案中将 TSL 从 60 天增加到 180 天:

  • 使用 Windows Server 2003 SP1 安装媒体创建新林,将Windows NT 4.0 域控制器升级到 Windows Server 2003。
  • Windows Server 2003 SP1 计算机创建新林。

当满足以下任一条件时,Windows Server 2003 SP1 不会修改 TSL 的值:

  • Windows 2000 域通过 SP1 使用 Windows Server 2003 安装媒体升级到 Windows Server 2003。
  • Windows Server 2003 SP1 安装在运行 Windows Server 2003 原始发行版的域控制器上。

将域的 TSL 增加到 180 天具有以下优势:

  • 数据恢复方案中使用的备份具有更长的使用寿命。
  • 用于从媒体升级安装的系统状态备份具有更长的使用寿命。
  • 域控制器脱机的时间可能更长。 预留计算机不太频繁地接近 TSL 过期。
  • 域控制器可以在脱机较长时间后成功返回到域。
  • 在原始域控制器上,已删除对象的知识将保留更长时间。

林中的默认设置将取决于林“诞生”时的 OS 以及上述升级方法。

如果不确定林中使用的 TSL 的值,建议显式设置它,并根据需要设置 msDS-deletedObjectLifetime。
参考: AD 回收站:了解、实现、最佳做法和故障排除