本發明涉及信息技術領域,特別涉及一種存儲系統中數據備份的方法及裝置
背景技術:
為了保證用戶數據的可靠性,存儲系統一般都提供數據復制功能,將用戶數據從存儲系統的源設備復制到備份端設備。當源設備故障時,通過將備份端設備的數據恢復到源設備,進而達到容災的目的。
現有技術中,通常使用增量復制技術,將源設備發生變化的數據壓縮后備份到備份端設備。但現有技術將有變化的數據塊復制到備份端仍然消耗大量帶寬。
技術實現要素:
第一方面,本發明實施例提供了一種存儲系統中數據備份方案。其中,存儲系統中包含源設備和備份端設備,源設備和備份端設備均存儲有第n次快照sn的數據;源設備確定第n次快照sn后寫入源設備的第一數據塊,根據第一數據塊的邏輯地址確定相同邏輯地址中源設備存儲的第n次快照sn記錄的第二數據塊,第一數據塊是第二數據塊的修改塊;其中,n表示某一次快照操作;源設備將第一數據和第二數據塊進行邏輯操作得到第三數據塊,壓縮第三數據塊得到第四數據塊;源設備向備份端設備發送攜帶第四數據塊、第一數據塊的邏輯地址和第n次快照sn的版本號的數據報文;邏輯操作包括同或操作或異或操作,因為第三數據塊為通過邏輯操作得到的,而第一數據塊與第二數據塊中大部分數據相同,因此,第三數據塊包含大量的0(如使用異或操作)或1(如使用同或操作),第三數據塊的壓縮率高于第一數據塊的壓縮率,與將第一數據塊直接壓縮發送到備份端設備相比,減少了向備份端發送的數據量,節省了傳輸帶寬。
備份端設備接收并解析源設備發送的數據報文獲得第四數據塊、所述第一數據塊的邏輯地址和所述第n次快照sn的版本號;備份端設備根據所述第一數據塊的邏輯地址和所述第n次快照sn的版本號,確定備份端設備存儲的快照sn記錄的所述第二數據塊;解壓縮第四數據塊得到所述第三數據塊;將第三數據塊與第二數據塊進行所述邏輯操作得到所述第一數據塊;將所述第一數據塊寫入所述第一數據塊的邏輯地址。
可選地,源設備確定第n次快照sn后寫入源設備的第一數據塊,包括:源設備根據第n次快照sn后數據變更日志記錄的寫數據請求攜帶的邏輯地址確定所述第一數據塊。這一實現方式不需要對源設備再次進行快照操作,即可確定第一數據塊。
可選地,源設備確定第n次快照sn后寫入源設備的第一數據塊,包括:源設備進行第x次快照sx操作,比較所述快照sn與快照sx,確定所述第一數據塊;其中,n和x為整數,并且n<x。
本發明第一方面實施例提供的方案也可應用于數據恢復,源設備存儲第n次快照sn的數據,備份端設備存儲源設備的第n次快照sn的數據和第x次快照sx的數據;其中,n和x為整數,并且n<x,所述源設備向備份端設備發送數據恢復請求;所述數據恢復請求攜帶所述快照sn的版本號;備份端設備接收并解析源設備發送的數據恢復請求獲得所述快照sn的版本號,根據快照sn的版本號與快照sx的版本號確定第一數據塊,根據第一數據塊的邏輯地址和快照sn的版本號確定快照sn記錄的第二數據塊,將第一數據塊與第二數據塊進行邏輯操作得到第三數據塊,壓縮第三數據塊得到第四數據塊,向源設備發送攜帶第四數據塊和第一數塊的邏輯地址的數據報文;其中,所述第一數據塊為備份端設備備份的所述快照sx記錄的所述源設備在第n次快照sn后寫入的數據塊;所述第一數據塊為所述第二數據塊的修改塊;其中,所述邏輯操作為異或操作或同或操作;在數據過程中,通過邏輯操作和壓縮操作,同樣提高了壓縮率,節省了傳輸帶寬。
所述源設備接收并解析備份端設備發送的數據報文獲得第四數據塊和第一數塊的邏輯地址;根據第一數據塊的邏輯地址確定快照sn記錄的第二數據塊;解壓縮所述第四數據塊得到第三數據塊;將第三數據塊與第二數據塊進行所述邏輯操作得到第一數據塊;將第一數據塊寫入所述第一數據塊的邏輯地址,從而源設備恢復到與備份端設備相同的狀態。
與第一方面及第一方面應用的數據場景相對應,本發明實施例還提供了存儲設備,分別用于作為第一方面實施例中存儲系統中的源設備和備份端設備,以實現本發明實施例第一方面提供的方案。存儲設備包括實現第一方面及第一方面應用的數據場景的發明實施例方案的結構單元,或者,存儲設備包括接口和處理器以實現第一方面及第一方面應用的數據場景的實施例方案。
相應地,本發明實施例還提供了非易失性計算機可讀存儲介質和計算機程序產品,當本發明實施例提供的存儲設備的內存加載非易失性計算機可讀存儲介質和計算機程序產品中包含的計算機指令,存儲設備的中央處理單元(centerprocessingunit,cpu)執行該計算機指令時,使存儲設備作為第一方面實施例中存儲系統中的源設備和備份端設備,以實現本發明實施例第一方面提供的方案。
第二方面,本發明實施例還提供了另一種存儲系統中數據備份方案。其中,存儲系統包括源設備和備份端設備,源設備和備份端設備均存儲有第n次快照sn的數據;源設備確定第n次快照sn后寫入源設備的第一數據塊,根據第一數據塊的邏輯地址確定第n次快照sn記錄的第二數據塊;其中,第一數據塊是第二數據塊的修改塊;源設備確定第一數據塊需要循環移位的移位數,并根據移位數對第一數據塊循環移位得到第三數據塊;通過循環移位得到第三數據塊,可使第三數據塊與第二數據塊同一位置有更多的相同的數據;源設備將第三數據塊和第二數據塊進行邏輯操作得到第四數據塊;邏輯操作為異或操作或同或操作,通過邏輯操作,第四數據塊中包含大量的0(如使用異或操作)或1(如使用同或操作),壓縮所述第四數據塊得到第五數據塊;第四數據塊的壓縮率高于第一數據塊的壓縮率,與將第一數據塊直接壓縮發送到備份端設備相比,減少了向備份端發送的數據量,節省了傳輸帶寬。源設備向所述備份端設備發送攜帶第五數據塊、第一數據塊的邏輯地址、移位信息和第n次快照sn的版本號的數據報文;其中,移位信息包括循環移位方向和所述移位數。
所述備份端設備接收并解析所述數據報文獲得第五數據塊、第一數據塊的邏輯地址、移位信息和第n次快照sn的版本號,根據第一數據塊的邏輯地址和第n次快照sn的版本號,確定快照sn記錄的所述第二數據塊,解壓縮第五數據塊得到第四數據塊;將第四數據塊與第二數據塊進行所述邏輯操作得到第三數據塊,根據所述移位信息將第三數據塊反向循環移位得到第一數據塊,將第一數據塊寫入第一數據塊的邏輯地址。
可選地,源設備配置有如下計算規則:設定n個窗口,對數據塊在每一個窗口中的至少部分數據進行hash計算,其中,每一個窗口的大小相同,第一個窗口的起始位置為所述數據塊的起始位置;最后一個窗口的結束位置等于所述數據塊的結束位置;第i+1個窗口的起始位置與第i個窗口的起始位置相差固定長度;n為整數且不小于2,i為整數,第i個窗口表示第1個至第n個窗口中任一個窗口;
源設備根據所述計算規則對所述第一數據塊在每一個窗口中的至少部分數據進行hash計算,以及對所述第二數據塊在每一個窗口中的至少部分數據進行hash計算;
源設備按照hash值設定的順序,從所述第一數據塊的hash值中選擇前m個hash值,從所述第二數據塊的hash值中選擇前m個hash值;m為正整數并且不大于n;
源設備查找所述第一數據塊的前m個hash值與所述第二數據塊前m個hash值中相同的hash值,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數。
可選地,第i+1個窗口的起始位置與第i個窗口的起始位置相差的固定長度為1位,或多位。
可選地,源設備按照hash值設定的順序,具體可以按照從小到大的順序或者從大到小的順序。
可選地,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數的同時,還可以確定循環移位方向,具體地,當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為正數時,則向左循環移位;當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為負數時,則向右循環移位。
可選地,源設備確定第n次快照sn后寫入源設備的第一數據塊,包括:源設備根據第n次快照sn后數據變更日志記錄的寫數據請求攜帶的邏輯地址確定所述第一數據塊。這一實現方式不需要對源設備再次進行快照操作,即可確定第一數據塊。
可選地,源設備確定第n次快照sn后寫入源設備的第一數據塊,包括:源設備進行第x次快照sx操作,比較所述快照sn與快照sx,確定所述第一數據塊;其中,n和x為整數,并且n<x。
本發明第二方面實施例提供的方案也可應用于數據恢復,存儲系統包括源設備和備份端設備,源設備存儲第n次快照sn的數據,備份端設備存儲源設備的第n次快照sn的數據和第x次快照sx的數據;其中,n和x為整數,并且n<x,源設備向所述備份端設備發送數據恢復請求;數據恢復請求攜帶所述快照sn的版本號;備份端設備接收并解析數據恢復請求獲得快照sn的版本號,根據快照sn的版本號與快照sx的版本號確定第一數據塊,根據第一數據塊的邏輯地址和快照sn的版本號確定快照sn記錄的第二數據塊,確定第一數據塊需要循環移位的移位數,并根據移位數對第一數據塊循環移位得到第三數據塊;將第三數據塊與第二數據塊進行邏輯操作得到第四數據塊;邏輯操作為異或操作或同或操作,通過邏輯操作,第四數據塊中包含大量的0(如使用異或操作)或1(如使用同或操作),壓縮第四數據塊得到第五數據塊;第四數據塊的壓縮率高于第一數據塊的壓縮率,與將第一數據塊直接壓縮發送到源設備相比,減少了向源設備發送的數據量,節省了傳輸帶寬。備份端設備向源設備發送攜帶第五數據塊、移位信息和第一數塊的邏輯地址的數據報文;其中,第一數據塊為備份端設備備份的快照sx記錄的源設備在第n次快照sn后寫入的數據塊;第一數據塊為第二數據塊的修改塊;邏輯操作為異或操作或同或操作;移位信息包括循環移位方向和所述移位數。
源設備接收并解析數據報文獲得第五數據塊、移位信息和第一數塊的邏輯地址,根據第一數據塊的邏輯地址確定快照sn記錄的第二數據塊,解壓縮所述第五數據塊得到所述第四數據塊,將第四數據塊與第二數據塊進行邏輯操作得到第三數據塊,根據移位信息對第三數據塊反向循環移位得到第一數據塊,將第一數據塊寫入第一數據塊的邏輯地址,從而源設備恢復到與備份端設備相同的狀態。
可選地,備份端設備配置有如下計算規則:設定n個窗口,對數據塊在每一個窗口中的至少部分數據進行hash計算,其中,每一個窗口的大小相同,第一個窗口的起始位置為所述數據塊的起始位置;最后一個窗口的結束位置等于所述數據塊的結束位置;第i+1個窗口的起始位置與第i個窗口的起始位置相差固定長度;n為整數且不小于2,i為整數,第i個窗口表示第1個至第n個窗口中任一個窗口;
備份端設備根據計算規則對所述第一數據塊在每一個窗口中的至少部分數據進行hash計算,以及對所述第二數據塊在每一個窗口中的至少部分數據進行hash計算;
備份端設備按照hash值設定的順序,從所述第一數據塊的hash值中選擇前m個hash值,從所述第二數據塊的hash值中選擇前m個hash值;m為正整數并且不大于n;
備份端設備查找所述第一數據塊的前m個hash值與所述第二數據塊前m個hash值中相同的hash值,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數。
可選地,第i+1個窗口的起始位置與第i個窗口的起始位置相差的固定長度為1位,或多位。
可選地,備份端設備按照hash值設定的順序,具體可以按照從小到大的順序或者從大到小的順序。
可選地,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數的同時,還可以確定循環移位方向,具體地,當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為正數時,則向左循環移位;當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為負數時,則向右循環移位。
與第二方面及第二方面應用的數據場景相對應,本發明實施例還提供了存儲設備,分別用于作為第二方面實施例中存儲系統中的源設備和備份端設備,以實現本發明實施例第二方面提供的方案。存儲設備包括實現第二方面及第二方面應用的數據場景的發明實施例方案的結構單元,或者,存儲設備包括接口和處理器以實現第二方面及第二方面應用的數據場景的實施例方案。
相應地,本發明實施例還提供了非易失性計算機可讀存儲介質和計算機程序產品,當本發明實施例提供的存儲設備的內存加載非易失性計算機可讀存儲介質和計算機程序產品中包含的計算機指令,存儲設備的中央處理單元(centerprocessingunit,cpu)執行該計算機指令時,使存儲設備作為第二方面實施例中存儲系統中的源設備和備份端設備,以實現本發明實施例第二方面提供的方案。
附圖說明
圖1為本發明實施例存儲系統示意圖;
圖2a為本發明實施例確定移位數的方法示意圖;
圖2b為本發明實施例確定移位數的方法示意圖;
圖3為本發明實施例循環移位示意圖;
圖4為本發明實施例異或操作示意圖;
圖5為本發明實施例壓縮操作示意圖;
圖6為本發明實施例數據報文示意圖;
圖7為本發明實施例異或移位操作示意圖;
圖8為要發明實施例反向循環示意圖;
圖9為本發明實施例數據備份后存儲系統示意圖;
圖10為本發明實施例應用場景示意圖;
圖11為本發明實施例應用場景示意圖;
圖12為本發明實施例存儲設備結構示意圖;
圖13為本發明實施例存儲設備結構示意圖;
圖14為本發明實施例存儲設備結構示意圖;
圖15為本發明實施例存儲設備結構示意圖;
圖16為本發明實施例存儲設備結構示意圖。
具體實施例
如圖1所示,存儲系統包括源設備101和備份端設備102,源設備101在第n次快照sn時,存儲數據塊1、數據塊2、數據塊3和數據塊4。備份端設備102存儲源設備101第n次快照sn的備份,即存儲有數據塊1、數據塊2、數據塊3和數據塊4。在第n次快照sn后,源設備101的數據塊2被修改為數據塊2’。根據快照實現機制,數據塊2在快照sn中保存,同時記錄數據塊2’,數據塊2’為對數據塊2修改后的數據塊(也就是說,數據塊2’為數據塊2的修改塊)。因為備份端設備102已經備份源設備101在快照sn的數據,備份端設備102進行了快照sn操作,即在備份端設備102也通過快照sn操作記錄了快照sn時刻的狀態。因此再將源設備101中的數據備份到備份端時,只需要備份數據塊2’。通常,為保證將數據塊2’備份到備份端設備102的過程中不被修改,通常需要進行對源設備101進行快照操作,該快照操作可以是sx,其中,n和x為整數,并且n<x。如圖1所示,快照sx記錄源設備101存儲數據塊1、數據塊2’、數據塊3和數據塊4。數據塊2在快照sn中記錄的邏輯地址與數據塊2’在快照sx記錄的邏輯地址相同,即數據塊2和數據塊2’表示同一邏輯地址在不同時刻的狀態。本發明實施例中,快照記錄的數據、存儲的快照的數據或快照的數據,均表示快照時刻記錄的設備存儲的數據。其中,快照(snapshot)是關于指定數據集合的一個完全可用拷貝,該拷貝包括數據在某個時間點(拷貝開始的時間點)的映像,具體含義可參見存儲網絡行業協會(storagenetworkingindustryassociation,snia)的定義。通常快照有兩種實現方式,即寫時復制(copyonwrite,cow)和寫重定向(redirectonwrite,row),在此不再贅述。可選地,可以通過將快照sx與快照sn進行比對,以確定修改后的數據塊2’。可選地,還可以通過數據變更日志(datachangelog,dcl)來確定修改后數據塊。通過dcl方式,源設備101記錄第n次快照sn后,源設備101接收到的寫數據請求,解析寫數據請求獲得寫數據請求攜帶的邏輯地址,當收到的寫數據請求攜帶的地址為第n次快照sn記錄的數據塊的邏輯地址時,則數據塊被修改。以圖1為例,當源設備101通過dcl記錄第n次快照sn后,源設備101接收到的寫數據請求攜帶數據塊2的邏輯地址,則確定數據塊2被修改。
步驟1:源設備101確定數據塊2’為數據塊2在第n次快照sn后的修改塊。
本發明實施例以數據塊2’為001111100000101000100011為例(為方便閱讀,將數據塊2’的內容以4位為單位進行展示)。
步驟2:源設備根據數據塊2’的邏輯地址確定第n次快照sn記錄的數據塊2。
本發明實施例中數據塊2為111000011010001000110100。
步驟3:確定數據塊2’循環移位的移位數,并根據移位數對數據塊2’循環移位。
可選地,如圖2a所示,源設備101設備有如下計算規則:設定n個窗口,對數據塊在每一個窗口中的至少部分數據進行hash計算,其中,每一個窗口的大小相同,第一個窗口的起始位置為數據塊的起始位置;最后一個窗口的結束位置等于數據塊的結束位置;第i+1個窗口的起始位置與第i個窗口的起始位置相差固定長度;n為整數且不小于2,i為整數,第i個窗口表示第1個至第n個窗口中任一個窗口。
根據上述計算規則:例如,設置21個窗口(例如窗口大小為4位),相鄰窗口的起始位置相差1位(即第i+1個窗口的起始位置與第i個窗口的起始位置相差1位),源設備101對數據塊2在每一個窗口中的至少部分數據進行hash計算,以及對數據塊2’在每一個窗口中的至少部分數據進行hash計算;按照hash值從大到小的順序,從數據塊2的21個窗口中選擇前4個hash值,分別為a、b、c和d,這4個hash值對應的窗口分別為窗口1、窗口3、窗口9和窗口11,窗口1、窗口3、窗口9和窗口11對應的偏移分別為0、2、8和10。其中,窗口對應的偏移是指窗口的起始位置相對數據塊的起始位置相差的位數,如在數據塊2中,窗口1的起始位置相對數據塊2的起始位置相差的0位,窗口3的起始位置相對數據塊2的起始位置相差的2位;同樣,按照hash值從大到小的順序,從數據塊2’的21個窗口中選擇前4個hash值,分別為a、e、c和d,這4個hash值對應的窗口分別為窗口5’、窗口17’、窗口13’和窗口15’,窗口5’、窗口17’、窗口13’和窗口15’對應的偏移分別為0、2、8和10分別為4、16、12和14。源設備101查找這兩組中相同的hash值,即hash值a、c和d。源設備101確定相同hash值對應的窗口的偏移之差作為移位數。如hash值為a的窗口1和窗口5’的偏移之差為4,如hash值為c的窗口9和窗口13’的偏移之差為4,說明兩個數據塊間很可能內容相同但是有錯位現象,通過向左循環移4位能保證兩個數據塊的相同內容對齊。如果上述方法中得到的偏移之差為-4,則向右循環移4位。當這兩組中的hash值均相同,并且相同hash值對應的偏移也相同,則表示不需要移位,即循環移0位。本發明實施例中,按照hash值從大到小的順序,選擇4個hash值僅是示例性的;可選地,第i+1個窗口的起始位置與第i個窗口的起始位置相差固定長度也可以為多位。可選地,也可以按照hash值從小到大的順序。如圖3所示,本發明實施例中,確定數據塊2’和數據塊2相差4位,則將數據塊2’向左循環移位4位,得到移位后的數據塊(稱為移位的數據塊)為111000001010001000110011。其中,所謂循環移位,是計算機術語,是指在向一端移位時不丟失移位前原范圍的位,而是將它們作為另一端的補入位。例如,向左循環移4位,將0011作為右端的補入位。
可選地,如圖2b所示,首先,將數據塊2’與數據塊2進行異或操作,得到異或的數據塊a1,獲得異或的數據塊a1中包含0的數量為10;然后將數據塊2’向左循環移1位,將向左循環移1位得到的數據塊與數據塊2進行異或操作,得到異或的數據塊a2,獲得異或的數據塊a2中包含0的數量為10;按照上述規則,直到將數據塊2’向左循環移23位,將向左循環移23位得到的數據塊與數據塊2進行異或操作,得到異或的數據塊a23,確定異或的數據塊a23中包含0的數量。從異或的數據塊a1到a23中確定包含0的數量最多的異或的塊,本發明實施例中為異或的數據塊a5,則確定將數據塊2’向左循環移4位。如果異或的數據塊a1為全0數據,則不需要進行循環移位。從上面的描述可知,異或操作得到的數據中0的位數越多,兩個數據塊相同的數據越多,。
通過循環移位,使得數據塊2’移位后得到的移位的數據塊與數據塊2有更多相同的數據,從而使得接下來的異或操作得到的數據塊有更多的位為0。當不需要循環移位,即數據塊2’與數據塊2中每一位相同,則循環移0位。
步驟4:將移位的數據塊與數據塊2進行異或操作,得到數據塊(也就是異或的數據塊)為000000010000000000000111,具體如圖4所示。
步驟5:源設備101對得到的異或的數據塊進行壓縮操作。
源設備101對異或的數據塊進行壓縮操作具體可以使用lz4壓縮算法、zlib壓縮算法以及游程編碼(run-lengthencoding,rle)壓縮算法等。本發明實施例對此不作限定。
以源設備101使用rle壓縮算法對異或的數據塊進行壓縮為例,如圖5所示的實例方式,rle算法從左到右遍歷異或的數據塊,將連續重復的數據用出現的次數代替,則將異或的數據塊壓縮后表示如下:0(7)1(1)0(13)1(3),其中0(7)表示0連續出現7次,1(1)表示1連續出現1次,0(13)表示0連續出現13次,1(3)表示1連續出現3次。上述表示方式是為方便理解與區分,實際實現可參考rle壓縮算法描述(請參見https://en.wikipedia.org/wiki/run-length_encoding)。
源設備101通過上述步驟,與直接壓縮修改后的數據塊相比,減少了向備份端設備102發送的數據量,從而節省了傳輸帶寬。
步驟6:源設備101將壓縮后的數據塊封裝到數據報文,發送數據報文到備份端設備102,數據報文中攜帶數據塊2’的邏輯地址、數據塊2’的移位信息、壓縮后的數據塊以及快照sn的版本號。其中,移位信息包括循環移位方向和移位數。
本發明實施例中對發送備份數據的數據報文的協議不作限定。一種實現方式,如圖6所示,在原有數據報文新增601、602、603和604四個字段。其中,601用于表示數據塊2’的邏輯地址,同時也是數據塊2的邏輯地址;602表示第n次快照sn的版本號,603用于表示數據塊2’的移位信息(本發明實施列中移位數為向左循環移位4位),604用于攜帶壓縮后的數據塊。具體實現中,上述字段順序并沒有限制。603字段中可以用首位表示循環移位的方式,例如0表示向左循環移位,1表示向右循環移位,除首位外的位表示循環移位的移位數,或者默認向一個方向循環移位。快照的版本號為快照的標識,一種實現為隨著快照的增加而線性遞增。
步驟7:備份端設備102接收并解析數據報文,得到數據報文中攜帶數據塊2’的邏輯地址、數據塊2’的移位信息、壓縮后的數據塊以及快照sn的版本號。
具體地,當以圖6所示的數據報文為例,備份端設備102解析數據報文得到字段601、602、603和604中的信息。目標端設備102將字段604中攜帶的壓縮的數據塊解壓縮。因為字段604中攜帶的壓縮的數據塊是通過rle壓縮算法得到的,因此,將0(7)10(13)1(3)解壓縮為000000010000000000000111,即源設備101端的異或的數據塊。根據字段601攜帶的修改的數據塊2’的邏輯塊地址以及字段602中攜帶的第n次快照sn的版本號,在備份端設備102確定備份端設備102第n次快照sn記錄的數據塊2,獲得數據塊2為111000011010001000110100。如圖7所示,備份端設備102將數據塊2與異或的數據塊進行異或操作,得到源設備101移位的數據塊111000001010001000110011,也就是數據塊2’移位后的數據塊。備份端設備102根據字段603攜帶的移位信息,進行反向循環移位,如圖8所示,本發明實施例中,反向循環移位為向右循環移位4位,得到源設備101數據塊2’。
步驟8:備份端設備102將數據塊2’寫入所述從源設備101接收到的數據報文中所攜帶的數據塊2’的邏輯塊地址。
具體實現中,備份端設備102與源設備101具有相同的邏輯地址,因此備份端設備102存儲數據塊2’的邏輯地址與源設備101存儲數據塊2’的邏輯地址。在上述方案中,備份端設備102根據數據塊2’的邏輯地址,對備份端設備102存儲的數據塊中的數據塊2進行修改得到數據塊2’,使得備份端設備102存儲有存儲數據塊1、數據塊2’、數據塊3和數據塊4。
因為備份端設備102對數據塊1、數據塊2、數據塊3和數據塊4已經進行了快照操作,得到備份端設備102的快照sn。因此,當備份端設備102對存儲的數據塊2進行修改得到數據塊2’時,同時維持了數據塊2。
當步驟8之后,數據備份端設備102對備份端進行第x次快照操作,得到快照sx。具體如圖9所示,以快照sx時刻備份端設備102存儲的數據有數據塊1、數據塊2’、數據塊3和數據塊4為例。數據塊2在快照sn中記錄的邏輯地址與數據塊2’在快照sx記錄的邏輯地址相同,即數據塊2和數據塊2’表示同一邏輯地址在不同時刻的狀態。
當源設備101發生故障造成數據丟失時,可以利用備份端設備102的快照數據進行恢復。本發明實施例中,可以通過備份端設備102將源設備101恢復到第x次快照sx時的狀態。例如,源設備101由于故障丟失了快照sx記錄的數據塊2’(也就是對數據塊2修改后的數據塊),只有快照sn時的數據(或稱為快照sn時的狀態),則源設備101向備份端設備102發送數據恢復請求,數據恢復請求中攜帶源設備101當前的快照sn版本號。則備份端設備102根據數據恢復請求中攜帶源設備101當前的快照sn版本號確定源設備101只有快照sn時刻的數據。第一種實現方式,備份端設備102根據源設備101當前的快照sn版本號,確定需要恢復的數據為數據塊2’,將則數據塊2’的邏輯塊地址以及數據塊2’發送到源設備101,源設備101接收數據塊2’的邏輯塊地址以及數據塊2’,將數據塊2’寫入源設備101上數據塊2’的邏輯塊地址,從而使源設備101恢復到第x次快照sx時的狀態。具體可參考現有基于快照實現源設備數據恢復的方案,在此不再贅述。
另一種實現方式,備份端設備102根據源設備101發送的數據恢復請求確定需要恢復的數據為數據塊2’,備份端設備102根據數據塊2’的邏輯地址確定快照sn記錄的數據塊2。備份端設備102確定數據塊2’的循環移位的移位數,根據移位數對數據塊2’循環移位,得到移位的數據塊,將移位的數據塊與數據塊進行異或操作,得到壓縮的數據塊將壓縮的數據塊、數據塊2’的邏輯塊地址、第n次快照sn的版本號和數據塊2’的移位信息封裝到數據報文中發送到源設備101。具體實現可參考步驟2-7,具體數據報文格式可參考圖6。相對于第一種實現方式,減少了數據恢復過程中備份端設備102向源設備101發送的數據量,節省了傳輸帶寬。源設備101接收并解析備份端設備102發送的數據報文,根據接收到的報文執行執行異或操作、反向循環移位操作和數據寫入操作,得到數據塊2’。具體實現可以參考上述步驟7和步驟8,將數據塊2’寫入數據塊2’的邏輯地址,從而源設備101恢復到快照sx時的狀態。
本發明另一實施例提供了源設備101將數據塊2’備份到備份端設備102的另一種實現方式,步驟1’和步驟2’分別如前面步驟1和2,在此不再贅述。
步驟3’:將數據塊2’與數據塊2進行異或操作,得到異或的數據塊為110111111010100000010111。具體異或操作可參考圖4。
步驟4’:將異或的數據塊110111111010100000010111進行壓縮。具體實現可參考步驟5的描述,在此不再贅述。
步驟5’:源設備101將壓縮后的數據塊封裝到數據報文,發送數據報文到備份端設備102。數據報文中攜帶數據塊2’的邏輯地址、壓縮后的數據塊以及快照sn的版本號。
具體實現可參考圖6,數據報文包含字段601、602和604(因為不需要循環移位操作,因此不需要字段603)。其中,601用于表示數據塊2’的邏輯地址,同時也是數據塊2的邏輯地址;602表示第n次快照sn的版本號,604用于攜帶壓縮后的數據塊。具體實現中,上述字段順序并沒有限制。
步驟6’:目標端設備102接收并解析數據報文,得到字段601、602和604中的信息。目標端設備102將字段604中攜帶的壓縮的數據塊解壓縮。根據字段601攜帶的修改的數據塊2’的邏輯塊地址以及字段602中攜帶的第n次快照sn的版本號,在備份端設備102確定備份端設備102第n次快照sn記錄的數據塊2,備份端設備102將數據塊2與異或的數據塊110111111010100000010111進行異或操作,得到數據塊2’。
步驟7’如前面步驟8,在此不再贅述。
在備份端設備102對源設備103進行數據恢復的另一種實現方式中,備份端設備102根據源設備101發送的數據恢復請求確定需要恢復的數據為數據塊2’,備份端設備102根據數據塊2’的邏輯地址找到快照sn記錄的數據塊2。備份端設備102分別使用前面源設備101執行步驟3’和4’的方式,得到壓縮的數據塊。備份端設備102將壓縮的數據塊、數據塊2’的邏輯塊地址和第n次快照sn的版本號封裝到數據報文中發送到源設備101。具體數據報文格式可參考步驟5’。因此,減少了數據恢復過程中備份端設備102向源設備101發送的數據量,節省了傳輸帶寬。源設備101接收并解析備份端設備102發送的數據報文,使用備份端設備102執行的步驟6’和步驟7’的方式,得到數據塊2’,將數據塊2’寫入數據塊2’的邏輯地址,從而源設備101恢復到快照sx時的狀態。
本發明各實施例中的異或操作也可以替換為同或操作,可達到相同的效果。具體的,在確定移位數的實現方式中,如果使用同或操作,則將數據塊2’與數據塊2進行同或操作,得到同或的數據塊a1,獲得同或的數據塊a1中包含1的數量;然后將數據塊2’向左循環移1位,將向左循環移1位得到的數據塊與數據塊2進行同或操作,得到同或的數據塊a2,獲得同或的數據塊a2中包含1的數量;按照上述規則,直到將數據塊2’向左循環移23位,將向左循環移23位得到的數據塊與數據塊2進行同或,得到同或的數據塊a23,確定同或的數據塊t中包含1的數量。從同或的數據塊a1到a23中確定包含1的數量最多的同或的塊,本發明實施例中為同或的數據塊a5,則確定將數據塊2’向左循環移4位。如果同或的數據塊a1為全1數據,則不需要進行循環移位。
本發明各實施描述的數據備份方法與本發明實施例中的數據恢復方法可以相互結合使用,也可以獨立使用。
本發明實施例中的源設備101和備份端設備102可以為存儲陣列。即源設備101為源存儲陣列,備份端設備102為備份端存儲陣列。存儲陣列結構如圖10所示,包括存儲控制器和多塊硬盤。其中,存儲控制器包括中央處理單元(centerprocessingunit,cpu)和內存,cpu和內存通過總線進行通信,存儲控制器還包含與主機和硬盤通信的接口。存儲控制器將硬盤進行邏輯組合,根據需要劃分成不同的raid組。存儲控制器將raid組的可用容量劃分成較小的單元,稱為邏輯單元(logicunit)。每個邏輯單元會被分配一個唯一的標識,稱為邏輯單元編號(logicalunitnumber,lun)。存儲控制器將一個邏輯單元分配給分配給主機使用,即將該邏輯單元的lun暴露給該主機,具體實現可參考存儲技術領域中邏輯單元分配技術。本發明實施例對源存儲陣列進行備份,可以是對存儲陣列中某一個邏輯單元中的數據塊進行備份,也可以對多個邏輯單元進行備份。在存儲陣列場景下,通過dcl技術確定修改的數據塊,具體為存儲控制器通過解析寫數據請求攜帶的數據塊的地址記錄修改的數據塊的邏輯地址,即記錄攜帶的數據塊的的邏輯塊地址(logicblockaddress,lba)和長度。在圖6所示的字段601攜帶的則為修改的數據塊2’的lba和長度。
本發明實施例中的源設備101和備份端設備102可以為網絡連接存儲(networkattachedstorage,nas),如圖11所示,包括nas頭和存儲陣列(參見圖9)。nas頭包括cpu和內存,nas頭還包括存儲業界標準的存儲協議和端口,用于連接和管理物理磁盤資源。nas頭cpu執行文件共享協議,實現文件訪問。具體地,文件共享協議包括網絡文件系統(networkfilesystem,nfs)、通用互聯網文件系統(commoninternetfilesystem,cifs)等。本發明實施例對源nas進行備份,可以是對nas中的文件系統進行備份。在nas場景下,通過dcl技術確定修改的數據塊,具體為nas頭通過解析寫數據請求攜帶的數據塊的地址記錄確定修改的數據塊的地址,即記錄攜帶的文件標識、偏移量(offset)和長度。在圖6所示的字段601攜帶的則為文件標識、偏移量(offset)和長度。
如圖12所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的源設備101,所述存儲系統還包括源設備101的備份端設備102,可參考圖1所示的存儲系統,存儲設備101和備份端設備102均存儲有第n次快照sn的數據;n為整數,所述存儲設備101包括接口1201和處理器1202,接口1201與處理器1202通過總線通信,處理器1202,用于確定第n次快照sn后寫入存儲設備101的第一數據塊;根據所述第一數據塊的邏輯地址確定第n次快照sn記錄的第二數據塊;其中,所述第一數據塊是所述第二數據塊的修改塊;對所述第一數據和所述第二數據塊進行邏輯操作得到第三數據塊;其中,所述邏輯操作為異或操作或同或操作;壓縮所述第三數據塊得到第四數據塊;接口1201用于向所述備份端設備102發送攜帶所述第四數據塊、所述第一數據塊的邏輯地址和所述第n次快照sn的版本號的數據報文。可選地,處理器1202具體用于根據第n次快照sn后數據變更日志記錄的寫數據請求攜帶的邏輯地址確定所述第一數據塊。可選地,處理器1202具體用于進行第x次快照sx操作,比較所述快照sn與快照sx,確定所述第一數據塊;其中,n和x為整數,并且n<x。
如圖12所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的備份端設備102,所述存儲系統還包括備份端設備102的源設備101,可參考圖1所示的存儲系統,所述存儲設備102和所述源設備101均存儲有第n次快照sn的數據;n為整數,所述存儲設備102包括接口1201和處理器1202,接口1201與處理器1202通過總線通信,接口1201用于接收并解析所述源設備101發送的數據報文獲得第四數據塊、第一數據塊的邏輯地址和所述第n次快照sn的版本號;處理器1202,用于根據所述第一數據塊的邏輯地址和所述第n次快照sn的版本號,確定所述快照sn記錄的第二數據塊;其中,所述第一數據塊為所述源設備在第n次快照sn后寫入的數據塊;所述第一數據塊為所述第二數據塊的修改塊;解壓縮所述第四數據塊得到第三數據塊;將所述第三數據塊和所述第二數據塊進行邏輯操作得到所述第一數據塊;其中,所述邏輯操作為異或操作或同或操作;將所述第一數據塊寫入所述第一數據塊的邏輯地址。
如圖12所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的備份端設備102,所述存儲系統還包括備份端設備102的源設備101,可參考圖9所示的存儲系統,所述存儲設備102和所述源設備101均存儲有第n次快照sn的數據;n為整數,所述存儲設備102包括接口1201和處理器1202,接口1201,用于接收并解析所述源設備101發送的數據恢復請求獲得所述快照sn的版本號;處理器1202用于根據所述快照sn的版本號與所述快照sx的版本號確定所述快照sx記錄的第一數據塊;根據所述第一數據塊的邏輯地址和所述快照sn的版本號確定所述快照sn記錄的存儲于所述邏輯地址中的第二數據塊;其中,所述第一數據塊為所述存儲設備102備份的所述快照sx記錄的所述源設備101在第n次快照sn后寫入的數據塊;所述第一數據塊為所述第二數據塊的修改塊;將所述第一數據塊與所述第二數據塊進行邏輯操作得到第三數據塊;其中,所述邏輯操作為異或操作或同或操作;壓縮所述第三數據塊得到第四數據塊;接口1202還用于向所述源設備101發送攜帶所述第四數據塊和所述第一數塊的邏輯地址的數據報文。
如圖12所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的源設備101,所述存儲系統還包括源設備101的備份端設備102,可參考圖9所示的存儲系統,所述存儲設備101和所述備份端設備102均存儲有第n次快照sn的數據;n為整數,所述存儲設備101包括接口1201和處理器1202,接口1201與處理器1202通過總線通信,接口1201用于向所述備份端設備102發送數據恢復請求;所述數據恢復請求攜帶所述快照sn的版本號;接收并解析所述備份端設備根據所述數據恢復請求發送的數據報文獲得第四數據塊和第一數塊的邏輯地址;所述第一數據塊為所述備份端設備102備份的所述快照sx記錄的所述邏輯地址中所述存儲設備101在第n次快照sn后寫入的數據塊;處理器1202,用于根據所述第一數據塊的邏輯地址確定源設備存儲的所述快照sn記錄的第二數據塊;所述第一數據塊為所述第二數據塊的修改塊;解壓縮所述第四數據塊得到第三數據塊;將所述第三數據塊與所述第二數據塊進行邏輯操作得到所述第一數據塊;其中,所述邏輯操作為異或操作或同或操作;將所述第一數據塊寫入所述第一數據塊的邏輯地址。
如圖12所示,本發明實施例提供了一種存儲設備,所述存儲設備作為存儲系統中的源設備101,所述存儲系統還包括源設備101的備份端設備102,可參考圖1所示的存儲系統,所述源設備101和所述備份端設備102均存儲有第n次快照sn的數據;n為整數,所述存儲設備101包括接口1201和處理器1202,接口1201和處理器1202通過總線通信;處理器1202,用于確定第n次快照sn后寫入所述源設備的第一數據塊;根據所述第一數據塊的邏輯地址確定第n次快照sn記錄的第二數據塊;其中,所述第一數據塊是所述第二數據塊的修改塊;確定所述第一數據塊需要循環移位的移位數;根據所述移位數對所述第一數據塊循環移位得到第三數據塊;將所述第三數據塊和所述第二數據塊進行邏輯操作得到第四數據塊;其中,所述邏輯操作為異或操作或同或操作;壓縮所述第四數據塊得到第五數據塊;接口1201,用于向所述備份端設備102發送攜帶所述第五數據塊、所述第一數據塊的邏輯地址、移位信息和所述第n次快照sn的版本號的數據報文;其中,所述移位信息包括循環移位方向和所述移位數。可選地,所述存儲設備101配置有如下計算規則:設定n個窗口,對數據塊在每一個窗口中的至少部分數據進行hash計算,其中,每一個窗口的大小相同,第一個窗口的起始位置為所述數據塊的起始位置;最后一個窗口的結束位置等于所述數據塊的結束位置;第i+1個窗口的起始位置與第i個窗口的起始位置相差固定長度;n為整數且不小于2,i為整數,第i個窗口表示第1個至第n個窗口中任一個窗口;處理器1202具體用于:根據所述計算規則對所述第一數據塊在每一個窗口中的至少部分數據進行hash計算,以及對所述第二數據塊在每一個窗口中的至少部分數據進行hash計算;按照hash值設定的順序,從所述第一數據塊的hash值中選擇前m個hash值,從所述第二數據塊的hash值中選擇前m個hash值;m為正整數并且不大于n;查找所述第一數據塊的前m個hash值與所述第二數據塊前m個hash值中相同的hash值,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數。可選地,第i+1個窗口的起始位置與第i個窗口的起始位置相差的固定長度為1位,或多位。可選地,備份端設備按照hash值設定的順序,具體可以按照從小到大的順序或者從大到小的順序。可選地,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數的同時,還可以確定循環移位方向,具體地,當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為正數時,則向左循環移位;當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為負數時,則向右循環移位。可選地,處理器1202具體用于根據所述第n次快照sn后數據變更日志記錄的寫數據請求攜帶的邏輯地址確定所述第一數據塊。可選地,處理器1202具體用于對所述源設備101進行第x次快照sx操作,比較所述快照sn與快照sx,確定所述第一數據塊;其中,n和x為整數,并且n<x。
如圖12所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的備份端設備102,所述存儲系統還包括備份端設備102的源設備101,可參考圖1所示的存儲系統,所述源設備101和所述備份端設備102均存儲有第n次快照sn的數據;n為整數,所述存儲設備102包括接口1201和處理器1202,接口1201和處理器1202通過總線通信;接口1201,用于接收并解析所述源設備101發送的數據報文獲得第五數據塊、第一數據塊的邏輯地址、移位信息和所述第n次快照sn的版本號;處理器1202,用于根據所述第一數據塊的邏輯地址和所述第n次快照sn的版本號,確定所述快照sn記錄的第二數據塊;其中,所述第一數據塊為所述源設備在第n次快照sn后寫入的數據塊;所述第一數據塊為所述第二數據塊的修改塊;解壓縮所述第五數據塊得到第四數據塊;將所述第四數據塊和所述第二數據塊進行邏輯操作得到第三數據塊;其中,所述邏輯操作為異或操作或同或操作;根據所述移位信息對所述第三數據塊進行反向循環移位得到所述第一數據塊;其中,所述移位信息包含所述源設備101對所述第一數據塊循環移位得到所述第三數據塊所需要的移位數以及循環移位方向;將所述第一數據塊寫入所述第一數據塊的邏輯地址。
如圖12所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的備份端設備102,所述存儲系統還包括備份端設備102的源設備101,可參考圖9所示的存儲系統,所述源設備101存儲第n次快照sn的數據,所述備份端設備102存儲所述源設備的第n次快照sn的數據和第x次快照sx的數據;其中,n和x為整數,并且n<x,所述存儲設備102包括接口1201和處理器1202,接口1201和處理器1202通過總線通信;接口1201,用于接收所述源設備101發送的數據恢復請求,所述數據恢復請求中攜帶有所述快照sn的版本號;處理器1202,用于根據所述快照sn的版本號與所述快照sx的版本號確定所述快照sx記錄的第一數據塊,其中,所述第一數據塊為所述備份端設備102備份的所述快照sx記錄的所述源設備101在第n次快照sn后寫入的數據塊;根據所述第一數據塊的邏輯地址和所述快照sn的版本號確定所述快照sn記錄的存儲于所述邏輯地址中的第二數據塊;確定所述第一數據塊需要循環移位的移位數;根據所述移位數對所述第一數據塊循環移位得到第三數據塊;將所述第三數據塊和所述第二數據塊進行邏輯操作得到第四數據塊;壓縮所述第四數據塊得到第五數據塊;其中,所述邏輯操作為異或操作或同或操作;所述接口,用于向所述源設備101發送攜帶所述第五數據塊、所述第一數塊的邏輯地址和移位信息的數據報文;其中,所述移位信息包括循環移位方向和所述移位數。可選地,所述存儲設備101配置有如下計算規則:設定n個窗口,對數據塊在每一個窗口中的至少部分數據進行hash計算,其中,每一個窗口的大小相同,第一個窗口的起始位置為所述數據塊的起始位置;最后一個窗口的結束位置等于所述數據塊的結束位置;第i+1個窗口的起始位置與第i個窗口的起始位置相差固定長度;n為整數且不小于2,i為整數,第i個窗口表示第1個至第n個窗口中任一個窗口;處理器1202具體用于:根據所述計算規則對所述第一數據塊在每一個窗口中的至少部分數據進行hash計算,以及對所述第二數據塊在每一個窗口中的至少部分數據進行hash計算;按照hash值設定的順序,從所述第一數據塊的hash值中選擇前m個hash值,從所述第二數據塊的hash值中選擇前m個hash值;m為正整數并且不大于n;查找所述第一數據塊的前m個hash值與所述第二數據塊前m個hash值中相同的hash值,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數。可選地,第i+1個窗口的起始位置與第i個窗口的起始位置相差的固定長度為1位,或多位。可選地,備份端設備按照hash值設定的順序,具體可以按照從小到大的順序或者從大到小的順序。可選地,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數的同時,還可以確定循環移位方向,具體地,當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為正數時,則向左循環移位;當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為負數時,則向右循環移位。
如圖12所示,本發明實施例提供了一種存儲設備,所述存儲設備用于存儲系統中的源設備101,所述存儲系統還包括源設備101的備份端設備102,可參考圖9所示的存儲系統,所述存儲設備101存儲第n次快照sn的數據,所述備份端設備102存儲所述存儲設備101的第n次快照sn的數據和第x次快照sx的數據;其中,n和x為整數,并且n<x,其特征在于,所述源設備101包括接口1201和處理器1202,接口1201和處理器1202通信總線通信;接口1202,用于向所述備份端設備102發送數據恢復請求;所述數據恢復請求攜帶所述快照sn的版本號;接收并解析所述備份端設備102根據所述數據恢復請求發送的數據報文獲得第五數據塊、第一數塊的邏輯地址和移位信息,其中,所述第一數據塊為所述備份端設備102備份的所述快照sx記錄的所述邏輯地址中所述存儲設備101在第n次快照sn后寫入的數據塊;處理器1202,用于根據所述第一數據塊的邏輯地址確定所述存儲設備101存儲的快照sn記錄的第二數據塊,所述第一數據塊為所述第二數據塊的修改塊;解壓縮所述第五數據塊得到第四數據塊;將所述第四數據塊與所述第二數據塊進行邏輯操作得到所述第三數據塊;其中,所述邏輯操作為異或操作或同或操作;根據所述移位信息對所述第三數據塊反向循環移位得到所述第一數據塊;其中,所述移位信息包含所述備份端設備102對所述第一數據塊循環移位得到所述第三數據塊所需要的移位數以及循環移位方向;將所述第一數據塊寫入所述第一數據塊的邏輯地址。
本發明上述實施例中的存儲設備中的接口1201和處理器1202,可以為物理結構,也可為邏輯上的劃分,具體實現中,接口1201的部分功能也可由處理器1202實現,或集成到處理器中(即接口為處理器中一部分)。關于存儲設備的具體功能,可參考前面實施例中源設備101和備份端設備102的功能,在此不再贅述。
如圖13所示,本發明實施例提供了一種存儲設備,用于作為存儲系統中的源設備101,存儲系統還包括源設備101的備份端設備102,可參考圖1所示的存儲系統,所述存儲設備101和所述備份端設備102均存儲有第n次快照sn的數據,n為整數;所述存儲設備101包括確定單元1301,邏輯操作單元1302、壓縮單元1303和發送單元1304。其中,確定單元1301,用于確定第n次快照sn后寫入所述存儲設備101的第一數據塊;根據所述第一數據塊的邏輯地址確定第n次快照sn記錄的第二數據塊;其中,所述第一數據塊是所述第二數據塊的修改塊;邏輯操作單元1302,用于對所述第一數據和所述第二數據塊進行邏輯操作得到第三數據塊;其中,所述邏輯操作為異或操作或同或操作;壓縮單元1303,用于壓縮所述第三數據塊得到第四數據塊;發送單元1304,用于向所述備份端設備102發送攜帶所述第四數據塊、所述第一數據塊的邏輯地址和所述第n次快照sn的版本號的數據報文。可選地,確定單元1301具體用于根據所述第n次快照sn后數據變更日志記錄的寫數據請求攜帶的邏輯地址確定所述第一數據塊。可選地,確定單元1301具體用于進行第x次快照sx操作,比較所述快照sn與快照sx,確定所述第一數據塊;其中,n和x為整數,并且n<x。
如圖14所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的備份端設備102,所述存儲系統還包括備份端設備102的源設備101,可參考圖1所示的存儲系統,所述存儲設備102和所述源設備101均存儲有第n次快照sn的數據,n為整數;所述存儲設備102包括:接收解析單元1401、確定單元1402、解壓縮單元1403、邏輯操作單元1404和寫入單元1405。其中,接收解析單元1401,用于接收并解析所述源設備101發送的數據報文獲得第四數據塊、第一數據塊的邏輯地址和所述第n次快照sn的版本號;確定單元1402,用于根據所述第一數據塊的邏輯地址和所述第n次快照sn的版本號,確定所述快照sn記錄的第二數據塊;其中,所述第一數據塊為所述源設備101在第n次快照sn后寫入的數據塊;所述第一數據塊為所述第二數據塊的修改塊;解壓縮單元1403,用于解壓縮所述第四數據塊得到第三數據塊;邏輯操作單元1404,用于將所述第三數據塊和所述第二數據塊進行邏輯操作得到所述第一數據塊;其中,所述邏輯操作為異或操作或同或操作;寫入單元1405,用于將所述第一數據塊寫入所述第一數據塊的邏輯地址。
如圖15所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的備份端設備102,所述存儲系統還包括備份端設備102的源設備101,可參考圖9所示的存儲系統,所述存儲設備102和所述源設備101均存儲有第n次快照sn的數據,n為整數;所述存儲設備102包括接收解析單元1501、確定單元1502、邏輯操作單元1503、壓縮單元1504和發送單元1505。其中,接收解析單元1501,用于接收并解析所述源設備101發送的數據恢復請求獲得所述快照sn的版本號;確定單元1502,根據所述快照sn的版本號與所述快照sx的版本號確定所述快照sx記錄的第一數據塊;根據所述第一數據塊的邏輯地址和所述快照sn的版本號確定所述快照sn記錄的存儲于所述邏輯地址中的第二數據塊;其中,所述第一數據塊為所述存儲設備102備份的所述快照sx記錄的所述源設備101在第n次快照sn后寫入的數據塊;所述第一數據塊為所述第二數據塊的修改塊;邏輯操作單元1503,用于將所述第一數據塊與所述第二數據塊進行邏輯操作得到第三數據塊;其中,所述邏輯操作為異或操作或同或操作;壓縮單1504元,用于壓縮所述第三數據塊得到第四數據塊;發送單元1505,用于向所述源設備101發送攜帶所述第四數據塊和所述第一數塊的邏輯地址的數據報文。
如圖16所示,本發明實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的源設備101,所述存儲系統還包括源設備101的備份端設備102,可參考圖9所示的存儲系統,所述存儲設備101和所述備份端設備102均存儲有第n次快照sn的數據,n為整數;所述存儲設備包括發送單元1601、接收解析單元1602、確定單元1603、解壓縮單元1604、邏輯操作單元1605和寫入單元1606;其中,發送單元1601,用于向所述備份端設備102發送數據恢復請求;所述數據恢復請求攜帶所述快照sn的版本號;接收解析單元1602,用于接收并解析所述備份端設備102根據所述數據恢復請求發送的數據報文獲得第四數據塊和第一數塊的邏輯地址;所述第一數據塊為所述備份端設備102備份的所述快照sx記錄的所述邏輯地址中所述存儲設備101在第n次快照sn后寫入的數據塊;確定單元1603,用于根據所述第一數據塊的邏輯地址確定存儲設備101存儲的所述快照sn記錄的第二數據塊;所述第一數據塊為所述第二數據塊的修改塊;解壓縮單元1604,用于解壓縮所述第四數據塊得到第三數據塊;邏輯操作單元1605,用于將所述第三數據塊與所述第二數據塊進行邏輯操作得到所述第一數據塊;其中,所述邏輯操作為異或操作或同或操作;寫入單元1606,用于將所述第一數據塊寫入所述第一數據塊的邏輯地址。
如圖13所示,本發明另一實施例提供了一種存儲設備,用于作為存儲系統中的源設備101,存儲系統還包括源設備101的備份端設備102,可參考圖1所示的存儲系統,所述存儲設備101和所述備份端設備102均存儲有第n次快照sn的數據,n為整數;所述存儲設備101還包括移位單元1305;其中,確定單元1301,用于確定第n次快照sn后寫入所述存儲設備101的第一數據塊;根據所述第一數據塊的邏輯地址確定第n次快照sn記錄的第二數據塊;其中,所述第一數據塊是所述第二數據塊的修改塊;確定所述第一數據塊需要循環移位的移位數;移位單元1305,用于根據所述移位數對所述第一數據塊循環移位得到第三數據塊;邏輯操作單元1302,用于將所述第三數據塊和所述第二數據塊進行邏輯操作得到第四數據塊;其中,所述邏輯操作為異或操作或同或操作;壓縮單元1303,用于壓縮所述第四數據塊得到第五數據塊;發送單元1304,用于向所述備份端設備102發送攜帶所述第五數據塊、所述第一數據塊的邏輯地址、移位信息和所述第n次快照sn的版本號的數據報文;其中,所述移位信息包括循環移位方向和所述移位數。可選地,所述存儲設備101配置有如下計算規則:設定n個窗口,對數據塊在每一個窗口中的至少部分數據進行hash計算,其中,每一個窗口的大小相同,第一個窗口的起始位置為所述數據塊的起始位置;最后一個窗口的結束位置等于所述數據塊的結束位置;第i+1個窗口的起始位置與第i個窗口的起始位置相差固定長度;n為整數且不小于2,i為整數,第i個窗口表示第1個至第n個窗口中任一個窗口;所述確定單元1301具體用于:根據所述計算規則對所述第一數據塊在每一個窗口中的至少部分數據進行hash計算,以及對所述第二數據塊在每一個窗口中的至少部分數據進行hash計算;按照hash值設定的順序,從所述第一數據塊的hash值中選擇前m個hash值,從所述第二數據塊的hash值中選擇前m個hash值;m為正整數并且不大于n;查找所述第一數據塊的前m個hash值與所述第二數據塊前m個hash值中相同的hash值,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數。可選地,第i+1個窗口的起始位置與第i個窗口的起始位置相差的固定長度為1位,或多位。可選地,備份端設備按照hash值設定的順序,具體可以按照從小到大的順序或者從大到小的順序。可選地,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數的同時,還可以確定循環移位方向,具體地,當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為正數時,則向左循環移位;當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為負數時,則向右循環移位。
如圖14所示,本發明另一實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的備份端設備102,所述存儲系統還包括備份端設備102的源設備101,可參考圖1所示的存儲系統,所述存儲設備102和所述源設備101均存儲有第n次快照sn的數據,n為整數;所述存儲設備102還包括移位單元1406;其中,接收解析單元1401,用于接收并解析所述源設備101發送的數據報文獲得第五數據塊、第一數據塊的邏輯地址、移位信息和所述第n次快照sn的版本號;確定單元1402,用于根據所述第一數據塊的邏輯地址和所述第n次快照sn的版本號,確定所述快照sn記錄的第二數據塊;其中,所述第一數據塊為所述源設備101在第n次快照sn后寫入的數據塊;所述第一數據塊為所述第二數據塊的修改塊;解壓縮單元1403,用于解壓縮所述第五數據塊得到第四數據塊;邏輯操作單元1404,用于將所述第四數據塊和所述第二數據塊進行邏輯操作得到第三數據塊;其中,所述邏輯操作為異或操作或同或操作;移位單元1406,用于根據所述移位信息對所述第三數據塊進行反向循環移位得到所述第一數據塊;其中,所述移位信息包含所述源設備101對所述第一數據塊循環移位得到所述第三數據塊所需要的移位數以及循環移位方向;寫入單元1406,用于將所述第一數據塊寫入所述第一數據塊的邏輯地址。
如圖15所示,本發明另一實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的備份端設備102,所述存儲系統還包括備份端設備102的源設備101,可參考圖9所示的存儲系統,所述存儲設備102和所述源設備101均存儲有第n次快照sn的數據,n為整數;所述存儲設備102還包括移位單元1506;其中,接收單元1501,用于接收所述源設備101發送的數據恢復請求,所述數據恢復請求中攜帶有所述快照sn的版本號;確定單元1502,用于根據所述快照sn的版本號與所述快照sx的版本號確定所述快照sx記錄的第一數據塊,其中,所述第一數據塊為所述存儲設備102備份的所述快照sx記錄的所述源設備101在第n次快照sn后寫入的數據塊;根據所述第一數據塊的邏輯地址和所述快照sn的版本號確定所述快照sn記錄的存儲于所述邏輯地址中的第二數據塊;確定所述第一數據塊需要循環移位的移位數;移位單元1506,用于根據所述移位數對所述第一數據塊循環移位得到第三數據塊;邏輯操作單元1503,用于將所述第三數據塊和所述第二數據塊進行邏輯操作得到第四數據塊;壓縮單元1504,用于壓縮所述第四數據塊得到第五數據塊;其中,所述邏輯操作為異或操作或同或操作;發送單元1505,用于向所述源設備101發送攜帶所述第五數據塊、所述第一數塊的邏輯地址和移位信息的數據報文;其中,所述移位信息包括循環移位方向和所述移位數。可選地,所述存儲設備102配置有如下計算規則:設定n個窗口,對數據塊在每一個窗口中的至少部分數據進行hash計算,其中,每一個窗口的大小相同,第一個窗口的起始位置為所述數據塊的起始位置;最后一個窗口的結束位置等于所述數據塊的結束位置;第i+1個窗口的起始位置與第i個窗口的起始位置相差固定長度;n為整數且不小于2,i為整數,第i個窗口表示第1個至第n個窗口中任一個窗口;所述確定單元1502具體用于:根據所述計算規則對所述第一數據塊在每一個窗口中的至少部分數據進行hash計算,以及對所述第二數據塊在每一個窗口中的至少部分數據進行hash計算;按照hash值設定的順序,從所述第一數據塊的hash值中選擇前m個hash值,從所述第二數據塊的hash值中選擇前m個hash值;m為正整數并且不大于n;查找所述第一數據塊的前m個hash值與所述第二數據塊前m個hash值中相同的hash值,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數。可選地,第i+1個窗口的起始位置與第i個窗口的起始位置相差的固定長度為1位,或多位。可選地,備份端設備按照hash值設定的順序,具體可以按照從小到大的順序或者從大到小的順序。可選地,確定所述相同的hash值對應的兩個窗口的偏移之差為所述移位數的同時,還可以確定循環移位方向,具體地,當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為正數時,則向左循環移位;當第一數據塊中相同hash值對應的窗口的偏移減去第二數據塊中相同hash值對應的窗口偏移為負數時,則向右循環移位。
如圖16所示,本發明另實施例提供了一種存儲設備,所述存儲設備用于作為存儲系統中的源設備101,所述存儲系統還包括源設備101的備份端設備102,可參考圖9所示的存儲系統,所述存儲設備101和所述備份端設備102均存儲有第n次快照sn的數據,n為整數;所述存儲設備101還包括移位單元1607;其中,發送單元1601,用于向所述備份端設備發送數據恢復請求;所述數據恢復請求攜帶所述快照sn的版本號;接收解析單元1602,用于接收并解析所述備份端設備102根據所述數據恢復請求發送的數據報文獲得第五數據塊、第一數塊的邏輯地址和移位信息,其中,所述第一數據塊為所述備份端設備102備份的所述快照sx記錄的所述邏輯地址中所述存儲設備101在第n次快照sn后寫入的數據塊;確定單元1603,用于根據所述第一數據塊的邏輯地址確定所述存儲設備101存儲的快照sn記錄的第二數據塊,所述第一數據塊為所述第二數據塊的修改塊;解壓縮單元1604,用于解壓縮所述第五數據塊得到第四數據塊;邏輯操作單元1605,用于將所述第四數據塊與所述第二數據塊進行邏輯操作得到所述第三數據塊;其中,所述邏輯操作為異或操作或同或操作;移位單元1607,用于根據所述移位信息對所述第三數據塊反向循環移位得到所述第一數據塊;其中,所述移位信息包含所述備份端設備102對所述第一數據塊循環移位得到所述第三數據塊所需要的移位數以及循環移位方向;寫入單元1606,用于將所述第一數據塊寫入所述第一數據塊的邏輯地址。
本發明實施例圖13-16所示的存儲設備,以圖13為例,存儲設備包括確定單元1301,邏輯操作單元1302、壓縮單元1303和發送單元1304,一種實現方式為存儲設備安裝上有述單元,上述單元可被加載到存儲設備的內存中,由存儲設備的中央處理單元執行同存中的指令,實現本發明對應的實施例中的功能;另一種實現,存儲設備中包含的單元可以由硬件來實現,或者由軟件與硬件組合實現。上述單元也稱為結構單元。
本發明實施例中存儲設備作為存儲系統中的源設備或備份端設備,是指該存儲設備可以執行存儲系統中源設備或備份端設備的功能,可以與源設備或備份設備具有同樣的結構。也就是可以將存儲系統中的源設備或備份端設備稱為一種存儲設備。
本發明實施例,還提供了非易失性計算機可讀存儲介質和計算機程序產品,當圖1、圖9、圖10、圖11和圖12所示的設備的內存加載非易失性計算機可讀存儲介質和計算機程序產品中包含的計算機指令,,cpu執行內存中中加載的該計算機指令,以實現本發明各實施中對應的功能。
在本發明所提供的幾個實施例中,應該理解到,所公開的裝置、方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。