一種集群數(shù)據(jù)的存儲方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲技術(shù),特別是涉及一種集群數(shù)據(jù)的存儲方法。
【背景技術(shù)】
[0002]目前,大規(guī)模的集群文件系統(tǒng)能提供PB級甚至是EB級的海量數(shù)據(jù)存儲,存儲空間不再是存儲技術(shù)的瓶頸。但是,提供PB級和EB級存儲的基本采用的SATA(1T/2T/4T)硬盤,采用此類硬盤的存儲系統(tǒng),雖然在容量上很客觀,但是在性能上不盡人意。針對該情況,出現(xiàn)了閃存陣列技術(shù),其提供的存儲空間雖然小了,但是,服務(wù)器中的存儲端將不存在帶寬瓶頸,加上網(wǎng)絡(luò)采用10GE或PCIE,網(wǎng)絡(luò)帶寬也將不會是瓶頸。但是,采用閃存的固態(tài)硬盤(SSD)容量小、價格高,所以單位容量的SSD存儲利用率異常重要。有鑒于此,在閃存陣列中,提供高效的在線重復(fù)數(shù)據(jù)刪除技術(shù)非常重要。
[0003]重復(fù)數(shù)據(jù)刪除簡稱數(shù)據(jù)消重,可以在源端(客戶端)或者目標(biāo)端(服務(wù)端)進(jìn)行,目前系統(tǒng)要么單獨(dú)在源端,要么單獨(dú)在目的端進(jìn)行消重。源端消重在數(shù)據(jù)源進(jìn)行,如此會占用大量源端系統(tǒng)資源。目標(biāo)端消重發(fā)生在目標(biāo)端,數(shù)據(jù)在傳輸?shù)侥繕?biāo)端再進(jìn)行消重,它不會占用源端系統(tǒng)資源,但占用大量網(wǎng)絡(luò)帶寬。
[0004]由此可見,現(xiàn)有的數(shù)據(jù)消重方案存在占用大量源端系統(tǒng)資源或網(wǎng)絡(luò)資源的問題。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的主要目的在于提供一種集群數(shù)據(jù)的存儲方法,可以有效提高集群存儲端的利用率,同時可減少源端系統(tǒng)資源和網(wǎng)絡(luò)資源的開銷。
[0006]為了達(dá)到上述目的,本發(fā)明提出的技術(shù)方案為:
[0007]—種集群數(shù)據(jù)的存儲方法,包括:
[0008]a、對于當(dāng)前待寫入集群文件的每個數(shù)據(jù)塊,客戶端確定集群存儲服務(wù)器中是否已保存與該數(shù)據(jù)塊內(nèi)容相同的物理塊文件,如果是,則執(zhí)行步驟b,否則,則執(zhí)行步驟c ;
[0009]b、將已保存的所述物理塊文件的路徑信息,分別增加到所述客戶端和所述集群存儲服務(wù)器的相應(yīng)邏輯文件元數(shù)據(jù)中,并將已保存的所述物理塊文件的引用計(jì)數(shù)器加1 ;退出所述方法;
[0010]c、所述客戶端觸發(fā)在本客戶端和所述集群存儲服務(wù)器中分別保存所述數(shù)據(jù)塊,并將所述數(shù)據(jù)塊對應(yīng)的物理塊文件的路徑信息,增加到所述客戶端和所述集群存儲服務(wù)器中對應(yīng)的邏輯文件元數(shù)據(jù)中,將所述物理塊文件的引用計(jì)數(shù)器加1。
[0011 ] 綜上所述,本發(fā)明提出的一種集群數(shù)據(jù)的存儲方法,通過在進(jìn)行數(shù)據(jù)存儲時,避免對相同數(shù)據(jù)塊進(jìn)行重復(fù)存儲,來達(dá)到消除重復(fù)數(shù)據(jù)的目的,以提高存儲利用率,同時可以有效減少客戶端資源和網(wǎng)絡(luò)資源的開銷。
【附圖說明】
[0012]圖1為本發(fā)明實(shí)施例一的方法流程示意圖。
【具體實(shí)施方式】
[0013]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步地詳細(xì)描述。
[0014]本發(fā)明的核心思想是:客戶端在向服務(wù)器端存儲數(shù)據(jù)時,需要先確定待保存的數(shù)據(jù)是否已保存于服務(wù)器中,如果已有,則不需要再觸發(fā)服務(wù)器進(jìn)行數(shù)據(jù)的保存,而只需在相應(yīng)的邏輯文件元數(shù)據(jù)中增加該已有物理塊文件的地址信息即可。如此,可以有效避免相同的數(shù)據(jù)塊對物理存儲空間的重復(fù)使用,以及在集群服務(wù)器和客戶端之間的重復(fù)傳輸,從而可以在提高集群服務(wù)器中存儲端的利用率的同時,減少客戶端資源和網(wǎng)絡(luò)資源的開銷。
[0015]圖1為本發(fā)明實(shí)施例一的流程示意圖,如圖1所示,該實(shí)施例所實(shí)現(xiàn)的集群數(shù)據(jù)的存儲方法主要包括:
[0016]步驟101、對于當(dāng)前待寫入集群文件的每個數(shù)據(jù)塊,客戶端確定集群存儲服務(wù)器中是否已保存與該數(shù)據(jù)塊內(nèi)容相同的物理塊文件,如果是,則執(zhí)行步驟102,否則,則執(zhí)行步驟103。
[0017]本步驟,用于在進(jìn)行數(shù)據(jù)塊存儲時先確定此前該數(shù)據(jù)塊是否已經(jīng)保存過,如果已保存,則不需要再進(jìn)行存儲,如果沒有保存過,則需要對其執(zhí)行物理上的存儲,這樣,在存儲環(huán)節(jié)即可避免客戶端和集群存儲服務(wù)器對相同內(nèi)容的數(shù)據(jù)塊進(jìn)行多次重復(fù)地物理存儲,從而可以提高存儲資源利用率,并且可以避免相同內(nèi)容的數(shù)據(jù)塊在網(wǎng)絡(luò)上的多次重復(fù)傳輸。
[0018]這里需要說明的是,和現(xiàn)有系統(tǒng)一樣,集群文件系統(tǒng)中的文件,由邏輯文件和一個或多個物理塊文件組成。物理塊文件用于保存數(shù)據(jù)塊,其存放路徑由邏輯文件對應(yīng)的元數(shù)據(jù)信息指出。系統(tǒng)中定義了多種物理塊文件的長度,如64k、32k等。
[0019]較佳地,步驟101中可以采用下述方法來確定集群存儲服務(wù)器中是否已保存與該數(shù)據(jù)塊內(nèi)容相同的物理塊文件:
[0020]步驟al、所述客戶端為所述數(shù)據(jù)塊生成相應(yīng)的校驗(yàn)碼M,判斷所述校驗(yàn)碼Μ是否存在于當(dāng)前保存的所述集群存儲服務(wù)器中的校驗(yàn)碼集合中,如果是,則確定所述集群存儲服務(wù)器中已保存與所述數(shù)據(jù)塊內(nèi)容相同的物理塊文件,結(jié)束所述步驟101,否則,執(zhí)行步驟
3-2 ο
[0021]本方法中,將依據(jù)數(shù)據(jù)塊的校驗(yàn)碼來確定是否已保存相同的數(shù)據(jù)塊。這里,為了減少網(wǎng)絡(luò)資源的開銷,客戶端需要先在本地已保存的校驗(yàn)碼中查詢是否有相同的校碼,如果有,則基于本地客戶端的校碼碼信息即可確定已保存與所述數(shù)據(jù)塊內(nèi)容相同的物理塊文件,否則,需要執(zhí)行步驟a2,將數(shù)據(jù)塊的校驗(yàn)碼Μ發(fā)送給集群存儲服務(wù)器,由集群存儲服務(wù)器進(jìn)行判斷。
[0022]在實(shí)際應(yīng)用中,客戶端開機(jī)初始化時可以從集群存儲服務(wù)器中獲取已保存數(shù)據(jù)塊的校驗(yàn)碼信息。
[0023]步驟a2、所述客戶端將所述校驗(yàn)碼Μ發(fā)送給所述集群存儲服務(wù)器。
[0024]步驟a3、所述集群存儲服務(wù)器判斷所述校驗(yàn)碼是否存在于當(dāng)前存儲的相同大小的所有數(shù)據(jù)塊的校驗(yàn)碼中,并將所述判斷結(jié)果通知給所述客戶端。
[0025]步驟a4、如果所述判斷結(jié)果為存在相同校驗(yàn)碼,則所述客戶端確定所述集群存儲服務(wù)器中已保存與所述數(shù)據(jù)塊內(nèi)容相同的物理塊文件,否則,確定所述集群存儲服務(wù)器中未保存與所述數(shù)據(jù)塊內(nèi)容相同的物理塊文件。
[0026]步驟102、將已保存的所述物理塊文件的路徑信息,分別增加到所述客戶端和所述集群存儲服務(wù)器的相應(yīng)邏輯文件元數(shù)據(jù)中,并將已保存的所述物理塊文件的引用計(jì)數(shù)器加1 ;退出所述方法。
[0027]本步驟,用于在確定出已保存相同內(nèi)容的數(shù)據(jù)塊時,對相應(yīng)的邏輯文件元數(shù)據(jù)進(jìn)行更新。這里,不需要再為該數(shù)據(jù)塊建物理塊文件,而是將已保存的相同內(nèi)容數(shù)據(jù)塊的地址信息增加到當(dāng)前待保存的數(shù)據(jù)塊所屬文件的邏輯文件元數(shù)據(jù)中即可,即只需要進(jìn)行邏輯文件的更新,使邏輯文件直接鏈接到已有物理塊文件上。這樣,通過在數(shù)據(jù)存儲環(huán)節(jié)確保只為相同內(nèi)容的多個數(shù)據(jù)塊只創(chuàng)建一個物理塊文件,可以有效提高存儲空間的利用率,節(jié)省客戶端與服務(wù)器之間的數(shù)據(jù)傳輸開銷。
[0028]這里需要說明的是,每個物理塊文件都會有一個引用計(jì)數(shù)器,該引用計(jì)數(shù)器用于指示該數(shù)據(jù)塊被邏輯文件元數(shù)據(jù)關(guān)聯(lián)的次數(shù),因此,這里,在對邏輯文件元數(shù)據(jù)進(jìn)行更新后,同時需要將相應(yīng)的引用計(jì)數(shù)器加1。
[0029]步驟103、所述客戶端觸發(fā)在本客戶端和所述集群存儲服務(wù)器中分別保存所述數(shù)據(jù)塊,并將所述數(shù)據(jù)塊對應(yīng)的物理塊文件的路徑信息,增