Freigeben über


有關 Exchange 備份您所需知道的一切* - 第一部分

英文原文已於 2012 年 6 月 5 日星期二發佈

*即使一直無從問起

如果您覺得使用磁碟區陰影複製 (可能為英文網頁) (VSS) 進行 Exchange 資料備份的內部工作有點難懂,請放心,您不是唯一這麼覺得的人。管理員可能會問,「我在事件記錄檔中看到的這些「凍結」(freezing) 和「解凍」(thawing) 究竟是怎麼回事?Exchange VSS 編寫器究竟是什麼,而且它會對我的資料庫會做些什麼呢?它是怎樣能在不到 60 秒的時間內,建立一個 135GB 資料庫的快照?」

如果您曾經問過這些問題,但卻被答案弄得更迷糊,以下的指南可以幫助您稍微理出點頭緒。若要瞭解 Exchange 的 VSS 備份是如何運作,重點是要先瞭解 VSS 本身的基本原理。在 TechNet 和 MSDN 上有一些針對此議題討論的優秀文件,在 Windows Server 核心小組部落格詢問核心小組 (可能為英文網頁) 中也提供參考文件。我備受敬重的同事 Randy Monteleone 在他的貼文中,為 VSS 開門見山地提出精準的綱要,同時也在 VSS 上提供一些 TechNet 不錯的入門文章連結 (在一次重申):

如何:執行 VSS 追蹤 ─ Randy Monteleone
https://blogs.technet.com/b/askcore/archive/2012/04/29/how-to-vss-tracing.aspx (可能為英文網頁)

磁碟區陰影複製服務如何運作
https://technet.microsoft.com/zh-tw/library/cc785914(WS.10).aspx (可能為英文網頁)

磁碟區陰影複製服務
https://technet.microsoft.com/zh-tw/library/ee923636(WS.10).aspx (可能為英文網頁)

如果您至少已經熟悉 VSS 的基本原理,可以先往前看此系列的第二部分,我們會分別說明發生在 VSS Exchange 備份中的事件,以及 Exchange 如何在應用程式事件記錄檔中加以記錄。

如果您需要有關 VSS 基本概念與 Exchange 編寫器的快速入門或複習內容,我已將它們濃縮成下列圖形要點,做為上列參考文章的補充。

快照

請記住,Exchange 和所有應用程式的 VSS 解決方案,會因應不同的硬體與軟體設定,而有極大的不同。包括複製與 COW 快照、硬與及軟體解決方案,都是根據核心 VSS 子系統而開發出來的各式不同技術。為了要瞭解 Exchange 備份,我們將只選出一種特定類型的解決方案進行說明。下列詳述的是稱之為「寫入時複製」或 COW (copy-on-write) 的快照。

在以 COW 快照為基礎的 Exchange VSS 備份中,我們會對裝載 Exchange 資料的磁碟建立快照。不論所備份的是什麼,即使是單一資料庫檔案及一些記錄,VSS 都會為將儲存所有資料的整個磁碟建立快照。如果資料存放於多個磁碟中,例如 Exchange 資料庫位於某個磁碟,而記錄位於另一個磁碟,VSS 就會為所有這些磁碟建立快照。

那麼,什麼是「快照」呢?磁碟區快照是在稱之為「陰影存放區」中的一個空間區域,該區域一般是在磁碟上,位於「系統磁碟區資訊」資料夾中的一個小型空間區域。

建立磁碟快照之後,從該時間點之後任何資料區塊的變更,在將該區塊資料變更前的複本 (亦即該快照建立時的狀態) 寫入陰影存放區內不同的區域之前,都無法寫入。如此一來,在快照建立當時的磁碟資料即可以獲得保存,以區塊為單位存放在陰影存放區內。若所要求的資料區塊並未變更,快照可以從原始磁碟取得;若已變更,則可差異區域取得。此做法的基礎圖示如下:

下午一點所建立的磁碟 E: 快照:

影像

一分鐘之後,寫入了其中一個區塊執行,但不會在差異區中所保留的下午一點之資料之前。

影像

實際磁碟在下午一點資料發生變更時,會寫入陰影存放區內,以保留該時刻磁碟現狀的記錄:

影像

以下步驟:

影像

在上述圖表中,備份伺服器會對區塊 2 和 53 的快照要求資料。下午一點時的區塊 53 保留在快照中,所以可以直接從陰影存放區複製資料。區塊 2 從下午一點開始就沒有任何變更,因此會透過 VSS 驅動程式 VOLSNAP.SYS 進行複製,而該驅動程式的運作方式與 NTFS.SYS 檔案系統驅動程式之下之篩選器驅動程式類似。藉由在系統檔案之下的 IRP 堆疊 (核心記憶體裡管理磁碟 I/O 的部分) 中進行工作,可以讀取區塊資料,而不會因檔案正在使用中而受 NTFS 拒絶。VOLSNAP.SYS 也會負責確保區塊內的資料在收到寫入要求時,會複製到陰影存放區,因而得其名為「寫入時複製」。以下是來自於 Tim McMichael 有關 VOLSNAP.SYS 的更多說明:

