本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其是涉及一種數(shù)據(jù)存儲(chǔ)與恢復(fù)架構(gòu)與方法。
背景技術(shù):
持續(xù)數(shù)據(jù)保護(hù)技術(shù)是對(duì)傳統(tǒng)數(shù)據(jù)備份技術(shù)的一次革命性的重大突破。傳統(tǒng)的數(shù)據(jù)備份解決方案專注在對(duì)數(shù)據(jù)的周期性備份上,因此一直伴隨有備份窗口、數(shù)據(jù)一致性以及對(duì)生產(chǎn)系統(tǒng)的影響等問題?,F(xiàn)在,持續(xù)數(shù)據(jù)保護(hù)為用戶提供了新的數(shù)據(jù)保護(hù)手段,系統(tǒng)管理者無須關(guān)注數(shù)據(jù)的備份過程,而且僅僅當(dāng)災(zāi)難發(fā)生后,簡(jiǎn)單地選擇需要恢復(fù)到的時(shí)間點(diǎn)即可實(shí)現(xiàn)數(shù)據(jù)的快速恢復(fù)。
一種持續(xù)數(shù)據(jù)保護(hù)技術(shù)是按照一定的時(shí)間頻率,持續(xù)的記錄并備份數(shù)據(jù)變化,每次備份有一定時(shí)間窗口,需要數(shù)據(jù)恢復(fù)時(shí),可以恢復(fù)到過去備份的時(shí)間點(diǎn)。
另一種持續(xù)數(shù)據(jù)保護(hù)技術(shù)是持續(xù)不間斷的監(jiān)控并備份數(shù)據(jù)變化,可以恢復(fù)到過去任意時(shí)間點(diǎn),是真正的實(shí)時(shí)備份。
第三種持續(xù)數(shù)據(jù)保護(hù)技術(shù)對(duì)磁盤數(shù)據(jù)塊的每個(gè)寫操作,生成一個(gè)元數(shù)據(jù)記錄該寫操作的元數(shù)據(jù),并將該元數(shù)據(jù)作為一個(gè)鏈表節(jié)點(diǎn),該節(jié)點(diǎn)中除了包含數(shù)據(jù)塊的塊號(hào)以外,還設(shè)置前向鏈接,上行鏈接,下行鏈接。在此基礎(chǔ)上,構(gòu)造出二叉樹。并以二叉樹和元數(shù)據(jù)節(jié)點(diǎn)為基礎(chǔ),進(jìn)行快照和恢復(fù)。
第一種技術(shù)方案中,只能通過備份點(diǎn)進(jìn)行恢復(fù),而不能恢復(fù)到任意一個(gè)時(shí)刻,從而不能做到到真正的連續(xù)數(shù)據(jù)保護(hù)。
第二種和第三種技術(shù)方案中,可以達(dá)到恢復(fù)至任意一個(gè)時(shí)刻,但是第二種技術(shù)普遍遇到數(shù)據(jù)不斷增加所帶來的存儲(chǔ)和合并難題;第三種技術(shù)通過二叉樹索引技術(shù)對(duì)數(shù)據(jù)的存儲(chǔ)量有一定的減少,但是無法解決云平臺(tái)環(huán)境中,海量的塊設(shè)備,每個(gè)塊設(shè)備海量隨機(jī)io寫以及高吞吐io所帶來海量存儲(chǔ)量問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就是為應(yīng)對(duì)云平臺(tái)環(huán)境中海量的塊設(shè)備海量隨機(jī)io寫以及高吞吐io所帶來海量存儲(chǔ)量問題,提供的一種數(shù)據(jù)存儲(chǔ)與恢復(fù)架構(gòu)與方法。
為實(shí)現(xiàn)上述目的,本發(fā)明提出一種數(shù)據(jù)存儲(chǔ)與恢復(fù)架構(gòu),其特征在于,包括通過網(wǎng)絡(luò)相互連接的塊設(shè)備與云端設(shè)備;所述的云端設(shè)備分為接入存儲(chǔ)層,歸檔存儲(chǔ)層和元數(shù)據(jù)服務(wù)層;所述的接入存儲(chǔ)層執(zhí)行塊設(shè)備的寫入操作,采用固態(tài)硬盤,所述的歸檔存儲(chǔ)層定期從接入存儲(chǔ)層拉取和存儲(chǔ)新增實(shí)時(shí)數(shù)據(jù),采用低速硬盤;所述的元數(shù)據(jù)服務(wù)層用于存儲(chǔ)索引信息。
所述的接入存儲(chǔ)層執(zhí)行塊設(shè)備的寫入操作,采用5元組方式;5元組包括:寫的起始地址、寫的大小、寫的數(shù)據(jù)、寫的順序編號(hào)、寫的時(shí)間戳。
所述的歸檔存儲(chǔ)層定期從接入存儲(chǔ)層拉取和存儲(chǔ)新增實(shí)時(shí)數(shù)據(jù),包括以下步驟:
301.歸檔存儲(chǔ)層判斷拉取的實(shí)時(shí)數(shù)據(jù)的時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間粒度,若是,則執(zhí)行步驟302;若否,則繼續(xù)拉取實(shí)時(shí)數(shù)據(jù);
302.歸檔存儲(chǔ)層按照預(yù)設(shè)的數(shù)據(jù)塊大小和時(shí)間順序?qū)?shí)時(shí)數(shù)據(jù)進(jìn)行分割,分割成多份獨(dú)立的數(shù)據(jù)塊,并按時(shí)間順序排序;預(yù)設(shè)的數(shù)據(jù)塊大小為塊設(shè)備的寫入操作最小單位的倍數(shù);
303.歸檔存儲(chǔ)層對(duì)所述獨(dú)立數(shù)據(jù)塊進(jìn)行編碼,生成獨(dú)立數(shù)據(jù)塊的編碼,編碼分為兩部分,第一部分為位圖編碼,位圖編碼的位數(shù)為所述寫入操作最小單位倍數(shù);第二部分為獨(dú)立數(shù)據(jù)塊的實(shí)際數(shù)據(jù);實(shí)際數(shù)據(jù)由多個(gè)大小為寫入操作最小單位的數(shù)據(jù)組成;若位圖編碼中的某位的值為1,則實(shí)際數(shù)據(jù)包含該位對(duì)應(yīng)的實(shí)際寫入操作數(shù)據(jù);若為位圖編碼中的某位的值為0,則該位無對(duì)應(yīng)的實(shí)際寫入操作數(shù)據(jù);
304.歸檔存儲(chǔ)層按預(yù)設(shè)的時(shí)間粒度和寫的順序編號(hào)對(duì)獨(dú)立數(shù)據(jù)塊的編碼進(jìn)行合并;若寫的順序編號(hào)大的獨(dú)立數(shù)據(jù)塊編碼中位圖編碼的某位的值為1,合并完成的獨(dú)立數(shù)據(jù)塊的編碼中的位圖編碼該位的值為1,并且該位所對(duì)應(yīng)的實(shí)際數(shù)據(jù)為寫的順序編號(hào)大的獨(dú)立數(shù)據(jù)塊的編碼的實(shí)際數(shù)據(jù);若寫的順序編號(hào)大的獨(dú)立數(shù)據(jù)塊的編碼中位圖編碼的某位的值為0,則只有寫的順序編號(hào)小的獨(dú)立數(shù)據(jù)塊的位圖編碼中的該位得值為1時(shí),合并完成的獨(dú)立數(shù)據(jù)塊的編碼的位圖編碼該位的值為1,并且該位所對(duì)應(yīng)的實(shí)際數(shù)據(jù)為寫的順序編號(hào)小的獨(dú)立數(shù)據(jù)塊的編碼的實(shí)際數(shù)據(jù);
305.歸檔存儲(chǔ)層按塊設(shè)備的尋址范圍對(duì)合并完成的數(shù)據(jù)塊的編碼進(jìn)行分片,每個(gè)分片的尋址范圍為預(yù)設(shè)的數(shù)據(jù)塊大小的倍數(shù),同一個(gè)分片包含多個(gè)獨(dú)立數(shù)據(jù)塊的編碼,分片分布于不同的云端存儲(chǔ)設(shè)備中;
306.歸檔存儲(chǔ)層對(duì)塊設(shè)備的寫入數(shù)據(jù)生成兩級(jí)索引,第一級(jí)索引包括塊設(shè)備標(biāo)識(shí),及該塊設(shè)備的數(shù)據(jù)塊的編碼的所有的時(shí)間粒度,其中塊設(shè)備標(biāo)識(shí)為鍵值;第二級(jí)索引包括塊設(shè)備標(biāo)識(shí),一個(gè)時(shí)間粒度和該時(shí)間粒度對(duì)應(yīng)的所有分片的存儲(chǔ)位置,其中塊設(shè)備標(biāo)識(shí)與時(shí)間粒度為鍵值。
所述的歸檔存儲(chǔ)層對(duì)塊設(shè)備的寫入數(shù)據(jù)生成兩級(jí)索引,兩級(jí)索引信息存儲(chǔ)于元數(shù)據(jù)服務(wù)層。
一種數(shù)據(jù)存儲(chǔ)與恢復(fù)方法,其特征在于:具體包括以下步驟;
501.用戶通過交互方式選擇塊設(shè)備需要恢復(fù)數(shù)據(jù)的時(shí)間點(diǎn);
502.歸檔存儲(chǔ)層根據(jù)時(shí)間點(diǎn)和塊設(shè)備的標(biāo)識(shí)從一級(jí)索引查詢到該塊設(shè)備恢復(fù)到該時(shí)間點(diǎn)所需的所有的時(shí)間粒度;
503.歸檔存儲(chǔ)層根據(jù)塊設(shè)備標(biāo)識(shí),以及時(shí)間粒度,從二級(jí)索引查詢到該時(shí)間粒度對(duì)應(yīng)的所有分片的存儲(chǔ)位置;
504.歸檔存儲(chǔ)層將所有分片內(nèi)的獨(dú)立數(shù)據(jù)塊的編碼進(jìn)行合并;
505.歸檔存儲(chǔ)層將合并好的數(shù)據(jù)傳輸至塊設(shè)備。
與現(xiàn)有技術(shù)相比,本發(fā)明的效果是積極明顯的,具體地:
本發(fā)明將數(shù)據(jù)通過網(wǎng)絡(luò)從數(shù)據(jù)塊發(fā)送到云端設(shè)備。云端設(shè)備可以對(duì)數(shù)據(jù)進(jìn)行分割,再次編碼,合并形成任意時(shí)間粒度的數(shù)據(jù)。將任意時(shí)間粒度的數(shù)據(jù)按塊設(shè)備的尋址范圍進(jìn)行分片,從而可以將數(shù)據(jù)分布于多個(gè)存儲(chǔ)設(shè)備中。在恢復(fù)數(shù)據(jù)時(shí),可根據(jù)索引獲取任意恢復(fù)時(shí)刻所需要的所有時(shí)間粒度的數(shù)據(jù)塊數(shù)據(jù),可隨時(shí)將分片內(nèi)的獨(dú)立數(shù)據(jù)塊的編碼進(jìn)行合并。生成任意恢復(fù)時(shí)刻對(duì)應(yīng)的所有數(shù)據(jù)。云端設(shè)備將存儲(chǔ)層分為接入存儲(chǔ)層和歸檔存儲(chǔ)層,采用固態(tài)硬盤的接入存儲(chǔ)層可以很有效地應(yīng)對(duì)海量隨機(jī)io寫帶來的性能問題。歸檔存儲(chǔ)層及分片方式可以很有效的應(yīng)對(duì)高吞吐io所帶來海量存儲(chǔ)量問題。
附圖說明
圖1為本發(fā)明的結(jié)構(gòu)示意圖;
圖2為本發(fā)明的接入存儲(chǔ)層寫操作5元組示意圖;
圖3為本發(fā)明歸檔儲(chǔ)存層拉取實(shí)時(shí)數(shù)據(jù)進(jìn)行合并的流程圖;
圖4為本發(fā)明的對(duì)實(shí)時(shí)數(shù)據(jù)分割成獨(dú)立的數(shù)據(jù)塊的示意圖;
圖5為本發(fā)明歸檔儲(chǔ)存層對(duì)獨(dú)立數(shù)據(jù)塊編碼進(jìn)行合并的示意圖;
圖6為本發(fā)明歸檔存儲(chǔ)層對(duì)數(shù)據(jù)塊編碼進(jìn)行分片的示意圖;
圖7為本發(fā)明中歸檔存儲(chǔ)層生成的兩級(jí)索引的示意圖;
圖8為本發(fā)明數(shù)據(jù)恢復(fù)方法的流程圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
如圖1所示,一種數(shù)據(jù)存儲(chǔ)與恢復(fù)架構(gòu),其特征在于,包括通過網(wǎng)絡(luò)相互連接的塊設(shè)備與云端設(shè)備;所述的云端設(shè)備分為接入存儲(chǔ)層,歸檔存儲(chǔ)層和元數(shù)據(jù)服務(wù)層;所述的接入存儲(chǔ)層執(zhí)行塊設(shè)備的寫入操作,采用固態(tài)硬盤,所述的歸檔存儲(chǔ)層定期從接入存儲(chǔ)層拉取和存儲(chǔ)新增實(shí)時(shí)數(shù)據(jù),采用低速硬盤;所述的元數(shù)據(jù)服務(wù)層用于存儲(chǔ)索引信息。
如圖2所示,接入存儲(chǔ)層執(zhí)行塊設(shè)備的寫入操作,采用5元組方式,5元組包括:寫的起始地址、寫的大小、寫的數(shù)據(jù)、寫的順序編號(hào)、寫的時(shí)間戳。本實(shí)施例的5元組分別為:
寫的起始地址:5120
寫的大小:10240
寫的數(shù)據(jù):[a1a2a3a4a5a6a7a8a9a10a12a13a14a15a16]
寫的順序編號(hào):1
寫的時(shí)間戳:1501083462
如圖3所示,所述的歸檔存儲(chǔ)層定期從接入存儲(chǔ)層拉取和存儲(chǔ)新增實(shí)時(shí)數(shù)據(jù),包括以下步驟;
301.歸檔存儲(chǔ)層判斷拉取的實(shí)時(shí)數(shù)據(jù)的時(shí)間間隔是否滿足預(yù)設(shè)的時(shí)間粒度,若是,則執(zhí)行步驟302;若否,則繼續(xù)拉取實(shí)時(shí)數(shù)據(jù);
302.圖4示出了本發(fā)明中歸檔儲(chǔ)存層如何按照預(yù)設(shè)的數(shù)據(jù)塊大小將實(shí)時(shí)數(shù)據(jù)分割成多份獨(dú)立的數(shù)據(jù)塊,歸檔存儲(chǔ)層按照預(yù)設(shè)的數(shù)據(jù)塊大小對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行分割,分割成多份獨(dú)立的數(shù)據(jù)塊,并按寫的順序編號(hào)排序;預(yù)設(shè)的數(shù)據(jù)塊大小為塊設(shè)備的寫入操作最小單位的倍數(shù);
303.歸檔存儲(chǔ)層對(duì)所述獨(dú)立數(shù)據(jù)塊進(jìn)行編碼,生成獨(dú)立數(shù)據(jù)塊的編碼,編碼分為兩部分,第一部分為位圖編碼,位圖編碼的位數(shù)為所述寫入操作最小單位倍數(shù);第二部分為獨(dú)立數(shù)據(jù)塊的實(shí)際數(shù)據(jù);實(shí)際數(shù)據(jù)由多個(gè)大小為寫入操作最小單位的數(shù)據(jù)組成;若位圖編碼中的某位的值為1,則實(shí)際數(shù)據(jù)包含該位對(duì)應(yīng)的實(shí)際寫入操作數(shù)據(jù);若為位圖編碼中的某位的值為0,則該位無對(duì)應(yīng)的實(shí)際寫入操作數(shù)據(jù);
本實(shí)施例中獨(dú)立數(shù)據(jù)塊的大小設(shè)定為4096,則上述5元組可被分割和編碼為:
順序編號(hào):1,起始地址:4096,位圖:00001111,實(shí)際數(shù)據(jù)[a1a2a3a4]
順序編號(hào):1,起始地址:8192,位圖:11111111,實(shí)際數(shù)據(jù)[a5a6a7a8a9a10a11a12]
順序編號(hào):1起始地址:12288,位圖:11110000,實(shí)際數(shù)據(jù)[a13a14a15a16];
304.如圖5所示,歸檔存儲(chǔ)層按預(yù)設(shè)的時(shí)間粒度和寫的順序編號(hào)對(duì)獨(dú)立數(shù)據(jù)塊的編碼進(jìn)行合并;若寫的順序編號(hào)大的獨(dú)立數(shù)據(jù)塊編碼中位圖編碼的某位的值為1,合并完成的獨(dú)立數(shù)據(jù)塊的編碼中的位圖編碼該位的值為1,并且該位所對(duì)應(yīng)的實(shí)際數(shù)據(jù)為寫的順序編號(hào)大的獨(dú)立數(shù)據(jù)塊的編碼的實(shí)際數(shù)據(jù);若寫的順序編號(hào)大的獨(dú)立數(shù)據(jù)塊的編碼中位圖編碼的某位的值為0,則只有寫的順序編號(hào)小的獨(dú)立數(shù)據(jù)塊的位圖編碼中的該位得值為1時(shí),合并完成的獨(dú)立數(shù)據(jù)塊的編碼的位圖編碼該位的值為1,并且該位所對(duì)應(yīng)的實(shí)際數(shù)據(jù)為寫的順序編號(hào)小的獨(dú)立數(shù)據(jù)塊的編碼的實(shí)際數(shù)據(jù)。
本實(shí)施例中,多個(gè)獨(dú)立數(shù)據(jù)塊編碼如下:
順序編號(hào):1,起始地址:4096,位圖:00001111,實(shí)際數(shù)據(jù)[a1a2a3a4]
順序編號(hào):1,起始地址:8192,位圖:11111111,實(shí)際數(shù)據(jù)[a5a6a7a8a9a10a11a12]
順序編號(hào):1,起始地址:12288,位圖:11110000,實(shí)際數(shù)據(jù)[a13a14a15a16]
順序編號(hào):2,起始地址:4096,位圖:00000011,實(shí)際數(shù)據(jù)[b3b4]
順序編號(hào):2,起始地址:8192,位圖:11111111,實(shí)際數(shù)據(jù)[b5b6b7b8b9b10];
按步驟304,合并后的獨(dú)立數(shù)據(jù)塊編碼如下:
順序編號(hào):2,起始地址:4096,位圖:00001111,實(shí)際數(shù)據(jù)[a1a2b3b4]
順序編號(hào):2,起始地址:8192,位圖:11111111,實(shí)際數(shù)據(jù)[b5b6b7b8b9b10a11a12]
順序編號(hào):2,起始地址:12288,位圖:11110000,實(shí)際數(shù)據(jù)[a13a14a15a16];
305.如圖6所示,歸檔存儲(chǔ)層按塊設(shè)備的尋址范圍對(duì)合并完成的數(shù)據(jù)塊的編碼進(jìn)行分片,每個(gè)分片的尋址范圍為預(yù)設(shè)的數(shù)據(jù)塊大小的倍數(shù),同一個(gè)分片包含多個(gè)獨(dú)立數(shù)據(jù)塊的編碼,分片分布于不同的云端存儲(chǔ)設(shè)備中;
本實(shí)施例中塊設(shè)備的尋址范圍為1t,每個(gè)分片的尋址范圍為1g,則可分為1024的分片,第1個(gè)分片的尋址范圍是0-1g,第2個(gè)分片的尋址范圍是1-2g,第1024個(gè)分片的尋址范圍是1023-1024g;
306.如圖7所示,歸檔存儲(chǔ)層對(duì)塊設(shè)備的寫入數(shù)據(jù)生成兩級(jí)索引,第一級(jí)索引包括塊設(shè)備標(biāo)識(shí),及該塊設(shè)備的數(shù)據(jù)塊的編碼的所有的時(shí)間粒度,其中塊設(shè)備標(biāo)識(shí)為鍵值;第二級(jí)索引包括塊設(shè)備標(biāo)識(shí),一個(gè)時(shí)間粒度和該時(shí)間粒度對(duì)應(yīng)的所有分片的存儲(chǔ)位置,其中塊設(shè)備標(biāo)識(shí)與時(shí)間粒度為鍵值。
所述的歸檔存儲(chǔ)層對(duì)塊設(shè)備的寫入數(shù)據(jù)生成兩級(jí)索引,存儲(chǔ)于元數(shù)據(jù)服務(wù)層。
如圖8所示,一種數(shù)據(jù)存儲(chǔ)與恢復(fù)方法,其特征在于:具體包括以下步驟;
步驟501.用戶通過交互方式選擇塊設(shè)備需要恢復(fù)數(shù)據(jù)的時(shí)間點(diǎn);
步驟502.歸檔存儲(chǔ)層根據(jù)時(shí)間點(diǎn)和塊設(shè)備的標(biāo)識(shí)從一級(jí)索引查詢到該塊設(shè)備恢復(fù)到該時(shí)間點(diǎn)所需的所有的時(shí)間粒度;
步驟503.歸檔存儲(chǔ)層根據(jù)塊設(shè)備標(biāo)識(shí),以及時(shí)間粒度,從二級(jí)索引查詢到該時(shí)間粒度對(duì)應(yīng)的所有分片的存儲(chǔ)位置;
步驟504.歸檔存儲(chǔ)層將所有分片內(nèi)的獨(dú)立數(shù)據(jù)塊的編碼進(jìn)行合并;
步驟505.歸檔存儲(chǔ)層將合并好的數(shù)據(jù)傳輸至塊設(shè)備。
當(dāng)然,上述說明并非是對(duì)本發(fā)明的限制,本發(fā)明也并不僅限于上述舉例,本技術(shù)領(lǐng)域的普通技術(shù)人員在本發(fā)明的實(shí)質(zhì)范圍內(nèi)做出的變化、改型、添加或替換,也應(yīng)屬于本發(fā)明的保護(hù)范圍。