隨著企業服務器虛擬化的發展,有關虛擬機的備份逐漸成為人們熱議的話題。微軟Hyper-V備份可以在父分區級別和子分區級別進行。父分區備份可以在虛擬層上完成單個虛機備份,而子分區備份則在虛擬機內部完成。
兩種備份方式都有各自好和不好的地方,最近我寫過一篇有關虛擬機備份在父分區和子分區備份優劣性區別話題的文章。然而在那篇文章里,卻沒有談及微軟Hyper-V備份應用一致性的話題。
應用一致性問題的產生緣由自需要用到關系數據庫的網絡服務器。這些數據庫往往都比較龐大,且經常被訪問。除非提前將數據庫先做卸載操作,也就是將數據庫與應用脫離,如果僅僅是將文件拷貝出來通常是不能工作的。如果用戶嘗試在數據庫在線的時候進行數據文件拷貝的操作,那么那些打開的文件往往會被忽略掉。并且即便是所有的文件都要備份,很大的可能是數據庫文件會被損壞因為數據庫文件內容在備份結束前已經改變了。
解決這類問題的核心是使用針對應用的備份產品。比如說,如果用戶計劃對他們的Exchange郵件服務器備份,那么使用的備份軟件則需要和Exchange服務器特殊的要求向兼容。
然而當我們同時考慮虛機的時候則會變得相對復雜。
虛擬機內進行子分區級別的備份和備份物理機很相似。我們通常會在虛擬機內部安裝一個代理客戶端來實現和備份服務器的通信。只要備份軟件能支持相應的應用程序,那么用這種方法備份虛擬機的時候要保證數據一致性就沒有問題。
在父分區備份Hyper-V虛擬機則會變得復雜一些。用戶需要由一個基于VSS的備份應用,需要包括針對于Hyper-V以及其上應用的VSS writer.盡管如此,來自Hyper-V或者備份軟件自身的限制可能導致備份應用的損壞,即便備份應用是針對Hyper-V和其上面應用的。
比如說,在使用了合適的注冊碼后,Windows備份服務器是合適Hyper-V并且完全支持VSS備份或者其上任意應用的。然而其限制也值得我們考慮和注意。
VSS備份是針對于那些服務器或者應用在線情況下的備份。對于微軟服務器備份來說,要在父分區級別進行VSS備份,虛擬機必須要運行在當前的微軟操作系統上。早期的Windows 2000以及Windows XP操作系統并不能支持VSS.非微軟操作系統也不支持VSS備份。
另外一方面的要求則是,參與備份的虛擬機需要運行Hyper-V整合服務。如果沒有這些服務的幫助,比如在早起的Windows或者非windows操作系統,VSS備份則無法實現。
即使在備份的虛擬機運行在最新的windows操作系統和Hyper-V整合服務,但如果虛擬機使用的是動態磁盤,從windows服務器備份角度上來看,也可能被認為是與VSS不兼容的。
如果嘗試從父分區級別備份Hyper-V服務器,并且一個或者多個服務器不滿足VSS備份的條件,windows備份將會強制那些不滿足條件的虛擬機進入一個保存的狀態后再運行備份進程,然后會重啟虛擬機后恢復保存的狀態。
這對于應用服務器來說則不是一個好消息。保存的狀態的意思是對虛擬機的虛擬硬盤做凍結操作,并且會將內存里的信息讀取出來。然而,整個虛擬機在保存狀態恢復之前還是無法使用的,這也就是說,那些在備份時候運行著的數據庫交易可能會因此失敗。事實上,有關數據庫應用的文檔中會特別的指出,應用正在運行的虛擬機不合適被放在一個保存的狀態中。
對虛擬機上執行VSS備份的限制可能會讓用戶感覺所有的備份都需要在單個虛擬機內部完成。
然而,對于滿足VSS備份需求的單個虛擬機我們會建議使用父分區備份方式。