亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)及方法

文檔序號:7866550閱讀:276來源:國知局

專利名稱::基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)及方法
技術(shù)領(lǐng)域
:本申請涉及分布式數(shù)據(jù)存儲
技術(shù)領(lǐng)域
,尤其涉及一種在k-v(key-value,鍵值對)存儲系統(tǒng)基礎(chǔ)上實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的分布式數(shù)據(jù)存儲系統(tǒng)服務(wù)端和客戶端及其數(shù)據(jù)讀寫方法。
背景技術(shù)
:隨著信息技術(shù)的快速發(fā)展,個人用戶、科學(xué)計算、互聯(lián)網(wǎng)等應(yīng)用產(chǎn)生了海量數(shù)據(jù)的存儲需求。爆炸式增長的數(shù)據(jù)即將從PB級向EB級邁進(jìn),這些數(shù)據(jù)的存儲和高速訪問對分布式文件系統(tǒng)在可用性、可擴(kuò)展性及IO(Input/Output,輸入/輸出)訪問性能上提出了新的挑戰(zhàn)。在海量存儲需求的驅(qū)動下,隨著磁盤容量和IO速度的提高以及網(wǎng)絡(luò)技術(shù)和存儲架構(gòu)設(shè)計的進(jìn)步,誕生了大量高性能、高擴(kuò)展性、高可用性的分布式文件系統(tǒng)。它們能夠支持PB級的存儲空間和數(shù)千萬個甚至上億個文件,可以動態(tài)地通過增加存儲服務(wù)器和存儲介質(zhì)來增加系統(tǒng)容量、提高聚合訪問帶寬。然而,隨著存儲系統(tǒng)規(guī)模的不斷增大,現(xiàn)有的主流存儲系統(tǒng),逐漸都或多或少地表現(xiàn)出一定的局限性,從而影響系統(tǒng)的整體性能。例如,通用并行文件系統(tǒng)Lustre的元數(shù)據(jù)服務(wù)器存在單點(diǎn)故障的風(fēng)險,是系統(tǒng)后續(xù)擴(kuò)展的瓶頸,同時,元數(shù)據(jù)服務(wù)器采用的ext3/ext4本地文件系統(tǒng)還存在由于單個目錄下節(jié)點(diǎn)個數(shù)過多而帶來性能降低的問題,另外還存在不支持?jǐn)?shù)據(jù)冗余、新舊設(shè)備存儲水位不均衡等問題。又例如,以采用k-ν對應(yīng)關(guān)系訪問數(shù)據(jù)的k-ν存儲系統(tǒng)為例,其有著比較成熟的技術(shù)支撐,并且已經(jīng)廣泛應(yīng)用在一些互聯(lián)網(wǎng)存儲服務(wù)中。然而,在現(xiàn)有的k-v存儲系統(tǒng)框架下,所有數(shù)據(jù)只根據(jù)k-v鍵值對存入相應(yīng)的數(shù)據(jù)服務(wù)器上,而不能以統(tǒng)一的命名空間展示給用戶(換言之,即不能類似于Windows操作系統(tǒng)中的資源管理器那樣為用戶呈現(xiàn)集中化的統(tǒng)一數(shù)據(jù)管理視圖);并且,由于k-v存儲系統(tǒng)不支持POSIX(PortableOperatingSystemInterface,可移植操作系統(tǒng)接口)標(biāo)準(zhǔn)(該標(biāo)準(zhǔn)包括文件的讀寫、重命名、鏈接的標(biāo)準(zhǔn)接口定義,目前已被Windows、Linux等絕大部分操作系統(tǒng)所支持)下的接口,所以用戶通過k-v存儲系統(tǒng)進(jìn)行數(shù)據(jù)的讀寫操作時,必須使用存儲系統(tǒng)服務(wù)方提供的特殊API(ApplicationProgrammingInterface,應(yīng)用程序界面)進(jìn)行操作,這種操作完全不同于用戶在本地操作系統(tǒng)中進(jìn)行數(shù)據(jù)讀寫操作時的使用體驗(yàn),不僅多有不便而且往往容易出錯。鑒于上述k-v存儲系統(tǒng)存在的不具備統(tǒng)一命名空間以及不支持POSIX語義等問題,可見也難以在其基礎(chǔ)上實(shí)現(xiàn)通用型的大規(guī)模分布式存儲。綜上所述,面對不斷增長的海量數(shù)據(jù),需要設(shè)計一種新型的存儲架構(gòu),克服現(xiàn)有存儲系統(tǒng)不易擴(kuò)展、不具備統(tǒng)一命名空間,不兼容POSIX語義等問題,保證系統(tǒng)的可用性、可擴(kuò)展性不會隨著系統(tǒng)規(guī)模的增大而受限。
發(fā)明內(nèi)容本申請的實(shí)施例旨在提供一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)服務(wù)端和客戶端及其數(shù)據(jù)讀寫方法,以解決上述相關(guān)技術(shù)中存在的各種問題。為實(shí)現(xiàn)上述目的,本申請的實(shí)施例提供了一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)服務(wù)端,用于與數(shù)據(jù)存儲系統(tǒng)客戶端通信以進(jìn)行文件的寫入和讀取,包括目錄服務(wù)器集群,由若干個目錄服務(wù)器組成,所述目錄服務(wù)器用于存儲所寫入文件的目錄信息,并以樹形目錄結(jié)構(gòu)的形式呈現(xiàn)給所述客戶端;數(shù)據(jù)服務(wù)器集群,由若干個數(shù)據(jù)服務(wù)器組成,所述數(shù)據(jù)服務(wù)器用于根據(jù)預(yù)設(shè)存儲結(jié)構(gòu)存儲所寫入文件的數(shù)據(jù)內(nèi)容;管理配置模塊,根據(jù)所述客戶端按第一計算值查找統(tǒng)一布局表得到的第一結(jié)果定位至對應(yīng)的目錄服務(wù)器,以創(chuàng)建與待寫入文件對應(yīng)的空文件,或從所述目錄服務(wù)器獲取待讀取文件的目錄信息;并根據(jù)所述客戶端按第二計算值查找所述統(tǒng)一布局表得到的第二結(jié)果定位至對應(yīng)的數(shù)據(jù)服務(wù)器,以根據(jù)所述預(yù)設(shè)存儲結(jié)構(gòu)寫入待寫入文件的數(shù)據(jù)內(nèi)容,或從所述數(shù)據(jù)服務(wù)器獲取待讀取文件的數(shù)據(jù)內(nèi)容;其中,所述統(tǒng)一布局表用于存儲所述目錄服務(wù)器集群中各目錄服務(wù)器所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,從而在所述客戶端按照根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值時,根據(jù)該第一映射關(guān)系定位到相應(yīng)第一標(biāo)識所對應(yīng)的目錄服務(wù)器;以及用于存儲所述數(shù)據(jù)服務(wù)器集群中各數(shù)據(jù)服務(wù)器所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系,從而在所述客戶端按照根據(jù)待寫入文件或待讀取文件的第二特征值計算得到第二計算值時,根據(jù)該第二映射關(guān)系定位到相應(yīng)第二標(biāo)識所對應(yīng)的數(shù)據(jù)服務(wù)器。本申請的另一實(shí)施例提供了一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)客戶端,用于與數(shù)據(jù)存儲系統(tǒng)服務(wù)端通信以進(jìn)行文件的寫入和讀取,包括布局表獲取模塊,用于獲取根據(jù)所述服務(wù)端的配置信息所生成的統(tǒng)一布局表,所述統(tǒng)一布局表用于存儲所述服務(wù)端的目錄服務(wù)器集群中各目錄服務(wù)器所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,以及所述服務(wù)端的數(shù)據(jù)服務(wù)器集群中各數(shù)據(jù)服務(wù)器所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系;第一定位模塊,用于在根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值時,查找所述統(tǒng)一布局表并根據(jù)所述第一映射關(guān)系定位到相應(yīng)第一標(biāo)識所對應(yīng)的目錄服務(wù)器,進(jìn)而將該定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端在該對應(yīng)的目錄服務(wù)器上創(chuàng)建與所述待寫入文件對應(yīng)的空文件,或從該對應(yīng)的目錄服務(wù)器獲取所述待讀取文件的目錄/[目息;第二定位模塊,用于在根據(jù)所述待寫入文件或所述待讀取文件的第二特征值計算得到第二計算值時,查找所述統(tǒng)一布局表并根據(jù)所述第二映射關(guān)系定位到相應(yīng)第二標(biāo)識所對應(yīng)的數(shù)據(jù)服務(wù)器,進(jìn)而將該定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端在該對應(yīng)的數(shù)據(jù)服務(wù)器寫入所述待寫入文件的數(shù)據(jù)內(nèi)容,或從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取所述待讀取文件的數(shù)據(jù)內(nèi)容。本申請的又一實(shí)施例提供了一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)服務(wù)端的數(shù)據(jù)讀寫方法,用于使數(shù)據(jù)存儲系統(tǒng)服務(wù)端與數(shù)據(jù)存儲系統(tǒng)客戶端通信以進(jìn)行文件的寫入或讀取,包括以下步驟S31.根據(jù)所述客戶端利用第一計算值查找統(tǒng)一布局表的定位結(jié)果,使所述服務(wù)端在該定位結(jié)果對應(yīng)的目錄服務(wù)器上創(chuàng)建與待寫入文件對應(yīng)的空文件或者從該對應(yīng)的目錄服務(wù)器獲取待讀取文件的目錄信息,其中所述第一計算值是由所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第一特征值計算得到;S32.根據(jù)所述客戶端利用第二計算值查找統(tǒng)一布局表的定位結(jié)果,使所述服務(wù)端在該定位結(jié)果對應(yīng)的數(shù)據(jù)服務(wù)器寫入所述待寫入文件的數(shù)據(jù)內(nèi)容或者從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取所述待讀取文件的數(shù)據(jù)內(nèi)容,其中所述第二計算值是由所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第二特征值計算得到;其中,所述統(tǒng)一布局表用于存儲所述目錄服務(wù)器集群中各目錄服務(wù)器所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,以及所述數(shù)據(jù)服務(wù)器集群中各數(shù)據(jù)服務(wù)器所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系。本申請的再一實(shí)施例提供了一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)客戶端的數(shù)據(jù)讀寫方法,用于使數(shù)據(jù)存儲系統(tǒng)客戶端與數(shù)據(jù)存儲系統(tǒng)服務(wù)端通信以進(jìn)行文件的寫入或讀取,包括以下步驟S41.使所述客戶端根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值;S42.利用所述第一計算值查找統(tǒng)一布局表以定位到所述服務(wù)端的目錄服務(wù)器集群中對應(yīng)的目錄服務(wù)器;S43.將步驟S42的定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端相應(yīng)地在該對應(yīng)的目錄服務(wù)器上創(chuàng)建與所述待寫入文件對應(yīng)的空文件或者從該對應(yīng)的目錄服務(wù)器獲取所述待讀取文件的目錄信息;S44.使所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第二特征值計算得到第二計算值;S45.利用所述第二計算值查找所述統(tǒng)一布局表以定位到所述服務(wù)端的數(shù)據(jù)服務(wù)器集群中對應(yīng)的數(shù)據(jù)服務(wù)器;S46.將步驟S45的定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端相應(yīng)地在該對應(yīng)的數(shù)據(jù)服務(wù)器寫入所述待寫入文件的數(shù)據(jù)內(nèi)容或者從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取所述待讀取文件的數(shù)據(jù)內(nèi)容;其中,所述統(tǒng)一布局表用于存儲所述服務(wù)端的目錄服務(wù)器集群中各目錄服務(wù)器所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,以及所述服務(wù)端的數(shù)據(jù)服務(wù)器集群中各數(shù)據(jù)服務(wù)器所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系。由上述技術(shù)方案可知,本申請的實(shí)施例至少分別部分地實(shí)現(xiàn)了以下有益效果通過建立k-v存儲系統(tǒng)的樹形目錄結(jié)構(gòu)可以實(shí)現(xiàn)數(shù)據(jù)的高效存儲和定位;通過目錄服務(wù)器的巧妙設(shè)計實(shí)現(xiàn)了物理存儲與邏輯結(jié)構(gòu)的有效映射;整個系統(tǒng)對于海量數(shù)據(jù)的存儲具有更強(qiáng)的適應(yīng)性和可擴(kuò)展性。圖1示出本申請數(shù)據(jù)存儲系統(tǒng)服務(wù)端和客戶端的實(shí)施例示意圖;圖2示出本申請數(shù)據(jù)存儲系統(tǒng)服務(wù)端和客戶端的數(shù)據(jù)讀取方法示意圖3示出本申請數(shù)據(jù)存儲系統(tǒng)服務(wù)端和客戶端的數(shù)據(jù)寫入方法示意圖。具體實(shí)施例方式下面將詳細(xì)描述本申請的具體實(shí)施例。應(yīng)當(dāng)注意,這里描述的實(shí)施例只用于舉例說明,并不用于限制本申請。圖1示出本申請數(shù)據(jù)存儲系統(tǒng)服務(wù)端和客戶端的實(shí)施例示意圖,如圖所示,本申請的數(shù)據(jù)存儲系統(tǒng)由服務(wù)端10和客戶端20組成。在一個實(shí)施例中,服務(wù)端10為數(shù)據(jù)中心提供的分布式網(wǎng)絡(luò)存儲服務(wù)集群,客戶端20則通過管理員在計算集群上安裝與存儲服務(wù)相關(guān)的客戶端軟件來實(shí)施。在另一個實(shí)施例中,服務(wù)端10由提供分布式網(wǎng)絡(luò)數(shù)據(jù)存儲服務(wù)的服務(wù)商搭建,而客戶端20則通過在用戶計算機(jī)上安裝由服務(wù)商提供的與其數(shù)據(jù)存儲服務(wù)相關(guān)的客戶端軟件來實(shí)施。下面將分別針對服務(wù)端10和客戶端20這兩個部分加以詳細(xì)說明。首先,本實(shí)施例的數(shù)據(jù)存儲系統(tǒng)服務(wù)端10是用于與數(shù)據(jù)存儲系統(tǒng)客戶端20通信以進(jìn)行文件的寫入和讀取,如圖1所示,該服務(wù)端10包括目錄服務(wù)器集群11、數(shù)據(jù)服務(wù)器集群12以及管理配置模塊13。其中,目錄服務(wù)器集群11是由若干個目錄服務(wù)器(DS,DirectoryServer)111、112.....1ln組成,且這些目錄服務(wù)器Ill-1ln是用于存儲所寫入文件的目錄信息,并以樹形目錄結(jié)構(gòu)的形式呈現(xiàn)給客戶端20以供后者進(jìn)行瀏覽、檢索等操作;在一個實(shí)施例中,目錄服務(wù)器集群11中所有的目錄服務(wù)器Ill-1ln需要保持完全一致的目錄結(jié)構(gòu),從而方便客戶端20進(jìn)行遍歷。接續(xù),數(shù)據(jù)服務(wù)器集群12是由若干個數(shù)據(jù)服務(wù)器(DSS,DataStorageServer)121、122、...、12η組成,且這些數(shù)據(jù)服務(wù)器121_12η是用于根據(jù)預(yù)設(shè)存儲結(jié)構(gòu)存儲所寫入文件的數(shù)據(jù)內(nèi)容;在一個實(shí)施例中,這里的預(yù)設(shè)存儲結(jié)構(gòu)可以是樹形存儲結(jié)構(gòu),但要注意將這里所述數(shù)據(jù)服務(wù)器上的樹形存儲結(jié)構(gòu)與上述目錄服務(wù)器提供的“樹形目錄結(jié)構(gòu)”區(qū)分開來看待,具體而言,前者是數(shù)據(jù)服務(wù)器的物理存儲結(jié)構(gòu),而后者是指以樹形結(jié)構(gòu)形式將整個文件系統(tǒng)存儲的目錄結(jié)構(gòu)信息顯示給用戶。最后,管理配置模塊13是用于根據(jù)客戶端20按第一計算值查找統(tǒng)一布局表(DULT,DistributedUnifiedLayoutTable)得到的第一結(jié)果定位至對應(yīng)的目錄服務(wù)器Ill-1ln中的一個,以創(chuàng)建與待寫入文件對應(yīng)的空文件(在寫文件時),或從對應(yīng)的目錄服務(wù)器Ill-1ln中的一個獲取待讀取文件的目錄信息(在讀文件時);并根據(jù)客戶端接續(xù)按第二計算值查找統(tǒng)一布局表得到的第二結(jié)果定位至對應(yīng)的數(shù)據(jù)服務(wù)器121-12n中的一個,以根據(jù)所述的預(yù)設(shè)存儲結(jié)構(gòu)(例如上文所述的樹形存儲結(jié)構(gòu))寫入待寫入文件的數(shù)據(jù)內(nèi)容(在寫文件時),或從對應(yīng)的數(shù)據(jù)服務(wù)器121-12n中的一個獲取待讀取文件的數(shù)據(jù)內(nèi)容(在讀文件時)。在一個實(shí)施例中,上述管理配置模塊13在目錄服務(wù)器Ill-1ln上寫入空文件時,所述的“空文件”是指文件名與客戶端要寫入的文件名相同但不具有任何數(shù)據(jù)內(nèi)容(即,占用O字節(jié))的文件。這里,上述提到的統(tǒng)一布局表是用于存儲目錄服務(wù)器集群11中各目錄服務(wù)器Ill-1ln所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,從而在客戶端20按照根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值時,根據(jù)該第一映射關(guān)系定位到相應(yīng)第一標(biāo)識所對應(yīng)的目錄服務(wù)器;以及用于存儲數(shù)據(jù)服務(wù)器集群12中各數(shù)據(jù)服務(wù)器121-12n所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系,從而在客戶端20按照根據(jù)待寫入文件或待讀取文件的第二特征值計算得到第二計算值時,根據(jù)該第二映射關(guān)系定位到相應(yīng)第二標(biāo)識所對應(yīng)的數(shù)據(jù)服務(wù)器。統(tǒng)一布局表的生成算法將在后文加以詳細(xì)說明。這里需注意的是,在一個實(shí)施例中,上述的第一特征值可以是文件的文件名,而第二特征值可以是文件的全路徑,而第一計算值和第二計算值則分別可以是對所述文件名和全路徑進(jìn)行哈希計算后得到的計算值。然而,本申請的實(shí)施例并不僅限于此,本領(lǐng)域技術(shù)人員根據(jù)此處的說明顯然可以選取文件的其他特征值,例如MD5碼、MD4碼、SHA-1碼等等,這里不再贅述。綜上所述可見,在本實(shí)施例的服務(wù)端10中,通過目錄服務(wù)器和數(shù)據(jù)服務(wù)器的分開設(shè)計,實(shí)現(xiàn)了數(shù)據(jù)的物理存儲(單獨(dú)在數(shù)據(jù)服務(wù)器121-12n上進(jìn)行)和上層邏輯結(jié)構(gòu)(即指由目錄服務(wù)器111-1In存儲文件的目錄信息)的分離,從而使系統(tǒng)具有統(tǒng)一的命名空間、支持POSIX語義。具體而言,目錄服務(wù)器上只存儲文件的目錄信息,并且要求每個目錄服務(wù)器上具有一致的目錄結(jié)構(gòu),方便用戶的目錄遍歷。也即,當(dāng)客戶端20執(zhí)行mkdir(創(chuàng)建目錄)操作時,需要在每個目錄服務(wù)器創(chuàng)建同樣的目錄;當(dāng)客戶端20執(zhí)行write(寫)操作時,則根據(jù)定位服務(wù)(將在下文客戶端20的實(shí)施例中詳述)定位到具體的目錄服務(wù)器上,進(jìn)而客戶端20與該目錄服務(wù)器建立連接,寫入空文件。由此實(shí)現(xiàn)了文件目錄信息和后續(xù)在數(shù)據(jù)服務(wù)器上寫入的文件內(nèi)容的分開,文件和文件目錄信息都采用k-v的結(jié)構(gòu)存儲,但兩者之間沒有任何的映射關(guān)系,這一點(diǎn)明顯有別于傳統(tǒng)的元數(shù)據(jù)服務(wù)器設(shè)計。目錄服務(wù)器在使用過程中,會隨著用戶需求而不斷擴(kuò)大,這就要求目錄服務(wù)器集群11的規(guī)??梢噪S著應(yīng)用的需要和使用情況進(jìn)行動態(tài)調(diào)整。本實(shí)施例的上述結(jié)構(gòu)允許管理員通過修改配置文件即可實(shí)現(xiàn)動態(tài)調(diào)整目錄服務(wù)器集群11的規(guī)模。并且,在動態(tài)配置的過程中,通過啟動后臺進(jìn)程,將目錄結(jié)構(gòu)同步到新加入的目錄服務(wù)器上,這仍然是為了確保目錄服務(wù)器集群11中每個目錄服務(wù)器Ill-1ln上具有一致的目錄結(jié)構(gòu)。接續(xù),正如上文所述,在一個實(shí)施例中,數(shù)據(jù)存儲服務(wù)器121-12n的本地物理存儲設(shè)計可以采用樹形存儲結(jié)構(gòu),以實(shí)現(xiàn)物理存儲和上層邏輯結(jié)構(gòu)的有效映射,同時能夠防止現(xiàn)有例如ext3/ext4本地文件系統(tǒng)下單個目錄的inode(節(jié)點(diǎn))個數(shù)過多造成的性能降低。在一個實(shí)施例中,上述的樹形存儲結(jié)構(gòu)具體可采用深度為5的目錄樹結(jié)構(gòu),數(shù)據(jù)都放在葉子節(jié)點(diǎn)上,實(shí)現(xiàn)這種樹形存儲結(jié)構(gòu)的具體過程可如以下步驟S101-S103所示。S101、用文件的全路徑進(jìn)行哈希計算,得到一個哈希值;如上文所述,客戶端20采用文件的第二特征值計算得到的第二計算值來定位對應(yīng)的數(shù)據(jù)服務(wù)器,此處即以客戶端采用文件的全路徑作為第二特征值并以哈希計算的結(jié)果作為第二計算值來進(jìn)行數(shù)據(jù)服務(wù)器的定位。接續(xù),以文件“/testfs/huangql/test/ftest”為例,其文件名為“ftest”,全路徑為“/testfs/huangql/test/ftest”,則根據(jù)本步驟的計算結(jié)果為hash(“/testfs/huangql/test/ftest”)=825480300。S102、用哈希值與1000求模,將結(jié)果值abc分解為/a/b/c的結(jié)構(gòu);以上a、b、c分別為結(jié)果值的百位數(shù)、十位數(shù)和個位數(shù),且結(jié)果值的范圍顯然為000-999。接續(xù)SlOl中的計算示例,825480300%1000=300,則S102即對應(yīng)3/0/0的結(jié)構(gòu)。S103、將文件寫入目錄/X/a/b/c/下。本步驟中,X表示數(shù)據(jù)服務(wù)器的標(biāo)識,也即上述的由客戶端按第二計算值查找統(tǒng)一布局表得到的第二結(jié)果所定位到的對應(yīng)數(shù)據(jù)服務(wù)器的標(biāo)識,具體的定位過程請參見下文關(guān)于客戶端20的說明。本步驟中,接續(xù)步驟S102中的計算示例,300對應(yīng)為/X/3/0/0目錄,即全路徑為“/testfs/huangql/test/ftest”的文件的存放目錄為“/X/3/0/0/825480300”。接續(xù),本實(shí)施例的數(shù)據(jù)存儲系統(tǒng)客戶端20是用于與數(shù)據(jù)存儲系統(tǒng)服務(wù)端10通信以進(jìn)行文件的寫入和讀取,仍然如圖1所示,該客戶端20包括布局表獲取模塊21、第一定位模塊22、以及第二定位模塊23。其中,布局表獲取模塊21用于獲取根據(jù)服務(wù)端10的配置信息所生成的統(tǒng)一布局表。這里所述的統(tǒng)一布局表與上文服務(wù)端10的管理配置模塊13中所用到的統(tǒng)一布局表是同一對象,其用于存儲服務(wù)端10的目錄服務(wù)器集群11中各目錄服務(wù)器Ill-1ln所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,以及服務(wù)端10的數(shù)據(jù)服務(wù)器集群12中各數(shù)據(jù)服務(wù)器121-12n所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系。接續(xù),在一個實(shí)施例中,服務(wù)端10可進(jìn)一步包括布局表生成模塊(圖中未示出),以用于根據(jù)服務(wù)端10中與各目錄服務(wù)器Ill-1ln和各數(shù)據(jù)服務(wù)器121-12n有關(guān)的配置信息按預(yù)設(shè)算法生成統(tǒng)一布局表,并進(jìn)一步由服務(wù)端10提供給客戶端20的布局表獲取模塊21;并且,一旦服務(wù)端10中的目錄服務(wù)器Ill-1ln或數(shù)據(jù)服務(wù)器121-12n出現(xiàn)設(shè)備更新(例如增加新的服務(wù)器或刪除故障服務(wù)器)時,該布局表生成模塊可實(shí)時更新新的統(tǒng)一布局表并下發(fā)給客戶端20,從而保證客戶端20始終能夠獲取最新的統(tǒng)一布局表。然而,本申請的實(shí)施例并不僅限于此,在另一個實(shí)施例中,這里的布局表獲取模塊21可以自身即具有生成統(tǒng)一布局表的功能,也即,由服務(wù)端10向客戶端20僅提供與各目錄服務(wù)器Ill-1ln和各數(shù)據(jù)服務(wù)器121-12n有關(guān)的最新的配置信息,而由各客戶端20的布局表獲取模塊21根據(jù)該配置信息自主生成統(tǒng)一布局表。在一個實(shí)施例中,布局表獲取模塊21在得到(無論是從服務(wù)端10獲取得到還是由自身生成得到)上述統(tǒng)一布局表后,是直接將該統(tǒng)一布局表掛載于客戶端計算機(jī)的內(nèi)存中,從而使得后續(xù)的定位過程更加迅速、高效?;谏衔乃龅膬?nèi)容,在展開第一定位模塊22和第二定位模塊23的說明之前,將首先詳細(xì)描述統(tǒng)一布局表DULT的具體生成算法,正如前文所述,統(tǒng)一布局表DULT既可由服務(wù)端10根據(jù)自身的配置信息生成并分發(fā)至客戶端20,也可由客戶端20根據(jù)服務(wù)端10下發(fā)的配置信息而生成;也即,下面將描述的DULT生成算法即可應(yīng)用于服務(wù)端10,也可應(yīng)用于客戶端20。具體而言,在一個實(shí)施例中,本申請DULT算法的實(shí)現(xiàn)主要是基于一致性哈希環(huán)的Chord算法。Chord算法是目前主流的分布式hash表協(xié)議之一,由麻省理工學(xué)院于1997年提出,其是通過修正簡單hash算法得到。Chord算法的基本思路是利用一致性哈希環(huán)的特性,將存儲設(shè)備(本實(shí)施例中分別包括目錄服務(wù)器Ill-1ln和數(shù)據(jù)服務(wù)器121-12n)均勻分布到一個大小為2m的環(huán)上,即每個設(shè)備負(fù)責(zé)的區(qū)域空間為“2m/設(shè)備總數(shù)”,這里,m為大于等于32的整數(shù),在下文涉及的示例中均以m=32為例。假設(shè)環(huán)上有8個節(jié)點(diǎn)(也即,存在8個目錄服務(wù)器111-118或8個數(shù)據(jù)服務(wù)器121-128),則NI節(jié)點(diǎn)對應(yīng)的區(qū)域?yàn)閔ash(IP,dev),[start,end)其中,第一個字段hash(IP,dev)為存儲服務(wù)器的IP地址和設(shè)備名dev進(jìn)行哈希計算的結(jié)果,第二個字段表示該設(shè)備的管轄區(qū)域,并作為后續(xù)服務(wù)端20對目錄服務(wù)器和數(shù)據(jù)服務(wù)器進(jìn)行定位的依據(jù)(請參見后文關(guān)于定位服務(wù)的說明)。由此,上述每條記錄唯一地標(biāo)識一個設(shè)備的布局信息,每條記錄大約IKBJUDULT的大小約為IKBX設(shè)備總數(shù)因此,即使存儲規(guī)模擴(kuò)大到成千上萬個設(shè)備時,DULT的大小也小于機(jī)器的常用內(nèi)存,從而便于客戶端20將DULT掛載于內(nèi)存中。接續(xù),第一定位模塊22用于在根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值時,查找統(tǒng)一布局表并根據(jù)上述的第一映射關(guān)系定位到相應(yīng)第一標(biāo)識所對應(yīng)的目錄服務(wù)器Ill-1ln中的一個,進(jìn)而將該定位結(jié)果通知給服務(wù)端10以使服務(wù)端10在該對應(yīng)的目錄服務(wù)器上創(chuàng)建與待寫入文件對應(yīng)的空文件,或從該對應(yīng)的目錄服務(wù)器獲取待讀取文件的目錄信息。最后,第二定位模塊23是用于在根據(jù)待寫入文件或待讀取文件的第二特征值計算得到第二計算值時,查找統(tǒng)一布局表并根據(jù)第二映射關(guān)系定位到相應(yīng)第二標(biāo)識所對應(yīng)的數(shù)據(jù)服務(wù)器121-12n中的一個,進(jìn)而將該定位結(jié)果通知給服務(wù)端10以使服務(wù)端10在該對應(yīng)的數(shù)據(jù)服務(wù)器寫入待寫入文件的數(shù)據(jù)內(nèi)容,或從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取待讀取文件的數(shù)據(jù)內(nèi)容。如前文服務(wù)端10的實(shí)施例中所述,在一個實(shí)施例中,這里的第一特征值和第二特征值可以分別采用文件的文件名和全路徑,即,第一定位模塊22可以使用對文件的文件名進(jìn)行哈希計算得到的結(jié)果作為所述第一計算值,而第二定位模塊23可以使用對文件的全路徑進(jìn)行哈希計算得到的結(jié)果作為所述第二計算值。接續(xù),在一個實(shí)施例中,第一定位模塊22和第二定位模塊23是以定位服務(wù)(LE,LocationEngine)的形式運(yùn)行在客戶端20對應(yīng)的計算機(jī)上,也即,客戶端計算機(jī)是通過運(yùn)行定位服務(wù)來實(shí)現(xiàn)上述第一定位模塊22和第二定位模塊23所完成的文件兩次定位。以下將結(jié)合上文統(tǒng)一布局表的示例對目錄服務(wù)器或數(shù)據(jù)服務(wù)器的定位過程加以簡單說明。具體而言,首先,以第一定位模塊22進(jìn)行目錄服務(wù)器的定位為例,仍以文件“/testfs/huangql/test/ftest”為例,其文件名為“ftest”,則根據(jù)該文件名進(jìn)行哈希計算得到第一計算值的結(jié)果為hash(“ftest”)=533837746,在上述統(tǒng)一布局表的生成算法實(shí)施例中,該結(jié)果位于第一個目錄服務(wù)器111的管轄區(qū)域通過本步驟,客戶端每次進(jìn)行的文件寫入操作都能夠在對應(yīng)的目錄服務(wù)器上留下相應(yīng)的空文件記錄,服務(wù)端集合所有目錄服務(wù)器存儲的目錄信息,便能夠向客戶端呈現(xiàn)相應(yīng)的樹形目錄結(jié)構(gòu),該樹形目錄結(jié)構(gòu)能夠保證與客戶端在本地文件系統(tǒng)上寫入文件時所產(chǎn)生的目錄結(jié)構(gòu)完全相同,從而使得用戶具有與在本地計算機(jī)上使用文件系統(tǒng)完全相同的使用體驗(yàn),因此更加便于進(jìn)行文件瀏覽、檢索等操作。S205、客戶端的第二定位模塊根據(jù)全路徑計算第二計算值,根據(jù)該值查找統(tǒng)一布局表定位到對應(yīng)的數(shù)據(jù)服務(wù)器,并將定位結(jié)果通知服務(wù)端;如前文客戶端的實(shí)施例所述,第二定位模塊根據(jù)全路徑“/testfs/huangql/test/ftest”進(jìn)行哈希計算得到第二計算值的結(jié)果為hash(“/testfs/huangql/test/ftest”)=825480300,對應(yīng)于第二個數(shù)據(jù)服務(wù)器的第二計算值范圍[536870912,1073741824),由此第二定位模塊定位到該第二個數(shù)據(jù)服務(wù)器并將定位結(jié)果通知給服務(wù)端;·S206、服務(wù)端與對應(yīng)的數(shù)據(jù)服務(wù)器通信,在對應(yīng)的數(shù)據(jù)服務(wù)器中寫入文件的數(shù)據(jù)內(nèi)容;在服務(wù)端與數(shù)據(jù)服務(wù)器通信前還可對待寫入的文件進(jìn)行完整性和正確性的校驗(yàn),在校驗(yàn)通過后才進(jìn)行后續(xù)的數(shù)據(jù)內(nèi)容寫入步驟,否則中止本次寫入操作。圖3為本申請分布式存儲系統(tǒng)服務(wù)端和客戶端配合進(jìn)行數(shù)據(jù)讀取操作的流程,如圖所示,其包括以下步驟S301-S306。S301、客戶端掛載文件系統(tǒng),獲取統(tǒng)一布局表,并將統(tǒng)一布局表裝載于內(nèi)存中;本步驟可參見上文步驟S201的詳細(xì)描述。S302、客戶端發(fā)起讀文件操作;S303、客戶端的第一定位模塊根據(jù)文件名計算第一計算值,根據(jù)該值查找統(tǒng)一布局表定位到對應(yīng)的目錄服務(wù)器,并將定位結(jié)果通知服務(wù)端;假設(shè)客戶端要讀取的文件為“/testfs/huangql/test/ftest”,則與步驟S203類似,第一定位模塊根據(jù)文件名“ftest”進(jìn)行哈希計算得到第一計算值的結(jié)果為hash(“ftest”)=533837746,對應(yīng)于第一個目錄服務(wù)器的第一計算值范圍[0,536870912),由此第一定位模塊定位到該目錄服務(wù)器并將定位結(jié)果通知給服務(wù)端。S304、服務(wù)端與對應(yīng)的目錄服務(wù)器通信,從對應(yīng)的目錄服務(wù)器獲取文件的目錄結(jié)構(gòu);與步驟S204類似,在服務(wù)端與目錄服務(wù)器通信前還可對待讀取的文件進(jìn)行完整性和正確性的校驗(yàn),在校驗(yàn)通過后才進(jìn)行后續(xù)的步驟,否則中止本次讀取操作。在一個實(shí)施例中,這里的完整性和正確性校驗(yàn)主要是指兩個方面,第一是判斷是否具有訪問權(quán)限,第二是指判斷文件是否存在。在一個實(shí)施例中,可以省略本步驟,這是因?yàn)?,通常情況下客戶端在掛載文件系統(tǒng)后便能看到完整的目錄結(jié)構(gòu),因此無需額外再進(jìn)行服務(wù)器獲取目錄結(jié)構(gòu)的步驟。然而,在用戶針對部分目錄設(shè)置了權(quán)限校驗(yàn)的情況下,本步驟仍有存在的必要,具體而言,在通過權(quán)限校驗(yàn)之前客戶端上只能看到有限的目錄結(jié)構(gòu),而當(dāng)客戶端需要訪問設(shè)置了權(quán)限校驗(yàn)的目錄下的文件時便需要通過本步驟的權(quán)限校驗(yàn)之后,才能由對應(yīng)的目錄服務(wù)器獲取這一部分文件的目錄結(jié)構(gòu)。S305、客戶端的第二定位模塊根據(jù)全路徑計算第二計算值,根據(jù)該值查找統(tǒng)一布局表定位到對應(yīng)的數(shù)據(jù)服務(wù)器,并將定位結(jié)果通知服務(wù)端;與步驟S205類似,這里第二定位模塊根據(jù)全路徑“/testfs/huangql/test/ftest”進(jìn)行哈希計算得到第二計算值的結(jié)果為hash(“/testfs/huangql/test/ftest”)=825480300,對應(yīng)于第二個數(shù)據(jù)服務(wù)器的第二計算值范圍[536870912,1073741824),由此第二定位模塊定位到該第二個數(shù)據(jù)服務(wù)器并將定位結(jié)果通知給服務(wù)端。S306、服務(wù)端與對應(yīng)的數(shù)據(jù)服務(wù)器通信,從對應(yīng)的數(shù)據(jù)服務(wù)器讀取文件的數(shù)據(jù)內(nèi)容;與步驟S206類似,這里在服務(wù)端與數(shù)據(jù)服務(wù)器通信前還可對待讀取的文件進(jìn)行完整性和正確性的校驗(yàn),在校驗(yàn)通過后才進(jìn)行后續(xù)的數(shù)據(jù)內(nèi)容讀取步驟,否則中止本次讀取操作。結(jié)合上文對分布式存儲系統(tǒng)服務(wù)端和客戶端以及對分布式存儲系統(tǒng)的數(shù)據(jù)寫入和數(shù)據(jù)讀取方法進(jìn)行的描述,下面將分別對本申請分布式存儲系統(tǒng)服務(wù)端的數(shù)據(jù)讀寫方法和分布式存儲系統(tǒng)客戶端的數(shù)據(jù)讀寫方法加以說明,由于這些方法的內(nèi)容在上文中均有詳細(xì)描述,因此下文將省略各步驟的具體說明,相關(guān)內(nèi)容可參考上文各實(shí)施例。首先介紹本申請分布式存儲系統(tǒng)服務(wù)端的數(shù)據(jù)讀寫方法,其用于使分布式存儲系統(tǒng)服務(wù)端與分布式存儲系統(tǒng)客戶端通信以進(jìn)行文件的寫入或讀取,該方法包括以下步驟根據(jù)所述客戶端利用第一計算值查找統(tǒng)一布局表的定位結(jié)果,使所述服務(wù)端在該定位結(jié)果對應(yīng)的目錄服務(wù)器上創(chuàng)建與待寫入文件對應(yīng)的空文件或者從該對應(yīng)的目錄服務(wù)器獲取待讀取文件的目錄信息,其中所述第一計算值是由所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第一特征值計算得到;根據(jù)所述客戶端利用第二計算值查找統(tǒng)一布局表的定位結(jié)果,使所述服務(wù)端在該定位結(jié)果對應(yīng)的數(shù)據(jù)服務(wù)器寫入所述待寫入文件的數(shù)據(jù)內(nèi)容或者從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取所述待讀取文件的數(shù)據(jù)內(nèi)容,其中所述第二計算值是由所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第二特征值計算得到。接續(xù)介紹本申請分布式存儲系統(tǒng)客戶端的數(shù)據(jù)讀寫方法,其用于使分布式存儲系統(tǒng)客戶端與分布式存儲系統(tǒng)服務(wù)端通信以進(jìn)行文件的寫入或讀取,該方法包括以下步驟使所述客戶端根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值;利用所述第一計算值查找統(tǒng)一布局表以定位到所述服務(wù)端的目錄服務(wù)器集群中對應(yīng)的目錄服務(wù)器;將前一步驟的定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端相應(yīng)地在該對應(yīng)的目錄服務(wù)器上創(chuàng)建與所述待寫入文件對應(yīng)的空文件或者從該對應(yīng)的目錄服務(wù)器獲取所述待讀取文件的目錄信息;使所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第二特征值計算得到第二計算值;利用所述第二計算值查找所述統(tǒng)一布局表以定位到所述服務(wù)端的數(shù)據(jù)服務(wù)器集群中對應(yīng)的數(shù)據(jù)服務(wù)器;將前一步驟的定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端相應(yīng)地在該對應(yīng)的數(shù)據(jù)服務(wù)器寫入所述待寫入文件的數(shù)據(jù)內(nèi)容或者從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取所述待讀取文件的數(shù)據(jù)內(nèi)容。綜上所述,通過本申請的基于k-v實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的分布式存儲系統(tǒng)及方法,為k-v存儲系統(tǒng)作為通用型的分布式文件系統(tǒng)提供了依據(jù)。通過使用本申請,基于k-v技術(shù)的存儲系統(tǒng)既具有k-v技術(shù)帶來的優(yōu)勢,又具備統(tǒng)一的命名空間,兼容POSIX語義。這為k-v存儲技術(shù)的廣泛推廣提供了有力的保障。具體而言,本申請具有下述技術(shù)優(yōu)點(diǎn)和效果(I)建立k-v存儲系統(tǒng)的樹形目錄結(jié)構(gòu)傳統(tǒng)的k-v存儲系統(tǒng)改變了應(yīng)用訪問數(shù)據(jù)的方式,不具備統(tǒng)一的命名空間、不支持POSIX語義,不能作為通用型的分布式文件系統(tǒng)。雖然現(xiàn)有的k-ν存儲技術(shù)具有查詢速度快、支持海量數(shù)據(jù)存儲及高可擴(kuò)展性的特點(diǎn),并在存儲領(lǐng)域的某些應(yīng)用上有很好的表現(xiàn),但由于前述問題的存在,其在分布式存儲中的廣泛使用還是很受限制。本申請基于k-v技術(shù)實(shí)現(xiàn)了數(shù)據(jù)的物理存儲和上層邏輯結(jié)構(gòu)的分離,將文件和文件目錄信息分開,利用數(shù)據(jù)服務(wù)器存儲數(shù)據(jù)內(nèi)容,而利用目錄服務(wù)器存儲目錄信息并向用戶呈現(xiàn)樹形目錄結(jié)構(gòu),由此使得系統(tǒng)具有統(tǒng)一的命名空間并支持POSix語義。使用該方法的k-v存儲可以作為通用型的分布式文件系統(tǒng),適用于任何場合,非常適合于大規(guī)模的分布式存儲。(2)實(shí)現(xiàn)k-v的數(shù)據(jù)高效存儲和定位傳統(tǒng)的存儲系統(tǒng)中,數(shù)據(jù)的存儲和定位需要與所有的存儲服務(wù)器通信,造成了大量網(wǎng)絡(luò)資源的浪費(fèi),并且隨著存儲規(guī)模的擴(kuò)大,這種缺陷越來越明顯。即使在有元數(shù)據(jù)服務(wù)器的系統(tǒng)中,數(shù)據(jù)的存儲和定位也先通過與元數(shù)據(jù)服務(wù)器進(jìn)行通信,得到具體的數(shù)據(jù)服務(wù)器再與之通信,這過程造成了很大的操作延時。然而在云存儲中,很多情況下隨著存儲規(guī)模和數(shù)據(jù)量的增大,用戶很難滿足傳統(tǒng)的數(shù)據(jù)訪問性能。本申請通過一致性哈希思想設(shè)計的統(tǒng)一布局算法,將數(shù)據(jù)的分布信息置于內(nèi)存,大大提高了數(shù)據(jù)的定位性能,數(shù)據(jù)的訪問只需同對應(yīng)的數(shù)據(jù)服務(wù)器進(jìn)行通信,節(jié)省了大量的網(wǎng)絡(luò)帶寬,從而提高了整個系統(tǒng)的性能和可擴(kuò)展性。(3)目錄服務(wù)器的巧妙設(shè)計傳統(tǒng)的分布式存儲系統(tǒng)使用集中式或分布式元數(shù)據(jù)服務(wù)來維護(hù)元數(shù)據(jù),記錄數(shù)據(jù)邏輯與物理位置的映像關(guān)系。集中式元數(shù)據(jù)服務(wù)會導(dǎo)致單點(diǎn)故障和性能瓶頸問題,而分布式元數(shù)據(jù)服務(wù)存在性能負(fù)載和元數(shù)據(jù)同步一致性問題。特別是對于海量小文件的應(yīng)用,元數(shù)據(jù)問題是個非常大的挑戰(zhàn)。在本申請中,基于元數(shù)據(jù)服務(wù)的思想巧妙設(shè)計的目錄服務(wù)器不等同于元數(shù)據(jù)服務(wù),它摒棄了有元數(shù)據(jù)的復(fù)雜設(shè)計,又能解決無元數(shù)據(jù)服務(wù)下目錄遍歷的性能問題,真正實(shí)現(xiàn)文件和文件的目錄信息的完全分離,保證系統(tǒng)有統(tǒng)一的命名空間并支持POSIX語義。在本申請的實(shí)施例中,目錄服務(wù)器只記錄數(shù)據(jù)的目錄結(jié)構(gòu)信息,不需要額外對數(shù)據(jù)的邏輯與物理位置進(jìn)行任何的映射操作,同時目錄信息的訪問也是通過高效的k-v技術(shù),大大提高了無元數(shù)據(jù)服務(wù)下目錄遍歷的性能。(4)實(shí)現(xiàn)物理存儲與邏輯結(jié)構(gòu)的有效映射在傳統(tǒng)的分布式文件系統(tǒng)中,通常使用元數(shù)據(jù)服務(wù)來記錄數(shù)據(jù)的物理存儲和邏輯結(jié)構(gòu)的映,而在沒有元數(shù)據(jù)服務(wù)的系統(tǒng)中往往很難實(shí)現(xiàn)數(shù)據(jù)的邏輯和物理位置的有效映射。在本申請的實(shí)施例中,通過目錄服務(wù)器記錄數(shù)據(jù)的邏輯結(jié)構(gòu)信息,數(shù)據(jù)服務(wù)器器存儲數(shù)據(jù)內(nèi)容,其中邏輯結(jié)構(gòu)和物理存儲的映射根據(jù)文件的兩個不同特征值(例如文件名和全路徑)進(jìn)行哈希計算來實(shí)現(xiàn),而不要查詢索引或是其他服務(wù)器的輔助,從而極大提高了系統(tǒng)的可擴(kuò)展性。(5)更強(qiáng)的適應(yīng)性和可擴(kuò)展性本申請實(shí)現(xiàn)的k-v分布式存儲系統(tǒng)摒棄了傳統(tǒng)具有元數(shù)據(jù)服務(wù)的分布式存儲設(shè)計的復(fù)雜性,又解決了k-v存儲系統(tǒng)不具備統(tǒng)一命名空間、不支持POSIX語義的問題,集k-v存儲的優(yōu)勢和通用型分布式文件系統(tǒng)的特性,使得整個系統(tǒng)具有很強(qiáng)的適應(yīng)性和可擴(kuò)展性,可以作為云存儲的首選方案。雖然已參照幾個典型實(shí)施例描述了本申請,但應(yīng)當(dāng)理解,所用的術(shù)語是說明和示例性、而非限制性的術(shù)語。由于本申請能夠以多種形式具體實(shí)施而不脫離發(fā)明的精神或?qū)嵸|(zhì),所以應(yīng)當(dāng)理解,上述實(shí)施例不限于任何前述的細(xì)節(jié),而應(yīng)在隨附權(quán)利要求所限定的精神和范圍內(nèi)廣泛地解釋,因此落入權(quán)利要求或其等效范圍內(nèi)的全部變化和改型都應(yīng)為隨附權(quán)利要求所涵蓋。權(quán)利要求1.一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)服務(wù)端,用于與數(shù)據(jù)存儲系統(tǒng)客戶端通信以進(jìn)行文件的寫入和讀取,包括目錄服務(wù)器集群,由若干個目錄服務(wù)器組成,所述目錄服務(wù)器用于存儲所寫入文件的目錄信息并以樹形目錄結(jié)構(gòu)的形式呈現(xiàn)給所述客戶端;數(shù)據(jù)服務(wù)器集群,由若干個數(shù)據(jù)服務(wù)器組成,所述數(shù)據(jù)服務(wù)器用于根據(jù)預(yù)設(shè)存儲結(jié)構(gòu)存儲所寫入文件的數(shù)據(jù)內(nèi)容;管理配置模塊,根據(jù)所述客戶端按第一計算值查找統(tǒng)一布局表得到的第一結(jié)果定位至對應(yīng)的目錄服務(wù)器,以創(chuàng)建與待寫入文件對應(yīng)的空文件,或從所述目錄服務(wù)器獲取待讀取文件的目錄信息;并根據(jù)所述客戶端按第二計算值查找所述統(tǒng)一布局表得到的第二結(jié)果定位至對應(yīng)的數(shù)據(jù)服務(wù)器,以根據(jù)所述預(yù)設(shè)存儲結(jié)構(gòu)寫入待寫入文件的數(shù)據(jù)內(nèi)容,或從所述數(shù)據(jù)服務(wù)器獲取待讀取文件的數(shù)據(jù)內(nèi)容;其中,所述統(tǒng)一布局表用于存儲所述目錄服務(wù)器集群中各目錄服務(wù)器所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,從而在所述客戶端按照根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值時,根據(jù)該第一映射關(guān)系定位到相應(yīng)第一標(biāo)識所對應(yīng)的目錄服務(wù)器;以及用于存儲所述數(shù)據(jù)服務(wù)器集群中各數(shù)據(jù)服務(wù)器所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系,從而在所述客戶端按照根據(jù)待寫入文件或待讀取文件的第二特征值計算得到第二計算值時,根據(jù)該第二映射關(guān)系定位到相應(yīng)第二標(biāo)識所對應(yīng)的數(shù)據(jù)服務(wù)器。2.如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng)服務(wù)端,其特征在于,還包括布局表生成模塊和布局表分發(fā)模塊;所述布局表生成模塊根據(jù)所述服務(wù)端中所配置的目錄服務(wù)器集群和數(shù)據(jù)服務(wù)器集群生成所述統(tǒng)一布局表,并通過所述布局表分發(fā)模塊發(fā)送給所述客戶端;且在所述服務(wù)端中所配置的目錄服務(wù)器集群或數(shù)據(jù)服務(wù)器集群發(fā)生變化時生成更新后的統(tǒng)一布局表,并通過所述布局表分發(fā)模塊發(fā)送給所述客戶端。3.如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng)服務(wù)端,其特征在于,還包括配置信息分發(fā)模塊,用于將與所述服務(wù)端中所配置的目錄服務(wù)器集群和數(shù)據(jù)服務(wù)器集群相關(guān)的信息發(fā)送給所述客戶端,以允許所述客戶端根據(jù)該信息生成所述統(tǒng)一布局表。4.如權(quán)利要求1-3任一項(xiàng)所述的數(shù)據(jù)存儲系統(tǒng)服務(wù)端,其特征在于,所述目錄服務(wù)器集群中各個目錄服務(wù)器所存儲的目錄信息通過所述各個目錄服務(wù)器彼此之間進(jìn)行的實(shí)時同步而保持一致。5.一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)客戶端,用于與數(shù)據(jù)存儲系統(tǒng)服務(wù)端通信以進(jìn)行文件的寫入和讀取,包括布局表獲取模塊,用于獲取根據(jù)所述服務(wù)端的配置信息所生成的統(tǒng)一布局表,所述統(tǒng)一布局表用于存儲所述服務(wù)端的目錄服務(wù)器集群中各目錄服務(wù)器所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,以及所述服務(wù)端的數(shù)據(jù)服務(wù)器集群中各數(shù)據(jù)服務(wù)器所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系;第一定位模塊,用于在根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值時,查找所述統(tǒng)一布局表并根據(jù)所述第一映射關(guān)系定位到相應(yīng)第一標(biāo)識所對應(yīng)的目錄服務(wù)器,進(jìn)而將該定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端在該對應(yīng)的目錄服務(wù)器上創(chuàng)建與所述待寫入文件對應(yīng)的空文件,或從該對應(yīng)的目錄服務(wù)器獲取所述待讀取文件的目錄信息;第二定位模塊,用于在根據(jù)所述待寫入文件或所述待讀取文件的第二特征值計算得到第二計算值時,查找所述統(tǒng)一布局表并根據(jù)所述第二映射關(guān)系定位到相應(yīng)第二標(biāo)識所對應(yīng)的數(shù)據(jù)服務(wù)器,進(jìn)而將該定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端在該對應(yīng)的數(shù)據(jù)服務(wù)器寫入所述待寫入文件的數(shù)據(jù)內(nèi)容,或從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取所述待讀取文件的數(shù)據(jù)內(nèi)容。6.如權(quán)利要求5所述的數(shù)據(jù)存儲系統(tǒng)客戶端,其特征在于,所述布局表獲取模塊從所述服務(wù)端中獲取所述統(tǒng)一布局表,或者根據(jù)所述服務(wù)端發(fā)送的與所述服務(wù)端中所配置的目錄服務(wù)器集群和數(shù)據(jù)服務(wù)器集群相關(guān)的信息來生成所述統(tǒng)一布局表。7.如權(quán)利要求5所述的數(shù)據(jù)存儲系統(tǒng)客戶端,其特征在于,所述第一特征值為所述待寫入文件或待讀取文件的文件名,所述第二特征值為所述待寫入文件或待讀取文件的全路徑,所述第一計算值和所述第二計算值分別為對所述第一特征值和所述第二特征值進(jìn)行哈希計算得到的結(jié)果。8.如權(quán)利要求5-7任一項(xiàng)所述的數(shù)據(jù)存儲系統(tǒng)客戶端,其特征在于,所述第一標(biāo)識或所述第二標(biāo)識分別為對所述目錄服務(wù)器或所述數(shù)據(jù)服務(wù)器的第一特征值和第二特征值進(jìn)行哈希計算得到的值;所述第一計算范圍或所述第二計算范圍為[(n-1)·2m/N,η·2m/N),其中m為大于等于32的整數(shù),η為所述目錄服務(wù)器或所述數(shù)據(jù)服務(wù)器在對應(yīng)的所述目錄服務(wù)器集群或所述數(shù)據(jù)服務(wù)器集群中的序號,N為所述目錄服務(wù)器集群或所述數(shù)據(jù)服務(wù)器集群中的所述目錄服務(wù)器或所述數(shù)據(jù)服務(wù)器的數(shù)目,且η、N均為大于O的自然數(shù);并且當(dāng)所述第一計算值或所述第二計算值位于[(η-1)·27Ν,η·27Ν)的范圍中時,則所述第一定位模塊或所述第二定位模塊相應(yīng)地定位到所述目錄服務(wù)器集群中的第η個目錄服務(wù)器或者所述數(shù)據(jù)服務(wù)器集群中的第η個數(shù)據(jù)服務(wù)器。9.一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)服務(wù)端的數(shù)據(jù)讀寫方法,用于使數(shù)據(jù)存儲系統(tǒng)服務(wù)端與數(shù)據(jù)存儲系統(tǒng)客戶端通信以進(jìn)行文件的寫入或讀取,該方法包括以下步驟531.根據(jù)所述客戶端利用第一計算值查找統(tǒng)一布局表的定位結(jié)果,使所述服務(wù)端在該定位結(jié)果對應(yīng)的目錄服務(wù)器上創(chuàng)建與待寫入文件對應(yīng)的空文件或者從該對應(yīng)的目錄服務(wù)器獲取待讀取文件的目錄信息,其中所述第一計算值是由所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第一特征值計算得到;532.根據(jù)所述客戶端利用第二計算值查找統(tǒng)一布局表的定位結(jié)果,使所述服務(wù)端在該定位結(jié)果對應(yīng)的數(shù)據(jù)服務(wù)器寫入所述待寫入文件的數(shù)據(jù)內(nèi)容或者從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取所述待讀取文件的數(shù)據(jù)內(nèi)容,其中所述第二計算值是由所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第二特征值計算得到;其中,所述統(tǒng)一布局表用于存儲所述目錄服務(wù)器集群中各目錄服務(wù)器所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,以及所述數(shù)據(jù)服務(wù)器集群中各數(shù)據(jù)服務(wù)器所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系。10.一種基于鍵值對系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)客戶端的數(shù)據(jù)讀寫方法,用于使數(shù)據(jù)存儲系統(tǒng)客戶端與數(shù)據(jù)存儲系統(tǒng)服務(wù)端通信以進(jìn)行文件的寫入或讀取,該方法包括以下步驟.541.使所述客戶端根據(jù)待寫入文件或待讀取文件的第一特征值計算得到第一計算值;.542.利用所述第一計算值查找統(tǒng)一布局表以定位到所述服務(wù)端的目錄服務(wù)器集群中對應(yīng)的目錄服務(wù)器;.543.將步驟S42的定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端相應(yīng)地在該對應(yīng)的目錄服務(wù)器上創(chuàng)建與所述待寫入文件對應(yīng)的空文件或者從該對應(yīng)的目錄服務(wù)器獲取所述待讀取文件的目錄信息;.544.使所述客戶端根據(jù)所述待寫入文件或所述待讀取文件的第二特征值計算得到第二計算值;.545.利用所述第二計算值查找所述統(tǒng)一布局表以定位到所述服務(wù)端的數(shù)據(jù)服務(wù)器集群中對應(yīng)的數(shù)據(jù)服務(wù)器;.546.將步驟S45的定位結(jié)果通知給所述服務(wù)端以使所述服務(wù)端相應(yīng)地在該對應(yīng)的數(shù)據(jù)服務(wù)器寫入所述待寫入文件的數(shù)據(jù)內(nèi)容或者從該對應(yīng)的數(shù)據(jù)服務(wù)器獲取所述待讀取文件的數(shù)據(jù)內(nèi)容;其中,所述統(tǒng)一布局表用于存儲所述服務(wù)端的目錄服務(wù)器集群中各目錄服務(wù)器所對應(yīng)的第一標(biāo)識與第一計算值范圍之間的第一映射關(guān)系,以及所述服務(wù)端的數(shù)據(jù)服務(wù)器集群中各數(shù)據(jù)服務(wù)器所對應(yīng)的第二標(biāo)識與第二計算值范圍的第二映射關(guān)系。全文摘要本申請公開了一種基于鍵值對k-v系統(tǒng)實(shí)現(xiàn)樹形目錄結(jié)構(gòu)的數(shù)據(jù)存儲系統(tǒng)服務(wù)端,用于與數(shù)據(jù)存儲系統(tǒng)客戶端通信以進(jìn)行文件的寫入和讀取,包括目錄服務(wù)器集群,由若干個目錄服務(wù)器組成,用于存儲所寫入文件的目錄信息并以樹形目錄結(jié)構(gòu)的形式呈現(xiàn)給所述客戶端;數(shù)據(jù)服務(wù)器集群,由若干個數(shù)據(jù)服務(wù)器組成,用于根據(jù)預(yù)設(shè)存儲結(jié)構(gòu)存儲所寫入文件的數(shù)據(jù)內(nèi)容;以及管理配置模塊。本申請相應(yīng)還公開了一種數(shù)據(jù)存儲系統(tǒng)客戶端以及上述數(shù)據(jù)存儲系統(tǒng)服務(wù)端和客戶端的數(shù)據(jù)讀寫方法。本申請的實(shí)施例可以實(shí)現(xiàn)數(shù)據(jù)的高效存儲和定位,并且通過目錄服務(wù)器的巧妙設(shè)計實(shí)現(xiàn)了物理存儲與邏輯結(jié)構(gòu)的有效映射,對于海量數(shù)據(jù)的存儲具有更強(qiáng)的適應(yīng)性和可擴(kuò)展性。文檔編號H04L29/08GK103002027SQ201210487740公開日2013年3月27日申請日期2012年11月26日優(yōu)先權(quán)日2012年11月26日發(fā)明者黃秋蘭,程耀東,汪璐申請人:中國科學(xué)院高能物理研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1