欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

生成內(nèi)容地址以指示即將寫(xiě)入存儲(chǔ)系統(tǒng)的數(shù)據(jù)單元的方法和設(shè)備的制作方法

文檔序號(hào):6442944閱讀:192來(lái)源:國(guó)知局
專利名稱:生成內(nèi)容地址以指示即將寫(xiě)入存儲(chǔ)系統(tǒng)的數(shù)據(jù)單元的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及訪問(wèn)存儲(chǔ)系統(tǒng)中的內(nèi)容的方法和設(shè)備。
2.相關(guān)技術(shù)描述內(nèi)容尋址存儲(chǔ)技術(shù)(CAS)一種數(shù)據(jù)訪問(wèn)技術(shù),該技術(shù)借助于由數(shù)據(jù)單元內(nèi)容導(dǎo)出的地址對(duì)存儲(chǔ)系統(tǒng)進(jìn)行訪問(wèn)。比如,將數(shù)據(jù)單元作為散列函數(shù)的輸入信號(hào)就能夠生成可以用作數(shù)據(jù)單元內(nèi)容地址的散列值。信息提取5(MD5)散列算法就是一種適用于生成內(nèi)容地址的散列函數(shù)。當(dāng)主機(jī)可內(nèi)容尋址的存儲(chǔ)系統(tǒng)發(fā)送訪問(wèn)數(shù)據(jù)單元的申請(qǐng)時(shí),主機(jī)提供數(shù)據(jù)單元的內(nèi)容地址(比如散列值)。然后存儲(chǔ)系統(tǒng)根據(jù)內(nèi)容地址確定數(shù)據(jù)單元在存儲(chǔ)系統(tǒng)中的物理位置,在確定的物理地址讀取數(shù)據(jù)單元后,并將讀取的內(nèi)容返回主機(jī)。
確定數(shù)據(jù)單元的物理位置通常涉及到方方面面的問(wèn)題,特別是在采用分布式存儲(chǔ)結(jié)構(gòu)的存儲(chǔ)系統(tǒng)中。分布式存儲(chǔ)系統(tǒng)由許多分離的節(jié)點(diǎn)構(gòu)成,每一節(jié)點(diǎn)可能是一由許多獨(dú)立資源(比如處理器、存儲(chǔ)器和磁盤(pán))構(gòu)成的獨(dú)立設(shè)備。節(jié)點(diǎn)之間可以相互通訊(比如通過(guò)網(wǎng)絡(luò))以處理來(lái)自一或多臺(tái)主機(jī)發(fā)出的數(shù)據(jù)訪問(wèn)請(qǐng)求。在基于數(shù)據(jù)單元內(nèi)容地址訪問(wèn)的存儲(chǔ)系統(tǒng)中確定數(shù)據(jù)單元的物理地址,系統(tǒng)首先要確定數(shù)據(jù)單元存儲(chǔ)在那個(gè)節(jié)點(diǎn)上,然后確定數(shù)據(jù)單元存儲(chǔ)在該節(jié)點(diǎn)的哪塊磁盤(pán)上(如果該節(jié)點(diǎn)有多塊磁盤(pán)),同時(shí)還要確定數(shù)據(jù)單元在磁盤(pán)中的物理位置(比如柱面、磁頭和扇區(qū))。
圖1所示為分布式存儲(chǔ)系統(tǒng)的實(shí)例,該分布式存儲(chǔ)系統(tǒng)中包括許多訪問(wèn)節(jié)點(diǎn)(AN)101a,101a......101n,許多存儲(chǔ)節(jié)點(diǎn)(SN)105a,105a......105n,及連接訪問(wèn)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)103。訪問(wèn)節(jié)點(diǎn)101可以用于處理來(lái)自主機(jī)的訪問(wèn)請(qǐng)求(比如讀/寫(xiě)請(qǐng)求),而存儲(chǔ)節(jié)點(diǎn)105則可以用于存儲(chǔ)數(shù)據(jù)。在接收到主機(jī)讀取數(shù)據(jù)單元的請(qǐng)求時(shí),訪問(wèn)節(jié)點(diǎn)確定出數(shù)據(jù)單元存儲(chǔ)在那個(gè)存儲(chǔ)節(jié)點(diǎn)中,并向該節(jié)點(diǎn)發(fā)出讀取數(shù)據(jù)單元的請(qǐng)求。
這里提到的確定特定數(shù)據(jù)單元在存儲(chǔ)節(jié)點(diǎn)中位置的方法是廣為人知的多點(diǎn)傳送位置查詢法(MLQ)。在多點(diǎn)傳送位置查詢法中,訪問(wèn)節(jié)點(diǎn)101接收來(lái)自主機(jī)的請(qǐng)求訪問(wèn)數(shù)據(jù)單元。訪問(wèn)節(jié)點(diǎn)然后向網(wǎng)絡(luò)中的存儲(chǔ)節(jié)點(diǎn)105廣播信息,查詢是否有存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)了該數(shù)據(jù)單元。每一存儲(chǔ)節(jié)點(diǎn)105確定本節(jié)點(diǎn)上是否存儲(chǔ)了所請(qǐng)求的數(shù)據(jù)單元。每一存儲(chǔ)節(jié)點(diǎn)105中包含了一數(shù)據(jù)集(如數(shù)據(jù)庫(kù)或數(shù)據(jù)表),在該數(shù)據(jù)集中列出了存儲(chǔ)在該節(jié)點(diǎn)中數(shù)據(jù)單元的內(nèi)容地址,以及在存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)數(shù)據(jù)單元的磁盤(pán)。也就是說(shuō),如果存儲(chǔ)節(jié)點(diǎn)中有4塊磁盤(pán),數(shù)據(jù)表能夠指出是其中的哪一塊磁盤(pán)上存儲(chǔ)了數(shù)據(jù)單元。這樣,當(dāng)一存儲(chǔ)節(jié)點(diǎn)105接收到來(lái)自訪問(wèn)節(jié)點(diǎn)101的MLQ網(wǎng)絡(luò)信息后,就會(huì)掃描其數(shù)據(jù)集以確定請(qǐng)求的數(shù)據(jù)單元是否存儲(chǔ)在該節(jié)點(diǎn)上。
一旦存儲(chǔ)節(jié)點(diǎn)105確定在該節(jié)點(diǎn)上存儲(chǔ)了所請(qǐng)求的數(shù)據(jù)單元,它就會(huì)利用相通的數(shù)據(jù)集確定在哪一塊物理磁盤(pán)上存儲(chǔ)了數(shù)據(jù)。然后存儲(chǔ)節(jié)點(diǎn)就能夠確定出數(shù)據(jù)單元在該磁盤(pán)上的物理位置。數(shù)據(jù)單元可能是以文件的形式存儲(chǔ)在存儲(chǔ)節(jié)點(diǎn)的文件系統(tǒng)中。因此,為了確定數(shù)據(jù)單元在磁盤(pán)上的位置,存儲(chǔ)節(jié)點(diǎn)可以利用其操作系統(tǒng)在文件系統(tǒng)中查找對(duì)應(yīng)的文件,并文件系統(tǒng)的定位映射到物理磁盤(pán)的定位。比如,在存儲(chǔ)數(shù)據(jù)單元時(shí),存儲(chǔ)節(jié)點(diǎn)可以創(chuàng)建一以數(shù)據(jù)單元內(nèi)容地址為文件名的文件,并將數(shù)據(jù)單元存儲(chǔ)到該文件中。
圖2為用于在分布式內(nèi)容可尋址存儲(chǔ)系統(tǒng)中存儲(chǔ)數(shù)據(jù)單元的文件系統(tǒng)的說(shuō)明。圖2中的文件系統(tǒng)中包含了多級(jí)目錄。最上面的一級(jí)目錄稱為根目錄。多級(jí)目錄中的第二級(jí)稱為子目錄。每一子目錄所表示的都是數(shù)據(jù)單元內(nèi)容地址的第一字母。也就是說(shuō),內(nèi)容地址以字母“A”開(kāi)頭的數(shù)據(jù)單元將被存儲(chǔ)在子目錄“A.”中。而內(nèi)容地址的第二個(gè)字母將決定數(shù)據(jù)單元存儲(chǔ)在哪個(gè)字目錄中,如果存儲(chǔ)系統(tǒng)以后要訪問(wèn)數(shù)據(jù)單元(如,相應(yīng)一讀取請(qǐng)求),存儲(chǔ)系統(tǒng)可以通過(guò)遍歷文件系統(tǒng)的各級(jí)目錄查找和數(shù)據(jù)單元內(nèi)容地址的前兩個(gè)字母相同的子目錄名稱定位數(shù)據(jù)單元,存儲(chǔ)系統(tǒng)可以打開(kāi)包含數(shù)據(jù)單元的文件以驗(yàn)證該存儲(chǔ)節(jié)點(diǎn)中確實(shí)存儲(chǔ)了數(shù)據(jù)單元。然后,存儲(chǔ)節(jié)點(diǎn)可以將數(shù)據(jù)單元返回至發(fā)布多路傳送請(qǐng)求的訪問(wèn)節(jié)點(diǎn)。訪問(wèn)節(jié)點(diǎn)然后將數(shù)據(jù)返回至請(qǐng)求數(shù)據(jù)的主機(jī)。
MLQ是一種昂貴的的計(jì)算過(guò)程,因?yàn)閷?duì)于每一請(qǐng)求的數(shù)據(jù)單元,它都需要在每一存儲(chǔ)節(jié)點(diǎn)上進(jìn)行數(shù)據(jù)庫(kù)的窮舉搜索。并且,如果數(shù)據(jù)單元僅存儲(chǔ)在特定的一或幾個(gè)存儲(chǔ)節(jié)點(diǎn)中(假設(shè)數(shù)據(jù)單元被復(fù)制在一或幾個(gè)存儲(chǔ)節(jié)點(diǎn)中),許多窮舉搜索必將失敗。
為了減少使用MLQ在存儲(chǔ)系統(tǒng)中定位數(shù)據(jù)單元時(shí)的計(jì)算開(kāi)銷,人們開(kāi)發(fā)了另一種利用索引查詢數(shù)據(jù)單元的技術(shù)。這里所說(shuō)的所引被稱為點(diǎn)定位索引(BLI),而“點(diǎn)”則特指數(shù)據(jù)單元。BLI是一可以將數(shù)據(jù)單元的內(nèi)容地址映射到存儲(chǔ)目錄的存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)庫(kù)。BLI和MLQ的體制大致相同,在BLI中,數(shù)據(jù)單元也是根據(jù)其內(nèi)容地址存儲(chǔ)在被選擇的文件系統(tǒng)中。只不過(guò)BLI的控制權(quán)在存儲(chǔ)節(jié)點(diǎn)之間進(jìn)行了分配,每一存儲(chǔ)節(jié)點(diǎn)只能控制一部分的BLI。因此,一數(shù)據(jù)單元的訪問(wèn)請(qǐng)求就不會(huì)被廣播至所有的存儲(chǔ)節(jié)點(diǎn),而只能傳播到含有請(qǐng)求數(shù)據(jù)單元的BLI所對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)上。
BLI的結(jié)構(gòu)圖如圖3所示。BLI的控制權(quán)被存儲(chǔ)節(jié)點(diǎn)301、303、305和307均分。存儲(chǔ)節(jié)點(diǎn)301管理BLI中包含以字符“A”-“F”開(kāi)頭的內(nèi)容地址的部分,存儲(chǔ)節(jié)點(diǎn)303管理BLI中包含以字符“G”-“L”開(kāi)頭的內(nèi)容地址的部分,存儲(chǔ)節(jié)點(diǎn)305管理BLI中包含以字符“M”-“R”開(kāi)頭的內(nèi)容地址的部分,存儲(chǔ)節(jié)點(diǎn)307管理BLI中包含以字符“S”-“Z”開(kāi)頭的內(nèi)容地址的部分。BLI的每一部分都包含了存儲(chǔ)系統(tǒng)中存儲(chǔ)的規(guī)定范圍內(nèi)容地址的記錄,并指明了存儲(chǔ)相應(yīng)的數(shù)據(jù)單元的存儲(chǔ)節(jié)點(diǎn)。存儲(chǔ)節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)309,311,313和315中存儲(chǔ)了本存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)單元的內(nèi)容地址,并指明了這些內(nèi)容地址存儲(chǔ)在存儲(chǔ)節(jié)點(diǎn)中的哪一塊物理磁盤(pán)上。
訪問(wèn)節(jié)點(diǎn)中維護(hù)著關(guān)于存儲(chǔ)節(jié)點(diǎn)管理BLI的記錄。這樣,當(dāng)接收到來(lái)自主機(jī)讀取特定數(shù)據(jù)單元的請(qǐng)求后,訪問(wèn)節(jié)點(diǎn)就可以確定哪一存儲(chǔ)節(jié)點(diǎn)控制的BLI中包含請(qǐng)求的數(shù)據(jù)單元的內(nèi)容地址。例如,如果主機(jī)想訪問(wèn)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)單元請(qǐng)求的內(nèi)容地址以“S”開(kāi)頭,訪問(wèn)節(jié)點(diǎn)就會(huì)查詢存儲(chǔ)節(jié)點(diǎn)307以確認(rèn)那個(gè)存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)了所請(qǐng)求的數(shù)據(jù)。存儲(chǔ)節(jié)點(diǎn)307搜索BLI以確定哪一或哪一些存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)了所請(qǐng)求的數(shù)據(jù),并將得到的信息返回值發(fā)出請(qǐng)求的訪問(wèn)節(jié)點(diǎn)。訪問(wèn)節(jié)點(diǎn)可以直接從正確的存儲(chǔ)節(jié)點(diǎn)中請(qǐng)求數(shù)據(jù)單元。在這種情況下,其它沒(méi)存儲(chǔ)數(shù)據(jù)單元的存儲(chǔ)節(jié)點(diǎn)就不會(huì)被查詢。和MLQ不同,利用BLI不需要每一存儲(chǔ)節(jié)點(diǎn)都進(jìn)行數(shù)據(jù)庫(kù)窮舉搜索,由于只有一存儲(chǔ)節(jié)點(diǎn)查詢BLI,并且只有一存儲(chǔ)節(jié)點(diǎn)查詢本地?cái)?shù)據(jù)庫(kù),這樣就可以大大降低存儲(chǔ)系統(tǒng)的計(jì)算開(kāi)銷。
如果出現(xiàn)存儲(chǔ)節(jié)點(diǎn)對(duì)請(qǐng)求的數(shù)據(jù)單元進(jìn)行BLI定位失敗(比如,主機(jī)所請(qǐng)求的內(nèi)容地址在BLI沒(méi)有發(fā)現(xiàn)),存儲(chǔ)系統(tǒng)可能就可能繼續(xù)采用MLQ模式,并且發(fā)布MLQ查詢信息以確定哪一存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)了和請(qǐng)求的內(nèi)容地址對(duì)應(yīng)的數(shù)據(jù)單元。
通過(guò)在存儲(chǔ)節(jié)點(diǎn)中平均分配BLI的管理權(quán),所有的存儲(chǔ)節(jié)點(diǎn)均分在存儲(chǔ)系統(tǒng)中定位特定數(shù)據(jù)單元時(shí)所產(chǎn)生的計(jì)算開(kāi)銷。用于生成內(nèi)容地址的散列函數(shù)的隨機(jī)性完全可以保證為每一存儲(chǔ)節(jié)點(diǎn)分配數(shù)量大致相同的內(nèi)容地址。當(dāng)信的存儲(chǔ)節(jié)點(diǎn)被引入存儲(chǔ)系統(tǒng)中或從存儲(chǔ)系統(tǒng)中移除存儲(chǔ)節(jié)點(diǎn)時(shí),BLI的管理權(quán)要在所有存儲(chǔ)節(jié)點(diǎn)中重新分配以保證所有的存儲(chǔ)節(jié)點(diǎn)依舊均分管理權(quán)。此外,當(dāng)新的數(shù)據(jù)單元存儲(chǔ)到存儲(chǔ)系統(tǒng)中時(shí),存儲(chǔ)節(jié)點(diǎn)需要更新BLI,存儲(chǔ)節(jié)點(diǎn)的本地?cái)?shù)據(jù)庫(kù),并將數(shù)據(jù)單元的內(nèi)容寫(xiě)入存儲(chǔ)系統(tǒng)。這種三級(jí)寫(xiě)入模式在進(jìn)行寫(xiě)操作時(shí)會(huì)影響存儲(chǔ)系統(tǒng)的性能。

