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=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=CONTOSO,DC=COM

使用 Active Directory 編輯工具來設定 garbageCollPeriod 屬性。 支援的工具包括 Adsiedit.msc、Ldp.exe 和 Active Directory 服務介面 (ADSI) 腳本。

刪除物件時,不會從 Active Directory 資料庫中移除。 相反地,物件會改為標示為要在稍後刪除。 此標記接著會復寫到其他域控制器。 因此,垃圾收集程式一開始會從資料庫中移除先前已刪除對象的剩餘部分。 這些對象稱為 標記。 接下來,垃圾收集程式會刪除不必要的記錄檔。 最後,此程式會啟動重組線程來宣告額外的可用空間。

此外,還有兩種方法可以重組 Active Directory 資料庫。 其中一個方法是在線重組作業,會在垃圾收集程序中執行。 這個方法的優點是伺服器不需要離線,即可執行作業。 不過,此方法不會減少 Ntds.dit) (Active Directory 資料庫檔案的大小。 另一個方法會讓伺服器離線,並使用 Ntdsutil.exe 公用程式重組資料庫。 此方法需要資料庫以修復模式啟動。 這個方法的優點是資料庫會重設大小,並移除未使用的空間。 因此,Ntds.dit 檔案的大小會減少。 若要使用這個方法,域控制器必須脫機。

garbageCollPeriod 的限制:
最小值為 1,一周的最大值為 168。 值的預設值為12小時。

標記存留期下限:
標記存留期的最小值為 2 天,以供 KCC 持續執行計算之用。

AD 資料庫層會強制執行額外的計量。 TSL 天不得小於垃圾收集行程間隔的三倍。 根據預設值 12 小時,TSL 至少為 2 天。 如果 GC 間隔為 20 小時,TSL 最小值為 3 天 (必須大於 60 小時) 。 如果 GC 間隔為 25 小時,您會在) 75 小時 (超過 3 天,而 TSL 最小值為 4 天。

DB 層和 KCC 執行檢查的 catch 是,如果 TSL 低於允許的最小值,它不會還原為最小值 2 天或 2 天以上,而是還原為預設值 60 或 180 天。

重要事項

如果 TSL 因為不相符而更正為預設值,垃圾收集間隔的值也會設定為預設值 12 小時。

標記存留期預設值

歷程記錄

Windows Server 2003 (TSL) 的預設標記存留期為 60 天,且已證明太短。 例如,預先設置的域控制器可能會傳輸超過 60 天。 在超過 TSL 之前,系統管理員可能無法解決複寫失敗或讓離線域控制器運作。 在下列案例中,Windows Server 2003 Service Pack 1 (SP1) 將 TSL 從 60 天增加到 180 天:

  • Windows NT 4.0 域控制器會使用 Windows Server 2003 SP1 安裝媒體來建立新的樹系,以升級至 Windows Server 2003。
  • Windows Server 2003 SP1 計算機會建立新的樹系。

當下列任一條件成立時,Windows Server 2003 SP1 不會修改 TSL 的值:

  • Windows 2000 網域已升級至 Windows Server 2003,方法是使用 Windows Server 2003 的安裝媒體搭配 SP1。
  • Windows Server 2003 SP1 安裝在執行 Windows Server 2003 原始發行版的域控制器上。

將網域的 TSL 增加到 180 天有下列優點:

  • 在數據復原案例中使用的備份具有較長的使用年限。
  • 用於從媒體升級進行安裝的系統狀態備份具有較長的使用年限。
  • 域控制器可以離線較長。 預先設置的計算機較不常使用 TSL 到期。
  • 在較長的離線時間之後,域控制器可以成功返回網域。
  • 已刪除對象的知識會在原始域控制器上保留較長的時間。

樹系中的預設設定將取決於位於樹系「出生」的OS,以及如上所示的從該處升級方法。

如果您不確定樹系中使用的 TSL 值,建議您明確設定它,並視需要設定 msDS-deletedObjectLifetime。
參考: AD 回收站:了解、實作、最佳做法和疑難解答