本發明涉及虛擬機數據災備技術領域,更為具體來說,本發明涉及一種基于塊驅動的虛擬機數據保護方法。
背景技術:
KVM虛擬機是Linux kernel的一個模塊,自linux2.6.20之后它就集成在Linux的各個主要發行版本中。KVM虛擬機使用Linux自身的調度器進行管理,KVM虛擬機的虛擬化需要相應硬件的支持,比如,intel VT技術或者AMD V技術,KVM虛擬機是基于硬件完全虛擬化的。
但是,外界環境的變化往往是難以預估的,特別是對于云環境下的KVM虛擬機,如果其虛擬磁盤由于外界環境破壞而造成故障,傳統的將保護數據放到本地數據中心或專用遠程服務站等災備方法往往無法難以將全部數據恢復,無法實現RPO=0。
因此,獲得一種可將發生災難的虛擬機數據全部恢復的方法成為了本領域技術人員研究的重點和始終追求的目標。
技術實現要素:
為解決現有技術無法將發生災難的虛擬機的數據全部恢復的問題,本發明提供了一種基于塊驅動的虛擬機數據保護方法,在QEMU塊設備驅動層始終檢測對虛擬機的虛擬磁盤的寫操作,并將寫入的數據同步至外部存儲設備的備份存儲卷中,當外界環境造成虛擬機數據損壞或丟失時,可將事先備份的數據全部恢復。
為實現上述技術目的,本發明公開了一種基于塊驅動的虛擬機數據保護方法,該保護方法包括:
步驟1,在QEMU塊設備驅動層檢測對虛擬機的用戶存儲卷的寫入操作;
步驟2,在向虛擬機的用戶存儲卷寫入數據的同時,將相同數據寫入外部存儲設備的備份存儲卷;
步驟3,當虛擬機的用戶存儲卷發生故障時,通過外部存儲設備的備份存儲卷完成數據讀寫請求;
步驟4,當虛擬機的用戶存儲卷故障排除后,將外部存儲設備的備份存儲卷內數據恢復至虛擬機的用戶存儲卷。
進一步地,步驟4中,數據恢復過程完成后,返回步驟1,再一次地對數據進行備份,保護虛擬機數據。
進一步地,步驟4中,數據恢復過程中,同時向虛擬機的用戶存儲卷和外部存儲設備的備份存儲卷內寫入數據。
進一步地,步驟2中,讀取數據時,僅從虛擬機的用戶存儲卷讀取數據。
進一步地,步驟3中,讀取數據時,僅從外部存儲設備的備份存儲卷讀取數據。
進一步地,外部存儲設備掛載于虛擬機所在的宿主機上,所述備份存儲卷為外部存儲設備映射出的磁盤。由于外部存儲設備難以受網絡影響,本發明通過宿主機上掛載的外部存儲設備映射出來的磁盤作為備份存儲卷的方式,達到提高保護存儲設備安全性的技術效果,因此,本發明具有可靠性好、穩定性強、使用方便等優點。
進一步地,步驟3中,當虛擬機的用戶存儲卷發生故障時,將虛擬機的用戶存儲卷切換至外部存儲設備的備份存儲卷,以保證虛擬機正常工作。
進一步地,步驟2中,通過寫入數據塊的方式將相同數據寫入外部存儲設備的備份存儲卷。
進一步地,步驟4中,數據恢復過程完成后,發出數據恢復結束信號。
進一步地,步驟2中,通過寫拷貝的方式將相同數據寫入外部存儲設備的備份存儲卷;步驟4中,通過寫拷貝的方式將外部存儲設備的備份存儲卷內數據恢復至虛擬機的用戶存儲卷。本發明通過寫拷貝的方式能夠保證備份或恢復數據與原始數據完全相同,徹底備份和恢復虛擬機數據,從而達到對虛擬機數據保護的目的。
本發明的有益效果為:本發明基于QEMU-KVM虛擬機對虛擬機的用戶存儲卷的寫操作感知,完成對虛擬機的寫操作實時分流,一份數據寫入用戶存儲卷中,另一份數據副本寫入到備份存儲卷中,當QEMU-KVM虛擬機的數據出現問題時,本發明可將全部數據恢復。
附圖說明
圖1為基于塊驅動的虛擬機數據保護的工作狀態圖
圖2為基于塊驅動的虛擬機數據保護的工作模式圖。
具體實施方式
下面結合說明書附圖對本發明的基于塊驅動的虛擬機數據保護方法進行詳細的解釋和說明。
如圖1、2所示,本發明公開了一種基于塊驅動的虛擬機數據保護方法,本發明基于成型的開源虛擬化軟件QEMU,使其成可控制QEMU-KVM虛擬機的用戶空間工具。在其代碼中,QEMU定義了一個塊設備數據結構或塊設備驅動程序(Block Driver),其中包括各種屬性以及各種塊設備驅動需要實現的函數。QEMU虛擬系統可使用一套統一的插件式的塊設備驅動架構,它定義了若干需要每種塊設備驅動實現的接口。QEMU持續數據保護塊驅動(QEMU CDP Block Driver)作為其中的一種。本發明為了解除云環境下的數據安全隱患,以及強化云環境下的數據安全保障,針對性的提出QEMU持續數據保護塊驅動(QEMU CDP Block Driver),該驅動程序工作可在云環境架構的QEMU虛擬化層,可以與云環境完美契合,根據需求被靈活調用。本發明QEMU持續數據保護塊驅動(QEMU CDP Block Driver)是在QEMU虛擬系統下開發的塊設備驅動程序,該驅動程序徹底解決了QEMU-KVM虛擬機的數據分流問題,為實現QEMU-KVM虛擬機的高級別持續數據保護提供了重要保障。
如圖1、2所示,本發明基于塊驅動的虛擬機數據保護方法包括:
步驟1,基于QEMU持續數據保護塊驅動(QEMU CDP Block Driver)對程序的寫操作感知,在QEMU塊設備驅動層檢測對虛擬機的用戶存儲卷的寫入操作。
步驟2,在向虛擬機的用戶存儲卷寫入數據的同時,通過寫拷貝的方式將相同數據寫入外部存儲設備的備份存儲卷,具體來說,本實施例中,通過寫入數據塊的方式將相同數據寫入外部存儲設備的備份存儲卷;本發明的外部存儲設備掛載于虛擬機所在的宿主機上,備份存儲卷為外部存儲設備映射出的磁盤;在虛擬機的用戶存儲卷正常工作時,利用應用程序讀取數據時,僅從虛擬機的用戶存儲卷讀取數據。具體地,如圖1所示,當應用程序向QEMU-KVM虛擬機的存儲卷寫入數據時,QEMU持續數據保護塊驅動(QEMU CDP Block Driver)進行數據分流,數據在寫入用戶存儲卷的同時,也向外部存儲設備的備份存儲卷中寫入一份相同的數據,從而實現了對用戶數據的備份,從而實現了持續數據保護功能,本發明提供了IO級別的數據保護機制,因而可以對虛擬機用戶數據安全提供更加全面的保障。
步驟3,當虛擬機的用戶存儲卷發生故障時,通過外部存儲設備的備份存儲卷完成數據讀寫請求;本發明中,當虛擬機的用戶存儲卷發生故障時,將虛擬機的原磁盤切換至外部存儲設備的備份存儲卷,讀取數據時,僅從外部存儲設備的備份存儲卷讀取數據。
步驟4,當虛擬機的用戶存儲卷故障排除后,通過寫拷貝的方式將外部存儲設備的備份存儲卷內數據恢復至虛擬機的用戶存儲卷,在數據的恢復過程中,虛擬機正常工作時,同時向虛擬機的用戶存儲卷和外部存儲設備的備份存儲卷內寫入數據。本實施例中,數據恢復過程完成后,發出數據恢復結束信號;返回步驟1,再次進行數據備份工作。
如圖2所示,本發明可以按照如下的方式工作:本發明提到的QEMU持續數據保護塊驅動(QEMU CDP Block Driver)具有三種工作模式:(1)用戶數據請求只傳遞給主設備驅動程序,用戶從用戶存儲卷讀取數據,向用戶存儲卷寫入數據,設備的讀寫操作與備份存儲卷完全無關;(2)用戶數據請求只傳遞給鏡像設備驅動程序,用戶從備份存儲卷讀取數據,向備份存儲卷寫入數據,用戶的讀寫操作與用戶存儲卷完全無關;(3)用戶數據請求既可以傳遞給主設備驅動程序,也可以傳遞給鏡像設備驅動程序;用戶既可以從用戶存儲卷讀取數據,也可以從備份存儲卷讀取數據,并且同時向用戶存儲卷和備份存儲卷寫入數據,在這種工作模式下,用戶的讀寫操作需要用戶存儲卷和備份存儲卷的支持,或者說,需要用戶存儲卷和鏡像設備的支持。針對上述的三種工作模式,本發明可實現以下幾種功能:1、數據傳送:當QEMU持續數據保護塊驅動(QEMU CDP Block Driver)未開啟數據分流功能時,QEMU持續數據保護塊驅動(QEMU CDP Block Driver)使用工作模式(1),用戶讀寫數據請求傳遞給主設備驅動程序,用戶對用戶存儲卷讀寫數據。QEMU持續數據保護塊驅動(QEMU CDP Block Driver)只是簡單地將用戶的IO操作傳遞給用戶存儲卷,用戶的IO操作與備份存儲卷毫無關系,這與QEMU虛擬系統的標準環境完全相同,對QEMU虛擬系統性能沒有任何影響。2、數據分流:這是本發明QEMU持續數據保護塊驅動(QEMU CDP Block Driver)最基本的功能,QEMU持續數據保護塊驅動(QEMU CDP Block Driver)使用工作模式(3),用戶讀數據請求傳遞給主設備驅動程序,用戶寫數據請求同時傳遞給用戶存儲卷和鏡像設備程序。用戶從用戶存儲卷讀取數據,同時向用戶存儲卷和備份存儲卷寫入數據,從而達到對用戶數據分流的目的。3、主備設備切換:QEMU持續數據保護塊驅動(QEMU CDP Block Driver)通過接收用戶命令,可以在工作模式(3)和工作模式(2)之間進行切換。當用戶存儲卷發生故障時,QEMU持續數據保護塊驅動(QEMU CDP Block Driver)根據用戶命令切換到工作模式(2),用戶的讀寫數據請求傳遞給鏡像設備驅動程序,用戶從備份存儲卷中讀寫數據。當主設備故障排除后,QEMU持續數據保護塊驅動(QEMU CDP Block Driver)根據用戶命令重新切換到工作模式(3),用戶的讀寫數據請求傳遞給主設備驅動程序,用戶寫數據請求同時傳遞給主設備和鏡像設備程序。用戶從主設備讀取數據,同時向主設備和鏡像設備寫入數據。用戶對設備的IO操作并沒有中斷,從而保證了QEMU-KVM虛擬機設備工作的連續性。4、數據同步:持續數據保護是基于數據塊級別的,在運行過程中,它需要首先通過數據同步將主設備原始數據復制到鏡像設備,再通過數據分流將主設備的數據變化量寫入鏡像設備,從而實現數據保護的完整性。數據同步過程通常是在QEMU-KVM虛擬機運行狀態下完成的,此時QEMU持續數據保護塊驅動(QEMU CDP Block Driver)處于工作模式(3)的數據分流狀態,用戶從主設備讀取數據,同時向主設備和鏡像設備寫入數據,由于數據同步過程也存在主設備向鏡像設備的數據復制,可能出現設備IO并發沖突現象導致主設備與鏡像設備的數據不一致;為了保證數據同步過程中主設備與鏡像設備的數據一致性,QEMU CDP Drive在同步過程中引入了互斥鎖。5、數據恢復,又稱數據反向同步,當主設備故障排除準備重新使用時,首先需要將鏡像設備數據復制到主設備,這一過程稱為數據恢復,由于數據恢復通常是在QEMU-KVM虛擬機運行狀態下完成的,因此同樣需要保護數據的完整性。在數據恢復過程中,QEMU持續數據保護塊驅動(QEMU CDP Block Driver)處于工作模式(3),與數據分流狀態不同,用戶從鏡像設備讀取數據,同時向主設備和鏡像設備寫入數據,由于數據恢復過程也存在鏡像設備向主設備的數據復制,可能出現設備IO并發沖突現象導致鏡像設備與主設備的數據不一致。為了保證數據恢復過程中鏡像設備與主設備的數據一致性QEMU持續數據保護塊驅動(QEMU CDP Block Driver)在恢復過程中引入了互斥鎖。通過QEMU-KVM虛擬機的數據分流實現QEMU-KVM虛擬機的高級別持續數據保護。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明實質內容上所作的任何修改、等同替換和簡單改進等,均應包含在本發明的保護范圍之內。