發(fā)明內(nèi)容
一說(shuō)明性的實(shí)施例介紹計(jì)算機(jī)系統(tǒng)中數(shù)據(jù)處理的方法,計(jì)算機(jī)系統(tǒng)包含至少一主機(jī)、一用于存儲(chǔ)至少一主機(jī)的數(shù)據(jù)的存儲(chǔ)系統(tǒng)。本方法包括(a)存儲(chǔ)系統(tǒng)接收來(lái)自至少一主機(jī)的對(duì)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)中的數(shù)據(jù)單元的訪問(wèn)請(qǐng)求;和(b)為了響應(yīng)請(qǐng)求,向至少一主機(jī)返回和數(shù)據(jù)單元在至少一存儲(chǔ)系統(tǒng)中的物理存儲(chǔ)位置相關(guān)的信息。另一說(shuō)明性的實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例介紹了用于包含至少一主機(jī)的存儲(chǔ)系統(tǒng),這里所說(shuō)的存儲(chǔ)系統(tǒng)存儲(chǔ)了至少一主機(jī)的數(shù)據(jù)。存儲(chǔ)系統(tǒng)包括至少一存儲(chǔ)設(shè)備用于存儲(chǔ)來(lái)自至少一主機(jī)的數(shù)據(jù);和至少一控制器可以接收來(lái)自至少一主機(jī)發(fā)出的訪問(wèn)存儲(chǔ)在可內(nèi)容尋址的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)的請(qǐng)求,該請(qǐng)求利用內(nèi)容地址對(duì)數(shù)據(jù)單元進(jìn)行識(shí)別,和為了響應(yīng)請(qǐng)求而接收而向至少一主機(jī)返回和數(shù)據(jù)單元在可內(nèi)容尋址的存儲(chǔ)系統(tǒng)中的物理存儲(chǔ)位置相關(guān)的信息。
另一關(guān)于本發(fā)明的說(shuō)明性的實(shí)施例介紹了在計(jì)算機(jī)系統(tǒng)中處理數(shù)據(jù)的方法,該計(jì)算機(jī)系統(tǒng)包含至少一主機(jī)和至少一用于存儲(chǔ)至少一主機(jī)的數(shù)據(jù)的存儲(chǔ)系統(tǒng)。本方法包括以下幾個(gè)方面(a)向至少一存儲(chǔ)系統(tǒng)發(fā)送訪問(wèn)存儲(chǔ)在存儲(chǔ)系統(tǒng)中數(shù)據(jù)單元的請(qǐng)求;和(b)接收來(lái)自于至少一存儲(chǔ)系統(tǒng)的關(guān)于存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)中的數(shù)據(jù)單元的物理位置信息。另一說(shuō)明性的實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例還介紹了在計(jì)算機(jī)系統(tǒng)中使用的計(jì)算機(jī)主機(jī),該計(jì)算機(jī)系統(tǒng)包括至少一計(jì)算機(jī)主機(jī)和至少一存儲(chǔ)設(shè)備,這里所說(shuō)的計(jì)算機(jī)主機(jī)可以訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)中的數(shù)據(jù)。計(jì)算機(jī)主機(jī)包括至少一存儲(chǔ)設(shè)備;和至少一控制器可以向至少一存儲(chǔ)系統(tǒng)發(fā)送訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)中的數(shù)據(jù)單元的訪問(wèn)請(qǐng)求;和為了響應(yīng)請(qǐng)求而接收來(lái)自至少一存儲(chǔ)系統(tǒng)的關(guān)于數(shù)據(jù)單元在至少一存儲(chǔ)系統(tǒng)中的物理位置的信息并能在至少一存儲(chǔ)設(shè)備中存儲(chǔ)該信息。
另一說(shuō)明性實(shí)施例介紹了在計(jì)算機(jī)系統(tǒng)中處理數(shù)據(jù)的方法,該計(jì)算機(jī)系統(tǒng)包括至少一主機(jī)和至少一存儲(chǔ)系統(tǒng)。本方法包括(a)至少一存儲(chǔ)系統(tǒng)接收來(lái)自至少一主機(jī)的數(shù)據(jù)單元訪問(wèn)請(qǐng)求,該請(qǐng)求具有可以訪問(wèn)數(shù)據(jù)單元的標(biāo)識(shí)符;和(b)為了響應(yīng)請(qǐng)求而向至少一主機(jī)返回可以用于數(shù)據(jù)單元訪問(wèn)的標(biāo)識(shí)符,以及和標(biāo)志符無(wú)關(guān)的,關(guān)于數(shù)據(jù)單元在至少一存儲(chǔ)系統(tǒng)的物理位置的附加信息。另一說(shuō)明性實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)使用的存儲(chǔ)系統(tǒng),該計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)系統(tǒng)和至少一主機(jī)。存儲(chǔ)系統(tǒng)包括至少一存儲(chǔ)設(shè)備用于存儲(chǔ)來(lái)在至少一主機(jī)的數(shù)據(jù);和至少一控制器可以使得至少一存儲(chǔ)系統(tǒng)接收來(lái)自至少一主機(jī)的數(shù)據(jù)單元訪問(wèn)請(qǐng)求,該請(qǐng)求有可以用于數(shù)據(jù)單元訪問(wèn)的標(biāo)識(shí)符;和為了響應(yīng)請(qǐng)求向至少一主機(jī)返回可以用于訪問(wèn)數(shù)據(jù)單元的標(biāo)識(shí)符,以及和標(biāo)志符無(wú)關(guān)的,關(guān)于數(shù)據(jù)單元在至少一存儲(chǔ)系統(tǒng)的物理位置的附加信息。
另一說(shuō)明性的實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)處理方法,該計(jì)算機(jī)系統(tǒng)包括至少一主機(jī)和至少一存儲(chǔ)設(shè)備。本方法包括以下幾個(gè)方面(a)向至少一存儲(chǔ)系統(tǒng)發(fā)送來(lái)自至少一主機(jī)的數(shù)據(jù)單元訪問(wèn)請(qǐng)求,該請(qǐng)求有可以用于數(shù)據(jù)單元訪問(wèn)的標(biāo)識(shí)符;和(b)從至少一存儲(chǔ)設(shè)備接收可以用于數(shù)據(jù)單元訪問(wèn)的標(biāo)識(shí)符,以及和標(biāo)志符無(wú)關(guān)的,關(guān)于數(shù)據(jù)單元在至少一存儲(chǔ)系統(tǒng)的物理位置的附加信息。另一說(shuō)明性實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中使用的主機(jī),該計(jì)算機(jī)系統(tǒng)包括至少一主機(jī)和至少一存儲(chǔ)設(shè)備。計(jì)算機(jī)主機(jī)包括至少一存儲(chǔ)設(shè)備;和至少一控制器可以向至少一存儲(chǔ)系統(tǒng)發(fā)送來(lái)自至少一主機(jī)的數(shù)據(jù)單元訪問(wèn)請(qǐng)求,該請(qǐng)求有可以用于數(shù)據(jù)單元訪問(wèn)的標(biāo)識(shí)符;和為了響應(yīng)請(qǐng)求接收來(lái)自至少一存儲(chǔ)系統(tǒng)返回的可以用于訪問(wèn)數(shù)據(jù)單元的標(biāo)識(shí)符,以及和標(biāo)志符無(wú)關(guān)的,關(guān)于數(shù)據(jù)單元在至少一存儲(chǔ)系統(tǒng)的物理位置的附加信息,并能將附加信息存儲(chǔ)到至少一存儲(chǔ)設(shè)備中。
另一說(shuō)明性的實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法,該計(jì)算機(jī)系統(tǒng)包括至少一主機(jī)和至少一用于存儲(chǔ)來(lái)自至少一主機(jī)數(shù)據(jù)的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),這里所說(shuō)的至少一主機(jī)可以利用基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元。本方法包括(a)維護(hù)至少一條索引,該索引可以將至少一數(shù)據(jù)單元的內(nèi)容地址映射到至少一存有數(shù)據(jù)單元的存儲(chǔ)系統(tǒng)的存儲(chǔ)位置上;和(b)維護(hù)定位索引的高速緩沖存儲(chǔ)器。另一說(shuō)明性的實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),該計(jì)算機(jī)系統(tǒng)包括可內(nèi)容尋址的存儲(chǔ)系統(tǒng)和至少一主機(jī),這里所說(shuō)的至少一主機(jī)可以利用基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元??蓛?nèi)容尋址的存儲(chǔ)系統(tǒng)包括至少一可以存儲(chǔ)接收到的來(lái)自主機(jī)的數(shù)據(jù)的存儲(chǔ)設(shè)備;和至少一控制器可以維護(hù)至少一條索引,該索引可以將至少一數(shù)據(jù)單元的內(nèi)容地址映射到至少一存有數(shù)據(jù)單元的可內(nèi)容尋址的存儲(chǔ)系統(tǒng)的存儲(chǔ)位置上;和維護(hù)定位索引的高速緩沖存儲(chǔ)器。
另一說(shuō)明性的實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中數(shù)據(jù)處理的方法,該計(jì)算機(jī)系統(tǒng)包括至少一主機(jī)和至少一用于存儲(chǔ)來(lái)自至少一主機(jī)數(shù)據(jù)的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),這里所說(shuō)的至少一主機(jī)可以利用基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元。本方法包括以下幾個(gè)方面(a)響應(yīng)來(lái)自至少一主機(jī)的對(duì)可以通過(guò)內(nèi)容地址識(shí)別的數(shù)據(jù)單元的訪問(wèn)請(qǐng)求,解析內(nèi)容地址以確定數(shù)據(jù)單元在至少一存儲(chǔ)系統(tǒng)中的至少一物理存儲(chǔ)地址。另一說(shuō)明性的實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),該計(jì)算機(jī)系統(tǒng)包括可內(nèi)容尋址的存儲(chǔ)系統(tǒng)和至少一主機(jī),這里所說(shuō)的至少一主機(jī)可以利用基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元??蓛?nèi)容尋址的存儲(chǔ)系統(tǒng)包括至少一用于存儲(chǔ)接收到的來(lái)自至少一主機(jī)的數(shù)據(jù)的存儲(chǔ)設(shè)備;至少一控制器可以響應(yīng)來(lái)自至少一主機(jī)的對(duì)可以通過(guò)內(nèi)容地址識(shí)別的數(shù)據(jù)單元的訪問(wèn)請(qǐng)求,并解析內(nèi)容地址以確定數(shù)據(jù)單元在至少一存儲(chǔ)系統(tǒng)中的至少一物理存儲(chǔ)地址。
另一說(shuō)明性的實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法,該計(jì)算機(jī)系統(tǒng)包括至少一主機(jī)和至少一可以存儲(chǔ)來(lái)自至少一主機(jī)的數(shù)據(jù)的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),這里所說(shuō)的至少一主機(jī)可以利用基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元。本方法包括以下幾個(gè)方面(a)接收來(lái)自主機(jī)的在存儲(chǔ)系統(tǒng)中存儲(chǔ)數(shù)據(jù)的請(qǐng)求,所存儲(chǔ)的數(shù)據(jù)單元有根據(jù)數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址;(b)根據(jù)內(nèi)容地址確定出在內(nèi)容地址所映射的存儲(chǔ)系統(tǒng)中的第一存儲(chǔ)位置;(c)在第一存儲(chǔ)位置為第一數(shù)據(jù)單元存儲(chǔ)一指向第二個(gè)存儲(chǔ)位置的指針;和(d)在存儲(chǔ)系統(tǒng)中的第二存儲(chǔ)位置存儲(chǔ)單元數(shù)據(jù)。另一說(shuō)明性的實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),該計(jì)算機(jī)系統(tǒng)包括可內(nèi)容尋址的存儲(chǔ)系統(tǒng)和至少一主機(jī),這里所說(shuō)的至少一主機(jī)可以利用基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元??蓛?nèi)容尋址的存儲(chǔ)系統(tǒng)包括至少一用于存儲(chǔ)接收到的來(lái)自至少一主機(jī)的數(shù)據(jù)的存儲(chǔ)設(shè)備;至少一控制器可以接收來(lái)自主機(jī)的在存儲(chǔ)系統(tǒng)中存儲(chǔ)數(shù)據(jù)單元的請(qǐng)求,所存儲(chǔ)的數(shù)據(jù)單元有根據(jù)數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址;根據(jù)內(nèi)容地址確定出在內(nèi)容地址所映射的存儲(chǔ)系統(tǒng)中的第一存儲(chǔ)位置;在第一存儲(chǔ)位置為第一數(shù)據(jù)單元存儲(chǔ)一指向第二個(gè)存儲(chǔ)位置的指針;以及在存儲(chǔ)系統(tǒng)中的第二存儲(chǔ)位置存儲(chǔ)單元數(shù)據(jù)。
另一說(shuō)明性的實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法,該計(jì)算機(jī)系統(tǒng)包括至少一主機(jī)和至少一可以存儲(chǔ)來(lái)自至少一主機(jī)的數(shù)據(jù)的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),這里所說(shuō)的至少一主機(jī)可以利用至少是部分基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元。本方法包括以下幾個(gè)方面(a)創(chuàng)建數(shù)據(jù)單元的內(nèi)容地址以構(gòu)成第一信息,該信息可以指出哪些數(shù)據(jù)單元即將寫(xiě)入到存儲(chǔ)系統(tǒng)中。另一說(shuō)明性的實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中的主機(jī),該計(jì)算機(jī)系統(tǒng)包括可內(nèi)容尋址的存儲(chǔ)系統(tǒng)和至少一主機(jī),這里所說(shuō)的至少一主機(jī)可以利用基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元。主機(jī)包括至少一可以生成數(shù)據(jù)單元的處理器;和至少一控制器,該控制器可以生成數(shù)據(jù)單元的內(nèi)容地址以構(gòu)成可以指出哪些數(shù)據(jù)單元即將寫(xiě)入到存儲(chǔ)系統(tǒng)中的第一信息。
另一說(shuō)明性的實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法,該計(jì)算機(jī)系統(tǒng)包括至少一主機(jī)和至少一可以存儲(chǔ)來(lái)自至少一主機(jī)的數(shù)據(jù)的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),這里所說(shuō)的至少一主機(jī)可以利用至少是部分基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元。這里所說(shuō)的至少一存儲(chǔ)系統(tǒng)中包含索引,該索引可以將數(shù)據(jù)單元內(nèi)容地址映射到存儲(chǔ)數(shù)據(jù)單元的至少一存儲(chǔ)系統(tǒng)中的存儲(chǔ)位置上。本方法包括以下幾個(gè)方面(a)接收來(lái)自至少一主機(jī)的存儲(chǔ)數(shù)據(jù)單元的請(qǐng)求,存儲(chǔ)請(qǐng)求利用數(shù)據(jù)單元的內(nèi)容地址對(duì)數(shù)據(jù)單元進(jìn)行識(shí)別;和(b)在選定的存儲(chǔ)位置存儲(chǔ)數(shù)據(jù)單元,這樣存儲(chǔ)地址的索引記錄和即將寫(xiě)入的另一數(shù)據(jù)單元的存儲(chǔ)地址的索引記錄就是前后緊接的。另一說(shuō)明性的實(shí)施例介紹了至少一有編碼指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí),可以實(shí)現(xiàn)上述方法。
此外的說(shuō)明性實(shí)施例介紹了計(jì)算機(jī)系統(tǒng)中的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),該計(jì)算機(jī)系統(tǒng)包括可內(nèi)容尋址的存儲(chǔ)系統(tǒng)和至少一主機(jī),這里所說(shuō)的至少一主機(jī)可以利用基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在至少一存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元??蓛?nèi)容尋址的的存儲(chǔ)系統(tǒng)包括至少一用于存儲(chǔ)來(lái)自至少一主機(jī)的接收數(shù)據(jù)的存儲(chǔ)設(shè)備;和至少一控制器,該控制器維護(hù)用于將數(shù)據(jù)單元的內(nèi)容地址映射到至少一存儲(chǔ)數(shù)據(jù)單元的存儲(chǔ)系統(tǒng)的存儲(chǔ)位置上,并能保證即將在至少一存儲(chǔ)系統(tǒng)中寫(xiě)入的數(shù)據(jù)單元在索引中的記錄是前后緊接的。


