專利名稱:分布式內(nèi)容存儲和取回的制作方法
分布式內(nèi)容存儲和取回其他申請的交叉引用
本申請要求于2009年9月21日提交的美國臨時專利申請?zhí)?1/277,206 (代理案號TRANP006+)、標(biāo)題為 DISTRIBUTED CONTENT STORAGE AND RETRIEVAL 的優(yōu)先權(quán),出于所有目的通過引用將其結(jié)合于此。
背景技術(shù):
分布式數(shù)據(jù)存儲系統(tǒng)的設(shè)計和實現(xiàn)由于確定數(shù)據(jù)在何處以及應(yīng)當(dāng)存儲于何處的問題而復(fù)雜。盡管已經(jīng)存在將對象名稱映射到存儲位置的分布式編索引技術(shù),但是它們需要大量存儲。這些技術(shù)未提供信息將存儲于它將最終被訪問的位置附近的保證?,F(xiàn)有分布式存儲技術(shù)在故障出現(xiàn)時具有大量可用性和性能問題。
在下文詳細(xì)描述和附圖中公開本發(fā)明的各種實施例。圖I是圖示分布式內(nèi)容存儲系統(tǒng)的一個實施例的框圖。圖2是圖示用于訪問和/或存儲內(nèi)容對象的過程的一個實施例的流程圖。圖3是圖示用于收集和分布訪問統(tǒng)計的過程的一個實施例的流程圖。圖4是圖示存儲節(jié)點的一個實施例的框圖。圖5是圖示用于在存儲節(jié)點維持統(tǒng)計的過程的一個實施例的流程圖。圖6是圖示對對象名稱中的對象特征信息編碼的過程的一個實施例的流程圖。圖7是圖示用于存儲對象的過程的一個實施例的流程圖。圖8是圖示分布式內(nèi)容存儲系統(tǒng)的一個實施例的框圖。圖9是圖示用于訪問對象的過程的一個實施例的流程圖。圖IOA是圖示用于從分布式內(nèi)容存儲刪除對象的過程的一個實施例的流程圖。圖IOB是圖示用于可靠地刪除對象的負(fù)責(zé)副本的過程的一個實施例的流程圖。圖11是圖示用于在分布式內(nèi)容存儲中保存改變的過程的一個實施例的流程圖。圖12是圖示用于對存儲于分布式內(nèi)容存儲中的對象進(jìn)行改變的過程的一個實施例的流程圖。圖13是圖示用于存儲對象的過程的一個實施例的流程圖。圖14A是圖示用于訪問對象的過程的一個實施例的流程圖。圖14B是圖示用于在分布式內(nèi)容存儲系統(tǒng)中創(chuàng)建對象的過程的一個實施例的流程圖。圖15是圖示用于存儲數(shù)據(jù)庫或者其他大文件的過程的一個實施例的流程圖。圖16是圖示用于訪問和存儲對象的過程的一個實施例的流程圖。圖17是圖示存儲裝置的一個實施例的框圖。圖18是圖示存儲盤的一個實施例的框圖。
具體實施例方式可以用諸多方式(包括如過程;裝置;系統(tǒng);物質(zhì)組成;在計算機(jī)可讀存儲介質(zhì)上包含的計算機(jī)程序產(chǎn)品;和/或處理器(諸如如下處理器,該處理器被配置成執(zhí)行在耦合到處理器的存儲器上存儲的和/或該存儲器提供的指令))實現(xiàn)本發(fā)明。在本說明書中,這些實現(xiàn)或者本發(fā)明可以采用的任何其他形式可以稱為技術(shù)。一般而言,可以在本發(fā)明的范圍內(nèi)變更公開的過程的步驟順序。除非另有明示,描述為被配置成執(zhí)行任務(wù)的部件(諸如處理器或者存儲器)可以實現(xiàn)為暫時被配置成在給定時間執(zhí)行該任務(wù)的一般部件或者制造成執(zhí)行該任務(wù)的具體部件。如這里所用,術(shù)語‘處理器’是指被配置成處理數(shù)據(jù)(諸如計算機(jī)程序指令)的一個或者多個設(shè)備、電路和/或處理核。下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細(xì)描述。結(jié)合這樣的實施例描述本發(fā)明,但是本發(fā)明并不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求書限制,并且本發(fā)明涵蓋諸多替代、修改和等效物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)仍然可以根據(jù)權(quán)利要求實現(xiàn)本發(fā)明。為求簡潔,尚未詳細(xì)描述在與本發(fā)明有關(guān)的技術(shù)領(lǐng)域中已知的技術(shù)素材,使得未使本發(fā)明不必要地變得難以理解。公開用于分布式內(nèi)容存儲和取回的技術(shù)。使用多種分布式系統(tǒng)技術(shù),公開的對象存儲跨越全局分散的網(wǎng)絡(luò)冗余地散布信息。在各種實施例中,對象存儲于它們最可能被使用的位置附近,從而使系統(tǒng)可用性、對地理分散的資源的使用和最終用戶性能最大化。系統(tǒng)經(jīng)由分布式合意(consensus)機(jī)制共享對象訪問和存儲簡檔。當(dāng)嘗試取回或者存儲對象時,針對特征掃描對象標(biāo)識符。使特征相關(guān)以估計每個位置訪問該對象的頻率。針對每個潛在存儲位置,組合網(wǎng)絡(luò)拓?fù)湫畔⑴c這些估計以發(fā)現(xiàn)該存儲選項的成本。確定性函數(shù)組合這一成本數(shù)據(jù)與管理員配置的策略以確定數(shù)據(jù)應(yīng)當(dāng)存儲于何處以及如何取回對象。函數(shù)被構(gòu)造成即使添加或者去除存儲位置時仍然造成公平和最少對象重新分配。在一些實現(xiàn)中,管理策略和索引信息存儲于全局疊加網(wǎng)絡(luò)中。該設(shè)計受控制系統(tǒng)理論嚴(yán)重影響,因為系統(tǒng)嚴(yán)重受抑制并且表現(xiàn)對使用和拓?fù)涓淖兊男逼马憫?yīng)。如這里所用,術(shù)語“特征”是指對象標(biāo)識符的性質(zhì)。性質(zhì)可以是布爾或者可以由在O與I之間的置信水平代表。任何對象標(biāo)識符可以視為擁有特征集合。術(shù)語“訪問概率矩陣”是指如下矩陣,該矩陣包含從給定節(jié)點進(jìn)行對具有給定特征的對象的任何給定訪問的概率,其中行代表對象特征而列代表請求位置?!霸L問計數(shù)矩陣”是指除了每個單元包含訪問計數(shù)而不是百分比之外具有與訪問概率矩陣相同的結(jié)構(gòu)的矩陣?!肮?jié)點”是分布式系統(tǒng)中的負(fù)責(zé)對象存儲和對象查詢的計算機(jī)或者其他設(shè)備兩者??梢詫⒐?jié)點和存儲設(shè)備組織成層級。該層級可以包含作為級別節(jié)點的存儲設(shè)備和管理員指定的下級的分組。作為例子,可以有稱為“大陸”的層級級別,該級別包含北美洲、歐洲和亞洲,每個洲包含如下辦公室,這些辦公室包含如下節(jié)點,這些節(jié)點包含存儲設(shè)備?!拔恢谩笔菍蛹壷械娜魏谓o定實體(例如具體辦公室或者具體存儲設(shè)備)。使用以下矩陣約定(convention):
At表示矩陣A的轉(zhuǎn)置
4表示矩陣A的i行j列中的值
矩陣等式中的I表示I值填充的適當(dāng)大小的行或者列IXn或者nX I矩陣。、
· Cj表示矢量C的第j個元素 使用以下概率約定
Ρ(Λ\Β)表示在給定A為真時J為真的概率?!?Fi表示訪問概率矩陣的行i代表的特征存在?!?%表示訪問概率矩陣的列J代表的節(jié)點將執(zhí)行訪問。
· 1 表示除了訪問概率矩陣的列j代表的節(jié)點之外的節(jié)點將執(zhí)行訪問。圖I是圖示分布式內(nèi)容存儲系統(tǒng)的一個實施例的框圖。在所示例子中,在所示例子中由客戶端102和104代表的一個或者多個客戶端經(jīng)由因特網(wǎng)(和/或一個或者多個其他網(wǎng)絡(luò))106連接到多個存儲節(jié)點108。每個節(jié)點108被配置成存儲如下數(shù)據(jù)對象(諸如文件),這些數(shù)據(jù)對象包括存儲的內(nèi)容對象體。在各種實施例中,每個節(jié)點108本地收集統(tǒng)計,例如針對一個或者多個特征中的每個特征,已經(jīng)在節(jié)點訪問(或者替代地為最近訪問)具有該特征的多少個對象和/或在節(jié)點上存儲具有該特征的多少個對象。節(jié)點108經(jīng)由分布式合意機(jī)制協(xié)作以共享訪問和/或存儲統(tǒng)計。生成并且向節(jié)點分發(fā)全局訪問概率矩陣,并且在相應(yīng)節(jié)點使用這些矩陣做出存儲和/或?qū)ο笤L問決策。例如,可以在至少部分地由于對象具有如下特征或者特征集合而選擇的節(jié)點上存儲等于對象的所有其他內(nèi)容,該特征或者特征集合造成在作出存儲決策(即選擇用于將對象存儲于其上的一個或者多個節(jié)點)的節(jié)點處使用用于相應(yīng)節(jié)點的收集和分發(fā)的每個特征的訪問概率來確定統(tǒng)計上可能將從所選節(jié)點(或者從在所選節(jié)點附近的某處)訪問待存儲的對象。在各種實施例中,成本信息(諸如經(jīng)由在節(jié)點A (或者在節(jié)點A附近)向?qū)ο蟠鎯τ谄渖系墓?jié)點B進(jìn)行的請求來訪問對象的成本)與訪問和/或存儲的對象統(tǒng)計一起考慮。在一些實施例中,也實施管理策略并且將這些策略納入到節(jié)點選擇中。例如如果已經(jīng)選擇第一節(jié)點A用于存儲對象并且管理策略要求兩個副本存儲于分離的地理位置,則選擇未在與節(jié)點A相同的地理位置的第二節(jié)點B用于存儲第二副本。圖2是圖示用于訪問和/或存儲內(nèi)容對象的過程的一個實施例的流程圖。在所示例子中,當(dāng)將存儲對象或者希望訪問對象時,先前收集的統(tǒng)計(例如每個節(jié)點的每個特征的訪問和/或存儲對象計數(shù),這些計數(shù)被轉(zhuǎn)換成如下訪問概率,這些訪問概率針對每個節(jié)點指示具有特定特征的對象在該節(jié)點處被存儲和/或?qū)⒈辉L問的可能性)和將存儲的或者希望訪問的對象的特征用來針對每個候選節(jié)點確定將在該節(jié)點訪問(和/或在一些實施例中存儲的)對象的概率(202)。確定的訪問概率與成本、管理策略和/或其他信息一起用來選擇將在其存儲和/或從其嘗試訪問對象的一個或者多個節(jié)點(204)。在一些實施例中,訪問統(tǒng)計用來選擇將在其上存儲待存儲的對象的一個或者多個節(jié)點。在一些實施例中,存儲的對象統(tǒng)計用來選擇如下一個或者多個節(jié)點,將從該節(jié)點請求訪問待訪問的對象。關(guān)于存儲,在各種實施例中的方式尋求在如下位置存儲對象,這些位置使它們在受制于管理策略的要求時以最小成本使如下用戶的可用性最大,這些用戶被確定為統(tǒng)計上最可能訪問它們。類似地,在各種實施例,關(guān)于在公開的方式之下的訪問,請求者嘗試從至少部分地基于共享的訪問和/或存儲對象統(tǒng)計以及根據(jù)這些統(tǒng)計確定的概率來確定的如下節(jié)點取回內(nèi)容,該節(jié)點可能讓對象存儲于其上,例如因為存儲節(jié)點可能將基于相同(或者有關(guān))統(tǒng)計已經(jīng)選擇它用于存儲節(jié)點。在各種實施例中,在系統(tǒng)內(nèi)的每個節(jié)點保持每個特征的對包含該特征的對象的訪問在該節(jié)點被發(fā)起多少次的計數(shù)。可以在節(jié)點處在分布式存儲系統(tǒng)內(nèi)出于各種原因(例如代表在節(jié)點上運(yùn)行的過程或者由于該節(jié)點接收的來自用戶或者客戶端計算系統(tǒng)的外部請求)而發(fā)起訪問或者其他操作。此外還維持從這一節(jié)點訪問的對象數(shù)量的計數(shù)。類似地,在一些實施例中,每個節(jié)點可以保持它的本地存儲文件中的多少個文件具有給定特征和存儲的文件總數(shù)的計數(shù)。當(dāng)已經(jīng)預(yù)備并且準(zhǔn)備好分發(fā)新訪問和存儲簡檔時,節(jié)點經(jīng)由原子承諾(commitment)協(xié)議關(guān)于新簡檔達(dá)成協(xié)定。這一協(xié)定包括簡檔本身和簡檔將變得活躍的時間兩者。通過自動改變?yōu)樾潞啓n,系統(tǒng)確保節(jié)點將總是將一致信息用于存儲和搜索決策。延遲的激活時間也允許統(tǒng)計簡檔的多個版本為所有節(jié)點已知。這允許搜索、存儲和異常列表處置使用任何或者所有可用版本來做出決策。例如新存儲決策可能使用尚未活躍但是不久將變成活躍的簡檔。在一個實施例中,系統(tǒng)可以保留最后四個訪問簡檔并且能夠針對根據(jù)那些簡檔存儲的任何對象使用那些簡檔來對對象定位而不求助其他手段。在一個實施例中,節(jié)點保證將在訪問簡檔改變之后需要異常列表條目的所有它們的對象在訪問簡檔改變生效之前在異常列表中具有這樣的條目。
系統(tǒng)定期聚集來自每個節(jié)點的特征訪問模式。這可以由系統(tǒng)內(nèi)的減少信息的單個動作器、通過全局MapReduce步驟、通過交易協(xié)定機(jī)制或者通過其他手段來完成。圖3是圖示用于收集和分發(fā)訪問統(tǒng)計的過程的一個實施例的流程圖。以下關(guān)鍵步驟出現(xiàn)于各種實施例中
從每個節(jié)點收集(302)存儲文件和最近訪問的每特征計數(shù)??梢越M合這些計數(shù)以形成每個位置和特征對的相應(yīng)計數(shù)的頻率矩陣。在一些實施例中,將訪問簡檔信息存儲為矩陣,其中行對應(yīng)于特征而列對應(yīng)于從其出現(xiàn)訪問的位置。存儲簡檔將隨時間接近訪問簡檔,因為基于訪問簡檔選擇存儲位置。存儲計數(shù)代表系統(tǒng)的實際狀態(tài)而不是動態(tài)趨勢,因此它們在未過濾時最準(zhǔn)確。每個節(jié)點確切知道如下值,這些值應(yīng)當(dāng)填充它的列。組合信息與先前訪問簡檔(304)。經(jīng)常希望向較新的信息給予較大權(quán)重。一種可以實現(xiàn)此的方式是通過使用認(rèn)為最近信息比歷史數(shù)據(jù)更重要的低通濾波器(諸如無限沖激響應(yīng)濾波器)。替代地,全局優(yōu)化技術(shù)(諸如仿真或者量子退火)也可以用來發(fā)現(xiàn)如下新訪問簡檔,該訪問簡檔在接近最近觀測的訪問統(tǒng)計時使對象重新定位最小化。隨機(jī)方法可以用來確定將最小化的分?jǐn)?shù);替代地,可以使用如下函數(shù),該函數(shù)基于提議的訪問簡檔與最近觀測的訪問率和按照特征對當(dāng)前存儲位置的計數(shù)有多么好地匹配來計分。這一過程通過比較重新定位成本與節(jié)省的訪問成本來區(qū)分簡檔改變的優(yōu)先次序。從每個節(jié)點訪問的對象的總計數(shù)可以與整個集群執(zhí)行的全部訪問的數(shù)量之和一起由相同流程維持。隨著過去觀測的權(quán)重減少,過去數(shù)據(jù)代表的對象訪問的計數(shù)也按照相同比例減少。對于對計數(shù)數(shù)據(jù)的過濾而言希望但是未必確保所有單元為非零。這防止貝葉斯推論將任何特征的存在解釋為針對任何位置的絕對的排除確保。計算訪問計數(shù)矩陣中的所有單元的標(biāo)量和除以矩陣代表的對象訪問的總計數(shù),從而給出每個訪問存在的對象特征的平均數(shù)量(即平均特征計數(shù))(305)。通過將訪問計數(shù)矩陣中的每個值除以矩陣中的所有單元之和以針對特征和節(jié)點的每個配對產(chǎn)生訪問概率來形成新訪問概率矩陣(308)。換而言之,這一矩陣在每個條目中存儲訪問的給定特征將來自與該條目的列對應(yīng)的節(jié)點并且是與該條目的行對應(yīng)的特征的概率(受制于朝著濾波器提供的最近數(shù)據(jù)的偏斜)。這一概率對應(yīng)于如下訪問的預(yù)計比例(該比例是訪問頻率),這些訪問將針對來自相應(yīng)位置的具有這些特征的對象。針對所得訪問概率矩陣中的每個特征行,計算觀測的統(tǒng)計顯著性(309)。這是通過首先發(fā)現(xiàn)跨越所有特征的訪問計數(shù)之和代表的空假設(shè)分布并且然后計算如與全局訪問概率的空假設(shè)分布相比的用于行的P值來執(zhí)行的。這幫助確定給定行是否是有用的訪問位置預(yù)測值(predictor)或者是否純粹偶然地產(chǎn)生從基線分布的偏斜。這在存在關(guān)于特征的訪問模式的很少數(shù)據(jù)時特別有用。
向分布式存儲系統(tǒng)中的各種節(jié)點分發(fā)訪問概率矩陣、統(tǒng)計顯著性矢量和標(biāo)量平均特征計數(shù)(310)。在其他實施例中,向各種節(jié)點分發(fā)計數(shù),并且在分發(fā)之后節(jié)點執(zhí)行概率計算。在各種實施例中,也分發(fā)每個對象的平均特征數(shù)量或者對象總數(shù)。圖4是圖示存儲節(jié)點的一個實施例的框圖。在各種實施例中,存儲節(jié)點402可以包括服務(wù)器或者其他計算機(jī)。在所示例子中,節(jié)點402包括經(jīng)由連接406提供網(wǎng)絡(luò)連接性的通信接口 404 (例如網(wǎng)絡(luò)接口卡)。內(nèi)容訪問和存儲引擎408經(jīng)由通信接口 404和連接406來與客戶端和/或其他節(jié)點通信以執(zhí)行任務(wù)(諸如提供對請求內(nèi)容對象的訪問以及例如在節(jié)點402上和/或在對等節(jié)點上存儲待存儲的內(nèi)容對象)。在一些實施例中,內(nèi)容訪問和存儲引擎408包括在處理器上運(yùn)行的一個或者多個軟件模塊。在各種實施例中的內(nèi)容訪問和存儲引擎408被配置成在對象存儲410中存儲內(nèi)容對象和/或提供對存儲于其中的對象的訪問。在各種實施例中,節(jié)點可以具有多個本地“對象存儲”(盤/存儲位置)。內(nèi)容訪問和存儲引擎408在訪問統(tǒng)計和矩陣412中維持和存儲每個特征的針對本地訪問和/或存儲對象的本地計數(shù)。內(nèi)容訪問和存儲引擎408定期例如向所有對等節(jié)點和/或向一個或者多個中心位置報告本地計數(shù)。在一些實施例中,MapReduce或者其他分布式技術(shù)用來收集數(shù)據(jù)。在一些實施例中,在重新分發(fā)之前通過低通濾波器或者其他抑制(damping)機(jī)制變換計數(shù)數(shù)據(jù)。合意機(jī)制可以用來保證所有訪問和存儲引擎共享共同簡檔。內(nèi)容訪問和存儲引擎408被配置成經(jīng)由接口 404接收集中和/或在對等節(jié)點基于節(jié)點集群(節(jié)點402是該集群的成員)中的相應(yīng)節(jié)點報告的每個特征的計數(shù)來確定的訪問概率和/或其他矩陣并且使用矩陣關(guān)于特定對象基于它們的相應(yīng)特征做出存儲和/或訪問決策。圖5是圖示用于在存儲節(jié)點維持統(tǒng)計的過程的一個實施例的流程圖。在所示例子中,每次訪問和/或存儲對象(502)時,確定訪問/存儲的對象的特征(504)并且更新每個特征的適用計數(shù)(506)。例如如果訪問具有六個被跟蹤特征的集合中的特征2、3和5的對象,則將遞增針對特征2、3和5的相應(yīng)的每個特征訪問計數(shù)。在一些實施例中,對對象特征編碼或者對象特征包含在對象名稱中或者通過直接解釋對象的名稱可辨認(rèn)對象特征。當(dāng)系統(tǒng)嘗試訪問對象時,它評估關(guān)于對象名稱的如下函數(shù),該函數(shù)解釋對象名稱的特性以生成特征集合。特性可以包括對象路徑名分量的散列值、字母和二合字母(digraph)頻率測量、其他統(tǒng)計測量或者其任何組合。函數(shù)必須針對任何給定對象名稱返回確切相同特征集合。可以在每個節(jié)點的基礎(chǔ)上維持每個特征的訪問和存儲計數(shù)。替代地,節(jié)點可以通過針對該節(jié)點發(fā)起的嘗試訪問的每個特征遞增每個盤上的訪問計數(shù)來針對它的盤維持這些計數(shù)。在該盤上的訪問計數(shù)統(tǒng)計然后代表已經(jīng)包含該盤的(一個或多個)節(jié)點已經(jīng)針對包含特征的對象發(fā)起訪問的頻率。類似地,節(jié)點可以在每個盤上維持存儲于該盤上的對象計數(shù)。在其他實施例中,可以在存儲層級中的除了節(jié)點和盤之外的位置維持訪問。
圖6是圖示對對象名稱中的對象特征信息編碼的過程的一個實施例的流程圖。在所示例子中,當(dāng)保存對象(602)時,例如基于包括對象的數(shù)據(jù)和/或關(guān)于對象的元數(shù)據(jù)確定對象的被跟蹤特征(604)。確定的特征用來創(chuàng)建(例如在首次保存對象時)或者更新(例如如果特征從上次訪問起已經(jīng)改變)用來在分布式內(nèi)容存儲系統(tǒng)中知道對象的名稱(606)。在各種實施例中,每個特征由在對象名稱中包括的串代表,使得在分布式存儲中的任何節(jié)點可以通過解釋包括對象名稱的數(shù)據(jù)來確定特征而不必檢查全局或者其他索引條目。在一些實施例中,通過分析全局對象名稱來確定對象特征??梢詫ο竺Q形成為層級,并且針對層級的每個部分計算的散列函數(shù)可以確定特征。此外,在名稱中編碼的層級的名稱或者級別還可以點綴有解析器可提取的各種附加屬性。這些屬性的散列可以提供用于對象的特征??梢詮膶ο竺Q提取各種其他隱含特征(諸如二合字母和三合字母頻率)。例如,最頻繁三合字母可以視為對象的特征而其他三合字母則不是,或者關(guān)于每個三合字母的頻率計算的對數(shù)函數(shù)可以提供用于每個三合字母特征的置信水平。圖7是圖示用于存儲對象的過程的一個實施例的流程圖。在所示例子中,當(dāng)接收對存儲對象的請求(例如來自客戶端系統(tǒng))(702 )時,評估對象的名稱以確定包括被跟蹤的特征的集合的哪個或者哪些特征(如果有)與對象關(guān)聯(lián)(704)。針對作為(或者保留為)用于存儲對象的候選的每個節(jié)點,訪問統(tǒng)計(例如集群范圍的訪問概率矩陣)用來根據(jù)對象的特征確定待存儲的對象將在該節(jié)點被訪問的預(yù)計頻率(706)。在一些實施例中,在確定每個節(jié)點的概率之前和/或與之結(jié)合,如下文更完全描述的那樣調(diào)整原始訪問概率矩陣以實現(xiàn)存儲對象和/或其副本的更均勻分布。針對每個(保留)候選節(jié)點,如果對象存儲于該節(jié)點,則確定每個訪問的平均成本(例如考慮如例如基于訪問概率矩陣確定的在相應(yīng)節(jié)點與可能從其進(jìn)行訪問請求的可能節(jié)點之間的通信成本)(708)。根據(jù)適用管理策略評估預(yù)計訪問頻率和成本信息以選擇一個或者多個節(jié)點用于存儲對象(710)。例如管理策略可以提供對象的兩個副本必須存儲于不同地理位置。在一些實施例中,迭代執(zhí)行706、708和710直至確定滿足適用管理策略的存儲節(jié)點集合。例如管理策略可以提供對象的兩個副本必須存儲于不同地理位置??梢曰谠L問概率和成本信息選擇第一節(jié)點。從作為候選的競爭中去除第一節(jié)點和為了服從適用管理策略而必須去除的任何其他節(jié)點。在當(dāng)前例子中,可以從競爭中例如去除在與第一節(jié)點相同的地理位置的其他節(jié)點和第一節(jié)點本身,并且如在保留節(jié)點之間例如基于訪問概率和成本信息確定第二節(jié)點(未必在與第一節(jié)點相同的地理位置,因為已經(jīng)從競爭中去除所有這樣的節(jié)點)。在(一個或多個)所選節(jié)點上存儲對象(712)。在一些實施例中,除了存儲對象的副本之外,每個所選節(jié)點還存儲關(guān)于對象的元數(shù)據(jù),包括如下元數(shù)據(jù),該元數(shù)據(jù)指示對象的“負(fù)責(zé)”副本被存儲的其他位置。在一些實施例中,這樣的信息例如在存儲位置的故障情況下用來向不受故障影響的節(jié)點遷移存儲于出故障的位置內(nèi)存儲的每個對象的副本以便恢復(fù)服從指定的冗余策略。在一些實施例中,這樣的信息可以 在存儲位置的故障情況下用來保證更新異常列表??梢詫Υ鎯τ诿總€節(jié)點上的元數(shù)據(jù)編索弓丨,使得可以快速發(fā)現(xiàn)也在給定替代位置存儲的條目。也可以對存儲于每個節(jié)點上的元數(shù)據(jù)編索引,使得可以快速發(fā)現(xiàn)具有給定特征的條目。在特征并非布爾的情況下,可以按照每個特征內(nèi)的置信水平對索引排序。圖8是圖示分布式內(nèi)容存儲系統(tǒng)的一個實施例的框圖。在所示例子中,分布式內(nèi)容存儲系統(tǒng)包括如下集群,該集群包括位于三個分離地理位置(例如企業(yè)或者其他實體的三個地理地點)的三個存儲節(jié)點集。與第一局域網(wǎng)(LAN) 804關(guān)聯(lián)的節(jié)點802、與第二 LAN814關(guān)聯(lián)的節(jié)點812和與第三LAN 824關(guān)聯(lián)的節(jié)點822經(jīng)由因特網(wǎng)830互連。在這一例子中,如在上文結(jié)合圖7描述的例子(其中管理策略要求第二副本存儲于分離地理位置)中那樣,按照地理位置組織節(jié)點,從而使得能夠在節(jié)點和/或地理基礎(chǔ)上定義和實施管理策略。也可以在管理員向在層級的任何級別的任何存儲位置(包括但不限于盤、節(jié)點和地理位置)分配的屬性方面定義管理策略。圖9是圖示用于訪問對象的過程的一個實施例的流程圖。在所示例子中,例如從客戶端計算機(jī)接收如下請求,該請求針對訪問在請求中命名的內(nèi)容對象(902 )。如上文描述的那樣,根據(jù)名稱確定對象特征,并且例如基于訪問概率、成本信息和管理策略確定預(yù)期請求的對象可能存儲于其上的一個或者多個節(jié)點的集合(904)。在一些實施例中,為了選擇將從其嘗試訪問請求的對象的節(jié)點,處理訪問請求的節(jié)點基于訪問統(tǒng)計、成本信息和管理策略確定節(jié)點如果被請求這樣做則將在何處存儲對象。在一些替代實施例中,訪問概率 信息用來選擇將其上存儲對象的節(jié)點,但是存儲的對象計數(shù)和根據(jù)這些計數(shù)導(dǎo)出的概率信息用來選擇將從其嘗試訪問請求的對象的節(jié)點。在一些實施例中,在使用訪問(或者存儲對象)概率和其他信息確定將從其嘗試取回請求的對象的節(jié)點之前,檢查本地索引以確定是否本地存儲對象,并且如果是這樣,則從本地存儲供應(yīng)對象并且圖9的過程未完成。一旦已經(jīng)選擇將從其嘗試取回請求的對象的節(jié)點,就從該節(jié)點嘗試取回請求的對象(908)。如果嘗試成功(910)(即所選節(jié)點具有對象的副本并且提供對對象的訪問),則該過程結(jié)束。如果不是,則確定是否任何更多候選節(jié)點留待檢查(912)。如果是這樣,則選擇下一候選節(jié)點(914,906)并且嘗試從該節(jié)點取回對象(908)。如果可用于檢查的最后節(jié)點沒有對象的副本(912),則返回如下異常(916),該異常指示預(yù)計具有對象的節(jié)點事實上無副本并且圖9的過程結(jié)束。在一些實施例中,異常(916)造成檢查全局異常索引以查看對象是否已經(jīng)存儲于在索引中標(biāo)識的位置/節(jié)點中。如果是這樣,則從在索引中指示的節(jié)點取回對象。如果不能發(fā)現(xiàn)副本,則向請求客戶端反回如下錯誤,該錯誤指示對象未存在于分布式存儲中。在以下例子中
A是如結(jié)合圖3的308在
中描述的訪問概率矩陣?!?L是在如上文結(jié)合圖3的309描述的
中計算的每行的P值矢量。· K是來自上文結(jié)合圖3的305描述的
的訪問簡檔矩陣中的所有單元的標(biāo)量和除以來自
的訪問數(shù)量。在一些實施例中,訪問計數(shù)矩陣具有每個特征的一行和每個訪問位置的一列。在五十次訪問之后的用于六個特征和四個位置的例子矩陣是
權(quán)利要求
1.一種存儲數(shù)據(jù)的方法,包括 確定與內(nèi)容對象關(guān)聯(lián)的特征集合;并且 至少部分地基于概率數(shù)據(jù)從包括分布式內(nèi)容存儲系統(tǒng)的多個存儲位置選擇用于關(guān)于所述內(nèi)容對象執(zhí)行操作的存儲位置,所述概率數(shù)據(jù)指示選擇的存儲位置與包括所述特征集合的被確定為與所述內(nèi)容對象關(guān)聯(lián)的特征在統(tǒng)計上關(guān)聯(lián)的程度。
2.根據(jù)權(quán)利要求I所述的方法,其中所述操作包括在所述選擇的存儲位置內(nèi)存儲所述內(nèi)容對象。
3.根據(jù)權(quán)利要求2所述的方法,其中在存儲區(qū)域網(wǎng)絡(luò)上執(zhí)行所述操作。
4.根據(jù)權(quán)利要求2所述的方法,其中在網(wǎng)絡(luò)附著存儲設(shè)備上執(zhí)行所述操作。
5.根據(jù)權(quán)利要求I所述的方法,其中所述操作包括在所述選擇的存儲位置嘗試訪問所述內(nèi)容對象。
6.根據(jù)權(quán)利要求5所述的方法,其中在存儲區(qū)域網(wǎng)絡(luò)上執(zhí)行所述操作。
7.根據(jù)權(quán)利要求5所述的方法,其中在網(wǎng)絡(luò)附著存儲設(shè)備上執(zhí)行所述操作。
8.根據(jù)權(quán)利要求I所述的方法,其中所述操作包括至少部分地基于指示所述選擇的存儲位置與所述特征關(guān)聯(lián)的所述程度的所述概率數(shù)據(jù)從選擇的位置嘗試取回所述內(nèi)容對象而未首先基于索引或者其他數(shù)據(jù)確定所述內(nèi)容對象事實上存儲于所述選擇的存儲位置內(nèi)。
9.根據(jù)權(quán)利要求I所述的方法,其中所述選擇的存儲位置與所述特征在統(tǒng)計上關(guān)聯(lián)的所述程度至少包括選擇的位置如與未選擇的另一位置相比與所述特征關(guān)聯(lián)的相對程度。
10.根據(jù)權(quán)利要求I所述的方法,其中所述選擇的存儲位置包括地理位置。
11.根據(jù)權(quán)利要求I所述的方法,其中所述選擇的存儲位置包括節(jié)點。
12.根據(jù)權(quán)利要求I所述的方法,其中所述選擇的存儲位置包括盤。
13.根據(jù)權(quán)利要求I所述的方法,其中所述特征集合包括關(guān)于所述內(nèi)容對象為真的一個或者多個聲明。
14.根據(jù)權(quán)利要求I所述的方法,其中確定所述特征集合包括解析所述內(nèi)容對象的對象名稱。
15.根據(jù)權(quán)利要求I所述的方法,其中所述概率數(shù)據(jù)包括概率矩陣,所述概率矩陣針對包括所述分布式內(nèi)容存儲系統(tǒng)的所述多個存儲位置中的每個并且關(guān)于每個節(jié)點針對每個特征指示具有所述特征的對象與該節(jié)點關(guān)聯(lián)的概率。
16.根據(jù)權(quán)利要求I所述的方法,其中所述概率數(shù)據(jù)包括概率矩陣,所述概率矩陣針對包括所述分布式內(nèi)容存儲系統(tǒng)的所述多個存儲設(shè)備中的每個并且關(guān)于每個設(shè)備針對每個特征指示從包含該設(shè)備的所述節(jié)點訪問具有所述特征的對象的頻率。
17.根據(jù)權(quán)利要求I所述的方法,其中所述特征集合包括一個或者多個特征,并且還包括使用所述概率數(shù)據(jù)針對所述集合中的每個特征確定多個候選位置中的每個位置與該特征在統(tǒng)計上關(guān)聯(lián)的程度。
18.根據(jù)權(quán)利要求17所述的方法,還包括關(guān)于每個候選位置確定與選擇在該候選位置內(nèi)包含的節(jié)點用于執(zhí)行所述操作關(guān)聯(lián)的預(yù)計成本。
19.根據(jù)權(quán)利要求18所述的方法,其中至少部分地基于確定為與選擇相應(yīng)候選位置用于執(zhí)行所述操作關(guān)聯(lián)的相應(yīng)預(yù)計成本來選擇所選擇的位置。
20.根據(jù)權(quán)利要求18所述的方法,還包括應(yīng)用管理策略以根據(jù)所述選擇的位置與所述特征關(guān)聯(lián)的確定的程度以及與選擇所述選擇的位置關(guān)聯(lián)的確定的成本來確定所述選擇的位置是合格的和需要選擇的之一或兩者。
21.根據(jù)權(quán)利要求20所述的方法,其中在層級內(nèi)重復(fù)選擇直至選擇個別存儲設(shè)備或者存儲節(jié)點。
22.根據(jù)權(quán)利要求20所述的方法,其中做出多個選擇直至所述選擇與指定的冗余要求相符。
23.根據(jù)權(quán)利要求18所述的方法,其中針對每個候選位置,與在該候選位置存儲所述內(nèi)容對象關(guān)聯(lián)的確定的成本部分地基于從多個位置請求訪問內(nèi)容條目的相應(yīng)頻率來反映訪問如在該位置內(nèi)的節(jié)點上存儲的所述內(nèi)容對象的預(yù)計將來成本。
24.根據(jù)權(quán)利要求I所述的方法,其中至少部分地通過在所述多個存儲位置中的每個存儲位置收集訪問計數(shù)數(shù)據(jù)來確定所述概率數(shù)據(jù),所述訪問計數(shù)數(shù)據(jù)針對包括多個特征的每個特征反映已經(jīng)從該位置訪問具有該特征的多少個對象。
25.根據(jù)權(quán)利要求24所述的方法,其中與相對更近的訪問事件關(guān)聯(lián)的特征計數(shù)比相對不太近的訪問事件加權(quán)更重。
26.根據(jù)權(quán)利要求24所述的方法,其中通過減少在所述訪問計數(shù)數(shù)據(jù)中反映訪問統(tǒng)計的改變的程度來抑制這樣的改變。
27.根據(jù)權(quán)利要求26所述的方法,其中通過使訪問計數(shù)數(shù)據(jù)穿過無限沖激響應(yīng)或者其他低通濾波器來抑制訪問統(tǒng)計的改變。
28.根據(jù)權(quán)利要求26所述的方法,其中通過估計或者確定按照給定的新訪問簡檔將不再處于它們的優(yōu)選位置的對象比例并且應(yīng)用優(yōu)化算法來抑制所述訪問統(tǒng)計的改變,所述優(yōu)化算法被配置成針對將不再處于它們的優(yōu)選位置的對象比例平衡朝著所述新訪問簡檔的收斂。
29.根據(jù)權(quán)利要求28所述的方法,其中通過隨機(jī)采樣對象群體并且針對隨機(jī)采樣中的每個對象確定按照所述給定的新訪問簡檔所述對象是否在它的優(yōu)選位置來形成對將不再處于它們的優(yōu)選位置的對象比例的估計。
30.根據(jù)權(quán)利要求24所述的方法,還包括從包括多個存儲位置的相應(yīng)存儲位置收集所述訪問計數(shù)數(shù)據(jù)并且生成訪問概率矩陣,所述訪問概率矩陣針對包括所述分布式內(nèi)容存儲系統(tǒng)的所述多個存儲位置中的每個存儲位置并且關(guān)于每個位置針對每個特征指示將從該位置訪問具有所述特征的對象的預(yù)計頻率。
31.根據(jù)權(quán)利要求I所述的方法,其中所述概率數(shù)據(jù)指示將從選擇的位置訪問具有所述特征的對象的預(yù)計頻率,并且選擇所述選擇的位置用于執(zhí)行的操作是存儲所述內(nèi)容對象。
32.根據(jù)權(quán)利要求I所述的方法,其中所述概率數(shù)據(jù)指示具有所述特征的對象存儲于選擇位置的概率,并且選擇所述選擇的位置用于執(zhí)行的操作是訪問所述內(nèi)容對象。
33.根據(jù)權(quán)利要求I所述的方法,其中所述內(nèi)容對象包括文件。
34.根據(jù)權(quán)利要求I所述的方法,其中所述內(nèi)容對象包括數(shù)據(jù)庫或者文件的分區(qū)。
35.根據(jù)權(quán)利要求34所述的方法,還包括將所述數(shù)據(jù)庫或者文件分割成多個分區(qū);并且將所述分區(qū)中的每個分區(qū)存儲于至少部分地基于所述分區(qū)的特征確定的對應(yīng)選擇的存儲位置。
36.根據(jù)權(quán)利要求I所述的方法,還包括應(yīng)用與關(guān)于所述內(nèi)容對象執(zhí)行所述操作有關(guān)的管理策略。
37.根據(jù)權(quán)利要求I所述的方法,其中所述操作包括在不能根據(jù)選擇的異常策略存儲所述內(nèi)容對象的情況下執(zhí)行異常處置。
38.根據(jù)權(quán)利要求37所述的方法,其中所述異常處置包括在一個或者多個替代存儲位置存儲所述內(nèi)容對象,所述一個或者多個替代存儲位置中的一個或者多個替代存儲位置不是優(yōu)選存儲位置,并且在異常索引中產(chǎn)生指示所述內(nèi)容對象存儲于所述一個或者多個替代存儲位置的條目。
39.根據(jù)權(quán)利要求38所述的方法,還包括向一個或者多個優(yōu)選存儲位置遷移所述內(nèi)容對象。
40.根據(jù)權(quán)利要求39所述的方法,還包括從所述異常索引去除所述條目。
41.根據(jù)權(quán)利要求39所述的方法,其中由于在優(yōu)選存儲位置內(nèi)執(zhí)行的訪問請求而遷移所述內(nèi)容對象。
42.根據(jù)權(quán)利要求37所述的方法,其中所述操作包括恢復(fù)一個或者多個內(nèi)容對象的冗余性。
43.根據(jù)權(quán)利要求I所述的方法,其中所述操作包括響應(yīng)于在存儲位置中檢測到故障來恢復(fù)一個或者多個內(nèi)容對象的冗余性。
44.根據(jù)權(quán)利要求I所述的方法,其中所述操作包括訪問所述內(nèi)容對象,并且還包括確定所述內(nèi)容對象從根據(jù)適用異常策略確定的一個或者多個優(yōu)選位置不可用并且查詢異常索引以標(biāo)識將從其請求所述內(nèi)容對象的替代位置。
45.—種分布式內(nèi)容存儲系統(tǒng),包括 存儲設(shè)備,被配置成存儲內(nèi)容對象;以及 處理器,耦合到所述存儲設(shè)備并且被配置成確定與內(nèi)容對象關(guān)聯(lián)的特征集合;并且至少部分地基于概率數(shù)據(jù)從分布式內(nèi)容存儲系統(tǒng)內(nèi)的多個存儲位置選擇將在其關(guān)于所述內(nèi)容對象執(zhí)行操作的存儲位置,所述概率數(shù)據(jù)指示選擇的存儲位置與包括所述特征集合的確定為與所述內(nèi)容對象關(guān)聯(lián)的特征在統(tǒng)計上關(guān)聯(lián)的程度。
46.根據(jù)權(quán)利要求45所述的系統(tǒng),其中所述操作包括至少部分地基于指示所述選擇的存儲位置與所述特征關(guān)聯(lián)的所述程度的所述概率數(shù)據(jù)從所述選擇的位置嘗試取回所述內(nèi)容對象而未首先基于索引或者其他數(shù)據(jù)確定所述內(nèi)容對象事實上存儲于所述選擇的存儲位置。
47.根據(jù)權(quán)利要求45所述的系統(tǒng),其中所述概率數(shù)據(jù)包括概率矩陣,所述概率矩陣針對包括所述分布式內(nèi)容存儲系統(tǒng)的所述多個存儲位置中的每個存儲位置并且關(guān)于每個位置針對每個特征指示具有所述特征的對象與該位置關(guān)聯(lián)的概率。
48.根據(jù)權(quán)利要求45所述的系統(tǒng),其中所述處理器還被配置成維持訪問計數(shù)數(shù)據(jù),所述訪問計數(shù)數(shù)據(jù)針對包括多個特征的每個特征指示已經(jīng)在包括所述處理器和所述存儲設(shè)備的存儲位置訪問具有該特征的多少個對象。
49.根據(jù)權(quán)利要求48所述的系統(tǒng),其中所述存儲位置包括包含所述分布式內(nèi)容存儲系統(tǒng)的多個存儲位置之一,并且所述處理器還被配置成從所述多個存儲位置中的每個存儲位置收集訪問計數(shù)數(shù)據(jù),所述訪問計數(shù)數(shù)據(jù)針對所述多個特征中的每個特征反映已經(jīng)從該位置訪問具有該特征的多少個對象。
50.根據(jù)權(quán)利要求45所述的系統(tǒng),其中所述處理器還被配置成使用收集的訪問計數(shù)數(shù)據(jù)生成訪問概率矩陣,所述訪問概率矩陣針對包括所述分布式內(nèi)容存儲系統(tǒng)的所述多個存儲位置中的每個存儲位置并且關(guān)于每個位置針對所述多個特征中的每個特征指示將在該位置訪問具有所述特征的對象的概率。
51.一種用于存儲內(nèi)容對象的計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包含于計算機(jī)可讀存儲介質(zhì)中并且包括用于以下操作的計算機(jī)指令 確定與內(nèi)容對象關(guān)聯(lián)的特征集合;并且 至少部分地基于概率數(shù)據(jù)從分布式內(nèi)容存儲系統(tǒng)內(nèi)的多個存儲位置選擇用于關(guān)于所述內(nèi)容對象執(zhí)行操作的存儲位置,所述概率數(shù)據(jù)指示選擇的存儲位置與包括所述特征集合的確定為與所述內(nèi)容對象關(guān)聯(lián)的特征在統(tǒng)計上關(guān)聯(lián)的程度。
全文摘要
公開了分布式內(nèi)容存儲和取回。確定與內(nèi)容對象關(guān)聯(lián)的特征集合。至少部分地基于概率數(shù)據(jù)從包括分布式內(nèi)容存儲系統(tǒng)的多個存儲位置選擇用于關(guān)于內(nèi)容對象執(zhí)行操作的存儲位置,該概率數(shù)據(jù)指示選擇的存儲位置與包括特征集合的確定為與內(nèi)容對象關(guān)聯(lián)的特征在統(tǒng)計上關(guān)聯(lián)的程度。
文檔編號G06F13/00GK102640125SQ201080041777
公開日2012年8月15日 申請日期2010年9月21日 優(yōu)先權(quán)日2009年9月21日
發(fā)明者M.P.萊爾, R.F.羅斯 申請人:特蘭斯拉蒂斯公司