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