基于兩級哈希的對象存儲數(shù)據(jù)分布機制的制作方法
【專利摘要】基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),在建立存儲對象與存儲節(jié)點之間映射關系時,在存儲對象與存儲節(jié)點之間設置放置組,將存儲對象-存儲節(jié)點之間的映射關系拆分為兩級映射關系:存儲對象-放置組和放置組-存儲節(jié)點之間的映射關系,其中前者使用簡單哈希算法,后者使用一致性哈希算法;存儲對象首先使用簡單哈希算法被分配到某個放置組,然后放置組再使用一致性哈希算法分布到存儲節(jié)點,間接建立存儲對象與存儲節(jié)點之間的映射關系。由于放置組的數(shù)目遠小于存儲對象的數(shù)目,本發(fā)明顯著降低存儲對象定位過程中的運算量,特別是故障恢復過程中,只需重新計算放置組與存儲節(jié)點間的映射關系,極大降低數(shù)據(jù)重新分布的計算量,提高系統(tǒng)性能。
【專利說明】基于兩級哈希的對象存儲數(shù)據(jù)分布機制
【技術領域】
[0001]本發(fā)明涉及計算機存儲領域,具體涉及集群存儲中基于兩級哈希的對象存儲數(shù)據(jù)分布機制。
【背景技術】
[0002]隨著網(wǎng)絡應用的迅速發(fā)展,網(wǎng)絡信息數(shù)據(jù)量越來越大,PB級別的海量數(shù)據(jù)存儲變得越來越重要。傳統(tǒng)意義的文件系統(tǒng)已不能滿足現(xiàn)有應用的大容量、高可靠性、高性能等要求,為滿足這些新要求,新的分布式存儲系統(tǒng)應用得到了廣泛重視。
[0003]對象存儲結(jié)構(gòu)作為一種新型的存儲結(jié)構(gòu),提供基于對象的訪問接口,有效的合并了 NAS和SAN存儲結(jié)構(gòu)優(yōu)勢,通過高層次的抽象具有NAS的跨平臺共享數(shù)據(jù)和基于策略的安全訪問優(yōu)點,支持直接訪問具有SAN的高性能和交換網(wǎng)絡結(jié)構(gòu)的可伸縮性。
[0004]對象是數(shù)據(jù)存儲的基本單位,它是具有可變長度的有序字節(jié)的數(shù)據(jù)集合,能夠存儲任意類型的數(shù)據(jù),如文件、數(shù)據(jù)庫記錄、圖像、多媒體等,單個的對象甚至可以存儲整個文件系統(tǒng)或者數(shù)據(jù)庫系統(tǒng)。
[0005]對象提供類似于文件的訪問方法,如Open、Close、Create、Remove、Read、Write等。對象由用戶數(shù)據(jù)、用戶屬性和存儲屬性組成。用戶數(shù)據(jù)與傳統(tǒng)存儲系統(tǒng)中的文件數(shù)據(jù)是相同的;用戶屬性描述了對象的一些特定屬性,例如服務特性屬性描述一個多媒體對象的延遲和吞吐需求;存儲屬性描述了對象在磁盤上的塊分布,包括對象ID,塊指針,邏輯長度和使用容量等屬性。
[0006]存儲對象的設備稱之為對象存儲設備(Object-Based Storage Device, 0SD)。OSD是一個智能設備,具有獨立的存儲介質(zhì)、處理器、內(nèi)存以及網(wǎng)卡等,能夠獨立管理其自身的安全、存儲和網(wǎng)絡通信。通常認為一個對象存儲設備就是一臺完整的存儲節(jié)點或存儲服務器。
[0007]在對象存儲集群中,通常采用哈?;蛘咭恢滦怨K惴▽崿F(xiàn)對象的定位,即對于給定的對象,通過其對象名稱的哈希結(jié)果確定其所在的0SD。這種方法不需要查詢操作,也沒有單點瓶頸,因此具備良好的橫向擴展特性。
[0008]但是由于對象存儲集群中存儲的對象數(shù)量通常極為龐大,對每一個對象進行一致性哈希需要消耗大量的計算資源。且這一現(xiàn)象在集群中的存儲節(jié)點發(fā)生故障,需要對集群存儲的對象的重新分布時表現(xiàn)的更為明顯,因為在這一過程中,需要重新計算所有對象的分布情況,計算量非常大,容易成為系統(tǒng)的瓶頸、影響系統(tǒng)的性能。
【發(fā)明內(nèi)容】
[0009]本發(fā)明針對現(xiàn)有技術存在的不足之處,提供一種基于兩級哈希的對象存儲數(shù)據(jù)分布機制。
[0010]本發(fā)明公開了一種基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其解決所述技術問題采用的技術方案如下:在集群對象存儲中,本發(fā)明使用兩級哈希算法對存儲對象的分布進行計算,來解決存儲對象與存儲節(jié)點之間映射關系的問題;在建立存儲對象與存儲節(jié)點之間映射關系的過程中,引入了一個存儲對象與存儲節(jié)點之間的中間層,稱之為放置組,所述放置組是一個邏輯概念,表示一個虛擬的容器,屬于同一個放置組的存儲對象將采用同樣的放置規(guī)則,即分布到相同的存儲節(jié)點上。
[0011]在存儲對象到存儲節(jié)點的映射關系中,存儲對象首先使用簡單哈希算法被分配到某個放置組,然后放置組再使用一致性哈希算法分布到存儲節(jié)點。即將原本存儲對象-存儲節(jié)點之間的映射關系拆分為兩級映射關系:存儲對象-放置組之間的映射關系和放置組和存儲節(jié)點之間的映射關系。其中前者使用簡單的哈希算法,后者使用一致性哈希算法。這樣就間接的建立了存儲對象與存儲節(jié)點之間的映射關系。
[0012]本發(fā)明公開的基于兩級哈希的對象存儲數(shù)據(jù)分布機制的有益效果是:
使用所述基于兩級哈希的對象存儲數(shù)據(jù)分布機制能夠降低存儲對象定位過程中的運算量,特別是能夠降低故障恢復過程中,存儲對象重新定位的運算量;當存儲節(jié)點發(fā)生宕機時,只需要重新計算放置組與存儲節(jié)點之間的映射關系,相對于不限制數(shù)量和名稱的存儲對象來說,放置組的數(shù)目和名稱都是預先定義的,且放置組的數(shù)據(jù)遠小于存儲對象的數(shù)目,因此可以極大的降低故障恢復過程中,數(shù)據(jù)重新分布的計算量,提高系統(tǒng)性能。
【專利附圖】
【附圖說明】
[0013]附圖1為基于兩級哈希的對象存儲數(shù)據(jù)分布機制的示意圖;
附圖標注說明:1、存儲對象;2、放置組;3、存儲節(jié)點;4、簡單哈希算法(存儲對象名稱-放置組);5、一致性哈希算法(放置組名稱-存儲節(jié)點)。
【具體實施方式】
[0014]下面結(jié)合附圖和實施例,對本發(fā)明所公開的基于兩級哈希的對象存儲數(shù)據(jù)分布機制做進一步詳細說明。
[0015]本發(fā)明所述基于兩級哈希的對象存儲數(shù)據(jù)分布機制,在如何確定某個存儲對象應該分配到集群中的哪一個存儲節(jié)點,即建立存儲對象與存儲節(jié)點之間的映射關系中,引入了一個存儲對象與存儲節(jié)點之間的中間層,稱之為放置組,所述放置組是一個邏輯概念,表示一個虛擬的容器,屬于同一個放置組的存儲對象將采用同樣的放置規(guī)則,即分布到相同的存儲節(jié)點上。
[0016]采用所述基于兩級哈希的對象存儲數(shù)據(jù)分布機制,在存儲對象到存儲節(jié)點的映射關系中,存儲對象首先使用簡單哈希算法被分配到某個放置組,然后放置組再使用一致性哈希算法分布到存儲節(jié)點。即將原本存儲對象-存儲節(jié)點之間的映射關系拆分為兩級映射關系:存儲對象-放置組之間的映射關系和放置組和存儲節(jié)點之間的映射關系。其中前者使用簡單哈希算法,后者使用一致性哈希算法。這樣就間接的建立了存儲對象與存儲節(jié)點之間的映射關系。
[0017]【具體實施方式】:
本發(fā)明所述基于兩級哈希的對象存儲數(shù)據(jù)分布機制包括放置組的設定、存儲對象-放置組映射關系的計算、放置組-存儲節(jié)點映射關系的計算、映射關系的緩存機制和故障恢復過程中映射關系的重建五大部分。下面分別對這幾部分進行說明: 1、放置組的設定
放置組在對象存儲集群的部署過程中確定,相對于不限制數(shù)量和名稱存儲對象來說,放置組的數(shù)目和名稱都是預先定義的,且放置組的數(shù)據(jù)遠小于存儲對象的數(shù)目;通常為集群初始存儲節(jié)點數(shù)目的整數(shù)倍。倍數(shù)默認采用256,即如果集群中共有8個存儲節(jié)點,則默認設置2048個放置組。
[0018]放置組具有名稱和編號兩部分信息,其中編號為自然數(shù),名稱為編號對應的十六進制的字符串表示。例如對于16號放置組,其名稱為0x10。
[0019]2、存儲對象-放置組映射關系的計算
存儲對象-放置組映射關系的計算使用簡單哈希算法執(zhí)行,例如余除、MD5等。這一算法為全局可見的,即存儲集群內(nèi)部的存儲節(jié)點以及存儲集群的所有客戶端都知曉該算法,并可以記住該運算。
[0020]對于給定的存儲對象,對其對象名稱進行哈希,然后對哈希結(jié)果使用放置組數(shù)目進行余除操作,得到的結(jié)果即為該存儲對象對應的放置組的編號。
[0021]3、放置組-存儲節(jié)點映射關系的計算
放置組-存儲節(jié)點映射關的計算使用一致性哈希算法。對于給定的放置組,對其編號根據(jù)集群中存儲節(jié)點的數(shù)目進行一致性哈希,所得的結(jié)果即為該放置組對應的存儲節(jié)點或存儲節(jié)點集合。
[0022]4、映射關系的緩存機制
對象存儲集群中的每一個存儲節(jié)點、以及該對象存儲集群的每一個客戶端都可以緩存放置組與存儲節(jié)點之間的映射關系。
[0023]5、故障恢復過程中映射關系的重建
當存儲集群中的節(jié)點情況發(fā)生變化時,例如發(fā)生了節(jié)點宕機,集群的主控節(jié)點會向所有緩存映射關系的存儲節(jié)點及客戶端報告存儲集群的節(jié)點變化,使相關節(jié)點重新計算其緩存的放置組與存儲節(jié)點之間映射關系。
[0024]當客戶端需要訪問某個對象時,可以在客戶端本地使用計算存儲對象-放置組映射關系的簡單哈希算法計算該對象所對應的放置組,然后通過查詢放置組與存儲節(jié)點之間映射關系的緩存獲取對象實際存放的存儲節(jié)點。使用本發(fā)明所述基于兩級哈希的對象存儲數(shù)據(jù)分布機制,能夠降低對象定位過程中的運算量,相對于不限制數(shù)量和名稱存儲對象來說,放置組的數(shù)目和名稱都是預先定義的,且放置組的數(shù)據(jù)遠小于存儲對象的數(shù)目,因此,可以事先緩存放置組與存儲節(jié)點之間的映射關系。
[0025]特別是在存儲節(jié)點發(fā)生宕機時,能夠降低故障恢復過程中,存儲對象重新定位的運算量。通常在集群中的節(jié)點發(fā)生故障、進行冗余數(shù)據(jù)的重新構(gòu)建過程中,需要更新集群內(nèi)所有存儲對象與存儲節(jié)點之間的映射關系。而采用本發(fā)明提出的二級數(shù)據(jù)分布機制,則只需要重新計算放置組與存儲節(jié)點之間的映射關系,即只需要重新計算放置組的一致性哈希結(jié)果。由于放置組的數(shù)目遠小于存儲對象的數(shù)目,因此可以極大的降低故障恢復過程中,數(shù)據(jù)重新分布的計算量。
[0026]除去本發(fā)明所述特征技術之外,均為本專業(yè)技術人員的已知技術。
【權利要求】
1.基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其特征在于,在集群對象存儲中,所述基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu)使用兩級哈希算法對存儲對象的分布進行計算,來解決存儲對象與存儲節(jié)點之間映射關系的問題;在建立存儲對象與存儲節(jié)點之間映射關系的過程中,引入了一個存儲對象與存儲節(jié)點之間的中間層,稱之為放置組;在存儲對象到存儲節(jié)點的映射關系中,存儲對象首先使用簡單哈希算法被分配到某個放置組,然后放置組再使用一致性哈希算法分布到存儲節(jié)點,即將原本存儲對象-存儲節(jié)點之間的映射關系拆分為兩級映射關系:存儲對象-放置組之間的映射關系和放置組和存儲節(jié)點之間的映射關系,其中前者使用簡單的哈希算法,后者使用一致性哈希算法,這樣就間接的建立了存儲對象與存儲節(jié)點之間的映射關系。
2.根據(jù)權利要求1所述的基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其特征在于,所述放置組是一個邏輯概念,表示一個虛擬的容器,屬于同一個放置組的存儲對象將采用同樣的放置規(guī)則,即分布到相同的存儲節(jié)點上。
3.根據(jù)權利要求2所述的基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其特征在于,所述基于兩級哈希的對象存儲數(shù)據(jù)分布機制包括放置組的設定、存儲對象-放置組映射關系的計算、放置組-存儲節(jié)點映射關系的計算、映射關系的緩存機制和故障恢復過程中映射關系的重建五大部分。
4.根據(jù)權利要求3所述的基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其特征在于,關于放置組的設定,放置組在對象存儲集群的部署過程中確定,通常為集群初始存儲節(jié)點數(shù)目的整數(shù)倍,倍數(shù)默認采用256 ;放置組具有名稱和編號兩部分信息,其中編號為自然數(shù),名稱為編號對應的十六進制的字符串表示。
5.根據(jù)權利要求3所述的基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其特征在于,關于存儲對象-放置組映射關系的計算,存儲對象-放置組映射關系的計算使用簡單哈希算法執(zhí)行,所述簡單哈希算法為全局可見的,即存儲集群內(nèi)部的存儲節(jié)點以及存儲集群的所有客戶端都知曉該算法,并能夠記住該運算; 對于給定的存儲對象,對其名稱進行哈希,然后對哈希算法結(jié)果使用放置組數(shù)目進行余除操作,得到的結(jié)果即為該存儲對象對應的放置組的編號。
6.根據(jù)權利要求3所述的基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其特征在于,關于放置組-存儲節(jié)點映射關系的計算,放置組-存儲節(jié)點映射關的計算使用一致性哈希算法,對于給定的放置組,對其編號根據(jù)集群中存儲節(jié)點的數(shù)目進行一致性哈希算法,所得的結(jié)果即為該放置組對應的存儲節(jié)點或存儲節(jié)點集合。
7.根據(jù)權利要求3所述的基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其特征在于,關于映射關系的緩存機制,對象存儲集群中的每一個存儲節(jié)點、以及該對象存儲集群的每一個客戶端都能夠緩存放置組與存儲節(jié)點之間的映射關系。
8.根據(jù)權利要求3所述的基于兩級哈希的對象存儲數(shù)據(jù)分布機構(gòu),其特征在于,關于故障恢復過程中映射關系的重建,當存儲集群中的節(jié)點情況發(fā)生變化時,集群的主控節(jié)點會向所有緩存映射關系的存儲節(jié)點及客戶端報告存儲集群的節(jié)點變化,使相關節(jié)點重新計算其緩存的放置組與存儲節(jié)點之間映射關系。
【文檔編號】H04L29/08GK103905540SQ201410111771
【公開日】2014年7月2日 申請日期:2014年3月25日 優(yōu)先權日:2014年3月25日
【發(fā)明者】袁冬 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司