使用啓用了多主機的數據庫(如 Active Directory),能夠在企業中任何 DC 上進行靈活的更改,可是該數據庫同時可能引發衝突,在將數據複製到企業的其餘部分時可能會引起問題。Windows 2000 處理更新衝突的一種方法是經過使用衝突解決算法來處理值的差別,該算法使用最後寫入更改的 DC(即,「最後寫入者獲勝」),而丟棄全部其餘 DC 中的更改。雖然在有些狀況下能夠接受該解決方法,但有時候衝突太複雜而不能使用「最後寫入者獲勝」方法進行解決。此種狀況下,最好是防止衝突發生,而不是在發生衝突後嘗試解決。
針對某些類型的更改,Windows 2000 會結合使用防止發生 Active Directory 更新衝突的方法。算法
爲防止 Windows 2000 中的更新衝突,Active Directory 以單主機方式對某些對象執行更新。在單主機模式中,只容許整個目錄中的一個 DC 處理更新。這與賦予 Windows 早期版本(如 Microsoft Windows NT 3.51 和 4.0)中的主域控制器 (PDC) 的角色類似,其中 PDC 負責處理給定域中的全部更新。
Windows 2000 Active Directory 擴展了 Windows 早期版本中的單主機模式以包括多個角色,且能夠將角色轉移給企業中的任何域控制器 (DC)。因爲 Active Directory 角色未綁定到單個 DC 上,所以稱它爲「Flexible Single Master Operation (FSMO)」角色。目前在 Windows 2000 中有五種 FSMO 角色:
數據庫
架構主機跨域
域命名主機瀏覽器
RID 主機安全
PDC 模擬器服務器
基礎結構主機網絡
架構主機 FSMO 角色的擁有者是負責執行目錄架構(即,命名上下文或 LDAP://cn=schema,cn=configuration,dc=<domain> 的架構)更新的 DC。該 DC 是惟一可以處理目錄架構更新的域控制器。架構更新完成後,該更新將從架構主機複製到目錄中全部其餘 DC 上。每一個目錄中只有一臺架構主機。架構
域命名主機 FSMO 角色的擁有者是負責對目錄的林範圍的域名空間(即,分區\配置命名上下文或 LDAP://CN=Partitions, CN=Configuration, DC=<domain>)進行更改的 DC。該 DC 是惟一可以在目錄中添加或刪除域的域控制器。它也能夠添加或刪除在外部目錄中對域的交叉引用。dom
RID 主機 FSMO 角色的擁有者是負責處理來自某一給定域中的全部 DC 的「RID 池」請求的單個 DC。它還負責在對象移動過程當中將對象從其域中刪除並放在其餘域中。
若是 DC 建立諸如用戶或組之類的安全主體對象,它會將惟一的安全 ID (SID) 附加到該對象上。此 SID 由域 SID(在一個域中建立的全部 SID 的域 SID 均相同)和相關 ID (RID)(在一個域中建立的每一個安全主體 SID,其相關 ID 是惟一的)組成。
爲域中的每一個 Windows 2000 DC 分配一個 RID 池,以容許將其分配給它所建立的安全主體。若是分配給某個 DC 的 RID 池低於閾值,該 DC 將向域的 RID 主機發布請求以獲取更多 RID。域 RID 主機經過從域的未分配 RID 池中檢索 RID 來響應請求,並將這些 RID 分配給請求的 DC 的池。目錄中的每一個域中都有一臺 RID 主機。分佈式
PDC 模擬器對於在企業中同步時間是必需的。Windows 2000 包含 Kerberos 身份驗證協議所需的 W32Time(Windows 時間)時間服務。企業中全部基於 Windows 2000 的計算機都使用公共的時間。時間服務的目的是確保 Windows 時間服務使用能夠控制受權且不容許循環的層級關係來確保使用合適的公共時間。
域中的 PDC 模擬器是域的權威。林根目錄的 PDC 模擬器成爲企業的權威,應配置其從外部源中收集時間。全部 PDC FSMO 角色擁有者都遵循域的層級來選擇其入站時間夥伴。
在 Windows 2000 域中,PDC 模擬器角色擁有者保留如下功能:
域中其餘 DC 執行的密碼更改優先複製到 PDC 模擬器中。
若是因爲密碼錯誤而在域中給定的 DC 上發生身份驗證失敗,則在向用戶報告密碼錯誤失敗信息以前先將該信息傳送給 PDC 模擬器。
在 PDC 模擬器上執行賬戶鎖定。
PDC 模擬器可執行基於 Microsoft Windows NT 4.0 Server 的 PDC 或早期 PDC 爲基於 Windows NT 4.0 的客戶端或早期客戶端執行的全部功能。
PDC 模擬器的這部分角色在全部運行 Windows NT 4.0 或更早版本的工做站、成員服務器和域控制器均升級到 Windows 2000 後變得沒必要要。PDC 模擬器仍然執行在 Windows 2000 環境中所描述的其餘功能。
下面的信息介紹在升級過程當中發生的更改:
Windows 2000 客戶端(工做站和成員服務器)和安裝了分佈式服務客戶端軟件包的下層客戶端並不優先在公佈自身爲 PDC 的 DC 上執行目錄寫操做(如密碼更改),它們可以使用域中任何 DC。
下層域中的備份域控制器 (BDC) 升級到 Windows 2000 後,PDC 模擬器再也不接收下層的複製請求。
Windows 2000 客戶端(工做站和成員服務器)和安裝了分佈式服務客戶端軟件包的下層客戶端使用 Active Directory 來分配網絡資源。它們不請求 Windows NT 瀏覽器服務。
若是一個域中的對象被另外一個域中的其餘對象引用,它表示經過 GUID、SID(針對安全主體的引用),以及被引用對象的 DN 進行引用。結構主機 FSMO 角色的擁有者負責在一個跨域的對象引用中更新對象的 SID 和辨別名的 DC。
注意:結構主機 (IM) 角色應由非全局編錄 (GC) 服務器的域控制器擔任。若是結構主機在全局編錄服務器上運行,它將會中止更新對象信息,緣由是它只包含對它所擁有的對象的引用。這是由於全局編錄服務器擁有林中每一個對象的部分副本。所以,不會更新域中的跨域對象引用,而且將向此 DC 的事件日誌中寫入該影響的警告。若是域中的全部域控制器同時也承載全局編錄,則全部域控制器均擁有當前數據,此時哪一個域控制器擔任結構主機角色並不重要。