一種寫時拷貝快照方法和系統的制作方法
【技術領域】
[0001]本發明涉及計算機技術領域,特別是涉及一種寫時拷貝快照方法和系統。
【背景技術】
[0002]隨著計算機技術的快速發展,數字化信息已經逐步取代紙媒數據,呈現日均指數級增長。海量數據催生了云計算、大數據和海量存儲系統的發展,對存儲設備和存儲應用的需求也越來越高。政府行業、銀行系統、電力企業等對數據的安全性和業務連續性有著較高的要求,必須提供在線的數據保護。而快照就是一種在線存儲設備防止數據丟失的有效方法,在越來越多的高端存儲系統中,快照模塊已成為一項基本的不可或缺的元素。
[0003]快照的主要功能在于能對在線數據按需進行備份和恢復。當存儲設備發生應用故障或文件損壞時可進行快速數據恢復,將數據恢復到某個可用時間點的狀態。同時,很多災備應用(例如克隆,遠程復制)將底層物理介質通過打快照將快照卷映射以達到對用戶可見,因此針對快照空間分配與回收是個很重要且頻繁操作的功能。
[0004]目前,快照系統會按照系統內部處理塊大小將源卷劃分為若干個塊,當系統需要寫入某快照數據時,傳統方式為在寫時拷貝線程中每獲取一個快照數據,便對該獲取的快照數據進行拆分、寫時拷貝和寫入源卷等快照操作,在將該獲取的快照數據寫入源卷完成后,再獲取下一個快照數據,以此類推來完成大量快照數據的寫入。由于快照過程中寫時拷貝操作較為耗時,因此,現有技術中,按照獲取快照數據-拆分-寫時拷貝-寫入源卷-獲取下一快照數據的線程來進行寫時拷貝快照,在不完成寫時拷貝和寫入源卷等操作之前,將不會獲取下一需要寫入的快照數據,該下一需要寫入的快照數據將一直處于等待寫入狀態,如此,當需要對大量快照數據進行寫入時,將會嚴重影響到系統的工作效率,導致工作效率較低。
【發明內容】
[0005]有鑒于此,本發明實施例提供一種寫時拷貝快照方法和系統,以解決現有技術中由于快照過程中寫時拷貝操作較為耗時,按照獲取快照數據-拆分-寫時拷貝-寫入源卷-獲取下一快照數據的線程來進行寫時拷貝快照,當需要對大量快照數據進行寫入時,將會嚴重影響到系統的工作效率,導致工作效率較低的問題。
[0006]為實現上述目的,本發明實施例提供如下技術方案:
[0007]—種寫時拷貝快照方法,用于寫時拷貝快照系統,所述寫時拷貝快照系統包括預處理模塊、拷貝模塊和重組模塊,所述寫時拷貝快照方法包括:
[0008]當檢測到快照數據時,預處理模塊獲取所述快照數據,將所述快照數據進行拆分得到拆分數據,并將所述拆分數據添加至處理隊列;
[0009]當檢測到所述處理隊列中存在拆分數據時,拷貝模塊按照預定次序獲取所述處理隊列中的拆分數據,根據所述獲取的拆分數據確定需要進行拷貝的源卷數據,將所述源卷數據寫入目標卷中;
[0010]當檢測到來自同一快照數據的所有拆分數據相對應的源卷數據均拷貝到目標卷中時,重組模塊將所述來自同一快照數據的所有拆分數據進行重組,得到與所述快照數據相同的重組快照數據,將所述重組快照數據寫入源卷中。
[0011 ] 其中,所述預處理模塊獲取所述快照數據后還包括:
[0012]所述預處理模塊判斷所述快照數據是否大于源卷內塊的容量;
[0013]若大于,則將所述快照數據進行拆分得到拆分數據。
[0014]其中,所述將所述快照數據進行拆分得到拆分數據包括:
[0015]確定源卷內塊的容量;
[0016]根據所述塊的容量對所述快照數據按照預定順序進行拆分得到拆分數據,其中,得到的每個拆分數據的大小均不大于所述塊的容量。
[0017]其中,將所述拆分數據按照所述預定順序添加至處理隊列。
[0018]其中,所述將所述快照數據進行拆分得到拆分數據后還包括:
[0019]所述預處理模塊確定所述拆分數據的數目,將所述數目記錄在所有所述拆分數據中,
[0020]并向所有所述拆分數據內添加拆分標識和快照標識;
[0021]其中,所述拆分標識用于確定所述拆分數據在所述快照數據內的位置信息,所述快照標識用于確定所述拆分數據與所述快照數據的對應關系,來自同一快照數據的拆分數據具有相同的快照標識。
[0022]其中,所述重組模塊根據所述數目和所述快照標識來判斷是否將來自同一快照數據的所有拆分數據相對應的源卷數據均拷貝到目標卷中。
[0023]其中,所述重組模塊根據所述拆分標識來將所述來自同一快照數據的所有拆分數據進行重組。
[0024]—種寫時拷貝快照系統,包括:預處理模塊、拷貝模塊和重組模塊;其中,
[0025]所述預處理模塊包括第一獲取單元,拆分單元和添加單元,所述第一獲取單元用于當檢測到快照數據時,獲取快照數據;所述拆分單元用于將所述快照數據進行拆分得到拆分數據;所述添加單元用于將所述拆分數據添加至處理隊列;
[0026]所述拷貝模塊包括第二獲取單元和拷貝單元,所述第二獲取單元用于當檢測到所述處理隊列中存在拆分數據時,按照預定次序獲取所述處理隊列中的拆分數據;所述拷貝單元用于根據所述獲取的拆分數據確定需要進行拷貝的源卷數據,將所述源卷數據寫入目標卷中;
[0027]所述重組模塊包括重組單元和寫入單元,所述重組單元用于當檢測到來自同一快照數據的所有拆分數據相對應的源卷數據均拷貝到目標卷中時,將所述來自同一快照數據的所有拆分數據進行重組,得到與所述快照數據相同的重組快照數據;所述寫入單元用于將所述重組快照數據寫入源卷中。
[0028]其中,所述預處理模塊還包括:判斷單元,用于判斷所述快照數據是否大于源卷內塊的容量,當所述判斷單元判定所述快照數據大于源卷內塊的容量時,拆分單元將所述快照數據進行拆分得到拆分數據。
[0029]其中,所述預處理模塊還包括:標識單元,用于確定所述拆分數據的數目,將所述數目記錄在所有所述拆分數據中,并向所有所述拆分數據內添加拆分標識和快照標識;其中,所述拆分標識用于確定所述拆分數據在所述快照數據內的位置信息,所述快照標識用于確定所述拆分數據與所述快照數據的對應關系,來自同一快照數據的拆分數據具有相同的快照標識。
[0030]基于上述技術方案,本發明實施例提供的一種寫時拷貝快照方法,用于寫時拷貝快照系統,所述寫時拷貝快照系統包括預處理模塊、拷貝模塊和重組模塊,其中,在寫時拷貝快照方法中,當檢測到快照數據時,預處理模塊則獲取該快照數據,將該快照數據進行拆分得到拆分數據,然后將該拆分數據添加至處理隊列,當檢測到處理隊列中存在拆分數據時,拷貝模塊則按照預定次序獲取該處理隊列中的拆分數據,根據該獲取的拆分數據確定需要進行拷貝的源卷數據,將該源卷數據寫入目標卷中,當檢測到來自同一快照數據的所有拆分數據相對應的源卷數據均拷貝到目標卷中時,重組模塊就將該來自同一快照數據的所有拆分數據進行重組,