一種數(shù)據(jù)存儲(chǔ)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其是涉及一種數(shù)據(jù)存儲(chǔ)方法及裝置。
【背景技術(shù)】
[0002]分布式數(shù)據(jù)存儲(chǔ)系統(tǒng),是由分布于多個(gè)計(jì)算機(jī)節(jié)點(diǎn)的若干個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)組成。其中,分布于多個(gè)計(jì)算機(jī)節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)系統(tǒng),又可以稱之為數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)。
[0003]在分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,通常采用數(shù)據(jù)備份的方式來保證數(shù)據(jù)存儲(chǔ)的可靠性。其中,作為備份存儲(chǔ)的數(shù)據(jù)可以稱之為副本。一般情況下,分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)采用多副本的方式來保證數(shù)據(jù)存儲(chǔ)的可靠性。例如,采用2副本或者3副本技術(shù),其實(shí)現(xiàn)方式為將提供給用戶使用的存儲(chǔ)卷劃分成固定大小的數(shù)據(jù)塊。對(duì)于數(shù)據(jù)塊,系統(tǒng)會(huì)在不同的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上保留固定數(shù)量的數(shù)據(jù)副本。隨著技術(shù)的不斷發(fā)展,數(shù)據(jù)消冗技術(shù)出現(xiàn)在分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,其主要方法類似于數(shù)據(jù)壓縮技術(shù),分別以不同長(zhǎng)度來查找和比對(duì)某個(gè)存儲(chǔ)卷內(nèi)的數(shù)據(jù),壓縮數(shù)據(jù)存儲(chǔ)空間。對(duì)于重復(fù)的數(shù)據(jù)塊只保留I份,以節(jié)省存儲(chǔ)空間。
[0004]現(xiàn)有的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)一般采用固定的數(shù)據(jù)副本(如:2或3副本),不支持?jǐn)?shù)據(jù)副本數(shù)量的增加和減少。一旦系統(tǒng)運(yùn)行后,則不再支持副本變化。其主要缺點(diǎn)是對(duì)于數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)的訪問次數(shù)較少的冷數(shù)據(jù),需要同樣占用多副本存儲(chǔ)空間,使得無法騰出較多的存儲(chǔ)空間給數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)的訪問次數(shù)較多的熱點(diǎn)數(shù)據(jù)使用,造成存儲(chǔ)空間的有效利用率較低。另外,對(duì)于數(shù)據(jù)的備份操作,需要從在線的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上讀取數(shù)據(jù),這樣會(huì)對(duì)正常業(yè)務(wù)操作產(chǎn)生一定影響和干擾。
[0005]綜上所述,在分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,存儲(chǔ)空間的有效利用率較低,且從在線的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上讀取數(shù)據(jù),對(duì)正常業(yè)務(wù)操作產(chǎn)生一定影響和干擾。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)方法及裝置,能夠較好地解決在分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,存儲(chǔ)空間的有效利用率較低,且從在線的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上讀取數(shù)據(jù),對(duì)正常業(yè)務(wù)操作產(chǎn)生一定影響和干擾的問題。
[0007]—種數(shù)據(jù)存儲(chǔ)方法,包括:在分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,若確定出數(shù)據(jù)塊中的數(shù)據(jù)是冷數(shù)據(jù)時(shí),接收并備份存儲(chǔ)所述冷數(shù)據(jù);根據(jù)備份存儲(chǔ)的所述冷數(shù)據(jù),在確定出數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中至少有兩個(gè)和所述冷數(shù)據(jù)相同的數(shù)據(jù)塊時(shí),保留其中一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中的數(shù)據(jù)塊;并指示分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中的各數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)共享保留的數(shù)據(jù)塊。
[0008]一種數(shù)據(jù)存儲(chǔ)裝置,包括:接收模塊,用于在分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,若確定出數(shù)據(jù)塊中的數(shù)據(jù)是冷數(shù)據(jù)時(shí),接收并備份存儲(chǔ)所述冷數(shù)據(jù);存儲(chǔ)模塊,用于根據(jù)備份存儲(chǔ)的所述冷數(shù)據(jù),在確定出數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中至少有兩個(gè)和所述冷數(shù)據(jù)相同的數(shù)據(jù)塊時(shí),保留其中一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中的數(shù)據(jù)塊;指示模塊,用于指示分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中的各數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)共享保留的數(shù)據(jù)塊。
[0009]采用上述技術(shù)方案,對(duì)于數(shù)據(jù)存儲(chǔ)操作,首先區(qū)分冷熱數(shù)據(jù),進(jìn)而對(duì)冷數(shù)據(jù)進(jìn)行相應(yīng)的處理,這樣,可以降低備份操作對(duì)在線數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的性能影響。能夠較好地解決在分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,存儲(chǔ)空間的有效利用率較低,且從在線的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上讀取數(shù)據(jù),對(duì)正常業(yè)務(wù)操作產(chǎn)生一定影響和干擾的問題。
【附圖說明】
[0010]圖1為本發(fā)明實(shí)施例中,提出的一種數(shù)據(jù)存儲(chǔ)方法流程圖;
[0011]圖2為本發(fā)明實(shí)施例中,提出的對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行讀操作方法流程圖;
[0012]圖3為本發(fā)明實(shí)施例中,提出的對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行寫操作方法流程圖;
[0013]圖4為本發(fā)明實(shí)施例中,提出的一種數(shù)據(jù)存儲(chǔ)裝置結(jié)構(gòu)組成示意圖。
【具體實(shí)施方式】
[0014]下面將結(jié)合各個(gè)附圖對(duì)本發(fā)明實(shí)施例技術(shù)方案的主要實(shí)現(xiàn)原理、【具體實(shí)施方式】及其對(duì)應(yīng)能夠達(dá)到的有益效果進(jìn)行詳細(xì)地闡述。
[0015]本發(fā)明實(shí)施例提出一種數(shù)據(jù)存儲(chǔ)方法,如圖1所示,其具體處理流程如下述:
[0016]步驟11,在分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,確定數(shù)據(jù)塊中的數(shù)據(jù)是否是冷數(shù)據(jù),如果判斷結(jié)果為是,執(zhí)行步驟12,反之結(jié)束處理。
[0017]在第一設(shè)定時(shí)長(zhǎng)內(nèi),確定數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)塊的訪問頻率和值,并確定每個(gè)數(shù)據(jù)塊的訪問頻率,若單個(gè)數(shù)據(jù)塊的訪問頻率和訪問頻率和值的比值小于第一設(shè)定閾值時(shí),確定所述數(shù)據(jù)塊中的數(shù)據(jù)是冷數(shù)據(jù)。
[0018]本發(fā)明實(shí)施例提出的技術(shù)方案中,分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,包括至少一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),以及包括至少一個(gè)預(yù)備份存儲(chǔ)節(jié)點(diǎn)。其中在數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中,存儲(chǔ)有數(shù)據(jù)塊(英文:Chunk)的元數(shù)據(jù)對(duì)象記錄數(shù)據(jù)塊副本的數(shù)量和地址信息。預(yù)備份存儲(chǔ)節(jié)點(diǎn)用于存儲(chǔ)冷數(shù)據(jù)。
[0019]其中,在每個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中通過大規(guī)模數(shù)組記錄所有數(shù)據(jù)塊的讀寫次數(shù)。較佳地,本發(fā)明實(shí)施提出的技術(shù)方案中,可以周期性地統(tǒng)計(jì)所有數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上所有數(shù)據(jù)塊的讀寫次數(shù)。對(duì)于相同數(shù)據(jù)塊的不同副本,本發(fā)明實(shí)施例提出的技術(shù)方案中,累加其所有副本的讀寫次數(shù)。
[0020]一種較佳地實(shí)現(xiàn)方式,本發(fā)明實(shí)施例提出的技術(shù)方案中,對(duì)于數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)的訪問次數(shù)高于一定比例的數(shù)據(jù)塊(例如大于20%),將這部分?jǐn)?shù)據(jù)塊標(biāo)記為熱數(shù)據(jù)。而對(duì)于數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)的訪問次數(shù)低于一定比例的數(shù)據(jù)塊(例如:60%),將這部分?jǐn)?shù)據(jù)塊Chunk標(biāo)記為冷數(shù)據(jù)。
[0021]步驟12,若確定出數(shù)據(jù)塊中的數(shù)據(jù)是冷數(shù)據(jù)時(shí),接收并備份存儲(chǔ)冷數(shù)據(jù)。
[0022]步驟13,根據(jù)備份存儲(chǔ)的冷數(shù)據(jù),在確定出數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中至少有兩個(gè)和冷數(shù)據(jù)相同的數(shù)據(jù)塊時(shí),保留其中一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中的數(shù)據(jù)塊。
[0023]步驟14,指示分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中的各數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)共享保留的數(shù)據(jù)塊。
[0024]在上述步驟11?步驟14中,可以周期性地將冷數(shù)據(jù)復(fù)制到預(yù)備份存儲(chǔ)節(jié)點(diǎn)中。預(yù)備份存儲(chǔ)節(jié)點(diǎn)可以查找和比對(duì)接收到冷數(shù)據(jù)塊的內(nèi)容。對(duì)于相同的數(shù)據(jù)塊只保留一份,并且發(fā)送指令,來使得在線的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)共享該數(shù)據(jù)塊,從而達(dá)到釋放存儲(chǔ)空間和數(shù)據(jù)副本消冗的目的。
[0025]較佳地,本發(fā)明實(shí)施例提出的技術(shù)方案中,統(tǒng)計(jì)的周期可以設(shè)置為數(shù)小時(shí)。例如可以是3個(gè)小時(shí),或者4個(gè)小時(shí)等等。每個(gè)統(tǒng)計(jì)周期之后,可以將所有數(shù)據(jù)塊的讀寫計(jì)數(shù)下調(diào)一定比例,(例如:30%)??梢允沟脭?shù)據(jù)塊的讀寫次數(shù)信息能夠更準(zhǔn)確地反映近期的數(shù)據(jù)讀寫負(fù)載狀態(tài)。此外,本發(fā)明實(shí)施例提出的技術(shù)方案中,在對(duì)分布式存儲(chǔ)系統(tǒng)中的數(shù)據(jù)進(jìn)行讀或?qū)懙牟僮鬟^程中,僅需要額外更新數(shù)據(jù)塊的引用計(jì)數(shù)或訪問計(jì)數(shù),開銷小,不影響正常讀寫操作。
[0026]在上述步驟14指示分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中的各數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)共享保留的數(shù)據(jù)塊之后,還包括對(duì)分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中的數(shù)據(jù)進(jìn)行讀操作和寫操作的具體處理方式,其中,對(duì)分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中的數(shù)據(jù)進(jìn)行讀操作的具體處理流程如下述:
[0027]步驟一,接收對(duì)保留的數(shù)據(jù)塊中的數(shù)據(jù)進(jìn)行讀操作的第一操作指令。
[0028]步驟二,在進(jìn)行讀操作成功之后,更新所述保留的數(shù)據(jù)塊對(duì)應(yīng)的訪問頻率。
[0029]可以增加該保留的數(shù)據(jù)塊對(duì)應(yīng)的讀操作計(jì)數(shù)。
[0030]其中,對(duì)保留的數(shù)據(jù)塊中的數(shù)據(jù)進(jìn)行讀操作,具體如圖2所示,可以包括下述步驟:
[0031]步驟211:根據(jù)接收到的第一操作指令,確定待進(jìn)行讀操作的數(shù)據(jù)塊。
[0032]步驟212:根據(jù)待進(jìn)行讀操作的數(shù)據(jù)塊的邏輯地址,查找和待進(jìn)行讀操作的數(shù)據(jù)塊副本和存儲(chǔ)副本的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)。
[0033]其中,可以在接收到進(jìn)行讀操作的第一操作指令時(shí),根據(jù)數(shù)據(jù)讀操作所在的數(shù)據(jù)卷、邏輯地址偏移量和長(zhǎng)度,計(jì)算第一操作指令對(duì)應(yīng)的數(shù)據(jù)塊列表。
[0034]步驟213,判斷是否所有的數(shù)據(jù)塊均處理完成,如果判斷結(jié)果為是,執(zhí)行步驟219,反之,執(zhí)行步驟214。
[0035]步驟214:在查找到的存儲(chǔ)副本的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中,選擇其中一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)。
[0036]可以根據(jù)邏輯地址、通過平衡樹結(jié)構(gòu),查找對(duì)應(yīng)的數(shù)據(jù)塊副本和該副本所在的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)。
[0037]步驟215:判斷是否找到對(duì)應(yīng)的數(shù)據(jù)副本,如果判斷結(jié)果為是,執(zhí)行步驟216,反之執(zhí)行步驟220。
[0038]步驟216:將第一操作指令發(fā)送給選擇的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)。
[0039]其中,可以根據(jù)設(shè)定的策略,