虛擬機(jī)管理程序快照針對虛擬機(jī)潛在危險的保護(hù)是很好的。例如,一些管理者在執(zhí)行操作系統(tǒng)補(bǔ)丁更新之前創(chuàng)建一個快照。這樣,如果由于補(bǔ)丁修補(bǔ)引起了問題,虛擬機(jī)可以回滾到補(bǔ)丁前的狀態(tài)。
雖然虛擬機(jī)管理程序快照是非常有用的,但并不意味著它們沒有問題。當(dāng)應(yīng)用到應(yīng)用服務(wù)器時,快照很可能出問題。事實上,一些微軟的應(yīng)用支持策略明確禁止使用虛擬機(jī)管理程序快照。
應(yīng)用感知通過進(jìn)化,可以緩解這些問題,但在我們討論它是如何工作之前,讓我們先做一下回顧。
想要了解為什么快照會導(dǎo)致應(yīng)用程序的問題,我們有必要了解一下快照的工作方式。虛擬機(jī)管理程序快照通常是基于差分磁盤。一個差分磁盤是一個虛擬磁盤,它和另一個VHD是父子關(guān)系。當(dāng)一個虛擬機(jī)的快照被創(chuàng)建時,它的VHD變成只讀的。一個差分磁盤被創(chuàng)建,所有的寫操作將在這個磁盤上進(jìn)行。這確保了原來的VHD仍然停留在原始的狀態(tài)。如果需要回滾虛擬機(jī),差分磁盤將被刪除,寫入操作重定向到原來的VHD。這時虛擬機(jī)就處于快照被創(chuàng)建的時間點上。
為什么快照會引起應(yīng)用程序問題有許多原因。例如,一些虛擬機(jī)監(jiān)控程序,創(chuàng)建差分磁盤快照時,忽略了虛擬機(jī)的內(nèi)存和虛擬CPU的內(nèi)容。如果這種類型的快照是針對正在運行中的應(yīng)用服務(wù)器的,由于內(nèi)存數(shù)據(jù)不被保存,應(yīng)用快照將不可避免地導(dǎo)致數(shù)據(jù)的丟失。即使虛擬機(jī)監(jiān)控程序執(zhí)行的快照也包括了內(nèi)存和CPU的內(nèi)容,運行中的應(yīng)用程序服務(wù)器做快照仍然是個問題。
給你一個更加具體的例子,想象一下,如果你執(zhí)行一個exchange郵箱服務(wù)器的快照會發(fā)生什么。執(zhí)行快照可以有各種各樣的副作用。執(zhí)行快照時,在消息隊列中的信息會被再次發(fā)出。從快照創(chuàng)建時積累的事務(wù)日志將被刪除,以及有可能是任何已經(jīng)添加到郵箱數(shù)據(jù)庫中的信息,如日歷,聯(lián)系人或者任務(wù)。如果有任何新的郵箱被創(chuàng)建,作為執(zhí)行快照的結(jié)果,都有可能造成AD和郵箱數(shù)據(jù)庫的不匹配。
這些只是對一個exchang服務(wù)器執(zhí)行快照可能引起的問題的一小部分。這些問題也可能由服務(wù)器的角色,exchange服務(wù)器版本和快照機(jī)制等引起。值得慶幸的是,這些類型的問題可能很快就會變成過去式。虛擬機(jī)管理程序快照的下一個巨大的演變就是應(yīng)用感知。
微軟會在下一代Hyper-V中,推出一個叫做生產(chǎn)檢查點的功能。當(dāng)快照(或者檢查點,微軟喜歡這樣稱呼)創(chuàng)建時,Hyper-V會調(diào)用卷影復(fù)制服務(wù)(VSS),它和創(chuàng)建應(yīng)用感知備份采用相同的機(jī)制。雖然關(guān)于這個功能沒有太多的相關(guān)信息,但是微軟透露,VSS將設(shè)備的應(yīng)用程序一致狀態(tài)作為檢查點進(jìn)程的一部分。在檢查點被執(zhí)行時,這將有效的消除應(yīng)用程序一致性的問題。
也有人擔(dān)心,VSS會減慢檢查點進(jìn)程,由于該任務(wù)需要進(jìn)行應(yīng)用程序一致性任務(wù)的檢查。然而,值得注意的是,應(yīng)用程序的一致性消除了內(nèi)存和CPU狀態(tài)數(shù)據(jù)在檢查點被保留的必要。這將會有助于抵消一部分所需的開銷。
雖然VSS是備份windows服務(wù)器的一項技術(shù),Linux服務(wù)器也能從生產(chǎn)檢查點中獲益。代替使用VSS,Hyper-V會使用一種緩沖區(qū)沖洗技術(shù)來保證linux虛擬機(jī)處于一致性的狀態(tài)。
應(yīng)用感知使虛擬機(jī)管理程序快照更加有用。在未來,回滾快照會產(chǎn)生類似于恢復(fù)備份的結(jié)果,并且不必占用很長的恢復(fù)時間。