在附圖中圖1是分布式存儲(chǔ)系統(tǒng)前期技術(shù)的說(shuō)明性結(jié)構(gòu)圖;圖2是一文件系統(tǒng)的層次圖,借助于該文件系統(tǒng)數(shù)據(jù)單元存儲(chǔ)在采用前期技術(shù)的可內(nèi)容尋址的存儲(chǔ)系統(tǒng)中;圖3所示的結(jié)構(gòu)圖說(shuō)明了在采用前期技術(shù)的可內(nèi)容尋址的存儲(chǔ)系統(tǒng)中,多個(gè)存儲(chǔ)節(jié)點(diǎn)如何分配點(diǎn)定位索引;圖4是可以實(shí)施本發(fā)明的存儲(chǔ)系統(tǒng)和主機(jī)的配置的結(jié)構(gòu)圖;圖5是依照本發(fā)明的一實(shí)施例分配給許多存儲(chǔ)節(jié)點(diǎn)的內(nèi)部地址的結(jié)構(gòu)圖;圖6是依照本發(fā)明的一實(shí)施例,在一存儲(chǔ)節(jié)點(diǎn)中分配給許多存儲(chǔ)設(shè)備的內(nèi)部地址的結(jié)構(gòu)圖;圖7說(shuō)明的是依照本發(fā)明的一實(shí)施例在一數(shù)據(jù)單元的內(nèi)容地址中加入的位置信息。
具體實(shí)施例方式
本發(fā)明涉及改進(jìn)存儲(chǔ)系統(tǒng)中的內(nèi)容訪問(wèn)技術(shù)。
依照本發(fā)明的一實(shí)施例,存儲(chǔ)系統(tǒng)可以為主機(jī)提供數(shù)據(jù)單元在存儲(chǔ)系統(tǒng)中的位置線索。在隨后的數(shù)據(jù)訪問(wèn)請(qǐng)求中,主機(jī)可以向存儲(chǔ)系統(tǒng)提供位置線索,幫助存儲(chǔ)系統(tǒng)定位數(shù)據(jù)單元,從而提高存儲(chǔ)系統(tǒng)定位數(shù)據(jù)單元的效率。
在本發(fā)明的一可選實(shí)施例中,向可內(nèi)容尋址的存儲(chǔ)系統(tǒng)提供了可以將至少一存儲(chǔ)單元的內(nèi)容地址映射到其存儲(chǔ)位置上的索引。存儲(chǔ)系統(tǒng)維護(hù)定位索引高速緩沖存儲(chǔ)器,提高訪問(wèn)包含索引信息內(nèi)容的性能。
在本發(fā)明的另外的實(shí)施例中采用的技術(shù)可以使在可內(nèi)容尋址的存儲(chǔ)系統(tǒng)中對(duì)來(lái)自主機(jī)的訪問(wèn)數(shù)據(jù)單元請(qǐng)求的處理更加容易。該技術(shù)包括解析內(nèi)容地址以確定數(shù)據(jù)單元的至少一處物理存儲(chǔ)地址。借助于內(nèi)容地址至少一方面就可以確定出至少一處的物理存儲(chǔ)地址,這樣就可以存儲(chǔ)這里所說(shuō)的數(shù)據(jù)單元。如下所述,作為訪問(wèn)請(qǐng)求響應(yīng)的數(shù)據(jù)定位也可以高效實(shí)現(xiàn)。
在本發(fā)明的另一實(shí)施例中,采用的技術(shù)可以為數(shù)據(jù)單元?jiǎng)?chuàng)建內(nèi)容地址,這些內(nèi)容地址中包含了哪些數(shù)據(jù)單元被按照時(shí)間順尋寫(xiě)入存儲(chǔ)系統(tǒng)中的信息。如同下面將要討論的一樣,為那些按照時(shí)間順尋寫(xiě)入的數(shù)據(jù)單元提供至少是部分相似的內(nèi)容地址可以提高在響應(yīng)來(lái)自主機(jī)的訪問(wèn)請(qǐng)求時(shí)存儲(chǔ)系統(tǒng)定位數(shù)據(jù)單元的效率。
如同前面所述,本發(fā)明的幾個(gè)方面特別介紹了可內(nèi)容尋址的存儲(chǔ)系統(tǒng)。然而這并不是本發(fā)明的全部,本發(fā)明還有著更為廣泛的應(yīng)用。這樣,應(yīng)當(dāng)注意的是,盡管下面討論的特定的技術(shù)實(shí)現(xiàn)主要涉及的是可內(nèi)容尋址的存儲(chǔ)系統(tǒng),本發(fā)明不僅僅限定于這一方面,而是同樣適用于其他類型的存儲(chǔ)系統(tǒng)。
本發(fā)明適用的所有說(shuō)明性的計(jì)算機(jī)系統(tǒng)配置方面的問(wèn)題可參考附圖4,該圖介紹了和存儲(chǔ)系統(tǒng)407相連接的計(jì)算機(jī)主機(jī)401。
主機(jī)401執(zhí)行讀寫(xiě)數(shù)據(jù)單元的應(yīng)用程序403,應(yīng)用程序接口405的作用是實(shí)現(xiàn)和存儲(chǔ)系統(tǒng)405的連接。主機(jī)401可以是,比如,提供資源(比如,數(shù)據(jù)存儲(chǔ),email和其他服務(wù))的服務(wù)器,客戶機(jī)(比如由用戶操作的通用計(jì)算機(jī)系統(tǒng)),網(wǎng)絡(luò)組件(比如轉(zhuǎn)換器)或者其他類型的計(jì)算機(jī)。主機(jī)401通過(guò)通訊鏈路404和存儲(chǔ)系統(tǒng)407相連接,這樣主機(jī)401可以利用存儲(chǔ)系統(tǒng)407存儲(chǔ)和讀取數(shù)據(jù)。鏈路404可以是包括各種網(wǎng)絡(luò)或直聯(lián)在內(nèi)的任意類型的通訊鏈路。
應(yīng)用程序403可以是主機(jī)401的用戶或管理者使用的用于從存儲(chǔ)系統(tǒng)407中存儲(chǔ)數(shù)據(jù)和/或讀取數(shù)據(jù)的任意計(jì)算機(jī)應(yīng)用程序。應(yīng)用程序403和API405的連接時(shí)的應(yīng)用程序403可以通過(guò)API405和存儲(chǔ)系統(tǒng)407通訊。
API405可以包括,比如,提供給應(yīng)用程序403程序員的計(jì)算機(jī)目標(biāo)代碼,計(jì)算機(jī)目標(biāo)代碼中包括可以用于和存儲(chǔ)系統(tǒng)通訊的程序。當(dāng)和API405鏈接后,應(yīng)用程序就可以調(diào)用這些程序?qū)崿F(xiàn)和存儲(chǔ)系統(tǒng)407的通訊。API405可以和任意數(shù)量的應(yīng)用程序鏈接,并且時(shí)的應(yīng)用程序403的程序員不需要了解和存儲(chǔ)系統(tǒng)407通訊時(shí)所需的內(nèi)部協(xié)議。應(yīng)當(dāng)指出的是由于主機(jī)/存儲(chǔ)系統(tǒng)接口特性可以通過(guò)多種方法實(shí)現(xiàn),這里描述的本發(fā)明的特性的應(yīng)用范圍并不僅限于在系統(tǒng)中的主機(jī)使用API以簡(jiǎn)化主機(jī)401和存儲(chǔ)系統(tǒng)407的通訊,本發(fā)明也不能限定于任何一種特定的技術(shù)實(shí)現(xiàn)。如同一可選的實(shí)現(xiàn)方案中所描述的那樣,應(yīng)用程序403可以定制為和存儲(chǔ)系統(tǒng)407直接相連。
在本發(fā)明的一實(shí)施例中,存儲(chǔ)系統(tǒng)407可以是一可內(nèi)容尋址的存儲(chǔ)系統(tǒng)(CAS),該系統(tǒng)形式的描述可參考已有專利申請(qǐng)?zhí)柕刑幱趯@暾?qǐng)期的以下專利文獻(xiàn)編號(hào)09/236,336,專利名稱“可內(nèi)容尋址的信息的封裝、表現(xiàn)和傳輸”,申請(qǐng)日期2/21/1999;編號(hào)09/235,146,專利名稱“通過(guò)網(wǎng)路訪問(wèn)可內(nèi)容尋址的數(shù)據(jù)”,申請(qǐng)日期2/21/1999;編號(hào)09/391,360,專利名稱“可安全存儲(chǔ),傳輸和獲取可內(nèi)容尋址信息的系統(tǒng)和方法”,申請(qǐng)日期9/7/1999;以及同時(shí)申請(qǐng)的“存儲(chǔ)系統(tǒng)中數(shù)據(jù)保存的方法和設(shè)備”,該專利尚未獲得專利申請(qǐng)?zhí)枴_@里將以上所列各專利作為參考。這些申請(qǐng)均涉及可內(nèi)容尋址存儲(chǔ),統(tǒng)稱為“CAS申請(qǐng)”。
如上所述,在可內(nèi)容尋址系統(tǒng)中,數(shù)據(jù)的存儲(chǔ)需要利用根據(jù)數(shù)據(jù)內(nèi)容本身生成的內(nèi)容地址。內(nèi)容地址可以通過(guò)對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行散列運(yùn)算獲得。在主機(jī)和存儲(chǔ)系統(tǒng)之間關(guān)于數(shù)據(jù)的通訊中,散列函數(shù)的輸出至少可以部分用作內(nèi)容地址。內(nèi)容地址可被映射到(比如,在存儲(chǔ)系統(tǒng)407)存儲(chǔ)系統(tǒng)中的一或多個(gè)物理地址上。
可以用于生成內(nèi)容地址的散列函數(shù)的一示例是信息提取5(MD5)函數(shù)。信息內(nèi)容的散列結(jié)果可以直接用作內(nèi)容地址,或者在散列結(jié)果中加入附加信息構(gòu)成地址。可以理解的是任何類型的散列函數(shù)都可以用于內(nèi)容地址的生成,因此這里描述的發(fā)明不能限定于使用任一特定類型的散列函數(shù),并且在某些方面上甚至不能限定于僅在可內(nèi)容尋址的系統(tǒng)中的應(yīng)用。
在本發(fā)明的一實(shí)施例中,在一或多個(gè)散列結(jié)果中可以加入一擔(dān)保的唯一標(biāo)識(shí)符(GUID),以保證數(shù)據(jù)但與內(nèi)容地址的唯一性。比如,GUID可以根據(jù)生成內(nèi)容地址、時(shí)間標(biāo)識(shí),任意數(shù)字或其他任意適合類別的計(jì)算機(jī)主機(jī)的MAC地址生成。在本發(fā)明的實(shí)施例中應(yīng)用的生成GUID的另一示例可參考國(guó)際標(biāo)準(zhǔn)組織(ISO)說(shuō)明書(shū)ISO/IEC 115781996。
當(dāng)主機(jī)向存儲(chǔ)系統(tǒng)發(fā)送要存儲(chǔ)的數(shù)據(jù)時(shí),主機(jī)和存儲(chǔ)系統(tǒng)可以獨(dú)立計(jì)算數(shù)據(jù)的內(nèi)容地址。主機(jī)可以保留內(nèi)容地址以備將來(lái)從存儲(chǔ)系統(tǒng)讀取數(shù)據(jù)使用。另一種可選的方案是,僅有存儲(chǔ)系統(tǒng)計(jì)算內(nèi)容地址,并將計(jì)算出的內(nèi)容地址返回至主機(jī)以備以后訪問(wèn)數(shù)據(jù)。還有一種可選方案是,存儲(chǔ)系統(tǒng)和主機(jī)都計(jì)算內(nèi)容地址,存儲(chǔ)系統(tǒng)將它計(jì)算出的內(nèi)容地址返送到主機(jī)。主機(jī)將它獨(dú)立計(jì)算出內(nèi)容地址和從存儲(chǔ)系統(tǒng)處接收到的內(nèi)容地址相比較以驗(yàn)證是否匹配。
在圖4所示的說(shuō)明性的配置中,存儲(chǔ)系統(tǒng)407是一分布式存儲(chǔ)系統(tǒng),該存儲(chǔ)系統(tǒng)包括大量的訪問(wèn)節(jié)點(diǎn)409a,409b,409c和409d,及大量的存儲(chǔ)節(jié)點(diǎn)411a,411b,411c和411d,訪問(wèn)節(jié)點(diǎn)409和存儲(chǔ)節(jié)點(diǎn)409可以通過(guò)適合的方法加以連接,比如通過(guò)基于TCP/IP網(wǎng)絡(luò)協(xié)議的通訊網(wǎng)絡(luò)(圖中未標(biāo)出)。每一訪問(wèn)節(jié)點(diǎn)409和存儲(chǔ)節(jié)點(diǎn)411可以是,比如,擁有獨(dú)立硬件和軟件資源(比如,處理器或處理器組,內(nèi)存,磁盤(pán)資源,操作系統(tǒng),存儲(chǔ)系統(tǒng)軟件)的獨(dú)立計(jì)算機(jī),在這一點(diǎn)上,本發(fā)明未加以限定。
如同上面提及的,主機(jī)401向訪問(wèn)節(jié)點(diǎn)409如,讀,寫(xiě)或其他請(qǐng)求)。如果是寫(xiě)請(qǐng)求,訪問(wèn)節(jié)點(diǎn)可以接收來(lái)自主機(jī)的寫(xiě)請(qǐng)求(和要寫(xiě)入的數(shù)據(jù)),選擇一存儲(chǔ)數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn)401,并且將數(shù)據(jù)發(fā)送到存儲(chǔ)節(jié)點(diǎn)進(jìn)行儲(chǔ)存。在一些實(shí)施例中,訪問(wèn)節(jié)點(diǎn)409可以以任意適合的方式選擇存儲(chǔ)節(jié)點(diǎn)411。比如,訪問(wèn)節(jié)點(diǎn)可以根據(jù)負(fù)載平衡的方案在存儲(chǔ)節(jié)點(diǎn)之間平均分布數(shù)據(jù),訪問(wèn)節(jié)點(diǎn)409也可以使用其他不同的選擇方法。以上提及的連同圖2,在存儲(chǔ)數(shù)據(jù)單元的時(shí)候,存儲(chǔ)節(jié)點(diǎn)可以創(chuàng)建一以數(shù)據(jù)單元內(nèi)容地址命名的文件,并將數(shù)據(jù)單元存儲(chǔ)到該文件中。
如果是讀請(qǐng)求,訪問(wèn)節(jié)點(diǎn)409可以接收來(lái)自主機(jī)的請(qǐng)求,確定請(qǐng)求的數(shù)據(jù)存儲(chǔ)在那個(gè)存儲(chǔ)節(jié)點(diǎn)411上,從正確的存儲(chǔ)節(jié)點(diǎn)411中獲取請(qǐng)求的數(shù)據(jù),并將請(qǐng)求的數(shù)據(jù)返回至主機(jī)。由于存儲(chǔ)系統(tǒng)的任意適合的配置都可以使用,因此在此描述的本發(fā)明不僅限于上面敘述中的或其他任意特定的配置。比如,出了利用訪問(wèn)節(jié)點(diǎn)從存儲(chǔ)節(jié)點(diǎn)獲取要求的數(shù)據(jù)并將數(shù)據(jù)傳送到主機(jī)401外,存儲(chǔ)系統(tǒng)也可以選擇配置成為訪問(wèn)節(jié)點(diǎn)僅是簡(jiǎn)單地通知存儲(chǔ)節(jié)點(diǎn)直接向主機(jī)401返回?cái)?shù)據(jù)。
存儲(chǔ)節(jié)點(diǎn)411可以接收來(lái)自訪問(wèn)節(jié)點(diǎn)409的讀和寫(xiě)請(qǐng)求,并且作為響應(yīng)讀取或存儲(chǔ)數(shù)據(jù)。同樣,存儲(chǔ)節(jié)點(diǎn)411可以包括一或多個(gè)用于保存數(shù)據(jù)單元的存儲(chǔ)設(shè)備(比如磁盤(pán)驅(qū)動(dòng)器或其他任意類型的存儲(chǔ)設(shè)備)。應(yīng)當(dāng)指出的是訪問(wèn)節(jié)點(diǎn)409也可以包括一或多個(gè)存儲(chǔ)設(shè)備,這樣訪問(wèn)節(jié)點(diǎn)409和存儲(chǔ)節(jié)點(diǎn)411可能具有相同的(或大體相同)或不同的硬件配置。
圖4所示的存儲(chǔ)系統(tǒng)中有4個(gè)訪問(wèn)節(jié)點(diǎn)和4個(gè)存儲(chǔ)節(jié)點(diǎn),但是,由于存儲(chǔ)系統(tǒng)可以包含任意適合數(shù)量的訪問(wèn)節(jié)點(diǎn)和任意適合數(shù)量(可以和訪問(wèn)節(jié)點(diǎn)的數(shù)量不同)的存儲(chǔ)節(jié)點(diǎn),因此應(yīng)當(dāng)指出的是這一配置僅是說(shuō)明性的,本發(fā)明也不應(yīng)限定于僅在特定配置的存儲(chǔ)系統(tǒng)中使用。
此外,圖4所示的示例中,主機(jī)通過(guò)訪問(wèn)節(jié)點(diǎn)和存儲(chǔ)系統(tǒng)及存儲(chǔ)數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn)進(jìn)行通訊及訪問(wèn),應(yīng)當(dāng)指出的是,本發(fā)明不限于僅在此方面的應(yīng)用。比如,存儲(chǔ)系統(tǒng)中可以包含可以和主機(jī)通訊及存儲(chǔ)數(shù)據(jù)單元的節(jié)點(diǎn),也就是說(shuō),一或多個(gè)節(jié)點(diǎn)可以同時(shí)作為(至少是部分)存儲(chǔ)節(jié)點(diǎn)和訪問(wèn)節(jié)點(diǎn)。
定位線索在本發(fā)明的一實(shí)施例中,存儲(chǔ)系統(tǒng)可以向主機(jī)提供定位線索以提高對(duì)存儲(chǔ)系統(tǒng)訪問(wèn)的效率,定位線索是由存儲(chǔ)系統(tǒng)向主機(jī)提供的關(guān)于特定的數(shù)據(jù)單元在存儲(chǔ)系統(tǒng)中的存儲(chǔ)位置的信息。以定位線索形式提供的信息能夠和后來(lái)對(duì)數(shù)據(jù)的訪問(wèn)請(qǐng)求一起由主機(jī)返送至存儲(chǔ)系統(tǒng),存儲(chǔ)系統(tǒng)利用該信息提高訪問(wèn)數(shù)據(jù)單元的效率。特定數(shù)據(jù)單元的定位線索可以包含關(guān)于存儲(chǔ)數(shù)據(jù)單元的數(shù)據(jù)節(jié)點(diǎn)的信息,在該數(shù)據(jù)節(jié)點(diǎn)中存儲(chǔ)數(shù)據(jù)的物理存儲(chǔ)設(shè)備的信息,在該物理存儲(chǔ)設(shè)備中保存數(shù)據(jù)單元的文件所在的文件系統(tǒng)的定位信息,保存數(shù)據(jù)單元的物理設(shè)備的定位,或者是以上信息的任意組合。與那些可以直接確定一或多個(gè)數(shù)據(jù)單元物理存儲(chǔ)位置信息不同,定位線索以另外的方式提供了和數(shù)據(jù)單元的物理存儲(chǔ)位置有關(guān)的信息。比如,存儲(chǔ)系統(tǒng)可以包含一條數(shù)據(jù)單元物理存儲(chǔ)位置的索引,提供給主機(jī)的定位線索使得主機(jī)可以使用該索引。這樣,以定位線索提供的信息可以和任意適合方式存儲(chǔ)的數(shù)據(jù)單元的物理位置建立聯(lián)系。
存儲(chǔ)系統(tǒng)可以以任何一種方式向主機(jī)提供定位線索,在這一點(diǎn)上,本發(fā)明沒(méi)有任何限制。比如,作為對(duì)來(lái)自主機(jī)寫(xiě)入數(shù)據(jù)單元的寫(xiě)請(qǐng)求的響應(yīng),存儲(chǔ)系統(tǒng)可以返回?cái)?shù)據(jù)單元的定位線索信息(比如作為標(biāo)志或其他任意的形式)。作為對(duì)寫(xiě)請(qǐng)求的響應(yīng),定位線索可以單獨(dú),也可以和其它信息一同返回主機(jī)。比如,在一實(shí)施例中,存儲(chǔ)系統(tǒng)以返回和數(shù)據(jù)單元對(duì)應(yīng)的內(nèi)容地址(比如MD5散列值)的形式響應(yīng)一寫(xiě)請(qǐng)求,這樣主機(jī)就可以驗(yàn)證存儲(chǔ)系統(tǒng)計(jì)算的內(nèi)容地址的正確性。在一實(shí)施例中,在響應(yīng)寫(xiě)請(qǐng)求而向主機(jī)返和內(nèi)容地址時(shí),存儲(chǔ)系統(tǒng)也可能發(fā)送定位線索,圖4中406表達(dá)了這樣的思想。
作為對(duì)讀請(qǐng)求的響應(yīng),存儲(chǔ)系統(tǒng)也可以向主機(jī)提供定位線索。比如,當(dāng)存儲(chǔ)系統(tǒng)向主機(jī)返回請(qǐng)求數(shù)據(jù)時(shí),同樣可以發(fā)送所請(qǐng)求數(shù)據(jù)的定位線索。
作為對(duì)查詢請(qǐng)求或其他形式的請(qǐng)求的響應(yīng),存儲(chǔ)系統(tǒng)也可以向主機(jī)提供定位線索。查詢請(qǐng)求是主機(jī)向存儲(chǔ)系統(tǒng)發(fā)出關(guān)于數(shù)據(jù)單元信息的請(qǐng)求。比如,這些信息可以是數(shù)據(jù)單元在存儲(chǔ)系統(tǒng)中存儲(chǔ)的時(shí)間,CDF中的部分元數(shù)據(jù),部分內(nèi)容地址,或者是其他任意適合的信息。
比如,主機(jī)可以不向存儲(chǔ)系統(tǒng)提供內(nèi)容地址(在一典型的讀請(qǐng)求中),而是提供一時(shí)間范圍(比如開(kāi)始時(shí)間和結(jié)束時(shí)間)。作為響應(yīng),存儲(chǔ)系統(tǒng)向主機(jī)返回給定的時(shí)間段內(nèi)在系統(tǒng)中存儲(chǔ)的數(shù)據(jù)單元的內(nèi)容地址的列表。作為對(duì)查詢請(qǐng)求的響應(yīng),存儲(chǔ)系統(tǒng)可以向主機(jī)發(fā)送每一符合條件的單元的定位信息。因?yàn)橹鳈C(jī)很可能會(huì)對(duì)存儲(chǔ)系統(tǒng)在響應(yīng)查詢請(qǐng)求時(shí)返回的至少部分內(nèi)容地址發(fā)出讀請(qǐng)求,因此在響應(yīng)查詢請(qǐng)求時(shí)提供定位信息就比較有用。如果主機(jī)能夠告知存儲(chǔ)系統(tǒng)這些內(nèi)容地址所對(duì)應(yīng)的數(shù)據(jù)單元的位置(比如根據(jù)定位線索),就可以降低存儲(chǔ)系統(tǒng)消耗在定位數(shù)據(jù)單元上計(jì)算資源(和時(shí)間)。
如同上面提到的,在查詢請(qǐng)求中提供給存儲(chǔ)系統(tǒng)的信息不僅限定于時(shí)間范圍。信息可以附加或僅包括部分采用CDF格式存儲(chǔ)的元數(shù)據(jù),部分內(nèi)容地址或其他適合的信息。比如,如果查詢信息中包括存儲(chǔ)在CDF中的元數(shù)據(jù)或部分內(nèi)容地址,存儲(chǔ)系統(tǒng)可能返回包含制定的元數(shù)據(jù)或部分內(nèi)容地址的任一CDF文件。
主機(jī)可以以任一種方式使用來(lái)自存儲(chǔ)系統(tǒng)的定位線索信息,在這一方面,本發(fā)明沒(méi)有任何限定。如同上面提及的,在主機(jī)上執(zhí)行的應(yīng)用程序403(圖4)可以通過(guò)API405和存儲(chǔ)系統(tǒng)進(jìn)行通訊。當(dāng)API接收到來(lái)自存儲(chǔ)系統(tǒng)的定位線索時(shí)(比如響應(yīng)讀、寫(xiě)、查詢請(qǐng)求,或其他的訪問(wèn)請(qǐng)求),API可以向應(yīng)用程序提供定位線索。然后應(yīng)用程序?qū)⒃摼€索和對(duì)應(yīng)的內(nèi)容地址相聯(lián)系并加以保存。這樣,當(dāng)應(yīng)用程序下一次請(qǐng)求訪問(wèn)內(nèi)容地址對(duì)應(yīng)的數(shù)據(jù)單元時(shí)(比如,通過(guò)API),應(yīng)用程序就可以同時(shí)提供內(nèi)容地址和定位線索。
可供選擇的方法還有由API保存定位線索以代替將定位線索發(fā)送到應(yīng)用程序。這樣,API可以接收應(yīng)用程序訪問(wèn)保存在存儲(chǔ)系統(tǒng)的數(shù)據(jù)單元的請(qǐng)求,該請(qǐng)求中包含需要的數(shù)據(jù)單元的內(nèi)容地址。API可以確定它是否保存了請(qǐng)求的內(nèi)容地址所對(duì)應(yīng)的位置線索。如果是的話,API就可以向存儲(chǔ)系統(tǒng)同時(shí)提供位置線索和訪問(wèn)請(qǐng)求。
主機(jī)(比如,API或應(yīng)用程序)可以以任何適合的方式存儲(chǔ)定位線索。在一實(shí)施例中,主機(jī)(比如,API)維護(hù)保存定位線索及其對(duì)應(yīng)的內(nèi)容地址的緩存器以提高系統(tǒng)的性能。當(dāng)緩存器。一旦緩存器充滿,API或應(yīng)用程序可以根據(jù)最早使用內(nèi)容更新方案、最近使用內(nèi)容更新方案或其他適合的緩存更新方案更新緩存器中的內(nèi)容。
應(yīng)當(dāng)指出的是由于主機(jī)維護(hù)并訪問(wèn)定位線索記錄,因此定位線索的應(yīng)用可以將在存儲(chǔ)系統(tǒng)中定位數(shù)據(jù)的部分計(jì)算工作從存儲(chǔ)系統(tǒng)轉(zhuǎn)移至主機(jī)。主機(jī)在向存儲(chǔ)系統(tǒng)發(fā)送訪問(wèn)請(qǐng)求時(shí),如果可能的話,可以搜索其維護(hù)的記錄并向存儲(chǔ)系統(tǒng)提供定位線索。這使得存儲(chǔ)系統(tǒng)至少可以避免部分為確定存儲(chǔ)的數(shù)據(jù)單元的物理位置而在存儲(chǔ)系統(tǒng)進(jìn)行的記錄搜索。
在另一實(shí)施例中,主機(jī)可以簡(jiǎn)單地忽略任何來(lái)自存儲(chǔ)系統(tǒng)的定位線索。也就是說(shuō),主機(jī)可以選擇不承擔(dān)任何計(jì)算工作,而完全由存儲(chǔ)系統(tǒng)定位內(nèi)容。
在另一實(shí)施例中,定位線索的使用是主機(jī)的一可選特性,因此該特性可以根據(jù)需要開(kāi)或關(guān)。
應(yīng)當(dāng)指出的是定位線索可以由存儲(chǔ)系統(tǒng)通過(guò)很多方法確定,因此本發(fā)明不能限定與某一特定的實(shí)施方案。依照本發(fā)明在具有如圖4所示配置的存儲(chǔ)系統(tǒng)中使用的實(shí)施例,定位信息可以通過(guò)訪問(wèn)節(jié)點(diǎn)409生成,也可能通過(guò)存儲(chǔ)節(jié)點(diǎn)411實(shí)現(xiàn),而這是由所提供的定位信息的粒度決定的。如上所述,定位信息可以在任意粒度水平上提供,因此在這一問(wèn)題上,本發(fā)明沒(méi)有加以限定。比如定位信息可以僅僅提供關(guān)于那個(gè)訪問(wèn)節(jié)點(diǎn)控制對(duì)物理存儲(chǔ)位置的訪問(wèn)的信息,或者提供關(guān)于存儲(chǔ)數(shù)據(jù)單元的特定存儲(chǔ)節(jié)點(diǎn)的附加信息。同樣的,關(guān)于存儲(chǔ)數(shù)據(jù)單元的特定存儲(chǔ)節(jié)點(diǎn)的信息也可以任意粒度水平上提供,其原因是該信息可以僅僅確定存儲(chǔ)節(jié)點(diǎn),也可以選擇描述更多的信息以確定文件系統(tǒng)或者存儲(chǔ)數(shù)據(jù)單元的特定存儲(chǔ)設(shè)備(如磁盤(pán)驅(qū)動(dòng)器)的定位。應(yīng)當(dāng)指出的是,作為對(duì)訪問(wèn)請(qǐng)求的響應(yīng),存儲(chǔ)系統(tǒng)生成定位信息的過(guò)程相當(dāng)?shù)暮?jiǎn)單,這是因?yàn)樽鳛樵L問(wèn)數(shù)據(jù)單元的結(jié)果,存儲(chǔ)系統(tǒng)需要經(jīng)歷定位物理存儲(chǔ)位置的過(guò)程,并將該信息以有效線索的形式提供給主機(jī)。比如,在本發(fā)明的一實(shí)施例中,在訪問(wèn)數(shù)據(jù)單元時(shí),保存數(shù)據(jù)單元的存儲(chǔ)節(jié)點(diǎn)識(shí)別正確的訪問(wèn)節(jié)點(diǎn)、文件系統(tǒng)和存儲(chǔ)數(shù)據(jù)的磁盤(pán)驅(qū)動(dòng)器,然后訪問(wèn)節(jié)點(diǎn)將該信息以上述定位線索的形式傳送給主機(jī)。應(yīng)當(dāng)指出的是粒度的水平和定位信息的生成方式不能限定此處描述的示例,由于本發(fā)明可以在多種類型的存儲(chǔ)系統(tǒng)配置中使用,也包括那些不適用訪問(wèn)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)結(jié)構(gòu)的系統(tǒng),因此圖4中所示的存儲(chǔ)系統(tǒng)的配置同樣不能限定本發(fā)明的應(yīng)用范圍。
如果沒(méi)有使用定位線索(比如,關(guān)閉該特性),或者主機(jī)沒(méi)有關(guān)于一特定數(shù)據(jù)單元的定位信息,存儲(chǔ)系統(tǒng)可以利用傳送定位查詢、BLI查表法或其他任意適合的技術(shù)定位數(shù)據(jù)。此外,在某些情況下,定位線索也可能無(wú)法正確識(shí)別存儲(chǔ)系統(tǒng)中內(nèi)容的位置。比如,在主機(jī)接收到定位線索后,存儲(chǔ)系統(tǒng)將內(nèi)容移支新的位置時(shí)就會(huì)發(fā)生這種問(wèn)題。如果以定位線索無(wú)法正確識(shí)別存儲(chǔ)系統(tǒng)中內(nèi)容的位置,存儲(chǔ)系統(tǒng)將使用其他的方法定位內(nèi)容,比如MLQ,BLI查表或者其他適合的技術(shù)。
BLI緩存在本發(fā)明的一實(shí)施例中,存儲(chǔ)系統(tǒng)維護(hù)一稱為點(diǎn)定位索引(BLI)的數(shù)據(jù)集(比如,數(shù)據(jù)庫(kù))該數(shù)據(jù)集和一已知的系統(tǒng)一起按照前面描述的BLI模式工作。在一實(shí)施例中,BLI的管理權(quán)在存儲(chǔ)節(jié)點(diǎn)411(圖4)中均分,每個(gè)存儲(chǔ)節(jié)點(diǎn)指定了管理的地址(比如內(nèi)容地址)范圍,和該范圍地址的索引,以確定對(duì)應(yīng)的數(shù)據(jù)單元的存儲(chǔ)位置。BLI本身(除管理權(quán)之外)也可以在存儲(chǔ)系統(tǒng)的節(jié)點(diǎn)中分配。為了提高訪問(wèn)BLI的效率,在本發(fā)明的一實(shí)施例中,緩存了部分的BLI。
點(diǎn)定位所以可以是一可以將數(shù)據(jù)單元對(duì)應(yīng)的內(nèi)容地址映射到存儲(chǔ)數(shù)據(jù)單元的存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)庫(kù)(或者是其它的數(shù)據(jù)集)。BLI可以完全存儲(chǔ)在一存儲(chǔ)節(jié)點(diǎn)上(也可以選擇在其它的一或多個(gè)存儲(chǔ)節(jié)點(diǎn)上建立鏡像),也可以如上所述在兩個(gè)或多個(gè)存儲(chǔ)節(jié)點(diǎn)之間分配。為了響應(yīng)對(duì)一特定地址的訪問(wèn)請(qǐng)求,接受請(qǐng)求的訪問(wèn)節(jié)點(diǎn)409將請(qǐng)求直接傳送給管理包含該地址的那部分BLI的存儲(chǔ)節(jié)點(diǎn)411,適當(dāng)?shù)拇鎯?chǔ)節(jié)點(diǎn)讀取存儲(chǔ)節(jié)點(diǎn)以確定所請(qǐng)求的數(shù)據(jù)單元在存儲(chǔ)系統(tǒng)上的位置。
應(yīng)當(dāng)指出的是一部分BLI的控制權(quán)可由多個(gè)存儲(chǔ)節(jié)點(diǎn)共享,在這種情況下,訪問(wèn)節(jié)點(diǎn)409可以直接將此類請(qǐng)求發(fā)送到管理這部分BLI的一或所有存儲(chǔ)節(jié)點(diǎn)上。
應(yīng)當(dāng)指出的是在本發(fā)明的一些實(shí)施例中,BLI的存儲(chǔ)或BLI的管理既可以通過(guò)訪問(wèn)節(jié)點(diǎn)也可以通過(guò)存儲(chǔ)節(jié)點(diǎn),或者完全由訪問(wèn)節(jié)點(diǎn)實(shí)現(xiàn),本發(fā)明在這一點(diǎn)上沒(méi)有作出限定。此外還應(yīng)當(dāng)指出的是,下面將要討論的BLI緩存技術(shù)對(duì)于訪問(wèn)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)都適用。
在以前的技術(shù)中,BLI存儲(chǔ)在二級(jí)存儲(chǔ)器中(比如,磁盤(pán)),而二級(jí)緩存的速度要比主存儲(chǔ)器慢。當(dāng)訪問(wèn)請(qǐng)求是一在BLI中沒(méi)有記錄的寫(xiě)入新數(shù)據(jù)的寫(xiě)請(qǐng)求時(shí),BLI需要更新新存儲(chǔ)數(shù)據(jù)的內(nèi)容地址和存儲(chǔ)節(jié)點(diǎn)位置。存儲(chǔ)系統(tǒng)要等到BLI完成更新后才能通知主機(jī)寫(xiě)入成功。如果存儲(chǔ)節(jié)點(diǎn)的主存儲(chǔ)器中需要更新的BLI部分沒(méi)有準(zhǔn)備好,更新BLI的存儲(chǔ)節(jié)點(diǎn)就會(huì)執(zhí)行磁盤(pán)讀操作,將BLI讀入主存儲(chǔ)器(比如RAM)中,在主存儲(chǔ)器中更新BLI,然后通過(guò)磁盤(pán)寫(xiě)操作將更新后的BLI寫(xiě)入磁盤(pán)中。這樣,按照應(yīng)用程序的觀點(diǎn),從發(fā)送寫(xiě)請(qǐng)求到存儲(chǔ)系統(tǒng)確認(rèn)寫(xiě)入成功之間就會(huì)存在時(shí)間延遲,如果一直等到BLI更新完成后才返回確認(rèn)信號(hào),延遲時(shí)間還會(huì)增加。
根據(jù)本發(fā)明的一實(shí)施例,存儲(chǔ)系統(tǒng)維護(hù)主存儲(chǔ)器(比如RAM)中BLI緩存,以提高訪問(wèn)性能。比如,為了響應(yīng)寫(xiě)請(qǐng)求,存儲(chǔ)系統(tǒng)可以向主存儲(chǔ)器中的BLI緩存寫(xiě)入新的記錄,并通知發(fā)出請(qǐng)求的主機(jī)寫(xiě)入成功。在稍后的時(shí)間里再將緩存中的BLI內(nèi)容寫(xiě)入磁盤(pán)中。這樣由于更新BLI而導(dǎo)致的時(shí)間延遲就會(huì)大大降低。
BLI緩存同樣可以提高存儲(chǔ)系統(tǒng)讀訪問(wèn)的效率。當(dāng)接收到一讀請(qǐng)求時(shí),存儲(chǔ)系統(tǒng)可以搜索BLI緩存以確定所請(qǐng)求的數(shù)據(jù)單元的位置是否保存在BLI緩存中,如果是,就不再需要執(zhí)行磁盤(pán)讀操作。
BLI緩存可以以任意適合的方式整理和存儲(chǔ),因此本發(fā)明不能限定于任何特定的實(shí)現(xiàn)技術(shù)。比如,當(dāng)BLI全部存儲(chǔ)在一存儲(chǔ)節(jié)點(diǎn)上時(shí),BLI緩存可以完全由一存儲(chǔ)節(jié)點(diǎn)維護(hù),也可以有多個(gè)存儲(chǔ)節(jié)點(diǎn)共同維護(hù)。類似的,如果BLI分布在許多存儲(chǔ)節(jié)點(diǎn)上,可以利用一存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)BLI緩存,也可以讓每一存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)該節(jié)點(diǎn)保存的部分BLI所對(duì)應(yīng)的BLI緩存(圖4中的412a-d)。
應(yīng)當(dāng)指出的是以上敘述中BLI緩存的位置僅僅是作為示例給出的,BLI緩存可以位于存儲(chǔ)系統(tǒng)中的任何位置和/或在存儲(chǔ)系統(tǒng)中以任意形式分布,而B(niǎo)LI的地址及其對(duì)應(yīng)的分布式BLI緩存的記錄也沒(méi)有必要限定在同一設(shè)備上。此外應(yīng)當(dāng)指出的是,BLI緩存可以以任意適合的形式寫(xiě)入BLI中。在這一方面,本發(fā)明沒(méi)有限定。比如,BLI緩存的記錄可以根據(jù)任意適合的更新算法在BLI緩存滿的時(shí)候?qū)懭隑LI中。而在另一可選的實(shí)施例中,BLI緩存記錄在經(jīng)過(guò)一固定時(shí)間后被寫(xiě)入BLI中。
在一實(shí)施例中,訪問(wèn)節(jié)點(diǎn)可以緩存BLI記錄,包括替代和增加存儲(chǔ)節(jié)點(diǎn)中BLI的緩存記錄。當(dāng)訪問(wèn)節(jié)點(diǎn)處理來(lái)自主機(jī)的寫(xiě)請(qǐng)求時(shí),訪問(wèn)節(jié)點(diǎn)選擇要寫(xiě)入數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn),這樣訪問(wèn)節(jié)點(diǎn)就掌握了存儲(chǔ)節(jié)點(diǎn)和新寫(xiě)入數(shù)據(jù)的內(nèi)容地址的信息,并將它們寫(xiě)入BLI緩存。在一實(shí)施例中,存儲(chǔ)節(jié)點(diǎn)在存儲(chǔ)了新寫(xiě)入的數(shù)據(jù)后,能夠向訪問(wèn)節(jié)點(diǎn)返回關(guān)于文件系統(tǒng)和數(shù)據(jù)在存儲(chǔ)節(jié)點(diǎn)上的存儲(chǔ)位置的信息,這樣這些信息也可以被追加到訪問(wèn)節(jié)點(diǎn)的緩存記錄中。應(yīng)當(dāng)指出的是,本發(fā)明沒(méi)有限定于這一方面,這是因?yàn)锽LI緩存記錄可以選擇僅僅識(shí)別存儲(chǔ)數(shù)據(jù)單元的存儲(chǔ)節(jié)點(diǎn)。
當(dāng)訪問(wèn)節(jié)點(diǎn)接收到讀請(qǐng)求時(shí),可以在它的BLI緩存中搜索所請(qǐng)求的內(nèi)容。如果有緩存被選中(比如在緩存中發(fā)現(xiàn)了內(nèi)容地址),訪問(wèn)節(jié)點(diǎn)就會(huì)根據(jù)自身的BLI緩存確定請(qǐng)求的數(shù)據(jù)單元的存儲(chǔ)位置,而不再需要查詢存儲(chǔ)系統(tǒng)中的BLI。這樣返回請(qǐng)求數(shù)據(jù)單元的響應(yīng)時(shí)間就被大大降低。
應(yīng)當(dāng)指出的是訪問(wèn)節(jié)點(diǎn)上的BLI緩存可以與/不與存儲(chǔ)節(jié)點(diǎn)中其它層次的BLI緩存共同使用。如同上面所述,可以理解的是,BLI將內(nèi)容地址映射到存儲(chǔ)和這些內(nèi)容地址相應(yīng)的數(shù)據(jù)單元的存儲(chǔ)節(jié)點(diǎn)上。然而,BLI也可以包含關(guān)于特定物理磁盤(pán)設(shè)備和/或數(shù)據(jù)單元的文件系統(tǒng)定位的信息。本發(fā)明在這一方面沒(méi)有限定。
在一實(shí)施例中,BLI緩存是作為存儲(chǔ)系統(tǒng)用戶的一可選項(xiàng)提供的,因此該特性可以被啟用或禁止。
如上所述,當(dāng)新的數(shù)據(jù)單元被寫(xiě)入存儲(chǔ)系統(tǒng)中時(shí),除了向存儲(chǔ)節(jié)點(diǎn)寫(xiě)入新數(shù)據(jù)和更新與存儲(chǔ)數(shù)據(jù)單元相關(guān)的存儲(chǔ)系統(tǒng)中的元數(shù)據(jù)外,在使用了BLI緩存的實(shí)施例中,還需要更新BLI緩存。此外如同前面提到的,當(dāng)存儲(chǔ)系統(tǒng)向主機(jī)發(fā)送寫(xiě)請(qǐng)求被處理的確認(rèn)信息時(shí),由于需要大量更新存儲(chǔ)系統(tǒng)中的數(shù)據(jù),因此會(huì)產(chǎn)生一定的時(shí)間延遲。根據(jù)本發(fā)明的一實(shí)施例,由于在BLI緩存中確定某一數(shù)據(jù)單元記錄的失敗,只會(huì)影響將來(lái)對(duì)該數(shù)據(jù)單元的訪問(wèn),而不會(huì)妨礙存儲(chǔ)系統(tǒng)對(duì)該數(shù)據(jù)單元的訪問(wèn),因此向BLI緩存中寫(xiě)入記錄可以在向主機(jī)發(fā)送確認(rèn)信息后完成。
在本發(fā)明的另一實(shí)施例中,甚至可以在正確的記錄寫(xiě)入BLI前就發(fā)送確認(rèn)信息,以在更大程度上提高寫(xiě)入性能。在這一方面,應(yīng)當(dāng)指出的是,根據(jù)本發(fā)明的一實(shí)施例,如果接收到讀數(shù)據(jù)的訪問(wèn)請(qǐng)求并且沒(méi)有向BLI提供對(duì)應(yīng)的記錄,存儲(chǔ)系統(tǒng)可以發(fā)布對(duì)數(shù)據(jù)單元的多點(diǎn)傳送位置查詢請(qǐng)求以確定該數(shù)據(jù)是否存儲(chǔ)在某一存儲(chǔ)節(jié)點(diǎn)上。這樣,依據(jù)本發(fā)明的這個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)即使沒(méi)有數(shù)據(jù)單元對(duì)應(yīng)的BLI記錄,也可以完成對(duì)數(shù)據(jù)單元的定位。
應(yīng)當(dāng)指出的是,以上討論的關(guān)于采用圖4所示配置的可內(nèi)容尋址的存儲(chǔ)系統(tǒng)中定位索引緩存的實(shí)現(xiàn)僅僅是說(shuō)明性的,本發(fā)明不限定于這一方面。本發(fā)明中關(guān)于內(nèi)容尋址的存儲(chǔ)系統(tǒng)中定位索引緩存的應(yīng)用范圍不能僅僅限定于采用如圖4所示的訪問(wèn)/存儲(chǔ)節(jié)點(diǎn)的存儲(chǔ)系統(tǒng)。
此外,還應(yīng)當(dāng)指出,本發(fā)明中關(guān)于緩存定位索引和可以發(fā)送給主機(jī)的定位線索的使用的內(nèi)容并非相互排斥,這兩個(gè)特性可以同時(shí)使用也可以獨(dú)立使用。
內(nèi)部地址一可選的實(shí)施例中采用了一項(xiàng)技術(shù)(即這里所說(shuō)的內(nèi)部地址),它可以利用至少一部分內(nèi)容地址確定存儲(chǔ)系統(tǒng)中的數(shù)據(jù)單元的至少一部分的存儲(chǔ)位置。圖5中所示的存儲(chǔ)系統(tǒng)507就使用了內(nèi)部地址。存儲(chǔ)系統(tǒng)507中有這許多的訪問(wèn)節(jié)點(diǎn)503a,503b和503c以及許多的存儲(chǔ)節(jié)點(diǎn)505a,505b,505c,505d,505e和505f。存儲(chǔ)節(jié)點(diǎn)可以分成幾組,這樣每一組存儲(chǔ)節(jié)點(diǎn)就可以指定一定范圍的內(nèi)容地址。在圖5所示的示例中,存儲(chǔ)節(jié)點(diǎn)505a和505b指定的內(nèi)容地址以字母“A″-“I″開(kāi)頭,存儲(chǔ)節(jié)點(diǎn)505c和505d指定的內(nèi)容地址以字母“J″-“R″開(kāi)頭,存儲(chǔ)節(jié)點(diǎn)505e和505f指定的內(nèi)容地址以字母“S″-“Z″開(kāi)頭。在圖5中,每一組存儲(chǔ)節(jié)點(diǎn)包含兩個(gè)存儲(chǔ)節(jié)點(diǎn)。然而,可以理解的是,一組存儲(chǔ)節(jié)點(diǎn)可以只包含一存儲(chǔ)節(jié)點(diǎn),也可以包括三個(gè)或多個(gè)存儲(chǔ)節(jié)點(diǎn)。此外,并不需要每一組存儲(chǔ)節(jié)點(diǎn)中包含相同數(shù)量的存儲(chǔ)節(jié)點(diǎn)。
在一實(shí)施例中,每一組存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)和他們指定內(nèi)容地址相對(duì)應(yīng)的數(shù)據(jù)單元。訪問(wèn)節(jié)點(diǎn)503維護(hù)關(guān)于每一組存儲(chǔ)節(jié)點(diǎn)指定的內(nèi)容地址范圍的信息,同樣,訪問(wèn)節(jié)點(diǎn)在響應(yīng)對(duì)數(shù)據(jù)單元的訪問(wèn)請(qǐng)求時(shí)就可以選擇正確的存儲(chǔ)節(jié)點(diǎn)。
比如,如果訪問(wèn)節(jié)點(diǎn)503接收到來(lái)自主機(jī)501的寫(xiě)入數(shù)據(jù)單元的請(qǐng)求,該數(shù)據(jù)單元的內(nèi)容地址以字母“J″開(kāi)頭,訪問(wèn)節(jié)點(diǎn)就會(huì)選擇存儲(chǔ)節(jié)點(diǎn)505c或505d存儲(chǔ)數(shù)據(jù)。在另一實(shí)施例中,訪問(wèn)節(jié)點(diǎn)503a根據(jù)內(nèi)容地址的其他部分從兩個(gè)存儲(chǔ)節(jié)點(diǎn)中選擇一存儲(chǔ)數(shù)據(jù)。比如,訪問(wèn)節(jié)點(diǎn)503a可以根據(jù)內(nèi)容地址的第二個(gè)字母在所選的組中選擇合適的存儲(chǔ)節(jié)點(diǎn)。比如,存儲(chǔ)節(jié)點(diǎn)505c可以存儲(chǔ)內(nèi)容地址的第二個(gè)字母為“A″-″M″的數(shù)據(jù)單元,而存儲(chǔ)節(jié)點(diǎn)505d可以存儲(chǔ)內(nèi)容地址的第二個(gè)字母為“N″-″Z″的數(shù)據(jù)單元。應(yīng)當(dāng)指出的是,內(nèi)容地址中的任何一字母都可用于在一組存儲(chǔ)節(jié)點(diǎn)中選擇合適的存儲(chǔ)節(jié)點(diǎn),本發(fā)明在這一方面沒(méi)有限定。
一旦訪問(wèn)節(jié)點(diǎn)503a選擇了一存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)單元,被選中的存儲(chǔ)單元將選擇物理存儲(chǔ)設(shè)備(比如磁盤(pán))來(lái)存儲(chǔ)數(shù)據(jù)單元。圖6所示的存儲(chǔ)節(jié)點(diǎn)601中有4個(gè)物理存儲(chǔ)設(shè)備603a,603b,603c和603d。存儲(chǔ)節(jié)點(diǎn)601可以根據(jù)內(nèi)容地址中的一或幾個(gè)字母選擇其中的一存儲(chǔ)設(shè)備來(lái)存儲(chǔ)數(shù)據(jù)單元。比如,存儲(chǔ)節(jié)點(diǎn)601可以根據(jù)內(nèi)容地址的第三個(gè)字母選擇存儲(chǔ)設(shè)備603。如果內(nèi)容地址的第三個(gè)字母為“A″-″F″,選中存儲(chǔ)設(shè)備603b存儲(chǔ)數(shù)據(jù)。如果內(nèi)容地址的第三個(gè)字母為“G″-″L″,選中存儲(chǔ)設(shè)備603a存儲(chǔ)數(shù)據(jù)。如果內(nèi)容地址的第三個(gè)字母為“M″-″R″,選中存儲(chǔ)設(shè)備603c存儲(chǔ)數(shù)據(jù)。如果內(nèi)容地址的第三個(gè)字母為“S″-″Z″,選中存儲(chǔ)設(shè)備603d存儲(chǔ)數(shù)據(jù)。
依據(jù)數(shù)據(jù)單元的內(nèi)容地址選擇數(shù)據(jù)單元的物理存儲(chǔ)位置(比如存儲(chǔ)節(jié)點(diǎn)和存儲(chǔ)設(shè)備)使得訪問(wèn)節(jié)點(diǎn)在以后確定物理位置時(shí)不再需要借助于多點(diǎn)傳送位置查詢和數(shù)據(jù)庫(kù)查表。也就是說(shuō),訪問(wèn)節(jié)點(diǎn)僅簡(jiǎn)單地檢查數(shù)據(jù)單元的內(nèi)容地址就可以確定其位置。
上述利用內(nèi)部地址定位技術(shù)的說(shuō)明性示例不僅可以確定依據(jù)內(nèi)容地址存儲(chǔ)數(shù)據(jù)單元的存儲(chǔ)節(jié)點(diǎn),也可以確定該節(jié)點(diǎn)中的文件系統(tǒng)和存儲(chǔ)設(shè)備,應(yīng)當(dāng)指出的是,由于內(nèi)部地址定位也可以僅僅用于確定數(shù)據(jù)單元物理存儲(chǔ)地址,因此在該技術(shù)的應(yīng)用范圍方面,本發(fā)明沒(méi)有限定。比如內(nèi)部地址技術(shù)可以選擇用于選擇存儲(chǔ)數(shù)據(jù)單元的的存儲(chǔ)節(jié)點(diǎn),這樣既可以不需要通過(guò)查表或廣播查詢的方法而確定出存儲(chǔ)節(jié)點(diǎn)。不過(guò)存儲(chǔ)數(shù)據(jù)單元的文件系統(tǒng)和/或物理存儲(chǔ)設(shè)備可以通過(guò)其他的方法實(shí)現(xiàn),比如前面提到的的索引技術(shù)。
發(fā)明人注意到,對(duì)于某些數(shù)據(jù)單元,可能不希望將它們存儲(chǔ)到根據(jù)內(nèi)部地址技術(shù)指定的特定的物理存儲(chǔ)位置中。本發(fā)明提供了一種處理這類數(shù)據(jù)單元的技術(shù)。很多原因都可以導(dǎo)致上面提到的情形,比如需要存儲(chǔ)的數(shù)據(jù)單元比較大。對(duì)于較大的數(shù)據(jù)單元,根據(jù)內(nèi)部地址技術(shù)指定的物理存儲(chǔ)單元的容量可能不夠;或者為了平衡負(fù)載而希望將只存儲(chǔ)到其它的存儲(chǔ)位置中。并且,某些需要將大量特定的數(shù)據(jù)單元寫(xiě)入存儲(chǔ)系統(tǒng)中的應(yīng)用程序可能希望在生成基于全部的數(shù)據(jù)單元的內(nèi)容地址前開(kāi)始寫(xiě)操作,這樣的話,如果使用內(nèi)部地址定位技術(shù)的話,再向存儲(chǔ)系統(tǒng)傳送數(shù)據(jù)單元時(shí),可能還沒(méi)有可以用于確定向何處存儲(chǔ)數(shù)據(jù)的單元的內(nèi)容地址。依據(jù)本發(fā)明的一實(shí)施例,上面提到的問(wèn)題可以通過(guò)內(nèi)部地址定位技術(shù)和指針加以解決。比如,如果希望在一不是由內(nèi)部地址映射技術(shù)指定的位置存儲(chǔ)數(shù)據(jù)單元(相對(duì)較大的數(shù)據(jù)單元),可以將一指針存儲(chǔ)在數(shù)據(jù)單元的內(nèi)容地址制定的存儲(chǔ)位置上,該指針指向另一物理存儲(chǔ)地址,由該地址存儲(chǔ)需要保存的數(shù)據(jù)單元。這樣當(dāng)以后接收到訪問(wèn)該數(shù)據(jù)單元的請(qǐng)求時(shí),內(nèi)部地址定位技術(shù)就會(huì)將數(shù)據(jù)單元映射到該指針,利用該指針就可以讀取需要數(shù)據(jù)。
指針技術(shù)也可以用于處理對(duì)那些還沒(méi)有生成內(nèi)容地址的數(shù)據(jù)單元的寫(xiě)請(qǐng)求。當(dāng)接收到數(shù)據(jù)單元時(shí),存儲(chǔ)系統(tǒng)可以將它們放置在任意適合的位置,然后,一旦確定和/或提供了數(shù)據(jù)單元的內(nèi)容地址,就可以將指針?lè)胖迷谝桓鶕?jù)新提供的內(nèi)容地址由內(nèi)部地址定位技術(shù)確定的適合的位置。當(dāng)然,應(yīng)當(dāng)指出的是,一旦提供了內(nèi)容地址,也可以選擇將該指針數(shù)據(jù)從由內(nèi)部地址定位技術(shù)確定的存儲(chǔ)位置中移走。
此外,在一實(shí)施例中,可以利用指針技術(shù)存儲(chǔ)數(shù)據(jù),存儲(chǔ)系統(tǒng)可以執(zhí)行一后臺(tái)程序,該后臺(tái)程序可以周期性地在存儲(chǔ)系統(tǒng)中搜索只向其他存儲(chǔ)數(shù)據(jù)單元的存儲(chǔ)系統(tǒng)的指針。如果發(fā)現(xiàn)了這類指針,程序就會(huì)把數(shù)據(jù)單元從由指針指向的存儲(chǔ)位置轉(zhuǎn)移到由內(nèi)部地址映射表(比如指針的位置)指定的存儲(chǔ)位置,從而實(shí)現(xiàn)以對(duì)應(yīng)的數(shù)據(jù)單元替換指針。這樣,由于存儲(chǔ)系統(tǒng)不需要既訪問(wèn)指針的存儲(chǔ)位置又訪問(wèn)數(shù)據(jù)單元的存儲(chǔ)位置,其訪問(wèn)數(shù)據(jù)單元(比如,響應(yīng)來(lái)自主機(jī)的讀請(qǐng)求)的效率就會(huì)得以提高。
可以理解的是,可以將指針替換為相應(yīng)的數(shù)據(jù)單元的后臺(tái)程序可以在任意存儲(chǔ)系統(tǒng)中以任意適合的方式運(yùn)行。比如,程序可以只在存儲(chǔ)節(jié)點(diǎn)空閑的時(shí)候運(yùn)行,也可以選擇在每一存儲(chǔ)節(jié)點(diǎn)上每經(jīng)歷一預(yù)定時(shí)間后運(yùn)行,由于有很多其他可行的方案可以選擇,因此本發(fā)明在這一點(diǎn)上沒(méi)有限定。
根據(jù)本發(fā)明的一實(shí)施例,如果利用內(nèi)部地址定位技術(shù)沒(méi)有發(fā)現(xiàn)數(shù)據(jù)單元,也可以選擇查表技術(shù),比如實(shí)施多點(diǎn)傳送定位查詢。
臨時(shí)訪問(wèn)地址如上所示,在一實(shí)施例中,數(shù)據(jù)單元存儲(chǔ)在一相應(yīng)的存儲(chǔ)節(jié)點(diǎn)文件系統(tǒng)的文件中。該文件的文件名至少部分上和存儲(chǔ)的數(shù)據(jù)單元的內(nèi)容地址相對(duì)應(yīng),文件系統(tǒng)可以以目錄和子目錄的形式根據(jù)存儲(chǔ)特定數(shù)據(jù)單元的子目錄的名稱加以組織,在這些子目錄中存儲(chǔ)的數(shù)據(jù)單元至少部分和數(shù)據(jù)單元的名稱相對(duì)應(yīng)。然而,應(yīng)當(dāng)指出的是,本發(fā)明不限定于這一方面。這是因?yàn)槲募到y(tǒng)可以利用內(nèi)容地址的任一部分,包括但不限定于第一字母或位,中間部分后末尾部分加以組織。用于生成內(nèi)容地址的散列算法可以生成比較隨機(jī)的值(比如MD5散列算法的輸出值)。發(fā)明人注意到在寫(xiě)入時(shí)間上大體相同的數(shù)據(jù)單元可能會(huì)被存儲(chǔ)在分級(jí)文件系統(tǒng)中的不同位置。也就是說(shuō),盡管寫(xiě)入的數(shù)據(jù)單元在時(shí)間上前后相連,但這些數(shù)據(jù)卻可能分散在整個(gè)文件系統(tǒng)中,這樣的話,散列算法的隨機(jī)性就會(huì)阻止文件系統(tǒng)中的任何訪問(wèn)地址。
通常操作系統(tǒng)維護(hù)用于將文件系統(tǒng)位置映射到物理磁盤(pán)位置上的文件系統(tǒng)映射表。如果文件系統(tǒng)比較大(比如一很大的分級(jí)目錄和子目錄)并且在文件系統(tǒng)中存儲(chǔ)了大量的文件,操作系統(tǒng)維護(hù)的文件系統(tǒng)映射表也會(huì)非常大。因此,操作系統(tǒng)僅將一小部分的文件系統(tǒng)映射表存儲(chǔ)到主存儲(chǔ)器(比如,RAM)中,而將其它的文件系統(tǒng)映射表繼續(xù)保存在二級(jí)存儲(chǔ)器(比如,磁盤(pán))中。當(dāng)需要其他部分的文件系統(tǒng)映射表時(shí)(比如,訪問(wèn)文件時(shí)),這部分的映射表就會(huì)被移至主存儲(chǔ)器中,而另外的映射表則會(huì)被保存到磁盤(pán)中。應(yīng)當(dāng)指出的是,在存儲(chǔ)器中訪問(wèn)文件系統(tǒng)的訪問(wèn)性能要優(yōu)于在磁盤(pán)上的訪問(wèn)。
如果兩個(gè)在寫(xiě)入時(shí)間上相連的數(shù)據(jù)單元存儲(chǔ)在文件系統(tǒng)映射表中的不同位置,操作系統(tǒng)首先要從磁盤(pán)加載有第一數(shù)據(jù)單元文件系統(tǒng)定位的部分文件系統(tǒng)映射表(比如,確定該數(shù)據(jù)單元的物理存儲(chǔ)位置),然后,從磁盤(pán)中再加載第二個(gè)數(shù)據(jù)單元文件系統(tǒng)定位的部分文件系統(tǒng)映射表。這些重復(fù)的磁盤(pán)訪問(wèn)存儲(chǔ)系統(tǒng)的寫(xiě)響應(yīng)時(shí)間變長(zhǎng)。并且,由于即將寫(xiě)入的數(shù)據(jù)單元通常會(huì)按照時(shí)間順序讀取,因此在讀數(shù)據(jù)單元時(shí)也會(huì)產(chǎn)生同樣的訪問(wèn)延遲。
發(fā)明人已經(jīng)注意到,在采用文件系統(tǒng)的存儲(chǔ)系統(tǒng)中,希望存儲(chǔ)時(shí)間大體相同的數(shù)據(jù)單元在文件系統(tǒng)中的存儲(chǔ)位置也大體相同,這樣就可以減少操作系統(tǒng)在連續(xù)訪問(wèn)數(shù)據(jù)單元時(shí)必須從磁盤(pán)上加在不同部分的文件系統(tǒng)的可能性。如上所示,在本發(fā)明的一實(shí)施例中,文件系統(tǒng)中文件的定位是由文件的名稱決定的。這樣,依據(jù)本發(fā)明的一實(shí)施例,在文件的名稱加入附加信息,對(duì)于寫(xiě)入時(shí)間大體相同的文件其附加信息是相同的。這樣,就位寫(xiě)入時(shí)間大體相同的文件提供了臨時(shí)訪問(wèn)地址,并且有助于在文件系統(tǒng)中連續(xù)存儲(chǔ)這些字段。
應(yīng)當(dāng)指出的是,在使用可內(nèi)容尋址的存儲(chǔ)器的本發(fā)明的一實(shí)施例中,在文件名稱中附加的信息也可以附加到以文件形式存儲(chǔ)的數(shù)據(jù)的內(nèi)容地址中。比如,可以將該信息附加到文件內(nèi)容的散列值中,以生成基于散列值和附加信息的內(nèi)容地址。比如信息也可以附加到散列值的開(kāi)始,結(jié)尾或其他的位置。主機(jī)可以利用該內(nèi)容地址按照上面提到的方式訪問(wèn)文件。
在本發(fā)明的一實(shí)施例中,用于建立臨時(shí)訪問(wèn)地址的附加信息可以附加到存儲(chǔ)系統(tǒng)的內(nèi)容地址中。也就是說(shuō),比如,在存儲(chǔ)系統(tǒng)中存儲(chǔ)數(shù)據(jù)單元時(shí),存儲(chǔ)系統(tǒng)可以生成臨時(shí)訪問(wèn)地址信息,同時(shí)也會(huì)生成散列值,并將生成的內(nèi)容返送給發(fā)出存儲(chǔ)請(qǐng)求的主機(jī)。
在一可選的實(shí)施例中,主機(jī)生成了臨時(shí)訪問(wèn)地址信息,并將該信息附加到散列值中生成內(nèi)容地址。主機(jī)可以將內(nèi)容地址發(fā)送給存儲(chǔ)系統(tǒng)或者可以僅僅將臨時(shí)訪問(wèn)地址信息發(fā)送給存儲(chǔ)系統(tǒng),并且允許存儲(chǔ)系統(tǒng)將該信息附加到散列值中以確定內(nèi)容地址。由于是在機(jī)上計(jì)算的時(shí)訪問(wèn)地址信息,如果主機(jī)出于備份或復(fù)制的目的,同時(shí)(或大體同時(shí))在多個(gè)存儲(chǔ)系統(tǒng)中存儲(chǔ)數(shù)據(jù)單元,那么再?zèng)]一存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)單元的內(nèi)容地址都是相同的。
在另一實(shí)施例中,臨時(shí)訪問(wèn)地址信息可以通過(guò)存儲(chǔ)系統(tǒng)和主機(jī)生成,并且生成的兩套信息都可以附加到散列值任意適合的位置上,以生成數(shù)據(jù)單元的內(nèi)容地址。
上面描述的示例為存儲(chǔ)在文件系統(tǒng)中的文件提供臨時(shí)訪問(wèn)地址的。但是應(yīng)當(dāng)指出的是,該技術(shù)也適用于其它形式的邏輯數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。比如,在內(nèi)容地址(或其他存儲(chǔ)在數(shù)據(jù)庫(kù)中的信息)中增加臨時(shí)訪問(wèn)地址信息可以提高以內(nèi)容地址(或其他信息)作為關(guān)鍵詞訪問(wèn)的數(shù)據(jù)庫(kù)的訪問(wèn)效率,也可以利用其它的邏輯結(jié)構(gòu)。
對(duì)那些寫(xiě)入時(shí)間大體相同的數(shù)據(jù)單元,在文件名中附件的可以是任意相同的信息。比如,可以在文件名中附加時(shí)間標(biāo)識(shí),文件系統(tǒng)可以通過(guò)檢查該時(shí)間標(biāo)識(shí)確定數(shù)據(jù)單元的存儲(chǔ)位置。也可以選擇在文件名中附加一計(jì)數(shù)值。該計(jì)數(shù)值在存儲(chǔ)系統(tǒng)中寫(xiě)入新的數(shù)據(jù)單元時(shí)就會(huì)遞增。由于本發(fā)明沒(méi)有限定,因此可以使用任意適合的信息。
應(yīng)當(dāng)指出的是,本發(fā)明中關(guān)于在內(nèi)容地址中附加信息以為在存儲(chǔ)系統(tǒng)中按時(shí)間寫(xiě)入的數(shù)據(jù)單元提供指示的內(nèi)容不僅限定于所述的具有特定存儲(chǔ)節(jié)點(diǎn)和訪問(wèn)節(jié)點(diǎn)的存儲(chǔ)系統(tǒng),或者是上述的存儲(chǔ)節(jié)點(diǎn)中文件系統(tǒng)。在這一方面,本發(fā)明適用于許多具有不同配置的存儲(chǔ)系統(tǒng)。
圖7概念性地闡述了本發(fā)明中的臨時(shí)訪問(wèn)地址的內(nèi)容,該圖說(shuō)明了在內(nèi)容地址701中附加地址信息703。應(yīng)當(dāng)指出的是本發(fā)明者方面的內(nèi)容不僅限定于如圖7中所示的在內(nèi)容地址的開(kāi)始部分附加地址信息。地址信息可以以任意適合的方式附加到內(nèi)容地址中,包括附加在內(nèi)容地址的尾部,或者在內(nèi)容地址范圍之內(nèi)添加,也包括象圖7所示的那樣將地址信息作為一毗鄰的塊提供,或者將信息分散在內(nèi)容地址信息701之中。
以上討論的本發(fā)明的實(shí)施例可以通過(guò)許多方式實(shí)現(xiàn),比如,實(shí)施例可以通過(guò)硬件、軟件或它們的組合來(lái)實(shí)現(xiàn)。當(dāng)通過(guò)軟件實(shí)現(xiàn)時(shí),無(wú)論是在單臺(tái)計(jì)算機(jī)中還是分布在多臺(tái)計(jì)算機(jī)中,軟件代碼都可以在任意適合的處理器或處理器組上運(yùn)行。應(yīng)當(dāng)指出的是,任何執(zhí)行上述功能的設(shè)備或設(shè)備組一般都可看成一或多個(gè)控制前面討論的功能的控制器。該控制器可以以多種形式實(shí)現(xiàn),比如通過(guò)特定的硬件,或利用以微代碼或軟件編程的通用硬件(比如一或多個(gè)處理器)實(shí)現(xiàn)前面討論的功能。
在這一點(diǎn)上應(yīng)當(dāng)指出的是,本發(fā)明的一實(shí)施例的實(shí)現(xiàn)中包含至少一計(jì)算機(jī)可讀的介質(zhì)(比如,計(jì)算機(jī)存儲(chǔ)器,軟盤(pán),光盤(pán),磁帶等等),其中存儲(chǔ)有計(jì)算機(jī)程序(比如大量的指令),該程序在處理器上運(yùn)行時(shí),可以實(shí)現(xiàn)本發(fā)明實(shí)施例中討論的功能。計(jì)算機(jī)可讀介質(zhì)應(yīng)該是可以移動(dòng)的,這樣其中存儲(chǔ)的程序可以安裝到任意的計(jì)算機(jī)系統(tǒng)資源中,以實(shí)現(xiàn)此處討論的本發(fā)明的內(nèi)容。并且,應(yīng)當(dāng)指出的是這里提到的在運(yùn)行時(shí)可以實(shí)現(xiàn)此處討論的功能的計(jì)算機(jī)程序,并不僅僅限定于可在主機(jī)中運(yùn)行的應(yīng)用程序。更恰當(dāng)?shù)恼f(shuō),這里所用的術(shù)語(yǔ)”計(jì)算機(jī)程序”是普通意義上的任意類型的計(jì)算機(jī)代碼(比如,代碼或微代碼),該代碼可用于對(duì)處理器編程以實(shí)現(xiàn)上面討論的本發(fā)明的內(nèi)容。
應(yīng)當(dāng)指出的是,根據(jù)本發(fā)明的幾個(gè)實(shí)施例中的過(guò)程是通過(guò)計(jì)算機(jī)可讀介質(zhì)實(shí)現(xiàn)的,計(jì)算機(jī)實(shí)施過(guò)程可以在程序執(zhí)行的過(guò)程中接收手動(dòng)輸入(比如,來(lái)自用戶的輸入)。
在上面討論的不同的示例中,所討論的內(nèi)容地址中包含字母“A”-“Z”??梢岳斫獾氖牵@些內(nèi)容地址僅僅是作為示例提供的,并且這些內(nèi)容地址可以包含任意的字母,位序列,或其他任意適合的字符,本發(fā)明在這一點(diǎn)上沒(méi)有限定。
這里所用的措辭和術(shù)語(yǔ)均是出于說(shuō)明的目的,而不應(yīng)當(dāng)當(dāng)作限定范圍?!鞍ā?,或者“包含”和“涉及”等詞及其變形的使用,是指包括此后所列的項(xiàng)目及附加項(xiàng)目。
由于在此詳細(xì)地討論了本發(fā)明的幾個(gè)實(shí)施例,本領(lǐng)域的技術(shù)人員可很容易在此基礎(chǔ)上作出修改和改進(jìn)。此類修改和改進(jìn)應(yīng)當(dāng)歸于本發(fā)明的精神和范圍之中。因此,前面的討論僅作為示例,而不能作為范圍的限定。下面的權(quán)利要求限定了本發(fā)明的范圍。
權(quán)利要求
1.編碼有指令的至少一計(jì)算機(jī)可讀介質(zhì),該指令在計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí)可以執(zhí)行一種處理數(shù)據(jù)的方法,其中計(jì)算機(jī)系統(tǒng)包含至少一主機(jī)和至少一為至少一主機(jī)存儲(chǔ)數(shù)據(jù)單元的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),且其中至少一主機(jī)利用至少部分基于數(shù)據(jù)單元內(nèi)容的內(nèi)容地址訪問(wèn)數(shù)據(jù)單元,該方法包括以下行為(a)為數(shù)據(jù)單元?jiǎng)?chuàng)建內(nèi)容地址,以包含可以指示哪些數(shù)據(jù)單元即將被寫(xiě)入存儲(chǔ)系統(tǒng)中的第一信息。
2.根據(jù)權(quán)利要求1所述的至少一計(jì)算機(jī)可讀介質(zhì),其中該方法還包括以下行為(b)通過(guò)向存儲(chǔ)系統(tǒng)提供數(shù)據(jù)單元之一的內(nèi)容地址而訪問(wèn)數(shù)據(jù)單元之一。(c)根據(jù)數(shù)據(jù)單元之一的內(nèi)容地址及第一信息確定數(shù)據(jù)單元之一將被保存在存儲(chǔ)系統(tǒng)中的位置。
3.根據(jù)權(quán)利要求1所述的至少一計(jì)算機(jī)可讀介質(zhì),對(duì)于數(shù)據(jù)單元之一,其中行為(a)包括創(chuàng)建至少部分?jǐn)?shù)據(jù)單元的散列值;和在散列值中插入第一信息以為數(shù)據(jù)單元之一創(chuàng)建內(nèi)容地址。
4.根據(jù)權(quán)利要求3所述的至少一計(jì)算機(jī)可讀介質(zhì),其中第一信息包括關(guān)于數(shù)據(jù)單元之一是何時(shí)被寫(xiě)入至少一存儲(chǔ)系統(tǒng)的時(shí)間戳的至少一部分。
5.根據(jù)權(quán)利要求2所述的至少一計(jì)算機(jī)可讀介質(zhì),其中行為(b)包括利用至少部分第一信息在至少一存儲(chǔ)系統(tǒng)中選擇用于存儲(chǔ)數(shù)據(jù)單元之一的存儲(chǔ)位置的行為,及其中該方法還包括在選定的存儲(chǔ)位置存儲(chǔ)數(shù)據(jù)單元之一的行為。
6.至少一編碼有指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)在計(jì)算機(jī)系統(tǒng)上執(zhí)行時(shí),其執(zhí)行一處理數(shù)據(jù)方法,其中計(jì)算機(jī)系統(tǒng)包含至少一主機(jī)和至少一為至少一主機(jī)存儲(chǔ)數(shù)據(jù)單元的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),其中至少一主機(jī)利用至少部分基于數(shù)據(jù)單元內(nèi)容的內(nèi)容地址訪問(wèn)數(shù)據(jù)單元,且其中至少一存儲(chǔ)系統(tǒng)中包含索引,該索引可將數(shù)據(jù)單元的內(nèi)容地址映射到至少一存儲(chǔ)數(shù)據(jù)單元的存儲(chǔ)系統(tǒng)內(nèi)的存儲(chǔ)位置,該方法包含以下行為(a)來(lái)自至少一主機(jī)接收存儲(chǔ)數(shù)據(jù)單元之一的請(qǐng)求,該請(qǐng)求用其關(guān)聯(lián)的內(nèi)容地址識(shí)別數(shù)據(jù)單元之一;(b)在選定的存儲(chǔ)位置中存儲(chǔ)數(shù)據(jù)單元,使得索引中的存儲(chǔ)位置記錄是最接近于索引中相對(duì)于數(shù)據(jù)單元之一的、即將被寫(xiě)到至少一存儲(chǔ)系統(tǒng)的其它數(shù)據(jù)單元的記錄。
7.根據(jù)權(quán)利要求6所述的至少一計(jì)算機(jī)可讀介質(zhì),其中數(shù)據(jù)單元之一的內(nèi)容地址被創(chuàng)建,其至少部分通過(guò)散列數(shù)據(jù)單元的至少一部分實(shí)現(xiàn)。
8.根據(jù)權(quán)利要求7所述至少一計(jì)算機(jī)可讀介質(zhì),其中內(nèi)容地址包含第一信息,其可用于確定哪些數(shù)據(jù)單元即將寫(xiě)入存儲(chǔ)系統(tǒng),且其中該方法還包括來(lái)自至少一主機(jī)接收第一信息的行為。
9.根據(jù)權(quán)利要求7所述的至少一計(jì)算機(jī)可讀介質(zhì),其中內(nèi)容地址包含第一信息,其可用于確定哪些數(shù)據(jù)單元即將寫(xiě)入存儲(chǔ)系統(tǒng),且其中該方法還包含以下行為在至少一存儲(chǔ)系統(tǒng)上生成第一信息的第一部分;從至少一主機(jī)上接收第一信息的第二部分;以及將第一、第二部分添加到內(nèi)容地址中。
10.用于計(jì)算機(jī)系統(tǒng)中的可內(nèi)容尋址的存儲(chǔ)系統(tǒng),其包含可內(nèi)容尋址的存儲(chǔ)系統(tǒng)和至少一主機(jī),其中至少一主機(jī)根據(jù)基于數(shù)據(jù)單元內(nèi)容生成的內(nèi)容地址訪問(wèn)存儲(chǔ)在可內(nèi)容尋址的存儲(chǔ)系統(tǒng)上的數(shù)據(jù)單元,可內(nèi)容尋址的存儲(chǔ)系統(tǒng)包括至少一存儲(chǔ)設(shè)備,用于存儲(chǔ)自至少一主機(jī)接收的數(shù)據(jù);和至少一控制器,用于維護(hù)索引,該索引將數(shù)據(jù)單元的內(nèi)容地址映射到至少一用于存儲(chǔ)數(shù)據(jù)單元的存儲(chǔ)系統(tǒng)內(nèi)的存儲(chǔ)位置,使得即將寫(xiě)入至少一存儲(chǔ)系統(tǒng)的數(shù)據(jù)單元在索引中具有最接近的記錄。
全文摘要
用于在存儲(chǔ)系統(tǒng)中定位內(nèi)容的系統(tǒng)的實(shí)施例,在該系統(tǒng)中,存儲(chǔ)系統(tǒng)向主機(jī)提供數(shù)據(jù)物理存儲(chǔ)位置的定位線索,系統(tǒng)中的主機(jī)可以重新提交以后的訪問(wèn)請(qǐng)求。在另一實(shí)施例中,可以將存儲(chǔ)地址映射到物理存儲(chǔ)位置上的索引在存儲(chǔ)系統(tǒng)上緩存。仍是在另一實(shí)施例中,內(nèi)部地址根據(jù)數(shù)據(jù)的地址選定新寫(xiě)入數(shù)據(jù)的存儲(chǔ)位置。在此外的一實(shí)施例中,存儲(chǔ)時(shí)間大體相同的數(shù)據(jù)單元的定位索引記錄是相連的。
文檔編號(hào)G06F3/06GK1629823SQ20041009853
公開(kāi)日2005年6月22日 申請(qǐng)日期2004年12月9日 優(yōu)先權(quán)日2003年12月9日
發(fā)明者邁克爾·基利恩, 斯蒂芬·托德, 湯姆·特格爾斯, 簡(jiǎn)·范里爾, 卡爾·達(dá)哈魯因 申請(qǐng)人:伊姆西公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
静宁县| 靖西县| 丹江口市| 广丰县| 渝北区| 苏尼特左旗| 宁远县| 枞阳县| 高青县| 舟曲县| 临武县| 突泉县| 闽清县| 通河县| 勃利县| 五河县| 城固县| 滨海县| 彭泽县| 林甸县| 衡阳县| 师宗县| 武川县| 鄂托克前旗| 定西市| 呈贡县| 漠河县| 贵溪市| 错那县| 子洲县| 桦川县| 明光市| 房山区| 德清县| 淮南市| 汕头市| 白山市| 老河口市| 抚顺市| 海伦市| 顺义区|