Exchange / VSS / 及差異區塊大小…
https://blogs.technet.com/b/timmcmic/archive/2011/07/12/exchange-vss-and-differential-block-size.aspx (可能為英文網頁)

現在我們已瞭解 COW 快照的基本概念,可以看看它是如何與 Exchange 一起運作,以及一些其他主要概念:

Microsoft Exchange 編寫器

所以現在我們知道 VSS 會為儲存 Exchange 資料的磁碟建立快照。但是,備份應用程式是如何分辨並找到正確的磁碟?通常,管理員選取要備份的資料庫時,並不會指定儲存資料檔案的磁碟。所以,必須要提供關於資料檔案儲存的位置,以及據此決定 VSS 需要建立快照的磁碟。此資訊也會告知備份應用程式 (也稱為 VSS 要求者),哪些特定的資料檔案必須要從快照中複製,以保留在備份媒體中,因為我們並不希望從磁碟中複製任何不需要的內容。

此時所使用的機制是 Microsoft Exchange VSS 編寫器。如同所有應用程式的 VSS 編寫器一般 (有許多個,只要執行 VSSADMIN LIST WRITERS 即可看到全部),它的首要工作就是告訴備份應用程式關於需要進行備份的資料,特別是 EDB 檔案、記錄,以及所要求的每個資料庫之檢查點檔案。有關這些特定的 Exchange 資料檔案的資訊,稱之為 編寫器中繼資料

影像

(按一下縮圖可看到完整大小的版本)

在上述圖表中,我們可以看到 Exchange 備份的初始步驟。Exchange 編寫器告知備份伺服器 (要求者) 在 E: 磁碟區中有一個資料夾內有資料庫,而該資料庫的異動記錄檔位於 D: 的資料夾中。根據此資訊,執行工作時,備份應用程式會要求 D: 和 E: 磁碟區的快照。

除了提供中繼資料給 VSS 要求者之外,Exchange VSS 編寫器還有另外一個重要角色。那就是在建立必要快照的時間內,停止寫入磁碟的資料庫及記錄,也就是進行 凍結 。COW 快照一般只需要很短的時間即可建立,因為其最初的組成是指定陰影存放區的區域,用以保留在實際磁碟內發生變更的區塊。儘管相對來說操作時間很短,但仍可能需花費一分鐘,而在快照建立流程的起始和結束之間,已足夠使磁碟裡區內的資料發生變更。如果區塊資料變更,但在快照建立開始之時的原始資料並未保留,而可能會使這些區塊與其他快照資料不一致,特別是關於記錄、資料庫以及檢查點檔案。因此,Exchange 編寫器會避免讓「資訊存放服務」或 MS Exchange 複寫服務,將 RAM 的資料寫入已凍結的資料庫檔案。在「資訊存放服務」的情況下,在 Exchange 編寫器允許 VSS 建立快照之前,會回復並關閉目前的異動記錄檔 (Exx.log)。如此可確保在快照的開始及完成之間,檔案資料不會有任何變更,而此時資料庫即已 解凍 。當資料庫是解凍時,允許將存放在 RAM 中的 I/O 再次寫入磁碟。

下列是關於應用程式的 VSS 編寫器如何與 VSS 互動,以執行凍結、凍結以及完成快照所需時間的進一步資訊:

CVssWriter::OnFreeze 方法
https://msdn.microsoft.com/zh-tw/library/windows/desktop/aa381563(v=vs.85).aspx (可能為英文網頁)

Exchange 編寫器的最後一項主要任務,是告訴「資訊存放服務」(進行被動副本備份時是 MS Exchange 複寫服務) 備份已經完成,以及若適用的話,執行像是記錄截斷、標示資料庫為不再有備份進行中等備份後續工作。

在此系列的第二部分和第三部分,我們會詳細分解上述的所有元素是如何在 Exchange 備份中應用、產生應用程式記錄事件,並比對已裝載的資料庫和被動資料庫副本的程序。

感謝 Michael Blanton、Tim McMichael、Randy Monteleone、Dave Vespa 和 Tom Kern 協助並共同合作完成這些文章本內容。

Jesse Tedoff

這是翻譯後的部落格文章。英文原文請參閱 Everything You Need to Know About Exchange Backups* - Part 1