虛擬化域控制器系列(1) - 可以用快照(Snapshot)或以複製VHD的方式做備份嗎?

虛擬化域控可以用快照(Snapshot)或以複製VHD的方式做備份嗎?

從Windows Server 2012開始, 微軟支援並優化虛擬的域控制器運作,

更可以對域控制器進行克隆(Clone)這種以往被視為瘋狂的動作!

但在了解新技術前, 我們先來看看微軟為什麼說舊的域控制器版本不可以這樣做.

 

以往的Windows Server 2003/2008不是不可以安裝到虛擬機上, 如果虛擬機運作如常

可以一直用10年也沒有問題, 但問題出在進行備份/還原VHD (或vmdk), 和虛擬機器獨有的快照功能.

不正確的對舊版本域控做這些動作很可能會導致回復出來的域控以致整個網域不穩定, 甚至崩塌.

 

域控制器有一個Active Directory資料庫, 儲存所有關於AD物件的資料

所有在AD裡的域控制器在某個時間點後都會把資料同步, 域控會記下最後一筆同步資料的位置

這個指針叫USN, 正常來說USN只會增加. 但不同的DC的USN數字不一定一樣,

而且AD裡也不只有一個USN那麼簡單, 而是每個物件也有, 例子只是簡化過程讓它更容易理解.

 

假設環境之中有兩台DC, DC1跟DC2, 分別放在台灣跟美國的兩個分公司,

他們已經彼此同步了3個帳號資料, AD其實有很多非”帳號”類型的資料, 所以實際情況沒有那麼簡單

而DC1是一台Windows Server 2003的虛擬機. DC2是一台實體Window Server 2003機器.

 

1. 今天是星期一的早上, AD資料庫原有的模樣是這樣的, 一共3筆資

DC1 USN3 DC2 USN3
1 Justin Lau 1 Justin Lau
2 Tony Chan 2 Tony Chan
3 Mary Lee 3 Mary Lee

現在USN記載更新到3.

image

 

2. 現在Admin們覺得這個狀況很好, 所以這個星期一我們把DC1做一個快照備份吧開懷大笑

image

 

3. 同一天的中午台灣分部被通知有兩位新員工上班, 名叫Peter Pen和John Ho, 所以Admin在DC1上新建了兩個帳號

現在兩台DC處於不平衡的狀態, 但它們很快會進行覆寫動作, 由於DC1的USN比較高, 所以DC2向它拿取更新

DC1看看自己的紀錄, 知道DC2之前已經有USN1-3的資料了, 所以只需要給它USN4-5就可以.

DC1 USN5 DC2 USN3
1 Justin Lau 1 Justin Lau
2 Tony Chan 2 Tony Chan
3 Mary Lee 3 Mary Lee
4 Peter Pen    
5 John Ho    

過了一段時間, 資料又在兩台DC之間同步好了, 現在大家的資料庫也知道USN是5

DC1 USN5 DC2 USN5
1 Justin Lau 1 Justin Lau
2 Tony Chan 2 Tony Chan
3 Mary Lee 3 Mary Lee
4 Peter Pen 4 Peter Pen
5 John Ho 5 John Ho
image

 

4. 時間就這樣過了3天到了星期四, 運氣真差嚎啕大哭, 今天DC1因不明原因掛彩了, 但公司總不能停下來

今天又有兩位員工在美國上班, Bill Gates跟Steven Jobs, 所以Admin先在DC2建立兩個新帳號, 再慢慢想辦法.

這時DC2獨撐世界的大旗, 一直想找DC1做覆寫但連接不到, 唯有繼續等.

這時DC2的USN是7, 而且它還記著上一回跟DC1連絡時它的USN是5

DC1   DC2 USN7
    1 Justin Lau
    2 Tony Chan
    3 Mary Lee
    4 Peter Pen
    5 John Ho
    6 Bill Gates
    7 Steven Jobs

image

 

5. 好了, Admin記起台灣在星期一有做過一個快照備份(或VHD備份),

抹一把冷汗, 快快把DC1的快照啟動起來.

現在兩部機器看起來都啟動了, 但情況不是想像中好, 兩份AD資料庫看上去像這樣.

DC1已經回到星期一的狀態, 現在有幾個可能的情況發生.

DC1 USN3 DC2 USN7
1 Justin Lau 1 Justin Lau
2 Tony Chan 2 Tony Chan
3 Mary Lee 3 Mary Lee
    4 Peter Pen
    5 John Ho
    6 Bill Gates
    7 Steven Jobs

A. 當DC1以自己的USN3詢問更新時

由於DC2知道DC1曾經使用過USN3來同步, 所以告知DC1有USN Rollback的情況,

即資料庫並不是DC2認識的最後狀態 (這在Part 2有更詳細的討論)

當DC1收到這個訊息後, 會把自己的同步停止, 而且停止自己的NetLogon服務不讓使用者再登入.

微軟在文件中建議這台被隔離的DC要進行強制(Force) Demote的動作將之清除.

 

B. 另一個狀況是DC2也不知道DC1曾經出現USN Rollback的, 例如兩台DC處於跨地域的AD Site

覆寫間隔可能很大, 而當DC1一直把USN增大並且大於DC2時, DC1告知DC2的USN就沒有被使用過.

那就不會出現USN Rollback的結局, 這個情況做成的破壞可能更大.

假設覆寫還未有開始, 並沒有出現A的情況, DC1以為自己是正常的, 那就繼續運作

台灣方面積壓下來一堆新員工要上班, 所以建立了幾個帳號

DC1 USN8 DC2 USN7
1 Justin Lau 1 Justin Lau
2 Tony Chan 2 Tony Chan
3 Mary Lee 3 Mary Lee
4 員工A 4 Peter Pen
5 員工B 5 John Ho
6 員工C 6 Bill Gates
7 員工D 7 Steven Jobs
8 員工E    

現在覆寫開始了, 兩台DC比對USN號碼, DC1拿它的USN8來比誰大,

DC2看到, 噢, 我的USN有7, 上次同步時DC1只有5, 怎麼現在反倒是DC1比較大了

這是可能的, 例如Admin在DC1使用了Authoritative restore技術.

遊戲的規則是誰比較大就勝也沒辦法, 所以DC2就問DC1, USN8是甚麼

DC1 USN8 DC2 USN8
1 Justin Lau 1 Justin Lau
2 Tony Chan 2 Tony Chan
3 Mary Lee 3 Mary Lee
4 員工A 4 Peter Pen
5 員工B 5 John Ho
6 員工C 6 Bill Gates
7 員工D 7 Steven Jobs
8 員工E 8 員工E

現在USN是同步了, 可是資料庫卻一團糟.

我們要想像, AD的動作並不只有建立使用者帳號, 很多AD的更新都是我們不知情而且變化得很快,

而且當公司規模很大時, 就更加難以控制, 所以並不是把帳號清除, 再建立這樣就可以簡單解決問題的.

不適當地對虛擬域控制器進行備份還原會做成很大的破壞, 這篇只作個開始,

其實除了USN, 域控制器還有其他機制去控制狀況, 這在Part 2會繼續探討.