本技術實施例屬于虛擬機,特別是涉及一種虛擬機容錯方法、裝置、系統。
背景技術:
1、虛擬機容錯是虛擬化領域的一項技術,其目的是在主虛擬機宕機的情況下,為避免服務中斷,將服務切換到備虛擬機上運行。
2、microcheckpoint(微檢查點)是一種虛擬機容錯方案,microcheckpoint是采用定期的高頻毫秒級的虛擬機內存和狀態同步,每次同步都需要暫停虛擬機,帶來較高的性能消耗,一定程度上對業務也會產生較大的延遲,且該方案不涉及磁盤數據得處理。
3、colo(coarse-grained?lock-steppiing,粗粒度線程鎖定步進)另一種容錯方案,colo通過增加網絡包響應及請求的情況動態判斷是否同步虛擬機內存和狀態,通過采用塊設備復制技術來實現主備虛擬機之間兩套獨立本地磁盤數據同步。該方案雖然一定程度上減少了同步過程中的性能消耗,以及提供了針對磁盤數據進行處理的方式,但是該方案存在一定弊端,包括:磁盤數據的同步僅限制于主虛擬機和備虛擬機獨立的兩個本地存儲;方案的網絡開銷也巨大,需要規劃包括內存同步網絡、存儲同步網絡、網絡包轉發網絡、心跳網絡在內的網絡,在主備服務器之間的存儲資源數量較多的場景,內存同步網絡和存儲同步網絡在同步過程需要占用較大的網絡帶寬,對網絡環境要求較高;在同步過程需要在虛擬機暫停時間內,傳輸磁盤變化數據,但是磁盤變化數據往往比較大,在一定程度上增加虛擬機暫停所需的時間,從而導致容錯運行過程中服務延遲的增加。
技術實現思路
1、有鑒于此,本技術實施例提供了一種虛擬機容錯方法、裝置、系統,用以在主備虛擬機進行容錯切換前,能夠周期性更新緩存區中的被變更數據,在主備虛擬機進行容錯切換時,能夠響應備虛擬機發送的存儲還原信息,以采用被變更數據將存儲區的數據還原至上一個同步時間點,實現一種針對主備虛擬機共享的存儲池的容錯機制。
2、本技術實施例的第一方面提供了一種虛擬機容錯方法,應用于虛擬機容錯系統中的存儲池,所述虛擬機容錯系統還包括:與所述存儲池連接的主端設備、備端設備;所述主端設備運行有主虛擬機、所述備端設備運行有備虛擬機;所述存儲池設置有存儲區以及緩存區;所處存儲區用于存儲主虛擬機或備虛擬機發送的寫入數據;所述緩存區用于緩存被變更數據;所述被變更數據為所述存儲區在上一同步時間點存儲的、當前時間點已變更的數據;所述方法包括:
3、響應于接收到的存儲還原信息,將所述緩存區中的所述被變更數據回滾還原至所述存儲區,以使所述存儲區的數據還原至所述上一同步時間點的數據;所述存儲還原信息由所述備虛擬機在確定所述主虛擬機滿足預設的容錯切換條件下生成;
4、在未接收到所述存儲還原信息的情況下,響應于接收到的緩存清空信息,刪除所述被變更數據,以使所述緩存區緩存新的被變更數據,所述新的被變更數據為所述存儲區在當前同步時間點存儲的、下一同步時間點已變更的數據;所述緩存清空信息由所述主端設備在當前時間到達同步時間點的情況下生成。
5、本技術實施例的第二方面提供了一種虛擬機容錯方法,應用于虛擬機容錯系統中的主端設備,所述虛擬機容錯系統還包括:與所述主端設備連接的存儲池、與所述存儲池連接的備端設備;所述主端設備運行有主虛擬機、所述備端設備運行有備虛擬機;所述存儲池設置有存儲區以及緩存區;所處存儲區用于存儲主虛擬機或備虛擬機發送的寫入數據;所述緩存區用于緩存被變更數據,所述被變更數據為所述存儲區在上一同步時間點存儲的、當前時間點已變更的數據;所述方法包括:
6、在當前時間到達同步時間點的情況下,控制主虛擬機切換至暫停狀態并生成緩存清空信息;所述緩存清空信息用于指示所述存儲池刪除所述被變更數據,以使所述緩存區緩存新的被變更數據,所述新的被變更數據為所述存儲區在當前同步時間點存儲的、下一同步時間點已變更的數據。
7、本技術實施例的第三方面提供了一種虛擬機容錯方法,應用于虛擬機容錯系統中的備端設備,所述虛擬機容錯系統還包括:與所述備端設備連接的存儲池、與所述存儲池連接的主端設備;所述主端設備運行有主虛擬機、所述備端設備運行有備虛擬機;所述存儲池設置有存儲區以及緩存區;所處存儲區用于存儲主虛擬機或備虛擬機發送的寫入數據;所述緩存區用于緩存被變更數據,所述被變更數據為所述存儲區在上一同步時間點存儲的、當前時間點已變更的數據;所述方法包括:
8、在確定所述主虛擬機滿足預設容錯切換條件下,生成存儲還原信息;所述存儲還原信息用于指示所述存儲池將所述緩存區中的所述被變更數據回滾還原至所述存儲區,以使所述存儲區的數據還原至所述上一同步時間點的數據。
9、本技術實施例的第四方面提供了一種虛擬機容錯裝置,所述裝置位于虛擬機容錯系統中的存儲池,所述虛擬機容錯系統還包括:與所述存儲池連接的主端設備、備端設備;所述主端設備運行有主虛擬機、所述備端設備運行有備虛擬機;所述存儲池設置有存儲區以及緩存區;所處存儲區用于存儲主虛擬機或備虛擬機發送的寫入數據;所述緩存區用于緩存被變更數據;所述被變更數據為所述存儲區在上一同步時間點存儲的、當前時間點已變更的數據;所述裝置包括:
10、存儲還原信息處理模塊,用于響應于接收到的存儲還原信息,依據所述被變更數據回滾還原至所述存儲區,以使所述存儲區的數據還原至所述上一同步時間點;所述存儲還原信息由所述備虛擬機在確定所述主虛擬機滿足預設的容錯切換條件下生成;
11、緩存清空信息處理模塊,用于在未接收到所述存儲還原信息的情況下,響應于接收到的緩存清空信息,刪除所述被變更數據,以使所述緩存區緩存新的被變更數據,所述新的被變更數據為所述存儲區在當前同步時間點存儲的、下一同步時間點已變更的數據。
12、本技術實施例的第五方面提供了一種虛擬機容錯裝置,應用于虛擬機容錯系統中的主端設備,所述虛擬機容錯系統還包括:與所述主端設備連接的存儲池、與所述存儲池連接的備端設備;所述主端設備運行有主虛擬機、所述備端設備運行有備虛擬機;所述存儲池設置有存儲區以及緩存區;所處存儲區用于存儲主虛擬機或備虛擬機發送的寫入數據;所述緩存區用于緩存被變更數據,所述被變更數據為所述存儲區在上一同步時間點存儲的、當前時間點已變更的數據;所述裝置包括:
13、緩存清空信息生成模塊,用于在當前時間到達同步時間點的情況下,控制主虛擬機切換至暫停狀態并生成緩存清空信息;所述緩存清空信息用于指示所述存儲池刪除所述被變更數據,以使所述緩存區緩存新的被變更數據,所述新的被變更數據為所述存儲區在當前同步時間點存儲的、下一同步時間點已變更的數據。
14、本技術實施例的第六方面提供了一種虛擬機容錯裝置,應用于虛擬機容錯系統中的備端設備,所述虛擬機容錯系統還包括:與所述備端設備連接的存儲池、與所述存儲池連接的主端設備;所述主端設備運行有主虛擬機、所述備端設備運行有備虛擬機;所述存儲池設置有存儲區以及緩存區;所處存儲區用于存儲主虛擬機或備虛擬機發送的寫入數據;所述緩存區用于緩存被變更數據,所述被變更數據為所述存儲區在上一同步時間點存儲的、當前時間點已變更的數據;所述裝置包括:
15、存儲還原信息生成模塊,用于在確定所述主虛擬機滿足預設容錯切換條件下,生成存儲還原信息;所述存儲還原信息用于指示所述存儲池將所述緩存區中的所述被變更數據回滾還原至所述存儲區,以使所述存儲區的數據還原至所述上一同步時間點的數據。
16、本技術實施例的第七方面提供了一種虛擬機容錯系統,包括:相互連接的主端設備和備端設備,以及與所述主端設備、所述備端設備連接的存儲池;所述主端設備運行有主虛擬機、所述備端設備運行有備虛擬機;所述存儲池設置有存儲區以及緩存區;所處存儲區用于存儲主虛擬機或備虛擬機發送的寫入數據;所述緩存區用于緩存被變更數據;所述被變更數據為所述存儲區在上一同步時間點存儲的、當前時間點已變更的數據;
17、所述主端設備包括:緩存清空信息生成模塊,用于在當前時間到達同步時間點的情況下,控制主虛擬機切換至暫停狀態并生成緩存清空信息;所述緩存清空信息用于指示所述存儲池刪除所述被變更數據,以使所述緩存區緩存新的被變更數據,所述新的被變更數據為所述存儲區在當前同步時間點存儲的、下一同步時間點已變更的數據;
18、所述備端設備包括:存儲還原信息生成模塊,用于在確定所述主虛擬機滿足預設容錯切換條件下,生成存儲還原信息;所述存儲還原信息用于指示所述存儲池將所述緩存區中的所述被變更數據回滾還原至所述存儲區,以使所述存儲區的數據還原至所述上一同步時間點的數據;
19、所述存儲池包括:
20、存儲還原信息處理模塊,用于響應于接收到的存儲還原信息,依據所述被變更數據回滾還原至所述存儲區,以使所述存儲區的數據還原至所述上一同步時間點;所述存儲還原信息由所述備虛擬機在確定所述主虛擬機滿足預設的容錯切換條件下生成;
21、緩存清空信息處理模塊,用于在未接收到所述存儲還原信息的情況下,響應于接收到的緩存清空信息,刪除所述被變更數據,以使所述緩存區緩存新的被變更數據,所述新的被變更數據為所述存儲區在當前同步時間點存儲的、下一同步時間點已變更的數據。
22、本技術實施例的第八方面提供了一種電子設備,包括處理器、存儲器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,所述處理器執行所述計算機程序時,使得所述電子設備實現如上述第一方面或第二方面或第三方面所述的虛擬機容錯方法。
23、本技術實施例的第九方面提供了一種計算機程序產品,包括計算機程序,所述計算機程序被運行時,使得如上述第一方面或第二方面或第三方面所述的虛擬機容錯方法被執行。
24、本技術實施例的第十方面提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有計算機程序,所述計算機程序被處理器執行時實現如上述第一方面或第二方面或第三方面所述的虛擬機容錯方法。
25、本技術實施例具有以下有益效果:
26、本技術實施例,通過所述存儲池設置有存儲區以及緩存區;所處存儲區用于存儲主虛擬機或備虛擬機發送的寫入數據;所述緩存區用于緩存被變更數據;所述被變更數據為所述存儲區在上一同步時間點存儲的、當前時間點已變更的數據;存儲池能夠響應于接收到的存儲還原信息,將所述緩存區中的所述被變更數據回滾還原至所述存儲區,以使所述存儲區的數據還原至所述上一同步時間點的數據;所述存儲還原信息由所述備虛擬機在確定所述主虛擬機滿足預設的容錯切換條件下生成,從而存儲池在主備虛擬機進行容錯切換前,能夠響應由主虛擬機發送的緩存清空信息,以使得在當前時間到達同步時間點時刪除上一同步時間點存儲的、當前時間點已變更的數據,在未接收到所述存儲還原信息的情況下,響應于接收到的緩存清空信息,刪除所述被變更數據,以使所述緩存區緩存新的被變更數據,所述新的被變更數據為所述存儲區在當前同步時間點存儲的、下一同步時間點已變更的數據;所述緩存清空信息由所述主端設備在當前時間到達同步時間點的情況下生成,同步時間點呈周期分布,從而在接收到緩存清空信息時候,能夠在緩存區存儲新的被變更數據,新的被變更數據為存儲區在當前時間點至下一個同步時間點的已變更的數據,實現被變更數據的周期更新,在主備虛擬機進行容錯切換時,能夠響應備虛擬機發送的存儲還原信息,以采用被變更數據將存儲區的數據還原至上一個同步時間點,實現一種針對主備虛擬機共享的存儲池的容錯機制。