活動目錄災難管理員應該如何應對
原創【51CTO精選譯文】活動目錄(AD)通常是公司企業的關鍵網絡服務之一。要是沒有它,一切都會慢慢地停下來。考慮到這一點,防備可能會影響活動目錄林(forest)的各種災難就顯得很重要。
說到活動目錄,災難的嚴重性可能大不一樣。有的很簡單,比如某一個域控制器(DC)出現故障,或者某一個對象不小心被刪除。比較糟糕的情況是,整個組織單元(OU)層次體系不小心被刪除。而最糟糕的情況則是,可能需要還原整個域或活動目錄林。
不過好消息是,適用于從簡單災難恢復過來的許多技巧和方法同樣適用于從重大災難恢復過來。本文將探討如何從域控制器出故障和對象不小心被刪除這兩種最常見的災難恢復過來。
備份策略
你首先要確保:有東西可以用來恢復。起碼,應該有有效的系統狀態備份,備份了活動目錄林中每個域的至少兩個域控制器。Windows Server Backup(Windows Server 2008及以后版本)、NTBackup(Windows Server 2003和Windows 2000 Server)以及大多數商用備份工具都可以執行有效的系統狀態備份。不過,測試備份總是值得的,確保一切都處于良好狀態。備份工具方面有一點很重要,那就是應該使用一款可感知卷影復制服務(VSS)的備份工具。依賴磁盤鏡像或虛擬機快照技術的備份工具一般與活動目錄不兼容。還原由這類工具生成的備份會引起嚴重的復制故障,這種故障叫更新序列號(USN)回滾。
在許多企業,負責服務器備份和還原的與運行活動目錄的常常不是同一個團隊。這帶來了幾個問題。首先,你無法直接控制備份過程,因而很難驗證備份內容。其次,許多備份工具要求在進行備份的每個活動目錄上要有代理軟件,這間接提供了對域控制器的更高訪問權。
為了應對這些問題,我對域控制器備份經常采用兩層方法。我每天晚上使用腳本,對域控制器運行Windows Server Backup,把一兩周的備份保留在本地域控制器上。然后共享含有備份的文件夾,只允許備份工具可以訪問,因為許多備份工具不需要代理軟件就可以備份文件共享區。我有時還把備份文件保存在同一個站點里面的鄰近域控制器上。那樣,如果你在某個站點有域控制器1和域控制器2,域控制器 1的備份就保存在域控制器2上的文件共享區上,反之亦然。
這種兩層方法的優點包括如下:
•可以減小依賴另一個團隊來備份的一些風險。
•萬一需要進行還原,可以使用手頭的本地備份文件立即進行還原,不用等另一個團隊來進行還原。
•萬一備份遠程執行,你不用等備份通過廣域網從另一個站點拷貝過來。
我在另一篇文章《如何用Windows Server Backup來管理本地備份》(http://briandesmond.com/blog/managing-local-backups-with-windows-server-backup/)中介紹了Windows Server Backup的設置方法,還發布了用來運行Windows Server Backup的腳本。
域控制器恢復
活動目錄的優點之一是,域控制器基本上具有無狀態的性質。除了可能擔任一個或多個靈活單主機操作(FSMO)角色外,域控制器一般應該是域中其他域控制器的匹配副本,除了復制時可能有些延遲外——延遲長短取決于系統拓撲結構。如果某個故障導致域控制器無法運行,這種無狀態性質就非常好,因為常常不需要從備份來進行復雜的還原。相反,你只要重新安裝Windows,使用Dcpromo將服務器升級為域控制器,將所有數據復制回來——假定你的域有不止一個域控制器。如果你的域只有一個域控制器,那么只要部署第二個域控制器,就能大大降低故障風險。
不過在你重新安裝和重新升級域控制器之前,必須先清理活動目錄,這個過程分兩步。第一步是捕魚域控制器可能為域中另一個域控制器擔任的任何FSMO角色。如果你不確信哪些域控制器擔任域中的FSMO角色,請在命令提示符窗口運行:
Netdom query fsmo
就可以看個究竟。然后,可以使用Ntdsutil實用工具,捕獲FSMO角色。在微軟文章《使用 Ntdsutil.exe 捕獲 FSMO 角色或將其轉移到域控制器》(http://support.microsoft.com/kb/255504)中,按照“捕獲FSMO角色”章節介紹的指示操作即可。值得一提的是,你在捕獲FSMO角色時,一條最佳實踐是,千萬不要讓擔任原始角色的域控制器恢復運行。
由于不可能讓擔任原始FSMO角色的域控制器重新投入使用,第二步是針對活動目錄中失效域控制器的配置,清理元數據。這一步同樣可以用Ntdsutil來完成。請按照微軟文章中《域控制器降級失敗后,如何刪除活動目錄中的數據》(http://support.microsoft.com/kb/216498)的指示操作即可。另外,如果你在使用Server 2008(或以后版本)的活動目錄用戶和計算機(Active Directory Users and Computers)管理單元,只要在域控制器組織單元中刪除域控制器的計算機帳戶,就可以完成這一步。
當需要復制的數據量會給網絡帶來過大的負擔時,通過網絡重新升級域控制器可能行不通。這種情況下,有另外幾個辦法。第一個辦法是從備份來還原域控制器的系統狀態,然后繼續進行。第二個辦法是使用從介質安裝(IFM)功能——該功能已添加到Windows 2003版本中。借助IFM,拿來系統狀態備份(用Windows 2003中的NTBackup來創建)或IFM介質(用Server 2008或以后版本中的Ntdsutil來創建)后,讓Dcpromo指向IFM介質中的活動目錄數據庫。Windows 2003創建的IFM介質必須先還原到文件系統上的可選用位置,以便Dcpromo可以使用它。域控制器會對介質中的數據庫作必要的更改,只復制自介質創建以來發生變更的部分。
活動目錄對象的生存時間
刪除了一個活動目錄對象,其實后臺發生了許多事。最重要的是,刪除對象與從活動目錄數據庫刪除記錄并沒有直接關聯。為了保持活動目錄復制模型的一致性,對象先要轉變成邏輯刪除(tombstoned)狀態,如圖1所示。活動目錄復制了表明對象已被刪除的屬性變更,而不是采用分布式機制來復制從數據庫物理刪除的內容。
圖1:活動目錄對象的默認生存時間
從活動目錄刪除一個對象后,isDeleted屬性被設成True,這意味著該對象的幾乎所有屬性都被刪除。該對象被移到Deleted Objects容器,它的lastKnownParent屬性被印上了父對象的可辨別名稱(DN),之后再刪除對象。對象被標記為已刪除后,查詢活動目錄的任何工具都看不到它,除非你添加了一個特殊的LDAP控件,表明想讓活動目錄在搜索結果中返回刪除對象。各種免費的LDAP查詢工具(如AdFind)為你添加了這個LDAP控件,因而很容易搜索刪除對象。
這時,對象仍作為邏輯刪除對象存留一段時間。活動目錄林的默認邏輯刪除生存時間基于活動目錄林中第一個域控制器的操作系統。表1顯示了默認邏輯刪除生存時間。升級活動目錄并不改變活動目錄林的邏輯刪除生存時間。
表 1:新活動目錄林的默認邏輯刪除生存時間 |
|
第一個域控制器的操作系統 |
邏輯刪除生存時間 |
Windows 2000 |
60天 |
Windows 2003 |
180天 |
Windows 2003 R2 |
60天 |
Server 2008 |
180天 |
Server 2008 R2 |
180天 |
表1:新活動目錄林的默認邏輯刪除生存時間
有時,在每個域控制器上會運行名為垃圾收集的后臺進行。垃圾收集進程(又叫垃圾收集器)會搜索數據庫,查找存留期比活動目錄林的邏輯刪除生存時間更久的邏輯刪除對象,然后將它們從活動目錄數據庫刪除出去。
直到某個邏輯刪除對象被垃圾收集器清除后,才可以使用名為邏輯刪除恢復(tombstone reanimation)的過程來恢復對象。恢復邏輯刪除對象時,只能恢復在邏輯刪除過程中保留的幾個屬性。比如說,為用戶對象保留的屬性包括用戶的SID、SID歷史和用戶名(sAMAccountName)。注意:該列表不包括一些屬性,比如用戶的密碼、組成員關系或用戶身份信息(如姓名和部門)。只要修改模式中每個屬性定義的searchFlags屬性,就可以控制列表含有對象被邏輯刪除后保留的屬性。你想添加多少屬性,就可以添加多少。不過,無法添加鏈接屬性,比如組成員關系或含有用戶郵箱的郵箱數據庫。想了解如何修改searchFlags屬性,請參閱MSDN網頁“Search-Flags屬性”(http://msdn.microsoft.com/en-us/library/ms679765%28VS.85%29.aspx)。
在Server 2008 R2活動目錄功能級別(FFL)層面運行的活動目錄林中,你可以啟用一項名為活動目錄回收站的新特性。如圖2所示,活動目錄回收站在對象被刪除時與被邏輯刪除時之間添加了一個中間狀態。當對象處于這個新的刪除狀態時,被隱藏起來,不出現在搜索結果中,但它的所有屬性(包括組成員關系等鏈接屬性)都保留下來。
圖2:活動目錄回收站啟用后,活動目錄對象的生存時間
可以使用用來恢復邏輯刪除對象的同一個過程,將刪除對象階段的對象恢復到刪除時的精確狀態。默認情況下,對象留在刪除對象階段的時間與活動目錄林的邏輯刪除生存時間一樣長,如表1所概述的那樣。只要修改活動目錄林的msDS-deletedObjectLifetime屬性,就可以更改這個時間段。
刪除對象生存時間到期后,垃圾收集器將對象移到回收對象階段。回收對象的功能相當于邏輯刪除對象,不過有一個重要區別:你無法恢復回收對象,也無法從備份來還原。#p#
對象恢復機制
由于不同版本的活動目錄日趨成熟,恢復刪除對象的機制大有完善。在Windows 2000中,恢復刪除對象的唯一辦法是從備份來執行強制性還原(authoritative restore)。Windows 2003引入了邏輯刪除恢復的概念,這樣不需要從備份來還原,就可以恢復刪除對象的部分拷貝。Server 2008 R2則添加了活動目錄回收站,這樣不需要還原,就可以完全恢復刪除對象。
值得一提的是,活動目錄備份(以及IFM介質)的擱置時間與邏輯刪除生存時間一樣。如果啟用了活動目錄回收站,擱置時間是刪除對象生存時間或回收對象生存時間中較短的那個。比如說,如果刪除對象生存時間是180天,回收對象生存時間是60天,那么擱置時間是60天。因而,不可能從時間比其中一個都久遠的備份來還原刪除對象。
強制性還原
需要從備份恢復一個對象或一組對象時,強制性還原過程常常是個辦法。如果你之前想域控制器的F8啟動菜單上的目錄服務還原模式(DSRM)選項有啥用,現在可以選擇這個選項來進行強制性還原。在DSRM模式下啟動時,活動目錄從不開啟,數據庫處于離線狀態。你可以在啟動進入到DSRM模式的同時,從備份還原活動目錄數據庫,然后使用Ntdsutil選擇需要還原的對象。注意:禁止了Server 2008及以后版本的域控制器上的活動目錄NTDS服務后,就無法進行還原。
進行強制性還原時,活動目錄提高了還原對象的內部版本號。這確保域控制器可重新使用后,那些對象復制到了域的其余部分,還原后版本變成了全局有效。
進行強制性還原常常是為了恢復含有大量對象(如用戶、用戶組、計算機及其他組織單元)的組織單元(OU)。假設你不小心刪除了contoso.com域中的Executives OU。為了還原該OU及里面的一切對象,需要采取下面幾個步驟:
1. 啟動進入到DSRM模式,用你在Dcpromo期間設置的DSRM密碼來登錄。
2. 還原不小心刪除前創建的系統狀態備份。不要重啟。(許多人常犯這錯誤,面臨壓力時更會犯)。
3. 開啟命令提示符窗口,運行Ntdsutil。
4. 運行命令:
authoritative restore
5. 運行命令:
restore subtree
OU=Executives,DC=contoso,DC=com
(雖然該命令在這里換了行,但要把它們全部輸入到一行上。其他換行的命令也是如此。)
6. 檢查并核實確認安全提示符。然后,你會收到像圖3所示的消息。記下文本和生成的LDAP數據交換格式(LDIF)文件。
圖3:表明強制性還原成功的消息。
7. 重啟域控制器,進入到正常的操作模式。
8. 登錄到域控制器,打開命令提示符窗口。運行下列命令,導入第6步期間導出的LDIF文件:
ldifde -i -f ar_20110221-151131_links_contoso.com.ldf
這會導入還原對象的鏈接屬性值(如組成員關系)。
如果你只需要還原一個對象(如刪除的計算機對象),可以使用restore object命令,而不是使用第5步中的restore subtree命令。如果你的活動目錄林含有多個域,就要使用第6步中導出的文本文件,為其他域中的域本地組還原組成員關系。
恢復邏輯刪除
有許多工具可以用來恢復邏輯刪除對象,但它們最終都執行同樣的步驟。所以這里舉個例子,表明使用AdRestore實用工具來恢復名為John Doe的刪除用戶需要哪些步驟:
1. 打開命令提示符窗口,用下列命令搜索該用戶
adrestore Doe
AdRestore會搜索刪除對象,查找與*doe*匹配的任何對象,并返回輸出結果,如圖4所示。
圖4:AdRestore實用工具的示例輸出
2. 確保找到了想要恢復的對象,然后再次運行AdRestore,使用-r參數選項:
adrestore -r Doe
3.確認問你是否想恢復該對象的提示。然后,AdRestore會把該對象恢復到之前所在的位置。
如前所述,邏輯刪除對象被刪除后失去了大部分屬性。所以,你得重新添加許多屬性,讓恢復后的對象再度有用。(一般來說,如果你使用身份自動管理工具,邏輯刪除對象被恢復后,屬性會自動重新添加上去。)
活動目錄回收站的刪除恢復
活動目錄回收站無疑是最佳的恢復選項,因為可以還原所有屬性,包括組成員關系等鏈接屬性。不過如前所述,你的活動目錄林需要在Windows Server 2008 R2 FFL層面運行,才能利用這個選項。
只要運行下面這樣的命令,就可以使用Windows PowerShell來啟用活動目錄回收站。
Enable-ADOptionalFeature -Identity 'CN=Recycle Bin Feature, CN=Optional Features, CN=Directory Service, CN=Windows NT,CN=Services, CN=Configuration,DC=contoso,DC=com' -Scope ForestOrConfigurationSet -Target 'contoso.com'
注意:啟用活動目錄回收站不是一個可逆轉的步驟。此外,啟用活動目錄回收站時已經被邏輯操作的對象無法再通過邏輯刪除恢復來恢復。
你啟用了活動目錄回收站后,之后刪除的任何對象都可以在活動目錄林的刪除對象生存時間內完全恢復。有許多辦法來恢復刪除對象,但最容易的辦法是使用PowerShell的Restore-ADObject cmdlet。比如說,下面是恢復刪除名為John Doe的用戶的幾個步驟:
1.從Start(開始)菜單的Administrative Tools(管理工具)部分啟動Windows PowerShell活動目錄模塊。
2. 運行下列命令,搜索刪除用戶:
Get-ADObject -SearchBase "CN=Deleted Objects,DC=contoso,DC=com" -ldapFilter:"(msDs-lastKnownRDN=John Doe)" -IncludeDeletedObjects -Properties lastKnownParent
確保它是結果集中返回的唯一對象。
3. 用下列命令還原該對象:
Get-ADObject -SearchBase "CN=Deleted Objects,DC=contoso,DC=com" -ldapFilter:"(msDs-lastKnownRDN=John Doe)" -IncludeDeletedObjects -Properties lastKnownParent | Restore-ADObject
如果你刪除了整個組織單元(OU),就要按正確的順序來恢復對象(也就是說,某個對象在父對象恢復之前是無法恢復的),以便它們可以恢復到原來所屬的位置。微軟發布了恢復刪除對象樹的PowerShell腳本(http://technet.microsoft.com/en-us/library/dd379504%28WS.10%29.aspx),你可以用來執行這項任務。
復雜的任務
為活動目錄災難作規則是項復雜的任務,因為可能許多部分會出錯。不過,如果你知道如何從出現故障的域控制器和不小心刪除對象或整棵對象樹(如OU)恢復過來,那么完全為災難作好了防備。
【51CTO精選譯文 轉載請標明出處與作者】
【編輯推薦】