專利名稱:對(duì)分布式文件系統(tǒng)中的文件重新條帶化的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明的系統(tǒng)和方法一般涉及分布式文件存儲(chǔ)領(lǐng)域,特別是涉及對(duì)存儲(chǔ)在智能分布式文件管理系統(tǒng)中的文件重新條帶化(restriping)的系統(tǒng)和方法。
背景互聯(lián)網(wǎng)的迅速增長已經(jīng)開創(chuàng)了一個(gè)新的紀(jì)元,其中以恒定的基數(shù)對(duì)信息交換及訪問。為了響應(yīng)這種增長,被共享的數(shù)據(jù)的大小也已經(jīng)增加了。用戶不光要求標(biāo)準(zhǔn)的HTML文檔,還希望訪問各種數(shù)據(jù),例如音頻數(shù)據(jù),視頻數(shù)據(jù),圖像數(shù)據(jù),以及編程數(shù)據(jù)。這樣,就需要有能夠容納大量數(shù)據(jù)的數(shù)據(jù)存儲(chǔ),并且同時(shí)還能對(duì)數(shù)據(jù)進(jìn)行高速及可靠的訪問。
一種響應(yīng)就是利用單一的存儲(chǔ)裝置,該裝置可以存儲(chǔ)大量的數(shù)據(jù),但是很難提供高吞吐率。隨著數(shù)據(jù)容量的增加,對(duì)該數(shù)據(jù)進(jìn)行訪問所花費(fèi)的時(shí)間也會(huì)增加。處理速度和能力得到了改進(jìn),可是磁盤I/O(輸入/輸出)操作性能并沒有以相同的速度提高,從而使得I/O操作效率不高,尤其是對(duì)于大的數(shù)據(jù)文件。
另一種響應(yīng)就是允許多服務(wù)器通過采用諸如存儲(chǔ)區(qū)域網(wǎng)絡(luò)解決方案(SAN)的架構(gòu)來訪問共享的磁盤,但是這種系統(tǒng)非常昂貴并且要求復(fù)雜的技術(shù)來建立和控制數(shù)據(jù)的集成。而且,也需要高速適配器來處理大量的數(shù)據(jù)請(qǐng)求。
常用方法的一個(gè)問題就是它們的可量測性受到限制。這樣,隨著數(shù)據(jù)量的增加,該系統(tǒng)也會(huì)變大,但是這種擴(kuò)展是昂貴和高破壞性的。
常用方法的另一個(gè)常見問題就是它們的靈活性受到限制。這些系統(tǒng)經(jīng)常被設(shè)置為使用預(yù)先定義的錯(cuò)誤糾正控制。例如,可以使用RAID系統(tǒng)來在物理磁盤級(jí)提供數(shù)據(jù)文件的冗余和鏡像,這樣在確定數(shù)據(jù)應(yīng)該被存在哪里或應(yīng)該使用的冗余參數(shù)的類型時(shí)會(huì)給管理員提供極少或沒有靈活性。
內(nèi)容該智能分布式文件系統(tǒng)有利于將文件數(shù)據(jù)存儲(chǔ)在被作為一個(gè)單一的文件系統(tǒng)而訪問的一組智能存儲(chǔ)單元之中。該智能分布式文件系統(tǒng)有利于利用元數(shù)據(jù)結(jié)構(gòu)來跟蹤和管理關(guān)于各個(gè)文件的詳細(xì)信息,例如包括,例如文件數(shù)據(jù)塊的設(shè)備和塊位置,從而允許在一個(gè)單一文件系統(tǒng)中實(shí)現(xiàn)不同級(jí)別的復(fù)制和/或冗余,促進(jìn)冗余參數(shù)的變化,為元數(shù)據(jù)提供高級(jí)別的保護(hù),實(shí)時(shí)復(fù)制和移動(dòng)數(shù)據(jù)等等。
該智能分布式文件系統(tǒng)還可以包括這樣的系統(tǒng)和方法,它們能夠?qū)Ψ植荚谝唤M智能存儲(chǔ)單元中的文件進(jìn)行重新條帶化(restriping),其中用于特定數(shù)據(jù)條的數(shù)據(jù)塊通常并不需要被定位在存儲(chǔ)單元中的任何特定位置,其中可以在最小數(shù)據(jù)移動(dòng)的情況下實(shí)現(xiàn)在智能存儲(chǔ)單元中對(duì)數(shù)據(jù)的重新條帶化,并且其中即使在條帶化處理中出現(xiàn)系統(tǒng)故障,數(shù)據(jù)也是通常受保護(hù)的并是可以恢復(fù)的。
本發(fā)明的一個(gè)方面涉及一種與多個(gè)智能存儲(chǔ)裝置進(jìn)行通信的分布式文件系統(tǒng),其中該分布式文件系統(tǒng)包括一個(gè)消息傳遞系統(tǒng)并被設(shè)置為存儲(chǔ)和管理關(guān)于存儲(chǔ)在該分布式文件系統(tǒng)中的文件和目錄的元數(shù)據(jù),以至于該元數(shù)據(jù)包括元數(shù)據(jù)數(shù)據(jù)塊的位置,內(nèi)容數(shù)據(jù)塊,以及奇偶校驗(yàn)數(shù)據(jù)塊,并且該分布式文件系統(tǒng)還被設(shè)置為重新條帶化數(shù)據(jù)文件。
本發(fā)明的另一個(gè)方面涉及一種對(duì)存儲(chǔ)在智能分布式系統(tǒng)中的多個(gè)智能存儲(chǔ)裝置中的數(shù)據(jù)重新條帶化的方法。該方法包括識(shí)別至少一個(gè)智能存儲(chǔ)裝置,其中來自現(xiàn)存文件的數(shù)據(jù)簇可以被存儲(chǔ)在該存儲(chǔ)裝置上;將該簇存儲(chǔ)在被識(shí)別出的智能存儲(chǔ)裝置上;確定該簇被成功存儲(chǔ);以及更新與該數(shù)據(jù)簇相關(guān)的元數(shù)據(jù),以反映出新的分配。
本發(fā)明的另一個(gè)方面涉及一種用于對(duì)數(shù)據(jù)重新條帶化的系統(tǒng)。該系統(tǒng)包括多個(gè)智能裝置,該智能裝置被設(shè)置為將數(shù)據(jù)塊存儲(chǔ)在分布在智能裝置中的數(shù)據(jù)條中;分配模塊,其被設(shè)置為將數(shù)據(jù)塊分配給智能裝置;請(qǐng)求模塊,被設(shè)置為發(fā)送指令給智能裝置,以在分配完數(shù)據(jù)塊之后對(duì)這些數(shù)據(jù)塊進(jìn)行存儲(chǔ);以及更新模塊,被設(shè)置為在存儲(chǔ)完數(shù)據(jù)塊之后更新與數(shù)據(jù)塊相關(guān)的元數(shù)據(jù)。
本發(fā)明的另一個(gè)方面涉及一種對(duì)由數(shù)據(jù)塊構(gòu)成的數(shù)據(jù)重新條帶化的方法。該方法包括將數(shù)據(jù)塊分配給存儲(chǔ)單元;確定該數(shù)據(jù)塊是否已經(jīng)被存儲(chǔ)在存儲(chǔ)單元中;如果該數(shù)據(jù)塊尚未駐留在存儲(chǔ)單元中,則將其起存儲(chǔ)在存儲(chǔ)單元中;以及如果該數(shù)據(jù)塊已經(jīng)被存儲(chǔ)了,則更新與該數(shù)據(jù)塊相關(guān)的元數(shù)據(jù)。
本發(fā)明的另一個(gè)方面涉及一種將數(shù)據(jù)塊分配給存儲(chǔ)單元的方法。該方法包括識(shí)別可用的存儲(chǔ)單元;為每個(gè)數(shù)據(jù)塊選擇可用的存儲(chǔ)單元;以及為每個(gè)被選中的存儲(chǔ)單元確定相關(guān)的地址單元。
本發(fā)明的另一個(gè)方面涉及一種從一組存儲(chǔ)單元中選擇一個(gè)存儲(chǔ)單元以將一數(shù)據(jù)塊存儲(chǔ)在保護(hù)組中的方法。該方法包括從存儲(chǔ)單元組中識(shí)別出哪個(gè)存儲(chǔ)單元是與保護(hù)組相關(guān)的最優(yōu)存儲(chǔ)單元;以及選擇該最優(yōu)存儲(chǔ)單元。
本發(fā)明的另一個(gè)方面涉及一種為數(shù)據(jù)塊選擇存儲(chǔ)單元的方法。該方法包括識(shí)別出當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元;在第一存儲(chǔ)單元中識(shí)別出一個(gè)最優(yōu)位置;確定一組最優(yōu)存儲(chǔ)單元;如果該第一存儲(chǔ)單元是當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元中的一個(gè),則選擇該第一存儲(chǔ)單元;以及如果該第一存儲(chǔ)單元不是當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元中的一個(gè),則從一組最優(yōu)存儲(chǔ)單元中選擇一個(gè)。
本發(fā)明的另一個(gè)方面涉及一種具有存儲(chǔ)裝置的系統(tǒng),該裝置中包括有指令,在執(zhí)行這些指令的時(shí)候,使得該系統(tǒng)能夠執(zhí)行一種方法,該方法包括識(shí)別來自現(xiàn)存文件的數(shù)據(jù)簇將被存在其上的存儲(chǔ)單元;確定該簇被成功存儲(chǔ);以及更新與該數(shù)據(jù)簇相關(guān)的元數(shù)據(jù)。
為了概述的目的,這里對(duì)本發(fā)明的某些方面、優(yōu)點(diǎn)、以及新特征進(jìn)行了描述??梢岳斫獾氖?,并不需要所有的這些優(yōu)點(diǎn)都可以根據(jù)本發(fā)明的任何特殊實(shí)施方案來實(shí)現(xiàn)。這樣,例如,本領(lǐng)域內(nèi)的技術(shù)人員可以認(rèn)識(shí)到,可以采用實(shí)現(xiàn)了這里所述的一個(gè)優(yōu)點(diǎn)或優(yōu)點(diǎn)集合的方式來實(shí)現(xiàn)或完成本發(fā)明,而不需要實(shí)現(xiàn)這里所述或建議的其它優(yōu)點(diǎn)。
附圖的簡要說明
圖1說明了本發(fā)明一個(gè)實(shí)施方案的高級(jí)方框圖。
圖2說明了圖1中所示的部件中的一個(gè)示例數(shù)據(jù)流。
圖3說明了一個(gè)示例智能存儲(chǔ)單元的高級(jí)方框圖。
圖4說明了一個(gè)示例文件目錄。
圖5說明了元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)施方案。
圖6A說明了數(shù)據(jù)位置表結(jié)構(gòu)的一個(gè)實(shí)施方案。
圖6B說明了數(shù)據(jù)位置表結(jié)構(gòu)的另一個(gè)實(shí)施方案。
圖6C說明了數(shù)據(jù)位置表結(jié)構(gòu)的另一個(gè)實(shí)施方案。
圖6D說明了數(shù)據(jù)位置表結(jié)構(gòu)的又一個(gè)實(shí)施方案。
圖7A說明了用于目錄的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)施方案。
圖7B說明了用于文件的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)施方案。
圖8A說明了數(shù)據(jù)位置表的一個(gè)實(shí)施方案。
圖8B說明了數(shù)據(jù)位置表的另一個(gè)實(shí)施方案。
圖8C說明了數(shù)據(jù)位置表的又一個(gè)實(shí)施方案。
圖9說明了具有相應(yīng)示例數(shù)據(jù)的文件的示例元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)。
圖10說明了檢索數(shù)據(jù)流程的一個(gè)實(shí)施方案。
圖11說明了進(jìn)行名稱解析流程的一個(gè)實(shí)施方案。
圖12說明了檢索文件流程的一個(gè)實(shí)施方案。
圖13說明了生成奇偶校驗(yàn)信息流程的一個(gè)實(shí)施方案。
圖14說明了進(jìn)行錯(cuò)誤校正的流程的一個(gè)實(shí)施方案。
圖15說明了在智能分布式文件系統(tǒng)中對(duì)數(shù)據(jù)重新條帶化的流程的一個(gè)實(shí)施方案。
圖16說明了將數(shù)據(jù)分配給智能存儲(chǔ)單元的流程的一個(gè)實(shí)施方案。
圖17說明了在一組可用智能存儲(chǔ)單元中進(jìn)行選擇的流程的一個(gè)實(shí)施方案。
優(yōu)選實(shí)施方案的詳細(xì)描述現(xiàn)在參照附圖對(duì)表示本發(fā)明各種實(shí)施方案和示例性應(yīng)用的系統(tǒng)和方法進(jìn)行說明。也會(huì)對(duì)代表其它實(shí)施方案的各種系統(tǒng)和方法進(jìn)行說明。
為了說明的目的,一些實(shí)施方案將在互聯(lián)網(wǎng)內(nèi)容發(fā)送和網(wǎng)絡(luò)主機(jī)操作(web hosting)的環(huán)境中得到說明。發(fā)明人希望本發(fā)明并不僅限于該系統(tǒng)和方法所使用的環(huán)境類型,例如,互聯(lián)網(wǎng),萬維網(wǎng),醫(yī)院的專用網(wǎng)絡(luò),政府機(jī)構(gòu)的廣播網(wǎng)絡(luò),公司企業(yè)的內(nèi)部網(wǎng)絡(luò),內(nèi)聯(lián)網(wǎng),局域網(wǎng),廣域網(wǎng)等等。但是,附圖和說明書中所涉及的本發(fā)明的實(shí)施方案是處在互聯(lián)網(wǎng)內(nèi)容發(fā)送和網(wǎng)絡(luò)主機(jī)操作(web hosting)的環(huán)境之中。還需要知道的是,在其它實(shí)施方案中,該系統(tǒng)和方法可以在一個(gè)單一模塊中實(shí)現(xiàn)和/或與各種其它模塊一起實(shí)現(xiàn)等。并且,這里列出的具體實(shí)現(xiàn)方式僅僅是為了說明,而不是要限制本發(fā)明,本發(fā)明的范圍由所附的權(quán)利要求來定義。
現(xiàn)在將參照以上總結(jié)的附圖對(duì)這些和其它特征進(jìn)行說明。附圖和相關(guān)的說明被提供用于說明本發(fā)明的實(shí)施方案,而不是對(duì)本發(fā)明的限制。在整個(gè)附圖中,參考標(biāo)號(hào)可被重復(fù)使用以指代所標(biāo)出的部件之間的對(duì)應(yīng)關(guān)系。另外,各個(gè)參考標(biāo)號(hào)的第一位通常代表其中某部件第一次出現(xiàn)的附圖。
I.概述本發(fā)明的系統(tǒng)和方法提供了一種智能分布式文件系統(tǒng),該系統(tǒng)能夠?qū)?shù)據(jù)存儲(chǔ)在可作為一個(gè)單一的文件系統(tǒng)來訪問的一組智能存儲(chǔ)單元中。該智能分布式文件系統(tǒng)跟蹤和管理關(guān)于各個(gè)文件的詳細(xì)元數(shù)據(jù)。元數(shù)據(jù)可包括任何涉及和/或描述文件的數(shù)據(jù),例如文件數(shù)據(jù)塊的位置(其包括設(shè)備和塊位置信息)、元數(shù)據(jù)和/或數(shù)據(jù)塊(若有的話)的冗余副本位置、錯(cuò)誤校正信息、訪問信息、文件名、文件大小、文件類型、其中存有文件數(shù)據(jù)和保護(hù)信息的智能存儲(chǔ)單元等等。另外,該智能分布式文件系統(tǒng)允許對(duì)由文件系統(tǒng)管理的不同文件和/或數(shù)據(jù)塊進(jìn)行不同級(jí)別的復(fù)制和/或冗余、當(dāng)系統(tǒng)運(yùn)行時(shí)協(xié)助冗余參數(shù)的變化,當(dāng)系統(tǒng)運(yùn)行時(shí)協(xié)助丟失數(shù)據(jù)的恢復(fù),以及能夠?qū)崟r(shí)的復(fù)制和移動(dòng)元數(shù)據(jù)和數(shù)據(jù)。而且,每個(gè)智能存儲(chǔ)單元都可以通過從該智能存儲(chǔ)單元組中定位和搜集文件的數(shù)據(jù)來響應(yīng)文件請(qǐng)求。
該智能分布式文件系統(tǒng)有利于在這種情況對(duì)數(shù)據(jù)進(jìn)行訪問存在與WRITE(寫)請(qǐng)求的次數(shù)成比例的大量READ(讀)請(qǐng)求。這是由于為了確保寫請(qǐng)求的一致性而鎖定一組智能存儲(chǔ)單元,或記錄智能存儲(chǔ)單元所增加的復(fù)雜性。而且,該智能分布式文件系統(tǒng)還有利于對(duì)其中用于大塊數(shù)據(jù)的請(qǐng)求是很普遍的塊業(yè)務(wù)進(jìn)行處理。
一些實(shí)施方案的一個(gè)優(yōu)點(diǎn)就是由智能分布式文件系統(tǒng)來管理和訪問用于文件和目錄的元數(shù)據(jù)。該元數(shù)據(jù)可以表示用于目錄或文件的元數(shù)據(jù)位于哪里,內(nèi)容數(shù)據(jù)被存儲(chǔ)在哪里,元數(shù)據(jù)和/或內(nèi)容數(shù)據(jù)的鏡像副本被存儲(chǔ)在哪里,還有與系統(tǒng)相關(guān)的奇偶校驗(yàn)或其它錯(cuò)誤校正信息被存儲(chǔ)在哪里??梢允褂?,例如設(shè)備和塊位置信息來存儲(chǔ)數(shù)據(jù)位置信息。這樣,該智能分布式文件系統(tǒng)就可以通過使用同時(shí)被分布和存儲(chǔ)在一組智能存儲(chǔ)單元中的元數(shù)據(jù)來定位和檢索被請(qǐng)求的內(nèi)容數(shù)據(jù)。另外,由于智能分布式文件系統(tǒng)已經(jīng)訪問了元數(shù)據(jù),因此可以使用該智能分布式文件系統(tǒng)來選擇應(yīng)該在哪里存儲(chǔ)和移動(dòng)、復(fù)制、恢復(fù),和/或改變數(shù)據(jù),而不需要破壞該智能存儲(chǔ)單元組。
一些實(shí)施方案的另一個(gè)優(yōu)點(diǎn)就是每個(gè)文件都可以被存儲(chǔ)在多個(gè)智能存儲(chǔ)單元中并以適時(shí)的方式進(jìn)行訪問。每個(gè)文件的數(shù)據(jù)塊可以被分布在一個(gè)智能存儲(chǔ)單元的子集中,使得對(duì)數(shù)據(jù)的訪問次數(shù)能夠減少。另外,不同的文件可以被分布在不同數(shù)量的智能存儲(chǔ)單元中以及不同智能存儲(chǔ)單元組中。這種架構(gòu)使得智能分布式文件系統(tǒng)能夠根據(jù)各種因素智能地存儲(chǔ)數(shù)據(jù)塊,例如文件大小,重要性,預(yù)期的訪問率,以及可用的存儲(chǔ)容量,CPU利用率,和每個(gè)智能存儲(chǔ)單元的網(wǎng)絡(luò)利用率。
一些實(shí)施方案的另一個(gè)優(yōu)點(diǎn)就是該系統(tǒng)和方法可以被用于以塊或文件為單位提供各種保護(hù)方案,例如錯(cuò)誤校正,冗余,鏡像,以使得存儲(chǔ)在智能存儲(chǔ)單元中的不同塊或文件可以受到不同類型的保護(hù)。例如,一些目錄或文件可以被鏡像,其它的可以使用各種錯(cuò)誤或損失校正方案由錯(cuò)誤和/或損失校正數(shù)據(jù)進(jìn)行保護(hù),以及其它的不重要的目錄或文件可以不采用任何保護(hù)方案。
一些實(shí)施方案的進(jìn)一步優(yōu)點(diǎn)就是該系統(tǒng)和方法能夠?qū)崟r(shí)的增加,刪除,和/或修改智能存儲(chǔ)單元,而不會(huì)破壞或中斷正在進(jìn)行的數(shù)據(jù)請(qǐng)求。這樣,當(dāng)要求有更多的存儲(chǔ)時(shí),附加的智能存儲(chǔ)單元可以被加入到該智能存儲(chǔ)單元集合中并與該智能分布式文件系統(tǒng)實(shí)時(shí)的結(jié)合在一塊,而不會(huì)中斷文件請(qǐng)求或不得不使得現(xiàn)存的智能存儲(chǔ)單元離線。當(dāng)該智能分布式文件系統(tǒng)將現(xiàn)存文件或新文件的數(shù)據(jù)塊被分布在其中目前包括新智能存儲(chǔ)單元的智能存儲(chǔ)單元集合中時(shí),該現(xiàn)存的智能存儲(chǔ)單元可以處理文件請(qǐng)求。
一些實(shí)施方案的另一個(gè)優(yōu)點(diǎn)就是該系統(tǒng)和方法可以通過復(fù)制一個(gè)或多個(gè)智能存儲(chǔ)單元上的這些塊,從而為任何單獨(dú)的數(shù)據(jù)塊生成多個(gè)訪問點(diǎn)來實(shí)時(shí)的修改數(shù)據(jù)塊的存儲(chǔ)。復(fù)制有助于降低一個(gè)或一組文件中各個(gè)智能存儲(chǔ)單元的CPU和網(wǎng)絡(luò)資源請(qǐng)求利用率,其中對(duì)該文件中各個(gè)智能存儲(chǔ)單元進(jìn)行的頻繁訪問模式已經(jīng)被觀察到。由智能存儲(chǔ)單元監(jiān)視該訪問模式,該智能分布式文件系統(tǒng)為智能存儲(chǔ)單元提供了靈活性,以使得能夠在運(yùn)行智能分布式文件系統(tǒng)的同時(shí)復(fù)制該數(shù)據(jù)。
一些實(shí)施方案進(jìn)一步的優(yōu)點(diǎn)就是該系統(tǒng)和方法允許通過對(duì)一個(gè)或多個(gè)智能存儲(chǔ)單元上的文件進(jìn)行重新條帶化來實(shí)時(shí)的檢索定位數(shù)據(jù)文件。在一些實(shí)施方案中,這種重新條帶化有利于最小化數(shù)據(jù)塊的移動(dòng),保留數(shù)據(jù)的完整性,從而即使在重新條帶化的過程中出現(xiàn)系統(tǒng)故障,也能夠確??苫謴?fù)性。該重新條帶化系統(tǒng)有利于不需要將特定的數(shù)據(jù)塊定位在智能存儲(chǔ)單元的任何特定位置,為存儲(chǔ)的數(shù)據(jù)塊提供持續(xù)的保護(hù),并且即使當(dāng)一個(gè)或多個(gè)智能存儲(chǔ)單元出現(xiàn)故障時(shí),也能夠進(jìn)行數(shù)據(jù)恢復(fù)。
II.示例操作為了說明的目的,現(xiàn)在討論一種該智能分布式文件系統(tǒng)正在運(yùn)行的示例情況。在這個(gè)示例性情況下,該智能分布式文件系統(tǒng)由一個(gè)通過互聯(lián)網(wǎng)網(wǎng)點(diǎn)提供電影下載公司使用。該公司可以使用智能分布式文件系統(tǒng)來存儲(chǔ)和管理可下載電影的拷貝以及可由用戶通過網(wǎng)點(diǎn)訪問到的電影預(yù)告片、廣告和用戶信息??梢圆捎酶鞣N級(jí)別的保護(hù)來存儲(chǔ)該數(shù)據(jù),并將其存儲(chǔ)在多個(gè)智能存儲(chǔ)單元中,以進(jìn)行快速訪問。
例如,該公司可以希望將用戶調(diào)查電子信函存儲(chǔ)在該智能分布式文件系統(tǒng)的多個(gè)智能存儲(chǔ)單元中,以能夠快速訪問電子信函。可是,該公司可以保持所有電子信函的備份磁帶,并可以感覺到不需要立即恢復(fù)用戶調(diào)查。該公司可以指示該智能分布式文件系統(tǒng)并不對(duì)用戶調(diào)查電子信函使用錯(cuò)誤校正或鏡像保護(hù)。這樣,如果一個(gè)或多個(gè)智能存儲(chǔ)單元變得無法訪問,則該公司可能感覺到在能從備份磁帶中恢復(fù)這些電子信函之前延遲對(duì)那些智能存儲(chǔ)單元上的用戶調(diào)查電子信函進(jìn)行訪問是可接受的。
對(duì)于廣告,該公司可以指示智能分布式文件系統(tǒng)使用高錯(cuò)誤校正參數(shù),使得即使一個(gè)或多個(gè)智能存儲(chǔ)單元出現(xiàn)了故障,該智能分布式文件系統(tǒng)也能夠恢復(fù)數(shù)據(jù),而不需要中斷顯示廣告。例如,公司可以依靠各種故障容差措施來確定應(yīng)該給一個(gè)特殊文件何種程度的保護(hù)。對(duì)于重要的信息,公司可以希望確保實(shí)現(xiàn)X級(jí)的故障容差,對(duì)于不太重要的信息,公司可以希望確保Y級(jí)的故障容差,其中X>Y。這樣,即使一個(gè)或多個(gè)智能存儲(chǔ)單元出現(xiàn)了故障,該公司就可以確保它的廣告在一個(gè)可靠的基礎(chǔ)上是可用的。需要認(rèn)識(shí)到,可以使用除了故障容差以外的其它措施,并且故障容差可以被用來說明一個(gè)措施的可靠性。
對(duì)于排行榜電影下載,該公司可以建立一個(gè)智能分布式文件系統(tǒng)來自動(dòng)的存儲(chǔ)多個(gè)電影數(shù)據(jù)的拷貝,使得多個(gè)用戶能夠訪問該數(shù)據(jù),并保證即使一個(gè)或多個(gè)智能存儲(chǔ)單元出現(xiàn)了故障也可以從其它的單元檢索生成或檢索到丟失的數(shù)據(jù)。并且,如果請(qǐng)求數(shù)量增加了和/或如果一個(gè)或多個(gè)智能存儲(chǔ)單元開始溢出用于駐留在智能存儲(chǔ)單元中的數(shù)據(jù)的請(qǐng)求時(shí),可以生成排行榜電影下載的另外拷貝并存儲(chǔ)在智能存儲(chǔ)單元中。
該公司可以選擇提供其它并不流行的電影,并由于對(duì)其較少的要求而指示智能分布式文件系統(tǒng)存儲(chǔ)較少的拷貝。而且,當(dāng)“排行榜下載電影”變得不流行時(shí),該公司可以設(shè)置智能分布式文件系統(tǒng)從其中存儲(chǔ)有電影的智能存儲(chǔ)單元中刪除電影的額外拷貝,并將“不再流行”的電影移動(dòng)到性能較低(例如,具有較少可用磁盤空間的智能存儲(chǔ)單元)的智能存儲(chǔ)單元中。該智能分布式文件系統(tǒng)可以被設(shè)置為自動(dòng)的使用智能存儲(chǔ)單元來維護(hù)這些任務(wù)。
另外,當(dāng)公司獲得更多電影時(shí),該公司可以向智能分布式文件系統(tǒng)增加額外的智能存儲(chǔ)單元。接著,該公司就可以使用新的智能存儲(chǔ)單元來存儲(chǔ)更多的電影,存儲(chǔ)更多現(xiàn)存電影的拷貝,檢索分布現(xiàn)存的電影數(shù)據(jù)以改進(jìn)響應(yīng)時(shí)間,和/或改變一個(gè)或多個(gè)文件的保護(hù)方案。額外的智能存儲(chǔ)單元與智能分布式文件系統(tǒng)結(jié)合在一塊,使得即使該智能分布式文件系統(tǒng)在多個(gè)智能存儲(chǔ)單元集合中管理和存儲(chǔ)數(shù)據(jù)時(shí),該智能分布式文件系統(tǒng)也作為一個(gè)單一的文件系統(tǒng)出現(xiàn)。
如果其中的一個(gè)智能存儲(chǔ)單元出現(xiàn)故障,則該智能分布式文件系統(tǒng)可以檢索構(gòu)建存儲(chǔ)在該出現(xiàn)故障的單元上的任何文件的數(shù)據(jù),將信息存儲(chǔ)在工作單元上,并更新適當(dāng)?shù)脑獢?shù)據(jù)數(shù)據(jù)結(jié)構(gòu),這樣,如果用戶請(qǐng)求部分存儲(chǔ)在出現(xiàn)故障的單元上的文件,該用戶仍可以接收到文件的數(shù)據(jù),而不知道其中的一個(gè)單元出現(xiàn)了故障。
在該例中,智能分布式文件系統(tǒng)向公司提供了如下能力為排行榜電影下載提供可靠和快速的訪問,為不太流行的電影提供快速訪問,以及為用戶調(diào)查電子信函提供訪問。對(duì)于每個(gè)文件,該公司都可以設(shè)置錯(cuò)誤和/或損失校正參數(shù),并選擇應(yīng)該存儲(chǔ)多少個(gè)額外的文件拷貝。在一些情況下,該公司可以手動(dòng)的選擇應(yīng)該存儲(chǔ)多少個(gè)數(shù)據(jù)拷貝并確定將該數(shù)據(jù)存儲(chǔ)在哪里。在其它情況下,該公司可以根據(jù)智能分布式文件系統(tǒng)的特征選擇應(yīng)該存儲(chǔ)多少個(gè)數(shù)據(jù)拷貝,應(yīng)該使用的錯(cuò)誤和/或損失校正方案(如果有的話),以及將該數(shù)據(jù)存儲(chǔ)在哪里。這樣,該公司就能有效的使用它的存儲(chǔ)控制,更好的響應(yīng)用戶的請(qǐng)求。存儲(chǔ)空間并不會(huì)浪費(fèi)在很少被請(qǐng)求的文件,并且不會(huì)為不重要的文件生成錯(cuò)誤校正信息。
雖然上述的例子涉及提供下載電影的公司,但是應(yīng)該知道,該例子僅僅是被用作說明智能分布式文件系統(tǒng)一個(gè)實(shí)施方案的特征。而且,該智能分布式文件系統(tǒng)可以被使用在其它環(huán)境中,并且可以與其它類型的數(shù)據(jù)和/或數(shù)據(jù)的組合一塊使用,包括例如聲音文件,音頻文件,圖形文件,多媒體文件,數(shù)字照片,可執(zhí)行文件等。
III.智能分布式文件系統(tǒng)圖1說明了智能分布式文件系統(tǒng)110的一個(gè)實(shí)施方案,該系統(tǒng)110與一個(gè)網(wǎng)絡(luò)服務(wù)器120進(jìn)行通信,以提供遠(yuǎn)程文件訪問。該智能分布式文件系統(tǒng)110可以使用各種協(xié)議(例如NFS或CIFS)與網(wǎng)絡(luò)服務(wù)器120進(jìn)行通信。用戶130通過通信介質(zhì)140(例如互聯(lián)網(wǎng)145)與網(wǎng)絡(luò)服務(wù)器120進(jìn)行交互,以請(qǐng)求由智能分布式文件系統(tǒng)110管理的文件。該典型的智能分布式文件系統(tǒng)110使用了在一組智能存儲(chǔ)單元114和網(wǎng)絡(luò)服務(wù)器120之間進(jìn)行通信的交換機(jī)(switch)部件125。該智能分布式文件系統(tǒng)110能夠使得單獨(dú)的文件塊在多個(gè)智能存儲(chǔ)單元114中傳播。這樣存儲(chǔ)數(shù)據(jù)可以使得對(duì)數(shù)據(jù)的訪問具有比數(shù)據(jù)被存儲(chǔ)在一個(gè)單一裝置中更高的吞吐率。另外,該智能分布式文件系統(tǒng)可以被用于存儲(chǔ)采用各種保護(hù)方案進(jìn)行保存的各種數(shù)據(jù)文件。
該典型的智能分布式文件系統(tǒng)110在一組智能存儲(chǔ)單元114中存儲(chǔ)數(shù)據(jù)。為了對(duì)智能存儲(chǔ)單元114進(jìn)行更詳細(xì)的描述,請(qǐng)參看下面標(biāo)題為“智能存儲(chǔ)單元”的部分。
該典型的智能分布式文件系統(tǒng)110使用了交換機(jī)部件125,例如負(fù)載平衡交換機(jī),該部件將請(qǐng)求送往能夠處理被請(qǐng)求數(shù)據(jù)類型的應(yīng)用程序服務(wù)器。采用高速技術(shù)將傳入的請(qǐng)求提供給適當(dāng)?shù)膽?yīng)用程序服務(wù)器,以使延遲最小化并確保數(shù)據(jù)的完整性。
應(yīng)該認(rèn)可的是,可以采用各種負(fù)載平衡交換機(jī)125,例如1000 Base-T(銅)千兆負(fù)載平衡以太網(wǎng)交換機(jī),Extreme Networks Summit 7I,F(xiàn)oundryFast Iron II,Nortel Networks Alteon ACEswitch 180,F(xiàn)5 Big-Ip),以及標(biāo)準(zhǔn)以太網(wǎng)交換機(jī)或其它的負(fù)載平衡交換機(jī)。該智能分布式文件系統(tǒng)110使用了支持大幀長的交換機(jī),例如“jumbo(巨型)”以太網(wǎng)幀。另外,該負(fù)載平衡交換機(jī)125可以采用Foundry Networks’ServerIron交換機(jī),Asante’s InstraSwitch 6200交換機(jī),Asante’s HotStack,Cisco’s Catalyst交換機(jī),以及其它的商品和/或?qū)@a(chǎn)品來構(gòu)成??墒?,本領(lǐng)域的普通技術(shù)人員應(yīng)該認(rèn)識(shí)到,也可以使用寬范圍的交換機(jī)部件125并可以使用其它的技術(shù)。而且,應(yīng)該明白,交換機(jī)部件125可以被設(shè)置為傳輸各種網(wǎng)絡(luò)幀長。
可以用高錯(cuò)誤校正參數(shù)來存儲(chǔ)高度重要的文件,其中該高錯(cuò)誤校正參數(shù)在磁盤,母板,CPU,操作系統(tǒng),或其它硬件或軟件出現(xiàn)禁止訪問一個(gè)或多個(gè)智能存儲(chǔ)單元的故障時(shí),以高的恢復(fù)率提供數(shù)據(jù)。如果有任何數(shù)據(jù)丟失,則智能存儲(chǔ)單元114可以使用元數(shù)據(jù)中的冗余信息或鏡像信息,以從另一個(gè)單元獲得數(shù)據(jù)或檢索生成該數(shù)據(jù)??梢詫?shí)時(shí)的將經(jīng)常被要求的文件鏡像在額外的智能存儲(chǔ)單元114中,以提供更高的吞吐率。
在一個(gè)智能分布式文件系統(tǒng)110的實(shí)施方案中,元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)具有至少與其參照的數(shù)據(jù)相同的保護(hù),其中包括對(duì)應(yīng)于該元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的目錄的任何子目錄。元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中數(shù)據(jù)的損失會(huì)損害該智能分布式文件系統(tǒng)110,因?yàn)闆]有元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)很難檢索數(shù)據(jù)。在該智能分布式文件系統(tǒng)110中,元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的交替拷貝可以被鏡像到許多需要提供所要求保護(hù)的位置。這樣,具有奇偶校驗(yàn)保護(hù)的文件可以使得它的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)在帶有至少相同或更高的奇偶校驗(yàn)保護(hù)的情況下存儲(chǔ),并且被鏡像兩次的文件可以使得它的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)至少被鏡像在兩個(gè)位置上。
雖然圖1說明智能分布式文件系統(tǒng)110的一個(gè)實(shí)施方案,但是應(yīng)該明白的是,也可以使用其它的實(shí)施方案。例如,額外的服務(wù)器,如應(yīng)用程序服務(wù)器可以與交換機(jī)部件125進(jìn)行通信。這些應(yīng)用程序服務(wù)器可以包括,例如音頻流服務(wù)器,視頻流服務(wù)器,圖像處理服務(wù)器,數(shù)據(jù)塊服務(wù)器等。并且,可以有額外的設(shè)備,例如工作站與交換機(jī)部件125進(jìn)行通信。另外,雖然圖1中說明了該智能分布式文件系統(tǒng)110與4個(gè)智能存儲(chǔ)單元114一起工作,但應(yīng)該明白,該智能分布式文件系統(tǒng)110可以與不同數(shù)量的智能存儲(chǔ)單元114一起工作。
還應(yīng)該明白的是,術(shù)語“遠(yuǎn)程”可以包括并不在本地存儲(chǔ)的裝置,部件和/或模塊,其不能通過局部總線進(jìn)行訪問。這樣,遠(yuǎn)程裝置可以包括物理上位于同一房間并通過例如交換機(jī)或局域網(wǎng)相連的裝置。在其它情況下,遠(yuǎn)程裝置也可以位于單獨(dú)的地理區(qū)域,例如在不同的位置,國家等。
還應(yīng)該明白,也可以使用智能分布式文件系統(tǒng)110來存儲(chǔ)各種類型的數(shù)據(jù)。例如,該智能分布式文件系統(tǒng)110可以與大型文件應(yīng)用程序一塊使用,例如,視頻點(diǎn)播,在線音樂系統(tǒng),網(wǎng)點(diǎn)鏡像,大型數(shù)據(jù)庫,大型圖像文件,CAD/CAM設(shè)計(jì),軟件更新,公司展示,保險(xiǎn)索賠文件,中間圖像文件,公司文檔存儲(chǔ)等。
圖2說明了一個(gè)示例環(huán)境,在該環(huán)境中,網(wǎng)點(diǎn)用戶130已經(jīng)提交了一個(gè)觀看點(diǎn)播的數(shù)字視頻的請(qǐng)求。在事件A中,用戶130通過互聯(lián)網(wǎng)145向網(wǎng)點(diǎn)發(fā)出了一個(gè)請(qǐng)求觀看電影拷貝mymovie.movie的請(qǐng)求。由網(wǎng)點(diǎn)的服務(wù)器120接收該請(qǐng)求,并且服務(wù)器120確定該文件位于\movies\comedy\mymovie.movie。在事件B中,智能分布式文件系統(tǒng)110的交換機(jī)部件125看到了要與智能分布式文件系統(tǒng)110相連的請(qǐng)求,并使用標(biāo)準(zhǔn)負(fù)載平衡技術(shù)將該請(qǐng)求發(fā)送給一個(gè)可用的智能存儲(chǔ)單元114,例如智能存儲(chǔ)單元0。在事件C中,智能存儲(chǔ)單元0接收到了對(duì)于文件/DFSR/movies/comedy/mymovie.movie的請(qǐng)求,并從它的根元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)(用于根目錄/DFSR)中確定出用于子目錄movie的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)被存儲(chǔ)在智能存儲(chǔ)單元2中。在事件D中,智能存儲(chǔ)單元0向智能存儲(chǔ)單元2發(fā)出一個(gè)請(qǐng)求,請(qǐng)求用于子目錄comedy的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的位置。在事件E中,智能存儲(chǔ)單元0接收到該用于子目錄comedy的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)被存儲(chǔ)在智能存儲(chǔ)單元3中的信息。在事件F中,智能存儲(chǔ)單元0向智能存儲(chǔ)單元3發(fā)出一個(gè)請(qǐng)求,請(qǐng)求用于文件mymovie.movie的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的位置。在事件G中,智能存儲(chǔ)單元0接收到該用于文件mymovie.movie的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)被存儲(chǔ)在智能存儲(chǔ)單元0中的信息。在事件H中,智能存儲(chǔ)單元0接著從本地存儲(chǔ)中檢索到用于文件mymovie.movie的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)。從該元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中,智能存儲(chǔ)單元0檢索到用于mymovie.movie的其中存儲(chǔ)文件中每個(gè)數(shù)據(jù)塊位置的數(shù)據(jù)位置表。智能存儲(chǔ)單元0接著使用數(shù)據(jù)位置表信息開始檢索本地存儲(chǔ)的塊并發(fā)出要求存儲(chǔ)在其它智能存儲(chǔ)單元中的數(shù)據(jù)的請(qǐng)求。
在已經(jīng)檢索到文件的數(shù)據(jù)或數(shù)據(jù)的一部分之后,該文件數(shù)據(jù)被發(fā)送給請(qǐng)求服務(wù)器120,并被轉(zhuǎn)發(fā)給請(qǐng)求用戶130。在一個(gè)例子中,該文件數(shù)據(jù)可以被傳遞給視頻流服務(wù)器,該服務(wù)器調(diào)整如何以及何時(shí)將該數(shù)據(jù)發(fā)送給用戶130??梢悦靼椎氖?,在一些實(shí)施方案中,有利的是采用提前讀取技術(shù)來檢索更多待被請(qǐng)求的數(shù)據(jù),以便于減少請(qǐng)求的等待時(shí)間。
IV.智能文件系統(tǒng)結(jié)構(gòu)表1說明了一個(gè)示例文件系統(tǒng)層集合的實(shí)施方案,其中為了訪問物理存儲(chǔ)裝置,通過該文件系統(tǒng)層對(duì)一個(gè)文件請(qǐng)求進(jìn)行處理。該典型的文件系統(tǒng)層包括用戶層,虛擬文件系統(tǒng)層,本地文件系統(tǒng)層,本地文件存儲(chǔ)層,以及存儲(chǔ)裝置層。
用戶空間—————————————————————————————內(nèi)核空間
表1在一種類型的文件請(qǐng)求中,通過用于文件共享,例如HTTPD(阿帕奇網(wǎng)絡(luò)服務(wù)器),F(xiàn)TPD,或者在實(shí)現(xiàn)了一個(gè)版本的微軟視窗文件共享服務(wù)器協(xié)議的Unix上使用的SMBD的用戶級(jí)協(xié)議應(yīng)用程序來接收請(qǐng)求。該用戶級(jí)協(xié)議應(yīng)用程序進(jìn)行內(nèi)核級(jí)打開,讀取,查找,寫入,或關(guān)閉系統(tǒng)調(diào)用,例如,通過對(duì)libc,C運(yùn)行時(shí)間庫進(jìn)行函數(shù)調(diào)用。
該系統(tǒng)調(diào)用被傳送給保持緩沖存儲(chǔ)器的虛擬文件系統(tǒng)層(“VFS”)。該緩沖存儲(chǔ)器可以是,例如最近最少使用(“LRU”)緩沖存儲(chǔ)器,用于存儲(chǔ)從較低文件系統(tǒng)層中接收的數(shù)據(jù)或元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)。
下一層就是本地文件系統(tǒng)層,該層保持文件系統(tǒng)的分級(jí)命名系統(tǒng)并發(fā)送目錄和文件名請(qǐng)求給下一層,即本地文件存儲(chǔ)層。該本地文件系統(tǒng)層處理元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)查找和管理。例如,在一些系統(tǒng)中,例如基于Unix的文件系統(tǒng),該元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)就是一個(gè)文件摘要,其中包括關(guān)于文件訪問允許,數(shù)據(jù)塊位置,以及參考計(jì)數(shù)的信息。一旦通過文件名打開了一個(gè)文件,則其它的文件操作就會(huì)通過為標(biāo)識(shí)出特定文件的元數(shù)據(jù)結(jié)構(gòu)的唯一標(biāo)識(shí)符來參考該文件。該方法的優(yōu)點(diǎn)就是一個(gè)文件可以有許多不同的名字,可以通過不同的路徑來訪問一個(gè)文件,以及通過標(biāo)準(zhǔn)的UNIX用戶級(jí)實(shí)用程序,例如“mv”命令,在VFS名稱空間中舊的文件上復(fù)制新的文件,而不會(huì)覆蓋實(shí)際的文件數(shù)據(jù)。由于可以在適當(dāng)?shù)奈恢蒙细聝?nèi)容,而不需要終止當(dāng)前的內(nèi)容服務(wù),因此這些好處在諸如內(nèi)容發(fā)送和網(wǎng)絡(luò)主機(jī)操作的條件下會(huì)更加有利。一旦所有打開的文件柄都被關(guān)閉,則元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中的參考計(jì)數(shù)使得系統(tǒng)只能夠使得數(shù)據(jù)塊無效。
第四層就是本地文件存儲(chǔ)層,該層處理“緩沖器請(qǐng)求至塊請(qǐng)求”的轉(zhuǎn)換以及對(duì)于數(shù)據(jù)緩沖器請(qǐng)求的管理。例如,本地文件存儲(chǔ)層使用塊定位方案來改進(jìn)和最大化寫和讀的吞吐量,以及用于讀出的塊檢索方案。
最后一層就是存儲(chǔ)裝置層,該層接待(host)用于由文件系統(tǒng)使用的磁盤硬件的特殊段的設(shè)備驅(qū)動(dòng)器。例如,如果物理存儲(chǔ)裝置是一個(gè)ATA磁盤,則該存儲(chǔ)裝置層接待該ATA磁盤驅(qū)動(dòng)器。
雖然表1說明了一個(gè)文件系統(tǒng)層集合的示例,但是H可以認(rèn)識(shí)到,該系統(tǒng)和方法可以與各種不同的層以及不同的環(huán)境協(xié)同工作,在該環(huán)境中,文件系統(tǒng)層可以被不同的定義或者根本就不存在。
V.智能存儲(chǔ)單元在一個(gè)實(shí)施方案中,該智能存儲(chǔ)單元114是一個(gè)即插即用、高密度、可機(jī)架裝配的應(yīng)用裝置,為了進(jìn)行高吞吐率的數(shù)據(jù)傳送而對(duì)該裝置進(jìn)行了優(yōu)化。該智能存儲(chǔ)單元可被設(shè)置為能夠與多個(gè)其它智能存儲(chǔ)單元進(jìn)行通信,以便于能夠提供一個(gè)單一的虛擬文件系統(tǒng)。由于需要更多的存儲(chǔ)空間或者如果一個(gè)或多個(gè)智能存儲(chǔ)單元出現(xiàn)了故障,則就可以安裝額外的智能存儲(chǔ)單元,而不需要使得整個(gè)系統(tǒng)停下來或中斷服務(wù)。
就像這里所用的,術(shù)語“模塊”指的是嵌入在硬件或固件中的邏輯,或者軟件指令的集合,其可能具有進(jìn)出點(diǎn),并且用編程語言,例如C或C++編寫。軟件模塊可以被編譯和鏈接成一個(gè)可執(zhí)行程序,柄被安裝到一個(gè)動(dòng)態(tài)鏈接庫中,或者可以用解釋性編程語言,例如BASIC,Perl,或Python書寫??梢岳斫獾氖?,軟件模塊可以從其它模塊或是其本身調(diào)用,和/或可以響應(yīng)檢測到的事件或中斷而被調(diào)用。軟件模塊可以被嵌入在固件,例如EPROM中??梢赃M(jìn)一步理解的是,硬件模塊可以由相連的邏輯單元,例如門和觸發(fā)器構(gòu)成,和/或可以由可編程單元,例如可編程門陣列或處理器構(gòu)成。這里所述的模塊優(yōu)選的被作為軟件模塊而實(shí)現(xiàn),但是也可以被實(shí)現(xiàn)為硬件或固件。
圖3說明了一個(gè)智能存儲(chǔ)單元114的實(shí)施方案,其中包括管理模塊320,處理模塊330,高速緩存340,堆棧350,以及存儲(chǔ)裝置360。該典型的智能存儲(chǔ)單元114可以被設(shè)置為同交換機(jī)部件125進(jìn)行通信,從而如圖1所示發(fā)送和接收請(qǐng)求。
A.管理模塊在一個(gè)實(shí)施方案中,智能存儲(chǔ)單元包括一個(gè)管理模塊320,其用于管理任務(wù),例如,安裝,參數(shù)設(shè)定,監(jiān)視智能分布式系統(tǒng),記錄發(fā)生在智能分布式文件系統(tǒng)110中的時(shí)間,升級(jí)等。
B.處理模塊該典型的處理模塊330可以被設(shè)置為接收對(duì)數(shù)據(jù)文件的請(qǐng)求,檢索本地和/或遠(yuǎn)程存儲(chǔ)的關(guān)于被請(qǐng)求數(shù)據(jù)文件的元數(shù)據(jù),以及檢索本地和/或遠(yuǎn)程存儲(chǔ)的被請(qǐng)求數(shù)據(jù)文件的數(shù)據(jù)塊。另外,當(dāng)一個(gè)或多個(gè)被請(qǐng)求的數(shù)據(jù)塊遭到破壞或丟失時(shí),該處理模塊也可以進(jìn)行數(shù)據(jù)恢復(fù)和錯(cuò)誤校正。
在一個(gè)實(shí)施方案中,該處理模塊330包括對(duì)應(yīng)于文件請(qǐng)求的5個(gè)模塊,即,塊分配管理器模塊331,塊高速緩存模塊333,本地塊管理器模塊335,遠(yuǎn)程塊管理器模塊337,以及塊裝置模塊339。
1.塊分配管理器模塊塊分配管理器模塊331確定向哪里分配塊,響應(yīng)于READ(讀)請(qǐng)求而定位塊,以及指導(dǎo)裝置的故障排除??梢酝ㄟ^作為缺省參數(shù)設(shè)置的策略,由系統(tǒng)管理員通過工具,例如圖形用戶接口,或命令解釋程序接口,或它們的組合設(shè)置的策略來確定向哪里分配塊。在一個(gè)實(shí)施方案中,該塊分配管理器模塊331駐留在本地文件系統(tǒng)層中,并與標(biāo)準(zhǔn)網(wǎng)絡(luò)軟件層,例如TCP/IP和以太網(wǎng),和/或代替伯克利軟件設(shè)計(jì)通用文件系統(tǒng)(“BSD UFS”)一塊工作。
典型的塊分配管理器模塊331包括3個(gè)子模塊塊請(qǐng)求轉(zhuǎn)換器模塊,轉(zhuǎn)發(fā)(forward)分配器模塊,以及故障恢復(fù)模塊。
a.塊請(qǐng)求轉(zhuǎn)換器模塊該塊請(qǐng)求轉(zhuǎn)換器模塊接收傳入的讀請(qǐng)求,進(jìn)行名稱查找,定位合適的裝置,并將該數(shù)據(jù)從裝置中拖出以實(shí)現(xiàn)該請(qǐng)求。如果該數(shù)據(jù)直接可用,則塊請(qǐng)求轉(zhuǎn)換器模塊根據(jù)該數(shù)據(jù)塊是被存儲(chǔ)在本地存儲(chǔ)裝置還是被存儲(chǔ)在另一個(gè)智能存儲(chǔ)單元的存儲(chǔ)裝置上,而發(fā)送一個(gè)數(shù)據(jù)請(qǐng)求給本地塊管理器模塊或遠(yuǎn)程塊管理器模塊。
在一個(gè)實(shí)施方案中,該塊請(qǐng)求轉(zhuǎn)換器模塊包括一個(gè)名稱查找處理過程,該處理過程將在下面標(biāo)題為“智能分布式文件系統(tǒng)處理-處理名稱查找”的部分進(jìn)行說明。
該塊請(qǐng)求轉(zhuǎn)換器模塊也可以響應(yīng)于裝置故障。例如,如果一個(gè)裝置停機(jī)了,則該塊請(qǐng)求轉(zhuǎn)換器模塊就會(huì)請(qǐng)求本地和遠(yuǎn)程數(shù)據(jù)塊,其中該數(shù)據(jù)塊可以通過使用,例如奇偶校驗(yàn)信息而被用于重構(gòu)數(shù)據(jù)。這樣,即使沒有進(jìn)行讀也可以生成數(shù)據(jù)。另外,該塊請(qǐng)求轉(zhuǎn)換器模塊與故障恢復(fù)模塊進(jìn)行通信,這樣該故障恢復(fù)模塊可以使用奇偶校驗(yàn)或其它錯(cuò)誤或損失校正數(shù)據(jù)來重新生成數(shù)據(jù),并在智能分布式文件系統(tǒng)的自由空間中重新條帶化損失校正數(shù)據(jù)。在其它實(shí)施方案中,該塊請(qǐng)求轉(zhuǎn)換器模塊可以請(qǐng)求破壞或丟失數(shù)據(jù)的原始拷貝。
b.轉(zhuǎn)發(fā)分配器模塊該轉(zhuǎn)發(fā)分配器模塊根據(jù)一些因素(例如冗余,空間,以及性能)來確定哪個(gè)裝置的塊應(yīng)該被用作寫請(qǐng)求。這些參數(shù)可以由系統(tǒng)管理員設(shè)置,從嵌入在智能分布式文件系統(tǒng)110中的信息中得出,與智能分布式文件系統(tǒng)110中的邏輯結(jié)合在一塊,或者它們的組合。該轉(zhuǎn)發(fā)分配器模塊110從使用智能分布式文件系統(tǒng)的其它智能存儲(chǔ)單元中接收統(tǒng)計(jì)信息,并使用這些統(tǒng)計(jì)信息來確定哪里是放置新傳入數(shù)據(jù)的最好位置。被搜集在一塊的統(tǒng)計(jì)信息包括,例如CPU利用率,網(wǎng)絡(luò)利用率,以及磁盤利用率的測量結(jié)果。
該轉(zhuǎn)發(fā)分配器模塊也可以根據(jù)遠(yuǎn)程智能存儲(chǔ)單元的響應(yīng)次數(shù)來從遠(yuǎn)程塊管理器模塊中接收等待時(shí)間信息。如果裝置之間的等待時(shí)間相對(duì)于其它的智能存儲(chǔ)單元來說達(dá)到了高級(jí)別,則就會(huì)調(diào)整分配方案,如果可能的話,可以根據(jù)冗余設(shè)置來幫助其它未充分利用低智能存儲(chǔ)單元的智能存儲(chǔ)單元。在一個(gè)有利的例子中,該智能分布式文件系統(tǒng)可以已經(jīng)將數(shù)據(jù)塊從一個(gè)智能存儲(chǔ)單元移至另一個(gè)智能存儲(chǔ)單元,并因此更新相應(yīng)的元數(shù)據(jù)結(jié)構(gòu)??梢酝ㄟ^一個(gè)記錄系統(tǒng)來記錄該等待時(shí)間條件并將其報(bào)告給系統(tǒng)管理員。降低鏈接條件的原因可以是,例如壞的網(wǎng)卡,不正確的雙向握手,或者被相當(dāng)頻繁讀和寫裝置的數(shù)據(jù)。
可以使用各種策略來確定向哪里存儲(chǔ)數(shù)據(jù)??梢愿鶕?jù)系統(tǒng)的目的對(duì)這些策略進(jìn)行調(diào)整,例如順從由系統(tǒng)管理員設(shè)置的參數(shù)或偏好,被選中冗余級(jí)別的會(huì)議,和/或性能改進(jìn)。下面提供少量的幾個(gè)示例性策略,該轉(zhuǎn)發(fā)分配器可以采用這些策略來存儲(chǔ)數(shù)據(jù)??梢悦靼椎氖牵讼旅嬗懻摰牟呗砸酝?,也可以使用很多不同的策略或者與下面討論的策略一起使用。
該轉(zhuǎn)發(fā)分配器模塊可以包括一個(gè)用于在多個(gè)智能存儲(chǔ)單元中對(duì)數(shù)據(jù)進(jìn)行條帶化(striping)的分配方案。數(shù)據(jù)條帶化是在高級(jí)RAID存儲(chǔ)裝置中使用的普通技術(shù),但是也可以在包括多個(gè)任務(wù)的單一用戶工作站機(jī)器中被采用。數(shù)據(jù)條帶化簡單地意味著一個(gè)文件數(shù)據(jù)的不同部分是有效的和/或被存儲(chǔ)在不同的存儲(chǔ)裝置或磁盤中。數(shù)據(jù)條帶化的優(yōu)點(diǎn)就是當(dāng)讀請(qǐng)求生成位于多個(gè)磁盤上的塊時(shí),每個(gè)磁盤都會(huì)加入到聚集數(shù)據(jù)檢索吞吐量中來。對(duì)于典型的系統(tǒng),在軟件裝置層中完成了數(shù)據(jù)條帶化。即,該文件系統(tǒng)沒有任何關(guān)于數(shù)據(jù)條帶化的信息。只有文件系統(tǒng)下面的軟件層懂得該結(jié)構(gòu)。在一些專門的硬件模塊中,即使位于實(shí)際硬件層的軟件裝置層之下,條帶化也被完成。在智能分布式文件系統(tǒng)110中,該文件系統(tǒng)自己處理數(shù)據(jù)的條帶化。該結(jié)構(gòu)提供了具有條帶化結(jié)構(gòu)的更大靈活性。作為一個(gè)例子,典型的RAID技術(shù)受限于所有的磁盤必須大小相同并具有相同的性能特征。這些限制是確保數(shù)據(jù)均勻的分布在不同裝置中所必需的。對(duì)于關(guān)于RAID的更詳細(xì)的描述,請(qǐng)參看由Paul Massiglia所著的“The RAID Book(RAID手冊)”,第六版(1977),其在這里作為參考。
另外,該轉(zhuǎn)發(fā)分配器模塊可以響應(yīng)于用戶請(qǐng)求(例如添加了新的智能存儲(chǔ)單元導(dǎo)致的保護(hù)方案的改變等)和/或響應(yīng)于系統(tǒng)(例如檢測到出現(xiàn)故障的智能存儲(chǔ)單元)來重新對(duì)數(shù)據(jù)條帶化。但是,可以明白的是,可以由它單獨(dú)地或者與塊分配管理器模塊中的其它模塊一起,或者由它單獨(dú)地或與智能存儲(chǔ)單元的其它部分一塊來進(jìn)行重新條帶化。
利用該智能分布式文件系統(tǒng)110,可以在各種智能存儲(chǔ)單元114中使用不同的磁盤和磁盤大小,并參加文件條帶化。該轉(zhuǎn)發(fā)分配器模塊在根元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中查找磁盤裝置信息,并使用性能規(guī)格或預(yù)置規(guī)則來計(jì)算應(yīng)該分布文件數(shù)據(jù)的智能存儲(chǔ)單元的數(shù)量。該轉(zhuǎn)發(fā)分配器模塊可以接著將文件塊分配給一組智能存儲(chǔ)單元。
該轉(zhuǎn)發(fā)分配器模塊也可以包括一個(gè)用于奇偶校驗(yàn)或其它錯(cuò)誤或損失校正保護(hù)的分配方案。在大部分RAID系統(tǒng)中,當(dāng)使用文件條帶化時(shí),也使用奇偶校驗(yàn)保護(hù),使得除了一個(gè)磁盤以外的所有磁盤都被用于數(shù)據(jù)存儲(chǔ)。最后的磁盤僅僅被用于奇偶校驗(yàn)信息。通常通過對(duì)所有數(shù)據(jù)磁盤中的各個(gè)數(shù)據(jù)塊進(jìn)行逐位異或(“XOR”)來計(jì)算奇偶校驗(yàn)信息。當(dāng)磁盤發(fā)生故障時(shí),使用該奇偶校驗(yàn)信息來進(jìn)行數(shù)據(jù)恢復(fù)。通過對(duì)剩余的磁盤數(shù)據(jù)和奇偶校驗(yàn)信息進(jìn)行逐位XOR來重新計(jì)算丟失的數(shù)據(jù)。在典型的RAID系統(tǒng)中,數(shù)據(jù)是無法重新恢復(fù)的,直到替換磁盤被插入到陣列中以重建丟失數(shù)據(jù)為止。
利用該智能分布式文件系統(tǒng)110,由于奇偶校驗(yàn)保護(hù)發(fā)生在文件系統(tǒng)層而不是軟件裝置層,因此可以在剩余智能存儲(chǔ)單元其它部分的自由空間中重新計(jì)算和重新寫入丟失的數(shù)據(jù)。如果沒有足夠的自由空間來重新寫入數(shù)據(jù),則可以用重新計(jì)算的數(shù)據(jù)覆蓋奇偶校驗(yàn)數(shù)據(jù),并將冗余已降至原始級(jí)以下的事實(shí)記錄在日志中和/或匯報(bào)給系統(tǒng)管理員。
該轉(zhuǎn)發(fā)分配器模塊也可以包括用于鏡像數(shù)據(jù)的分配方案,也就是使得多個(gè)數(shù)據(jù)拷貝在不同的智能存儲(chǔ)單元上都可用。該轉(zhuǎn)發(fā)分配器模塊可以使用一個(gè)分配方案來負(fù)載平衡使用這些在存儲(chǔ)空間、網(wǎng)絡(luò)利用率、和/或CPU利用率上被最少使用的智能存儲(chǔ)單元的智能存儲(chǔ)單元中數(shù)據(jù)塊的位置。鏡像可以提供增加的性能和增加的缺省容差。如果為某些內(nèi)容段請(qǐng)求鏡像,則該轉(zhuǎn)發(fā)分配器模塊就為原始數(shù)據(jù)和鏡像數(shù)據(jù)分配空間。如果請(qǐng)求大于1的缺省容差級(jí)別,則該轉(zhuǎn)發(fā)分配器就可以通過缺省容差計(jì)數(shù)在邏輯上分開該智能存儲(chǔ)單元或智能存儲(chǔ)單元的子集,并生成被條帶化的數(shù)據(jù)的鏡像。例如,如果在智能分布式文件系統(tǒng)110中有10個(gè)智能存儲(chǔ)單元,并且缺省容差2被請(qǐng)求,則該轉(zhuǎn)發(fā)分配器就可以將該智能分布式文件系統(tǒng)分成兩部分,每個(gè)部分中包括5個(gè)智能存儲(chǔ)單元,對(duì)每個(gè)部分中4個(gè)智能存儲(chǔ)單元中的數(shù)據(jù)進(jìn)行條帶化,并將每個(gè)部分中的第5個(gè)智能存儲(chǔ)單元用作奇偶校驗(yàn)磁盤。該智能存儲(chǔ)單元的劃分可以被稱作陣列鏡像拆分??梢允褂藐嚵戌R像拆分的各種結(jié)構(gòu),包括存儲(chǔ)數(shù)據(jù)時(shí)數(shù)據(jù)發(fā)生重疊或變形的結(jié)構(gòu)。
c.故障恢復(fù)模塊該故障恢復(fù)模塊實(shí)時(shí)的對(duì)該智能分布式文件系統(tǒng)110進(jìn)行重新設(shè)置,以恢復(fù)由于裝置出現(xiàn)故障而不再可用的數(shù)據(jù)。該故障恢復(fù)模塊在保持性能的同時(shí),可以進(jìn)行重新設(shè)置,而不會(huì)中斷服務(wù),并且在短時(shí)間內(nèi)將數(shù)據(jù)返回至希望的冗余級(jí)別。
如上所述,遠(yuǎn)程塊管理器模塊337檢測故障,并將這種故障的通知傳送給故障恢復(fù)模塊。對(duì)于初始故障,該故障恢復(fù)模塊定位任何不符合由系統(tǒng)管理員請(qǐng)求或由智能分布式文件系統(tǒng)110設(shè)置的冗余參數(shù)的數(shù)據(jù)塊。
首先,重新生成能夠從奇偶校驗(yàn)信息重新生成的數(shù)據(jù),并向該轉(zhuǎn)發(fā)分配器模塊發(fā)送一個(gè)為新數(shù)據(jù)分配空間的請(qǐng)求。該轉(zhuǎn)發(fā)分配器監(jiān)視CPU和網(wǎng)絡(luò)利用率并開始進(jìn)取性的操作,直到CPU和網(wǎng)絡(luò)利用率達(dá)到一個(gè)預(yù)定的標(biāo)記。該預(yù)定的標(biāo)記可以由系統(tǒng)管理員設(shè)定或根據(jù)因素,例如計(jì)算機(jī)處理器預(yù)先設(shè)置。一旦達(dá)到了標(biāo)記,該故障恢復(fù)模塊就可以按照在標(biāo)記時(shí)實(shí)現(xiàn)的速度重新計(jì)算數(shù)據(jù),以降低對(duì)于智能存儲(chǔ)單元性能上的沖擊。
如果最近出現(xiàn)故障的裝置重新又上線,則該故障恢復(fù)模塊就與被恢復(fù)裝置的遠(yuǎn)程塊管理器模塊337進(jìn)行通信,以驗(yàn)證數(shù)據(jù)的完整性并固定任何不一致性。
該智能分布式文件系統(tǒng)110也可以支持包括熱備份裝置。該熱備份裝置是一個(gè)空閑存儲(chǔ)裝置,該裝置目前沒有進(jìn)行任何數(shù)據(jù)存儲(chǔ),但是將會(huì)在出現(xiàn)系統(tǒng)故障時(shí)被使用。在這種條件下,該故障恢復(fù)模塊就可以通過與熱備份裝置的遠(yuǎn)程塊管理器模塊337進(jìn)行通信,使用熱備份裝置重構(gòu)丟失的數(shù)據(jù)。
2.塊高速緩存模塊該塊高速緩存模塊333管理數(shù)據(jù)塊,名稱查找,以及元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的高速緩存。在一個(gè)實(shí)施方案中,該塊高速緩存模塊333與BSD虛擬文件系統(tǒng)的緩存一起工作或代替其工作。
該塊高速緩存模塊333可是使用最近最少使用算法來儲(chǔ)存數(shù)據(jù)塊和元數(shù)據(jù)數(shù)據(jù)塊,當(dāng)然應(yīng)該認(rèn)識(shí)到,也可以采用各種高速緩存算法,例如頻率高速緩存。該塊高速緩存模塊333可以確定采用哪種高速緩存算法,這取決于哪一個(gè)執(zhí)行的最好,或者在其它實(shí)施方案中,算法可以被設(shè)置為缺省值。
最近最少使用算法(“LRU”)是在大多數(shù)系統(tǒng)中使用的典型高速緩存方案。LRU所基于的原則就是一旦數(shù)據(jù)被訪問了,則它很可能會(huì)再次被訪問。這樣,按照它最后使用的順序存儲(chǔ)數(shù)據(jù),使得已經(jīng)最長時(shí)間沒有被訪問的數(shù)據(jù)被廢棄。
頻率高速緩存存儲(chǔ)被最頻繁訪問的數(shù)據(jù)。由于磁盤寫入是相對(duì)時(shí)間密集的操作,因此可以通過元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中的訪問頻率以及基于訪問頻率的高速緩存來獲得額外的性能。
另外,該塊高速緩存模塊333可以利用“根據(jù)需要”協(xié)議或“預(yù)先讀取”協(xié)議,其中比所需的更多的數(shù)據(jù)被請(qǐng)求。該塊高速緩存模塊333可以為一組數(shù)據(jù)發(fā)送一個(gè)請(qǐng)求,并在數(shù)據(jù)集合之間請(qǐng)求一些數(shù)據(jù)。例如,該塊高速緩存模塊333可以進(jìn)行預(yù)先讀取,例如一個(gè)數(shù)據(jù)包預(yù)先讀取,兩個(gè)數(shù)據(jù)包預(yù)先讀取,十個(gè)數(shù)據(jù)包預(yù)先讀取,二十個(gè)數(shù)據(jù)包預(yù)先讀取等。在其它實(shí)施方案中,該塊高速緩存模塊333可以根據(jù)請(qǐng)求的等待時(shí)間來使用預(yù)先讀取技術(shù)。例如,該塊高速緩存模塊333可以進(jìn)行V個(gè)數(shù)據(jù)包預(yù)先讀取,其中V利用讀取速度和鏈接等待時(shí)間來計(jì)算。該塊高速緩存模塊333也可以使用其它的基于CPU和網(wǎng)絡(luò)利用率的算法,以確定預(yù)先讀取數(shù)據(jù)的大小。而且,該塊高速緩存模塊333可以利用一組高速緩存協(xié)議,或者可以根據(jù)系統(tǒng)的性能等級(jí)來改變高速緩存協(xié)議。
該高速緩存340可以采用缺省大小來實(shí)現(xiàn),以提供一般的多用戶操作系統(tǒng)或被修改為將高速緩存塊大小增加至不同的量,而不會(huì)很嚴(yán)重的影響系統(tǒng)性能??梢酝ㄟ^各種性能測試來確定這種修改,其中該性能測試取決于因素,例如被存儲(chǔ)數(shù)據(jù)的類型,處理速度,智能分布式文件系統(tǒng)中智能存儲(chǔ)單元的數(shù)量,以及采用的保護(hù)方案。
3.本地塊管理器模塊該本地塊管理器模塊335管理本地存儲(chǔ)在存儲(chǔ)單元360上的數(shù)據(jù)塊分配,存儲(chǔ)以及檢索。該本地塊管理器335可以進(jìn)行零拷貝文件讀取,以將數(shù)據(jù)從磁盤移動(dòng)到存儲(chǔ)裝置360的另一個(gè)部分,例如網(wǎng)卡,從而改進(jìn)性能。該本地塊管理器335也可以根據(jù)被使用的存儲(chǔ)裝置360進(jìn)行修改,以便于提高性能。在一個(gè)實(shí)施方案中,該本地塊管理器模塊335駐留在本地文件存儲(chǔ)層并可以與FreeBSD快速文件系統(tǒng)一起工作或代替其工作。
在一個(gè)實(shí)施方案中,該本地塊管理器模塊335處理將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)裝置360上的請(qǐng)求。在一個(gè)實(shí)施方案中,該本地塊管理器模塊335確定該數(shù)據(jù)被存儲(chǔ)在存儲(chǔ)裝置360上的哪個(gè)地方。例如,該本地塊管理器模塊335可以試圖連續(xù)的存儲(chǔ)相關(guān)的數(shù)據(jù),使得當(dāng)它接收與已經(jīng)存儲(chǔ)的數(shù)據(jù)相關(guān)的數(shù)據(jù)時(shí),新數(shù)據(jù)被盡可能的與相關(guān)數(shù)據(jù)靠近存儲(chǔ)。但是,應(yīng)該明白的是,也可以采用各種存儲(chǔ)選擇并且每個(gè)智能存儲(chǔ)單元都可以使用一個(gè)或多個(gè)存儲(chǔ)選擇。在其它實(shí)施方案中,智能分布式文件系統(tǒng)中的所有智能存儲(chǔ)單元都可以使用相同的存儲(chǔ)選擇。
4.遠(yuǎn)程塊管理器模塊遠(yuǎn)程塊管理器模塊337可以管理設(shè)備之間的通信,如塊請(qǐng)求、塊響應(yīng)以及遠(yuǎn)程設(shè)備故障的檢測。在一個(gè)實(shí)施方案中,遠(yuǎn)程塊管理器模塊337駐留在本地文件系統(tǒng)層上。
在一個(gè)實(shí)施例中,智能存儲(chǔ)單元114可以通過遠(yuǎn)程塊管理器337與智能分布式文件系統(tǒng)110中的其它智能存儲(chǔ)裝置連接或與其通信。
該遠(yuǎn)程塊管理器模塊337可以使得智能存儲(chǔ)單元114通過例如TCP的連接來在彼此之間進(jìn)行談話。在一個(gè)實(shí)施方案中,每個(gè)智能存儲(chǔ)單元至少有兩個(gè)連接,一個(gè)用于文件數(shù)據(jù)傳輸,一個(gè)用于控制消息傳輸。這種雙通道TCP通信結(jié)構(gòu)的優(yōu)點(diǎn)就是只要數(shù)據(jù)塊按照多頁大小進(jìn)行發(fā)送,則數(shù)據(jù)就可以通過DMA傳輸從網(wǎng)絡(luò)接口卡直接發(fā)送至系統(tǒng)存儲(chǔ)器,并通過DMA傳輸從系統(tǒng)存儲(chǔ)器發(fā)送至系統(tǒng)的另一部分(可能還是網(wǎng)絡(luò)接口卡),而不要求將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器的一個(gè)部分復(fù)制到另一部分。這是由于不需要CPU來分析數(shù)據(jù)包,因?yàn)樽詮脑撔畔⒈粋鬏數(shù)娇刂仆ǖ郎?,它們就不再含有非?shù)據(jù)報(bào)頭或標(biāo)識(shí)信息。在高性能服務(wù)器和操作系統(tǒng)中,這些從系統(tǒng)存儲(chǔ)器的一部分到另一部分的存儲(chǔ)器拷貝成為對(duì)于系統(tǒng)系統(tǒng)性能的嚴(yán)重限制。
在一個(gè)實(shí)施方案中,該遠(yuǎn)程塊管理器模塊337使用利用消息的通信進(jìn)行通信,例如,數(shù)據(jù)塊訪問消息(如,READ,READ_RESPONSE,WRITE,以及WRITE_RESPONSE),元數(shù)據(jù)訪問消息(如,GET_INODE,GET_INODE_RESPONSE,SET_ADDRESS,GET_ADDRESS,以及INVALIDATE_INODE),目錄消息(例如ADD_DIR,以及REMOVE_DIR),狀態(tài)消息,以及各種其它類型的消息。
雖然在上面討論了雙通道協(xié)議,但是可以明白的是,也可以使用能夠在智能存儲(chǔ)單元114之間進(jìn)行通信的其它通信協(xié)議。
5.塊裝置模塊該塊裝置模塊339接待(host)用于文件系統(tǒng)所使用的磁盤硬件的特殊塊的裝置驅(qū)動(dòng)器。例如,如果物理存儲(chǔ)裝置是一個(gè)ATA磁盤,則該塊裝置模塊339就接待該ATA磁盤驅(qū)動(dòng)器。
C.高速緩存該高速緩存存儲(chǔ)器或高速緩存340可以使用本領(lǐng)域中各種公知的產(chǎn)品來實(shí)現(xiàn),例如1G的RAM高速緩存。圖3中所示的高速緩存340可以存儲(chǔ)最近被訪問過的或?qū)⒁谝欢ǖ臅r(shí)間內(nèi)被訪問的數(shù)據(jù)塊。該高速緩存340可以使用高速存儲(chǔ)結(jié)構(gòu),例如靜態(tài)RAM裝置,動(dòng)態(tài)RAM裝置,內(nèi)部高速緩存,磁盤高速緩存,以及其它各種類型的裝置來實(shí)現(xiàn)。典型的,從高速緩存340中訪問數(shù)據(jù)的時(shí)間快于訪問非易失性存儲(chǔ)裝置的時(shí)間。該高速緩存340存儲(chǔ)數(shù)據(jù),使得如果智能存儲(chǔ)單元114需要從存儲(chǔ)裝置360訪問數(shù)據(jù),則可以首先檢查該高速緩存340,看看是否已經(jīng)檢索到了數(shù)據(jù)。這樣,使用高速緩存340就可以改進(jìn)智能存儲(chǔ)單元在檢索數(shù)據(jù)塊中的性能。
D.網(wǎng)絡(luò)堆棧在一個(gè)實(shí)施方案中,該智能存儲(chǔ)單元310也包括一個(gè)通過使用例如TCP/IP的協(xié)議來處理引入和導(dǎo)出消息業(yè)務(wù)的網(wǎng)絡(luò)堆棧350。但是,可以明白的是,也可以使用其它的協(xié)議或數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)該堆棧350。
E.存儲(chǔ)裝置該存儲(chǔ)裝置360是可以被用來存儲(chǔ)數(shù)據(jù)塊的一個(gè)或多個(gè)非易失性存儲(chǔ)器裝置集合。該存儲(chǔ)裝置360可以使用本領(lǐng)域中各種公知的產(chǎn)品來實(shí)現(xiàn),例如4個(gè)1.25GB的ATA100裝置,SCSI裝置等。另外,該存儲(chǔ)裝置360的大小可以與智能分布式文件系統(tǒng)110中的所有智能存儲(chǔ)單元相同或與不同的智能存儲(chǔ)單元具有不同的大小。
F.系統(tǒng)信息在一個(gè)實(shí)施方案中,該智能存儲(chǔ)單元114在一個(gè)計(jì)算機(jī)上運(yùn)行,該計(jì)算機(jī)使得該智能存儲(chǔ)單元114能夠與其它的智能存儲(chǔ)單元114進(jìn)行通信。該計(jì)算機(jī)可以是使用一個(gè)或多個(gè)微處理器,例如Pentium處理器,Pentium II處理器,Pentium Pro.處理器,Pentium IV處理器,xx86處理器,8051處理器,MIPS處理器,Power PC處理器,SPARC處理器,Alpha處理器等的通用計(jì)算機(jī)。
在一個(gè)實(shí)施方案中,該處理器單元運(yùn)行打開源FreeBSD操作系統(tǒng)并進(jìn)行標(biāo)準(zhǔn)操作系統(tǒng)功能,例如打開,讀出,寫入和關(guān)閉文件??梢悦靼椎氖?,也可以使用其它的操作系統(tǒng),例如Microsoft Windows 3.X,Microsoft Windows 98,Microsoft Windows 2000,MicrosoftWindows NT,Microsoft Windows CE,Microsoft Windows ME,Palm Pilot OS,Apple MacOS,Disk Operating System(DOS),UNIX,IRIX,Solaris,SunOS,F(xiàn)reeBSD,Linux,或IBMOS/2操作系統(tǒng)。
在一個(gè)實(shí)施方案中,計(jì)算機(jī)配有常用的網(wǎng)絡(luò)連接性,例如以太網(wǎng)(IEEE 802.3),令牌環(huán)(IEEE 802.3),光纖分布式數(shù)據(jù)接口(FDDI),或異步傳輸模式(ATM)。而且,該計(jì)算機(jī)可以被設(shè)置為支持各種網(wǎng)絡(luò)協(xié)議,例如UDP/TCP上的NFS v2/v3,Microsoft CIFS,HTTP 1.0,HTTP1.1,DAFS,F(xiàn)TP等等。
在一個(gè)實(shí)施方案中,該智能存儲(chǔ)單元114包括一個(gè)或兩個(gè)CPU 2U支架可安裝結(jié)構(gòu),多ATA100接口,以及支持jumbo(大型)9K以太網(wǎng)幀的1000/100網(wǎng)絡(luò)接口卡。但是,可以明白的是,也可以采用各種結(jié)構(gòu)。
如上所指出的,雖然討論了關(guān)于智能存儲(chǔ)單元的不同模塊,但是可以明白的是,可以由不同的模塊來執(zhí)行任務(wù)。另外,一個(gè)或多個(gè)模塊可以被組合在一起和/或可以增加一個(gè)或多個(gè)新模塊,使得不需要特殊的模塊來進(jìn)行特定的任務(wù)。
VI.智能分布式文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)圖4示出了可以與智能分布式文件系統(tǒng)一塊使用的示例目錄結(jié)構(gòu)。在該例子中,根目錄的名稱為“DFSR”并包括子目錄重要文件目錄,臨時(shí)目錄,以及用戶目錄。該重要文件子目錄包括子目錄口令目錄和信用卡目錄。文件USER.TXT和ADMIN.TXT被存儲(chǔ)在口令子目錄中。這樣,USER.TXT文件的地址就是/DFSR/重要文件/口令/USER.TXT由智能分布式文件系統(tǒng)110存儲(chǔ)和保存關(guān)于目錄和文件的信息或元數(shù)據(jù)。
A.元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)圖5說明了用于存儲(chǔ)元數(shù)據(jù)的示例數(shù)據(jù)結(jié)構(gòu)510。該典型的數(shù)據(jù)結(jié)構(gòu)510存儲(chǔ)了下面信息
可以明白的是,該示例數(shù)據(jù)結(jié)構(gòu)510說明了用于存儲(chǔ)元數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)510的一個(gè)實(shí)施方案并且根據(jù)本發(fā)明它可以使用各種方式實(shí)現(xiàn)。例如,數(shù)據(jù)結(jié)構(gòu)510包括不同的域,該域可以是不同類型的,該域可以分組和單獨(dú)存儲(chǔ)等。
圖6A、6B、6C和6D提供了對(duì)于數(shù)據(jù)位置表類型,即分別為類型0,類型1,類型2和類型3的示例數(shù)據(jù)位置表結(jié)構(gòu)。在圖6A中,類型0數(shù)據(jù)位置表表包括24個(gè)直接塊入口(entry),表示該數(shù)據(jù)位置表中的入口包括裝置/塊編號(hào)對(duì),該編號(hào)對(duì)表示存儲(chǔ)數(shù)據(jù)的位置。在圖6B中,類型1數(shù)據(jù)位置表包括15個(gè)直接塊入口,3個(gè)一次間接入口,3個(gè)兩次間接入口,以及3個(gè)三次間接入口。用于一次間接入口的入口表示存儲(chǔ)直接入口的額外數(shù)據(jù)位置表的位置。用于兩次間接入口的入口表示存儲(chǔ)數(shù)據(jù)位置表的位置,其中該數(shù)據(jù)位置表包括一次間接入口。用于三次間接入口的入口表示存儲(chǔ)數(shù)據(jù)位置表的位置,其中該數(shù)據(jù)位置表包括兩次間接入口。
由于任何塊都可以被鏡像為任何數(shù)量的裝置,因此該元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)510靈活到足以用多個(gè)位置表示塊,并仍能提供來自固定空間內(nèi)直接索引的快速訪問。這樣,有利于將一種類型與元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)相關(guān),以表示將要被使用的數(shù)據(jù)位置表類型。在一個(gè)元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)510的實(shí)施方案中,可以有用于24個(gè)數(shù)據(jù)入口的空間,例如24個(gè)指針。
當(dāng)數(shù)據(jù)文件小的時(shí)候,可以使用類型0;該數(shù)據(jù)位置地址被存儲(chǔ)作為直接入口。這樣,類型0元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)包括24個(gè)直接入口。類型1可以被用于支持大一些的文件并被鏡像兩次(三個(gè)文件拷貝)。類型1使用15個(gè)直接入口,3個(gè)一次間接入口,3個(gè)兩次間接入口,以及3個(gè)三次間接入口。類型2可以被用于支持7次鏡像(八個(gè)文件拷貝),并且包括8個(gè)一次間接入口,8個(gè)兩次間接入口,以及8個(gè)三次間接入口。類型3數(shù)據(jù)位置表使得更多的所有磁盤地址鏡像被存儲(chǔ)作為3次間接入口。結(jié)果,可以存儲(chǔ)24個(gè)完整的文件拷貝。
應(yīng)該明白的是,也可以使用各種數(shù)據(jù)位置表,并且圖6A、6B、6C和6D只是說明了示例性的實(shí)施方案。在其它實(shí)施方案中,例如,數(shù)據(jù)位置表可以包括直接和間接入口的不同混合物。而且,在其它實(shí)施方案中,數(shù)據(jù)位置表可以包括一個(gè)為表中的每個(gè)入口指定入口類型的入口域。該類型可以包括,例如,上面所述的(例如,直接,一次間接,兩次間接,三次間接),以及其它的(例如,四次間接等)。另外,該數(shù)據(jù)位置表可以包括達(dá)到X層的數(shù)據(jù)位置表的更深的嵌套,其中X為整數(shù)。
該元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)也可以包括關(guān)于哪個(gè)智能存儲(chǔ)單元包括文件的內(nèi)容數(shù)據(jù)和保護(hù)數(shù)據(jù)的信息。另外,該元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)可以為每個(gè)智能存儲(chǔ)單元存儲(chǔ)信息,該單元跟蹤用于文件內(nèi)容數(shù)據(jù)的最后塊地址和用于文件保護(hù)數(shù)據(jù)的最后塊地址。例如,元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)可以記錄MYFILE.TXT將它的數(shù)據(jù)存儲(chǔ)在裝置0,裝置2,裝置3和裝置5中。該元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)也可以記錄如下
1.目錄元數(shù)據(jù)圖7A說明用于口令目錄的一組示例元數(shù)據(jù)。在圖7A中,數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)有關(guān)于口令目錄的信息。該目錄被鏡像兩次(一個(gè)三個(gè)拷貝)。由于目錄結(jié)構(gòu)相對(duì)較小(例如,在一個(gè)塊中),因此只有三個(gè)直接指針,每個(gè)拷貝一個(gè)。該示例元數(shù)據(jù)集合包括一個(gè)數(shù)據(jù)位置表710,其中包括直接入口720,其用裝置/塊編號(hào)對(duì)來表示數(shù)據(jù)塊的位置,以及一組未被使用的塊入口730。
2.文件元數(shù)據(jù)圖7B說明了用于文件USER.TXT的一組示例元數(shù)據(jù)。在圖7B中,數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)關(guān)于USER.TXT文件的信息。對(duì)于USER.TXT,每個(gè)數(shù)據(jù)塊都有一個(gè)拷貝,并且采用3+1奇偶校驗(yàn)方案保護(hù)該數(shù)據(jù),USER.TXT的內(nèi)容數(shù)據(jù)大小為45K,塊大小為8K,因此,就有6個(gè)數(shù)據(jù)塊,而第6個(gè)數(shù)據(jù)塊并沒有被充分使用。該數(shù)據(jù)位置表710示出了6個(gè)數(shù)據(jù)塊中的每一個(gè)存儲(chǔ)的位置720,其中該數(shù)據(jù)塊參照裝置編號(hào)和塊編號(hào),并且第一入口對(duì)應(yīng)于第一數(shù)據(jù)塊。而且,用于內(nèi)容數(shù)據(jù)的奇偶校驗(yàn)信息的位置被存在奇偶校驗(yàn)映射表740中,該映射表的位置被數(shù)據(jù)結(jié)構(gòu)的最后位置指定作為“奇偶校驗(yàn)映射表指針”。采用3+1奇偶校驗(yàn)方案存儲(chǔ)該USER.TXT文件,這樣,對(duì)于每三個(gè)數(shù)據(jù)塊,都會(huì)存儲(chǔ)一個(gè)奇偶校驗(yàn)數(shù)據(jù)塊。由于在該3+1奇偶校驗(yàn)方案中有6個(gè)塊,因此有2個(gè)奇偶校驗(yàn)數(shù)據(jù)塊(6被3除并去與其最接近的整數(shù))。該奇偶校驗(yàn)映射表示出了奇偶校驗(yàn)數(shù)據(jù)塊被存儲(chǔ)的位置,其中該奇偶校驗(yàn)數(shù)據(jù)塊參照裝置編號(hào)和塊編號(hào),并且第一入口對(duì)應(yīng)于第一奇偶校驗(yàn)數(shù)據(jù)塊。
B.數(shù)據(jù)位置表數(shù)據(jù)結(jié)構(gòu)該智能分布式文件系統(tǒng)100可以為很多種數(shù)據(jù)文件提供存儲(chǔ),以及關(guān)于該數(shù)據(jù)文件被如何存儲(chǔ)的靈活性。在文件系統(tǒng)及進(jìn)行數(shù)據(jù)文件的鏡像和冗余可以使得該智能分布式文件系統(tǒng)110為不同文件提供各種冗余參數(shù)。例如,一些目錄可以被鏡像,奇偶校驗(yàn)保護(hù),或者一點(diǎn)也不被保護(hù)。
圖8A,8B,和8C說明了數(shù)據(jù)位置表的例子,其中該表被用于存儲(chǔ)各種保護(hù)類型和級(jí)別的數(shù)據(jù)文件的數(shù)據(jù)位置信息。圖8A,8B和8C有意說明各種數(shù)據(jù)位置表,并且應(yīng)該明白,可以使用各種不同格式和/或結(jié)構(gòu)。
圖8A說明了示例數(shù)據(jù)位置表810,該表表示相應(yīng)文件的每個(gè)數(shù)據(jù)塊被存儲(chǔ)在哪里。需要注意的是,對(duì)于文件,例如圖7B中的文件相應(yīng)的元數(shù)據(jù)并沒有被示出,因?yàn)榭梢哉J(rèn)可的是,該位置表810可以對(duì)應(yīng)于一組元數(shù)據(jù)。該典型的數(shù)據(jù)位置表810同時(shí)包括直接入口和間接入口。
該直接入口包括裝置ID/塊對(duì)。該裝置ID表示其上存儲(chǔ)有數(shù)據(jù)的智能存儲(chǔ)單元,并且該偏移或塊地址表示存儲(chǔ)裝置上存儲(chǔ)數(shù)據(jù)的位置。數(shù)據(jù)位置表中的一個(gè)示例入口可以是入口裝置塊1 7 127表示數(shù)據(jù)塊1被存儲(chǔ)在編號(hào)為7的裝置的塊127上。
該示例數(shù)據(jù)位置表810也可以包括指向額外數(shù)據(jù)位置表的間接入口,使得該數(shù)據(jù)位置表能夠跟蹤更大數(shù)據(jù)集合的數(shù)據(jù)位置。雖然間接入口的層數(shù)在理論上不受限制,但是最好限制層數(shù),以改進(jìn)吞吐率。例如,該數(shù)據(jù)位置表被限制為只允許最多兩次間接入口或最多三次間接入口。該典型數(shù)據(jù)位置表810說明了兩級(jí)間接入口。
另外,可以保留數(shù)據(jù)位置表的最后入口來存儲(chǔ)奇偶校驗(yàn)映射表(如果有的話)的地址。在其它實(shí)施方案中,奇偶校驗(yàn)映射表的地址可以被存儲(chǔ)在其它位置,例如元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中的入口。如果一組數(shù)據(jù)中不包括奇偶校驗(yàn)保護(hù),則該地址值就可以被設(shè)置為一個(gè)標(biāo)準(zhǔn)數(shù)值,例如NULL。
圖8B說明了用于已經(jīng)被鏡像在兩個(gè)額外位置上的數(shù)據(jù)的數(shù)據(jù)位置表。該數(shù)據(jù)位置表包括每個(gè)數(shù)據(jù)拷貝的裝置ID和塊或偏移地址。在該典型數(shù)據(jù)位置表中,在逐塊的基礎(chǔ)上選擇了鏡像位置??梢哉J(rèn)可的是,也可以采用其它的方案,例如選擇一個(gè)或多個(gè)智能存儲(chǔ)單元來鏡像特定的智能存儲(chǔ)單元。雖然圖8B中的數(shù)據(jù)位置表僅僅包括直接入口,但是可以認(rèn)可的是也可以使用間接入口。
在一個(gè)實(shí)施方案中,文件的鏡像信息可以被存儲(chǔ)在文件的相應(yīng)元數(shù)據(jù)結(jié)構(gòu)中。該信息可以包括,例如數(shù)據(jù)拷貝的數(shù)量,以及每個(gè)拷貝的數(shù)據(jù)位置表的位置??梢哉J(rèn)可的是,該數(shù)據(jù)位置表可以作為一個(gè)單一數(shù)據(jù)結(jié)構(gòu)而被存儲(chǔ),和/或數(shù)據(jù)位置表的單獨(dú)數(shù)據(jù)拷貝可以被存儲(chǔ)在不同的位置。
雖然可以認(rèn)可的是數(shù)據(jù)位置表可以包括奇偶校驗(yàn)信息,但是具有鏡像數(shù)據(jù)的圖8B的示例數(shù)據(jù)位置表并不包括奇偶校驗(yàn)保護(hù)。
圖8C說明了一個(gè)具有奇偶校驗(yàn)映射表的數(shù)據(jù)位置表,在該典型數(shù)據(jù)位置表中,使用3+1奇偶校驗(yàn)方案來保護(hù)數(shù)據(jù)??梢圆捎帽绢I(lǐng)域中公知的技術(shù)來生成數(shù)據(jù),例如,通過對(duì)數(shù)據(jù)塊逐位,逐字節(jié),逐塊的進(jìn)行XOR來生成奇偶校驗(yàn)塊。
該典型的數(shù)據(jù)位置表提供關(guān)于數(shù)據(jù)文件的信息,該信息由21個(gè)數(shù)據(jù)塊(塊0至塊20)構(gòu)成。由于該奇偶校驗(yàn)方案為3+1,則為每三個(gè)數(shù)據(jù)塊集合生成一個(gè)奇偶校驗(yàn)塊。表2說明了在圖8C中所示的一些數(shù)據(jù)塊與一些奇偶校驗(yàn)塊之間的對(duì)應(yīng)關(guān)系。
表2該示例數(shù)據(jù)位置表包括一個(gè)奇偶校驗(yàn)映射表或奇偶校驗(yàn)位置表。在該典型奇偶校驗(yàn)映射表中,有一個(gè)在用于生成數(shù)據(jù)的塊入口和奇偶校驗(yàn)映射表之間的一對(duì)一的映射。在其它實(shí)施方案中,該奇偶校驗(yàn)映射表也包括各種大小的入口,當(dāng)由于系統(tǒng)出現(xiàn)故障,沒有任何直接位置時(shí),這些入口指定了哪個(gè)塊可以被裝置和塊編號(hào)一塊進(jìn)行奇偶校驗(yàn)XOR,以重新生成數(shù)據(jù)。在其它實(shí)施方案中,該奇偶校驗(yàn)生成方案被預(yù)先設(shè)置,使得可以由智能分布式文件系統(tǒng)110確定奇偶校驗(yàn)數(shù)據(jù)的位置和對(duì)應(yīng)關(guān)系,而不需要指定哪些塊被一塊XOR,來重新生成數(shù)據(jù)。
在一個(gè)實(shí)施方案中,由元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)指向奇偶校驗(yàn)映射表,例如在元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中的最后入口中,而不是包括在元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中。由于只在智能存儲(chǔ)裝置出現(xiàn)故障的不經(jīng)常情況下請(qǐng)求使用映射表,因此該映射表可以被指向,而不是被直接包括在元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中。該奇偶校驗(yàn)映射表也可以使用可變大小的入口來表示奇偶校驗(yàn)重組塊,使得智能存儲(chǔ)單元114能夠在重建數(shù)據(jù)的同時(shí)遍歷該奇偶校驗(yàn)映射表一次,并在遍歷時(shí)分析該奇偶校驗(yàn)映射表。在一些情況下,與奇偶校驗(yàn)計(jì)算時(shí)間相比,用于檢索和分析入口的計(jì)算和I/O時(shí)間是可以被忽略掉的。
可以明白,雖然鏡像信息或間接信息中的一個(gè)或兩個(gè)都可以與奇偶校驗(yàn)位置信息一塊使用,但是圖8C中具有奇偶校驗(yàn)位置信息的示例數(shù)據(jù)位置表810并不包括鏡像信息或間接信息。而且,應(yīng)該明白,也可以使用其它的數(shù)據(jù)結(jié)構(gòu),并且數(shù)據(jù)位置表數(shù)據(jù)結(jié)構(gòu)有意僅僅說明本發(fā)明的一個(gè)實(shí)施方案。
C.示例數(shù)據(jù)圖9說明了一個(gè)示例數(shù)據(jù)位置表910和奇偶校驗(yàn)映射表920,以及其上存儲(chǔ)有數(shù)據(jù)的相應(yīng)裝置。圖9的例子示出了數(shù)據(jù)如何被存儲(chǔ)在裝置上的不同位置,數(shù)據(jù)的“條”被存儲(chǔ)在每個(gè)裝置上的不同偏移地址,并且奇偶校驗(yàn)數(shù)據(jù)可以被存儲(chǔ)在各種裝置上,即使是來自相同文件的數(shù)據(jù)。在其它實(shí)施方案中,該數(shù)據(jù)可以被存儲(chǔ)在每個(gè)裝置上的相同偏移地址。
例如,用于第一數(shù)據(jù)條的奇偶校驗(yàn)數(shù)據(jù)被存儲(chǔ)在裝置3的位置400上,并涉及存儲(chǔ)在裝置0的位置100上的數(shù)據(jù)塊0,存儲(chǔ)在裝置1的位置200上的數(shù)據(jù)塊1,以及存儲(chǔ)在裝置2的位置300上的數(shù)據(jù)塊2。用于第二條數(shù)據(jù)條的奇偶校驗(yàn)數(shù)據(jù)被存儲(chǔ)在裝置2的位置600上,并涉及存儲(chǔ)在裝置0的位置300上的數(shù)據(jù)塊3,存儲(chǔ)在裝置4的位置800上的數(shù)據(jù)塊4,以及存儲(chǔ)在裝置1的位置700上的數(shù)據(jù)塊5。
在一些實(shí)施方案中,單獨(dú)的智能存儲(chǔ)單元確定在哪里和/或如何將該位置映射到磁盤上的實(shí)際位置。例如,如果裝置0具有4個(gè)物理硬盤,并且每個(gè)硬盤都具有100塊的存儲(chǔ)容量,則裝置0允許從位置0到位置399的存儲(chǔ)。一組可以被用于確定如何將位置映射到磁盤上的塊的示例準(zhǔn)則如下磁盤號(hào)=(位置/每個(gè)磁盤上的塊數(shù))的基底(floor)磁盤上的塊=每個(gè)磁盤上的塊的位置MOD數(shù)需要注意的是,MOD是一個(gè)獲取除法余數(shù)的取余操作符??梢岳斫獾氖?,上面的準(zhǔn)則僅僅表示被用于將位置映射到磁盤和磁盤塊上的示例性準(zhǔn)則,并且也可以使用其它的準(zhǔn)則或方案。例如,一個(gè)實(shí)施方案可以使用表示每個(gè)磁盤的塊范圍的鏈接列表并執(zhí)行一個(gè)列表遍歷。鏈接列表的優(yōu)點(diǎn)就是允許多個(gè)大小的磁盤。
由于存儲(chǔ)數(shù)據(jù)和奇偶校驗(yàn)信息的靈活性,當(dāng)增加新的智能存儲(chǔ)單元時(shí),新數(shù)據(jù)可以被存儲(chǔ)在新的智能存儲(chǔ)單元上和/或現(xiàn)存的數(shù)據(jù)可以被移到新的智能存儲(chǔ)單元上(例如在刪除現(xiàn)存單元上的數(shù)據(jù)之前進(jìn)行拷貝)而不會(huì)破壞該系統(tǒng)。另外,可以響應(yīng)于高請(qǐng)求量,磁盤故障,冗余或奇偶校驗(yàn)參數(shù)中的變化等來實(shí)時(shí)的移動(dòng)或拷貝數(shù)據(jù)塊或整個(gè)文件。
VII.智能分布式文件系統(tǒng)處理A.檢索數(shù)據(jù)圖10說明了檢索數(shù)據(jù)流程圖的一個(gè)實(shí)施方案(“檢索數(shù)據(jù)處理”)??梢詫?duì)各種類型的數(shù)據(jù)進(jìn)行檢索,例如,目錄元數(shù)據(jù),文件元數(shù)據(jù),內(nèi)容數(shù)據(jù)等。
從開始狀態(tài)開始,接收數(shù)據(jù)處理接收存儲(chǔ)數(shù)據(jù)的位置(狀態(tài)1010)。在一個(gè)實(shí)施方案中,使用智能存儲(chǔ)單元ID以及偏移或塊地址來指定位置。在其它實(shí)施方案中,可以使用存儲(chǔ)裝置的ID,而在其它實(shí)施方案中,可以使用一個(gè)表將ID映射到其它的ID等上接下來,該檢索數(shù)據(jù)處理確定該數(shù)據(jù)是否是本地存儲(chǔ)的(狀態(tài)1020)。如果該數(shù)據(jù)是本地存儲(chǔ)的,則該檢索數(shù)據(jù)處理就會(huì)從本地存儲(chǔ)器中檢索數(shù)據(jù)(狀態(tài)1030)。在一個(gè)實(shí)施方案中,該檢索數(shù)據(jù)處理可以首先檢查高速緩存并且如果數(shù)據(jù)沒在那里,接著檢查存儲(chǔ)裝置。在其它實(shí)施方案中,該檢索數(shù)據(jù)處理可以僅僅檢查存儲(chǔ)裝置。
如果數(shù)據(jù)不是本地存儲(chǔ)的,則該檢索數(shù)據(jù)處理發(fā)送數(shù)據(jù)請(qǐng)求給存有數(shù)據(jù)的智能存儲(chǔ)單元(狀態(tài)1040)。在一個(gè)實(shí)施方案中,通過圖1所示的交換機(jī)部件125來發(fā)送請(qǐng)求。該檢索數(shù)據(jù)處理接著接收被請(qǐng)求的數(shù)據(jù)(狀態(tài)1050)。
該檢索數(shù)據(jù)處理收集已經(jīng)被請(qǐng)求的數(shù)據(jù)并返回該數(shù)據(jù)(狀態(tài)1060)。在一些實(shí)施方案中,在整個(gè)數(shù)據(jù)集合都被收集完之后才返回?cái)?shù)據(jù)。在其它實(shí)施方案中,當(dāng)從本地存儲(chǔ)器或從其它智能存儲(chǔ)單元檢索到數(shù)據(jù)時(shí),一部分或數(shù)據(jù)集合被返回。根據(jù)文件位置表順序的返回一部分,或者當(dāng)它們被檢索或接收時(shí)把它們返回。在數(shù)據(jù)被返回之后,該檢索數(shù)據(jù)處理進(jìn)行至結(jié)束狀態(tài)。
可以明白的是,圖10說明了檢索數(shù)據(jù)處理的一個(gè)實(shí)施方案并且也可以使用其它的實(shí)施方案。在另一個(gè)例子中,可以同時(shí)使用不止一個(gè)檢索數(shù)據(jù)處理,使得多個(gè)檢索數(shù)據(jù)處理通過采用技術(shù)或技術(shù),例如并行處理,流水線技術(shù),或異步I/O的組合來并行地檢索數(shù)據(jù)。
B.處理名稱查找圖11說明了名稱查找處理的一個(gè)實(shí)施方案(“名稱查找處理”)。從開始狀態(tài)開始,該名稱查找處理接收一個(gè)文件名(狀態(tài)1110),檢索根目錄的元數(shù)據(jù),并將根元數(shù)據(jù)的位置設(shè)置為CURRENT(當(dāng)前)(狀態(tài)1120)。在一個(gè)實(shí)施方案中,根目錄的數(shù)據(jù)可以被存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中,例如圖5的數(shù)據(jù)結(jié)構(gòu),雖然可以認(rèn)可的是,可以使用各種數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)根目錄的元數(shù)據(jù)。而且,在一些實(shí)施方案中,根目錄的元數(shù)據(jù)可以被存儲(chǔ)在各個(gè)智能存儲(chǔ)單元114中,因此每個(gè)智能存儲(chǔ)單元114都具有相同或相似的根目錄元數(shù)據(jù)的拷貝。在其它實(shí)施方案中,根目錄的元數(shù)據(jù)可以被存儲(chǔ)在智能分布式文件系統(tǒng)110的其它位置上或者通過一個(gè)文件請(qǐng)求被發(fā)送給智能存儲(chǔ)單元114??梢悦靼椎氖牵瑸榱舜_保多個(gè)數(shù)據(jù)拷貝的完整性可以采用公知的技術(shù),例如通過互斥法和/或信號(hào)量進(jìn)行鎖存等。
該名稱查找處理接著可以接著檢索作為文件名一部分的下一個(gè)令牌(狀態(tài)1130)。該名稱查找處理接著從存儲(chǔ)CURRENT數(shù)據(jù)的智能存儲(chǔ)單元114中請(qǐng)求令牌元數(shù)據(jù)位置的地址(狀態(tài)1140)。該請(qǐng)求可以是本地或遠(yuǎn)程的。該名稱查找處理可以接著將返回的地址設(shè)置為CURRENT(狀態(tài)1150)并確定是否存在另一個(gè)令牌(狀態(tài)1160),其中一個(gè)令牌表示目錄層次中的一層。如果存在另一個(gè)令牌,則該名稱查找處理返回至塊1130。如果沒有更多的令牌,則該名稱查找處理返回CURRENT值或參考CURRENT(狀態(tài)1170)并進(jìn)行至結(jié)束狀態(tài)。
可以理解的是,可以使用名稱查找處理的其它實(shí)現(xiàn)方式。例如,該名稱查找處理可以檢索文件的元數(shù)據(jù)數(shù)據(jù)。另外,一旦被請(qǐng)求數(shù)據(jù)的位置被找到了,則該名稱查找處理可以確定該數(shù)據(jù)是本地存儲(chǔ)還是存儲(chǔ)在其它智能存儲(chǔ)單元中。如果該數(shù)據(jù)被本地存儲(chǔ),則該名稱查找處理可以發(fā)送一個(gè)READ請(qǐng)求給該智能存儲(chǔ)單元114的本地塊管理器模塊335;如果該數(shù)據(jù)被存儲(chǔ)在另一個(gè)智能存儲(chǔ)單元上,則該名稱查找處理可以發(fā)送一個(gè)READ請(qǐng)求給遠(yuǎn)程智能存儲(chǔ)單元114的遠(yuǎn)程塊管理器模塊337。
C.處理文件請(qǐng)求圖12說明了處理文件請(qǐng)求流程的一個(gè)實(shí)施方案(“文件請(qǐng)求處理”)。從開始狀態(tài)開始,該文件請(qǐng)求處理接收檢索文件的請(qǐng)求(狀態(tài)1210)。在一個(gè)實(shí)施方案中,使用包括位置和文件名的文件全路徑名指定文件。在其它實(shí)施方案中,該路徑可以是相對(duì)路徑和/或其它數(shù)據(jù)結(jié)構(gòu),例如表,可以被用于存儲(chǔ)關(guān)于文件地址的信息。接下來,該文件請(qǐng)求處理進(jìn)行名稱查找處理,如圖11中所示(狀態(tài)1220),以確定該文件的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的位置。
該文件請(qǐng)求處理接著使用如圖10所示和上面所述的檢索文件處理來檢索文件的元數(shù)據(jù)(狀態(tài)1230),雖然也可以使用其它的檢索文件處理。在一個(gè)實(shí)施方案中,文件的元數(shù)據(jù)可以包括對(duì)位置提供訪問的數(shù)據(jù)位置表,其中文件中的每個(gè)數(shù)據(jù)塊都被存儲(chǔ)在整個(gè)智能分布式文件系統(tǒng)中。
接著,對(duì)于文件中的每個(gè)數(shù)據(jù)塊(狀態(tài)1240,1270),該文件請(qǐng)求處理通過在文件元數(shù)據(jù)中進(jìn)行查找而獲得數(shù)據(jù)塊的位置(狀態(tài)1250)并使用如圖10中所示和上述的檢索文件處理來檢索數(shù)據(jù)塊(狀態(tài)1260),雖然也可以使用其它的檢索文件處理。
該文件請(qǐng)求處理接著返回文件的數(shù)據(jù)(狀態(tài)1280)并進(jìn)行至結(jié)束狀態(tài)。在一些實(shí)施方案中,在整個(gè)數(shù)據(jù)集合都被收集完之后才返回?cái)?shù)據(jù)。在其它實(shí)施方案中,當(dāng)檢索到數(shù)據(jù)時(shí),一個(gè)和多個(gè)數(shù)據(jù)塊可以被返回??梢愿鶕?jù)文件位置表順序的返回該部分,或者可以當(dāng)它們被檢索或接收到時(shí)把它們返回。在一個(gè)實(shí)施方案中,該文件請(qǐng)求處理可以按順序放置數(shù)據(jù)塊和/或其它模塊,例如流動(dòng)服務(wù)器可以對(duì)數(shù)據(jù)塊進(jìn)行排序。在數(shù)據(jù)被返回之后,該檢索數(shù)據(jù)處理進(jìn)行至結(jié)束狀態(tài)。
可以理解的是,圖12說明了文件請(qǐng)求處理的一個(gè)實(shí)施方案并且也可以使用其它的實(shí)施方案。例如,該文件請(qǐng)求處理可以使用除了圖11中所示的名稱查找處理以外的不同名稱查找進(jìn)行來確定文件的位置。在另一個(gè)例子中,可以同時(shí)使用不止一個(gè)檢索數(shù)據(jù)處理來檢索數(shù)據(jù)塊,使得多個(gè)檢索數(shù)據(jù)處理通過采用技術(shù)或技術(shù),例如并行處理,流水線技術(shù),或異步I/O的組合來并行的檢索數(shù)據(jù)。
D.奇偶校驗(yàn)生成處理圖13說明了生成奇偶校驗(yàn)信息的流程的一個(gè)實(shí)施方案(“奇偶校驗(yàn)生成處理”)。從開始狀態(tài)開始,該奇偶校驗(yàn)生成處理接收涉及一組數(shù)據(jù)的奇偶校驗(yàn)方案信息(狀態(tài)1310)。該數(shù)據(jù)集合可以表示文件數(shù)據(jù),文件元數(shù)據(jù),目錄元數(shù)據(jù),文件數(shù)據(jù)子集等,該奇偶校驗(yàn)生成處理接收設(shè)置該數(shù)據(jù)集合的數(shù)據(jù)位置信息(狀態(tài)1320)。接下來,對(duì)于每組奇偶校驗(yàn)數(shù)據(jù)(狀態(tài)1330,1370),該奇偶校驗(yàn)生成處理檢索一組數(shù)據(jù)(狀態(tài)1340)。例如,如果奇偶校驗(yàn)為3+1,則該奇偶校驗(yàn)生成處理使用如圖10所示的數(shù)據(jù)檢索處理檢索首先的3個(gè)數(shù)據(jù)塊。接下來,該奇偶校驗(yàn)生成處理為該組數(shù)據(jù)生成奇偶校驗(yàn)數(shù)據(jù)(狀態(tài)1350),例如對(duì)數(shù)據(jù)按照逐位,逐字節(jié),或逐塊的原則進(jìn)行XOR操作。該奇偶校驗(yàn)生成處理可以接著將該數(shù)據(jù)存儲(chǔ)在緩沖器中并返回至塊1330,直到已經(jīng)生成該組數(shù)據(jù)的奇偶校驗(yàn)信息為止。在生成奇偶校驗(yàn)信息之后,該奇偶校驗(yàn)生成處理確定在哪里存儲(chǔ)奇偶校驗(yàn)數(shù)據(jù)(狀態(tài)1380)。該奇偶校驗(yàn)生成處理可以使用旋轉(zhuǎn)奇偶校驗(yàn)方案,其中文件數(shù)據(jù)各個(gè)連續(xù)數(shù)據(jù)條的每個(gè)奇偶校驗(yàn)可以被旋轉(zhuǎn)的存儲(chǔ)咱下一個(gè)裝置上。該奇偶校驗(yàn)生成處理在不同于保存用于當(dāng)前數(shù)據(jù)條的數(shù)據(jù)的裝置的裝置上分配奇偶校驗(yàn)塊,用以確保即使裝置出現(xiàn)故障時(shí),奇偶校驗(yàn)信息不會(huì)與數(shù)據(jù)信息同時(shí)丟失。該奇偶校驗(yàn)生成處理也考慮了其它的因素,例如存儲(chǔ)容量,CPU利用,以及網(wǎng)絡(luò)利用,來消除一些裝置被考慮進(jìn)行奇偶校驗(yàn)存儲(chǔ)。該奇偶校驗(yàn)生成處理接著將緩沖道數(shù)據(jù)存儲(chǔ)在分配的空間中(狀態(tài)1390),記錄奇偶校驗(yàn)映射表中奇偶校驗(yàn)數(shù)據(jù)的位置(狀態(tài)1395),并返回至結(jié)束狀態(tài)。
可以理解的是,圖13說明了奇偶校驗(yàn)生成處理的一個(gè)實(shí)施方案,并且也可以使用其它的實(shí)施方案。例如,該奇偶校驗(yàn)生成處理可以并行的檢索數(shù)據(jù)塊,并且并行的或使用周知的流水線技術(shù)或異步I/O技術(shù)生成奇偶校驗(yàn)信息。而且,該奇偶校驗(yàn)生成處理可以存儲(chǔ)奇偶校驗(yàn)信息以及奇偶校驗(yàn)信息的位置,而不需要寫入臨時(shí)的緩沖器,或者該奇偶校驗(yàn)生成處理可以將奇偶校驗(yàn)數(shù)據(jù)或指針返回給奇偶校驗(yàn)數(shù)據(jù)。
E.數(shù)據(jù)恢復(fù)處理圖14說明了丟失或破壞數(shù)據(jù)的恢復(fù)流程的一個(gè)實(shí)施方案(“數(shù)據(jù)恢復(fù)處理”)。從開始狀態(tài)開始,該數(shù)據(jù)恢復(fù)處理接收關(guān)于被使用的奇偶校驗(yàn)方案的信息(狀態(tài)1410)。該數(shù)據(jù)恢復(fù)處理接著接收關(guān)于磁盤或數(shù)據(jù)出現(xiàn)故障或破壞的信息(狀態(tài)1420)。接著,該數(shù)據(jù)恢復(fù)處理接收用于其中丟失或破壞數(shù)據(jù)被指定的奇偶校驗(yàn)塊集合的地址信息(狀態(tài)1430)。該數(shù)據(jù)恢復(fù)處理接著從可用的智能存儲(chǔ)單元中檢索數(shù)據(jù)塊(狀態(tài)1440)。可以使用如圖10所示的檢索數(shù)據(jù)處理來檢索數(shù)據(jù)。該數(shù)據(jù)恢復(fù)處理根據(jù)奇偶校驗(yàn)方案進(jìn)行錯(cuò)誤校正(狀態(tài)1450),例如對(duì)塊進(jìn)行XOR操作并將結(jié)果存儲(chǔ)在緩沖器中(狀態(tài)1460)。緩沖器中的數(shù)據(jù)表示丟失的數(shù)據(jù)。該數(shù)據(jù)恢復(fù)處理接著返回緩沖器中的數(shù)據(jù)(狀態(tài)1470),并進(jìn)行至結(jié)束狀態(tài)。
可以理解的是,圖14說明數(shù)據(jù)恢復(fù)處理的一個(gè)實(shí)施方案并且也可以使用其它的實(shí)施方案。例如,該數(shù)據(jù)恢復(fù)處理可以返回被恢復(fù)的數(shù)據(jù)而不需要存儲(chǔ)它。
VIII.分布式文件系統(tǒng)中的文件的重新條帶化在一些實(shí)施方案中,該智能分布式文件系統(tǒng)包括用于對(duì)分布在一組智能存儲(chǔ)單元中的文件重新條帶化的系統(tǒng)和方法。已經(jīng)被分布和存儲(chǔ)在智能分布式文件系統(tǒng)中的文件可以在系統(tǒng)中被重新分布和恢復(fù),而不需要中斷用戶對(duì)文件的訪問和不需要使系統(tǒng)離線。另外,數(shù)據(jù)可以按照最小移動(dòng)的方式在智能存儲(chǔ)單元中被重新條帶化,并且即使在重新條帶化處理中但系統(tǒng)出現(xiàn)故障時(shí),該數(shù)據(jù)也可受到保護(hù)并且是可恢復(fù)的。
當(dāng)例如智能存儲(chǔ)單元中的一個(gè)經(jīng)歷了一些類型的故障時(shí),可以使用該重新條帶化處理,以使丟失的數(shù)據(jù)可以被重新生成并隨后在系統(tǒng)上恢復(fù)。當(dāng)例如一個(gè)或多個(gè)智能存儲(chǔ)單元被加入或從智能分布式文件系統(tǒng)中移除時(shí),也可以使用該重新條帶化處理,以使數(shù)據(jù)可以被加入到新的智能存儲(chǔ)單元或重新分布到其它的智能存儲(chǔ)單元。另外,當(dāng)文件的保護(hù)方案變化時(shí),也可以使用該重新條帶化處理。例如,如果一個(gè)文件從3+1奇偶校驗(yàn)保護(hù)變?yōu)?+1奇偶校驗(yàn)保護(hù),則該重新條帶化處理就可以將數(shù)據(jù)移動(dòng)到符合新奇偶校驗(yàn)保護(hù)的布局中的智能存儲(chǔ)單元,并且直到新的布局完成,一直允許用戶訪問舊的布局下的文件,使得該數(shù)據(jù)可以受到舊的奇偶校驗(yàn)方案的保護(hù)。
在一個(gè)實(shí)施方案中,可以由塊分配管理器進(jìn)行重新條帶化處理,可是,應(yīng)該明白的是,在其它實(shí)施方案中,可以由該智能分布式文件系統(tǒng)的其它部分進(jìn)行該重新條帶化處理。
使用了上述方法的智能存儲(chǔ)單元帶來的優(yōu)點(diǎn)就是不需要有任何特定的數(shù)據(jù)條的任何特定塊駐留在智能存儲(chǔ)單元中的任何特定位置。這樣,“數(shù)據(jù)條”的提取就不需要涉及多個(gè)智能存儲(chǔ)單元中的任何特定塊,但是可以包括來自不同單元的任何可用塊。
A.重新條帶化處理圖15說明了在智能分布式文件系統(tǒng)中對(duì)數(shù)據(jù)重新條帶化的方法的一個(gè)實(shí)施方案(“重新條帶化處理”)。該文件在邏輯上被表示作為一組根據(jù)文件希望的保護(hù)方案確定的保護(hù)組。例如,如果文件希望的保護(hù)方案為3+1奇偶校驗(yàn),則該文件就被分成具有4簇或塊的保護(hù)組,即3個(gè)內(nèi)容塊和1個(gè)奇偶校驗(yàn)塊。如果文件希望的保護(hù)方案為3x鏡像保護(hù)方案,則該文件將會(huì)被分成具有3個(gè)簇,即3個(gè)相同的內(nèi)容數(shù)據(jù)塊的保護(hù)組。
這里描述的重新條帶化處理表示一種有利的方法,其能夠在系統(tǒng)中移動(dòng)文件數(shù)據(jù),而不需要數(shù)據(jù)駐留在智能存儲(chǔ)單元的任何特定位置上。該重新條帶化處理還允許在重新條帶化處理期間進(jìn)行數(shù)據(jù)恢復(fù),并且允許數(shù)據(jù)條的實(shí)質(zhì)性變化。另外,符合來自保護(hù)方案的特殊限制。例如,奇偶校驗(yàn)數(shù)據(jù)及其相關(guān)的內(nèi)容數(shù)據(jù)都被存儲(chǔ)在不同的智能存儲(chǔ)單元上。對(duì)于鏡像數(shù)據(jù),每個(gè)數(shù)據(jù)的拷貝都可以被存儲(chǔ)在不同的智能存儲(chǔ)單元上。
在一個(gè)實(shí)施方案中,當(dāng)確定如何在智能存儲(chǔ)單元中存儲(chǔ)數(shù)據(jù)時(shí),可以通過使用允許其它對(duì)象的優(yōu)先選擇來進(jìn)行有利的重新條帶化。
在一個(gè)例子中,優(yōu)先選擇就是最小的移動(dòng)就是一個(gè)優(yōu)先權(quán),這樣,如果一個(gè)塊已經(jīng)位于一個(gè)智能存儲(chǔ)單元,則相同的智能存儲(chǔ)單元就會(huì)被指定給該塊,使得該塊并不是必須被恢復(fù)在不同的智能存儲(chǔ)單元上。在智能存儲(chǔ)單元出現(xiàn)故障之后,修復(fù)該文件時(shí),這種優(yōu)先選擇最可能被使用。
另一個(gè)優(yōu)先選擇可以是使用最優(yōu)智能存儲(chǔ)單元進(jìn)行布局。如果一個(gè)塊已經(jīng)位于一個(gè)智能存儲(chǔ)單元上,并且該智能存儲(chǔ)單元就是一個(gè)“最優(yōu)”單元,則相同的智能存儲(chǔ)單元就被指定給該塊。這樣,可以避免塊的一些移動(dòng),但是,當(dāng)需要平衡一組智能存儲(chǔ)單元中的文件時(shí),就可以移動(dòng)塊。該優(yōu)先選擇可以被使用,例如當(dāng)保護(hù)設(shè)置變化時(shí),或者向智能分布式文件系統(tǒng)中增加新的智能存儲(chǔ)單元時(shí)。
還有一個(gè)優(yōu)先選擇可以是最佳布局而不管數(shù)據(jù)已經(jīng)位于哪里。這樣,就可以完成重新條帶化,而不需要任何關(guān)于塊的現(xiàn)存位置。為了最優(yōu)布局文件,可以移動(dòng)現(xiàn)存的塊。但是,可以理解的是,一些數(shù)據(jù)塊不需要被移動(dòng),因?yàn)樗鼈儗⒈淮鎯?chǔ)在適當(dāng)?shù)闹悄艽鎯?chǔ)單元上。在一些實(shí)施方案中,為了修補(bǔ)存儲(chǔ)裝置上的存儲(chǔ)碎片,即使它們正好出現(xiàn)在最佳智能存儲(chǔ)單元上,該智能分布式文件系統(tǒng)也可以重新定位塊。該優(yōu)先選擇可以被用于調(diào)諧操作,例如降低存儲(chǔ)碎片和用于READ性能的優(yōu)化,并且很可能在“根據(jù)需要”的基礎(chǔ)上或在正常文件系統(tǒng)操作期間的背景中被使用。
“最優(yōu)”布局的目的可以基于一個(gè)或多個(gè)因素。例如,該因素可以包括文件大小,READ(讀)性能,WRITE(寫)性能,預(yù)期的訪問頻率,系統(tǒng)吞吐量,網(wǎng)絡(luò)速度,可用的存儲(chǔ)裝置空間等等。
在一個(gè)實(shí)施方案中,該重新條帶化處理試圖將一個(gè)文件留在這樣一種狀態(tài)中,該狀態(tài)允許如果在重新條帶化處理期間一個(gè)或多個(gè)智能存儲(chǔ)單元出現(xiàn)了故障則使用保護(hù)數(shù)據(jù)來重新生成文件。雖然如果可能的話可以使用優(yōu)先選擇,但是可以理解的是,有一種不符合優(yōu)先選擇的情況。例如,如果塊A,B,和C是3x鏡像保護(hù)方案的一部分并且塊A和B在裝置0上,塊C在裝置1上,即使將塊B留在裝置0上將會(huì)滿足最小數(shù)據(jù)移動(dòng)的優(yōu)先選擇,但塊A或B之一必須被恢復(fù)在另一個(gè)可用的智能存儲(chǔ)單元上,以滿足保護(hù)方案的限制。在執(zhí)行算法期間,當(dāng)存在周期性的情況時(shí),在該情況下,保護(hù)方案限制以及優(yōu)先選擇相互沖突,在一些實(shí)施方案中,系統(tǒng)選擇保持保護(hù),這就付出了增加額外數(shù)據(jù)移動(dòng)的代價(jià)。可以理解的是,在其它實(shí)施方案中,一個(gè)或多個(gè)優(yōu)先選擇可以優(yōu)先于基于特定實(shí)現(xiàn)的保護(hù)方案。
現(xiàn)在參照?qǐng)D15對(duì)重新條帶化處理的一個(gè)實(shí)施方案進(jìn)行論述。從開始狀態(tài)開始,該重新條帶化處理進(jìn)行至下一個(gè)狀態(tài),其中為每個(gè)保護(hù)組(狀態(tài)1520,1540),該重新條帶化處理將智能存儲(chǔ)單元分配給保護(hù)組中的塊(狀態(tài)1530)。下面參照?qǐng)D16對(duì)分配處理的一個(gè)實(shí)施方案進(jìn)行論述,雖然可以使用其它的分配處理。
在塊被分配給智能存儲(chǔ)單元之后,如果該塊被分配給一個(gè)新的智能存儲(chǔ)單元(即它已經(jīng)被存儲(chǔ)在已經(jīng)分配的智能存儲(chǔ)單元上),則該重新條帶化處理發(fā)送一個(gè)請(qǐng)求給已經(jīng)分配的智能存儲(chǔ)單元,以存儲(chǔ)該塊(狀態(tài)1550)。應(yīng)該理解的是,可以使用其它的實(shí)施方案,使得該重新條帶化處理在分配完一組保護(hù)組之后,發(fā)送一個(gè)請(qǐng)求給已分配的智能存儲(chǔ)單元,并且在進(jìn)行至下一個(gè)狀態(tài)之前不需要所有的保護(hù)組都被分配。例如,當(dāng)一個(gè)或多個(gè)智能存儲(chǔ)單元被加入到系統(tǒng)中,或者如果一個(gè)或多個(gè)智能存儲(chǔ)單元出現(xiàn)故障時(shí),如果使用了該重新條帶化處理,則可以在分配了每個(gè)保護(hù)組之后由該重新條帶化處理向已經(jīng)分配的智能存儲(chǔ)單元發(fā)送一個(gè)請(qǐng)求。
接著,該重新條帶化處理驗(yàn)證該數(shù)據(jù)已經(jīng)被成功存儲(chǔ)(狀態(tài)1560)。在典型實(shí)施方案中,已經(jīng)被存儲(chǔ)在已分配的智能存儲(chǔ)單元中的數(shù)據(jù)將會(huì)滿足這種查詢。如果數(shù)據(jù)被成功存儲(chǔ),則該重新條帶化處理就會(huì)更新涉及文件的元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu),并進(jìn)行至結(jié)束狀態(tài)(狀態(tài)1590)。一旦更新完成了,就會(huì)由系統(tǒng)使用文件的新信息。任何以前使用的存儲(chǔ)器現(xiàn)在都被釋放,并且該元數(shù)據(jù)反映出文件的新狀態(tài)。
該元數(shù)據(jù)更新可以包括,例如內(nèi)容塊的新地址單元,保護(hù)塊的新地址單元,新保護(hù)方案,用于存儲(chǔ)文件數(shù)據(jù)的智能存儲(chǔ)單元的新列表,以及用于存儲(chǔ)文件保護(hù)信息的智能存儲(chǔ)單元的新列表。該重新條帶化處理也可以用文件數(shù)據(jù)的新的“最后塊地址”以及每個(gè)智能存儲(chǔ)單元的奇偶校驗(yàn)數(shù)據(jù)來更新元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)??梢岳斫獾氖?,也可以使用其它的實(shí)施方案,使得該重新條帶化處理在已經(jīng)存儲(chǔ)一組保護(hù)組之后,驗(yàn)證該數(shù)據(jù)已經(jīng)被成功存儲(chǔ)(狀態(tài)1560),并且在進(jìn)行至下一個(gè)步驟之前不需要存儲(chǔ)所有的塊。在該實(shí)施方案中,該重新條帶化處理可以根據(jù)舊數(shù)據(jù)的保護(hù)值與新數(shù)據(jù)的保護(hù)值的最小公倍數(shù),在更新元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)之間確定必須被成功存儲(chǔ)的保護(hù)組的數(shù)量。在這種情況下,被鏡像的數(shù)據(jù)的保護(hù)值為1(例如,對(duì)于在3x鏡像保護(hù)方案下的數(shù)據(jù),該保護(hù)值將為1)。用于奇偶校驗(yàn)保護(hù)數(shù)據(jù)的保護(hù)值為每個(gè)奇偶校驗(yàn)集合中內(nèi)容塊的數(shù)量(例如,對(duì)于采用4+1奇偶校驗(yàn)方案的數(shù)據(jù),保護(hù)值將為4)。
如果數(shù)據(jù)沒有被成功存儲(chǔ)(例如,一個(gè)或多個(gè)智能存儲(chǔ)單元不能存儲(chǔ)該數(shù)據(jù)),則該重新條帶化處理返回一個(gè)錯(cuò)誤(狀態(tài)1580)并進(jìn)行至結(jié)束狀態(tài)。這樣,如果一個(gè)或多個(gè)智能存儲(chǔ)單元不能存儲(chǔ)數(shù)據(jù),則保持原始數(shù)據(jù)并且仍舊使用它的原始保護(hù)方案保護(hù)該文件。任何最新存儲(chǔ)的數(shù)據(jù)都是空閑的。
可以理解的是,也可以使用重新條帶化處理的其它實(shí)施方案。例如,該分配處理可以在逐塊的基礎(chǔ)上進(jìn)行分配,以使每個(gè)元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)都被檢查,并且根據(jù)地址和保護(hù)設(shè)置推薦最優(yōu)的智能存儲(chǔ)單元。
B.存儲(chǔ)處理在一個(gè)實(shí)施方案中,當(dāng)被分配的智能存儲(chǔ)單元接收請(qǐng)求存儲(chǔ)數(shù)據(jù)的請(qǐng)求時(shí),每個(gè)被分配的智能存儲(chǔ)單元都要確定把數(shù)據(jù)存儲(chǔ)到存儲(chǔ)裝置的哪里。在一個(gè)例子中,該被分配的智能存儲(chǔ)單元試圖連續(xù)存儲(chǔ)相關(guān)的數(shù)據(jù),使得當(dāng)其接收新數(shù)據(jù)時(shí),該智能存儲(chǔ)單元通過使用文件相關(guān)數(shù)據(jù)的最后塊地址將新數(shù)據(jù)存儲(chǔ)在第一個(gè)可用的位置。但是,可以理解的是,可以使用各種存儲(chǔ)優(yōu)先選擇,并且每個(gè)智能存儲(chǔ)單元都可以使用不同集合的存儲(chǔ)優(yōu)先選擇。在其它實(shí)施方案中,智能分布式文件系統(tǒng)中所有智能存儲(chǔ)單元可以使用相同的存儲(chǔ)優(yōu)先選擇。一旦存儲(chǔ)了新的數(shù)據(jù),該智能存儲(chǔ)單元就會(huì)返回新數(shù)據(jù)的地址單元??墒?,在其它實(shí)施方案中,被分配的智能存儲(chǔ)單元可以直接更新元數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)的新地址。
C.分配處理圖16說明了用于分配數(shù)據(jù)塊和保護(hù)塊給可用智能存儲(chǔ)單元的方法的一個(gè)實(shí)施方案(“分配處理”)。該分配處理確定在重新條帶化處理期間該塊應(yīng)被分配到哪里。在典型實(shí)施方案中,對(duì)一個(gè)保護(hù)組進(jìn)行分配。這樣,對(duì)數(shù)據(jù)條進(jìn)行分配,其中該數(shù)據(jù)條中包括數(shù)據(jù)塊以及任何相關(guān)的保護(hù)數(shù)據(jù)(例如,奇偶校驗(yàn)數(shù)據(jù),數(shù)據(jù)的鏡像拷貝)。該分配處理可以試圖指導(dǎo)一個(gè)關(guān)于最少可能塊重定位的布局,同時(shí)還為塊確定最優(yōu)位置并試圖滿足任何被指定的布局目標(biāo)。
從開始狀態(tài)開始,該分配處理進(jìn)行至下一個(gè)狀態(tài),以識(shí)別出哪個(gè)智能存儲(chǔ)單元是可用的(狀態(tài)1620)。在一個(gè)實(shí)施方案中,該可用的單元包括當(dāng)前正被文件使用的智能存儲(chǔ)單元以及由可用自由空間挑選的剩余智能存儲(chǔ)單元。但是,應(yīng)該認(rèn)識(shí)到,在其它實(shí)施方案中,該智能存儲(chǔ)單元可以被不同的排序,或者可以使用其它的數(shù)據(jù)結(jié)構(gòu)對(duì)可用的智能存儲(chǔ)單元(例如,等級(jí)編號(hào)可以被給予每個(gè)可用智能存儲(chǔ)單元)進(jìn)行排序。智能存儲(chǔ)單元是否“可用”取決于一個(gè)或多個(gè)因素,例如,該智能存儲(chǔ)單元是否在起作用,智能存儲(chǔ)單元的吞吐率,智能存儲(chǔ)單元的存儲(chǔ)裝置上自由空間的大小等等。
接下來,該分配處理確定是否有足夠的可用智能存儲(chǔ)單元來進(jìn)行分配(狀態(tài)1630)。智能存儲(chǔ)單元的優(yōu)選數(shù)量可以取決于各種因素,例如保護(hù)組中數(shù)據(jù)的數(shù)量,被采用的保護(hù)方案,系統(tǒng)中智能存儲(chǔ)單元的最大數(shù)量,所希望的文件吞吐率等。例如,具有3+1奇偶校驗(yàn)保護(hù)的文件要求至少有4個(gè)智能存儲(chǔ)單元。如果并沒有足夠的可用智能存儲(chǔ)單元,則分配處理返回一個(gè)錯(cuò)誤(狀態(tài)1640)并進(jìn)行至結(jié)束狀態(tài)(狀態(tài)1670)。
如果有足夠的可用單元,則該分配處理為保護(hù)組中的每個(gè)塊選擇一個(gè)智能存儲(chǔ)單元(狀態(tài)1650)。下面將參照?qǐng)D17對(duì)選擇智能存儲(chǔ)單元的更詳細(xì)的說明進(jìn)行敘述,雖然也可以使用其它的處理。
在一些實(shí)施方案中,在選擇完智能存儲(chǔ)單元之后,接著對(duì)于每個(gè)被選中的智能存儲(chǔ)單元,該分配處理就會(huì)確定涉及當(dāng)前文件的數(shù)據(jù)塊的最后位置和/或涉及當(dāng)前數(shù)據(jù)的保護(hù)塊的最后位置(狀態(tài)1660)并進(jìn)行至結(jié)束狀態(tài)。這允許新的數(shù)據(jù)塊和/或新的保護(hù)塊被存儲(chǔ)在來自文件的其它數(shù)據(jù)塊和保護(hù)塊的附近。應(yīng)該認(rèn)識(shí)到,在其它實(shí)施方案中,可以使用其它的存儲(chǔ)優(yōu)先選擇。例如,可以連續(xù)或非連續(xù)的存儲(chǔ)數(shù)據(jù),數(shù)據(jù)可以被存儲(chǔ)在存儲(chǔ)裝置的末尾而不是開頭等等。
D.選擇處理圖17說明了用于選擇其上存儲(chǔ)有一個(gè)單一保護(hù)組的簇的智能存儲(chǔ)單元的方法的一個(gè)實(shí)施方案(“選擇處理”)。在典型實(shí)施方案中,該選擇處理備用于將裝置分配給文件的保護(hù)組。如上面所指出的,該保護(hù)方案限制了保護(hù)組中的每個(gè)塊都被存儲(chǔ)在不同智能存儲(chǔ)單元上的要求。這樣,對(duì)于鏡像文件,塊的每個(gè)拷貝都應(yīng)該被存儲(chǔ)在不同的智能存儲(chǔ)單元上,并且對(duì)于奇偶校驗(yàn)保護(hù)文件,每個(gè)內(nèi)容數(shù)據(jù)塊及其相關(guān)的奇偶校驗(yàn)數(shù)據(jù)都應(yīng)該被存儲(chǔ)在不同的智能存儲(chǔ)單元上。雖然典型的選擇處理被用于將智能存儲(chǔ)單元分配給一個(gè)單一的保護(hù)組,但是,應(yīng)該認(rèn)識(shí)到,在其它實(shí)施方案中,該選擇處理可以被用于將智能存儲(chǔ)單元分配給更小和/或更大的數(shù)據(jù)組。例如,該選擇處理可以對(duì)一個(gè)單一塊,一組塊,一組保護(hù)組等起作用。
1、示例實(shí)現(xiàn)整個(gè)智能存儲(chǔ)單元集合,這里被稱為裝置,智能分布式文件系統(tǒng)中可用的裝置被表示為T。該工作裝置集合就是一組智能分布式文件系統(tǒng)中所有運(yùn)行的裝置并且可以被表示為G。G不包括由于一些類型的故障(例如系統(tǒng)故障,網(wǎng)絡(luò)故障,存儲(chǔ)裝置故障等)而“停機(jī)”的智能分布式文件系統(tǒng)中的任何裝置。另外,W表示當(dāng)前其中存儲(chǔ)了文件內(nèi)容數(shù)據(jù)和保護(hù)數(shù)據(jù)的裝置集合(即,填滿了文件的裝置)。需要注意的是,如果文件從沒有被存儲(chǔ)到智能分布式文件系統(tǒng)上,則W為空。
從開始狀態(tài)開始,該選擇處理進(jìn)行至下一個(gè)狀態(tài)并識(shí)別一組優(yōu)選的裝置(狀態(tài)1715)。
在典型實(shí)施方案中,可以在上面分布文件的裝置的數(shù)量應(yīng)該足夠大,以符合被選保護(hù)方案的限制。例如,為了實(shí)現(xiàn)m+n奇偶驗(yàn)證保護(hù),至少需要m+n個(gè)裝置。為了實(shí)現(xiàn)k次鏡像,需要k個(gè)裝置。
另外,可以在上面分布文件的裝置的數(shù)量應(yīng)該足夠小,使得該文件不會(huì)太易損壞。當(dāng)文件遍布越來越多的裝置時(shí),它會(huì)變得易損壞,這是因?yàn)槿绻粋€(gè)裝置出現(xiàn)故障,則該文件會(huì)受到影響的可能性就會(huì)增加。這樣,該系統(tǒng)就可以選擇一個(gè)上限作為裝置的最大數(shù)量max,該裝置可以被文件數(shù)據(jù)填滿。
因此,文件寬度的限制可以被表示為采用m+n奇偶校驗(yàn)保護(hù){m+n}<=文件寬度<=maxk次鏡像{k}<=文件寬度<=max為了選擇優(yōu)選裝置集合P,該系統(tǒng)使用max來設(shè)置P的大小。從G和W的交集中得到的裝置被加給P,并且如果P仍舊不是max的大小,則從G和W!的交集中得到的裝置被加給P,直到P達(dá)到max大小。從G和W!的交集中得到的剩余裝置沒有被加給P,而是被加給了S(狀態(tài)1720)這樣,如果|“max”|==|W&G|,則P將只包括其上已經(jīng)駐留有數(shù)據(jù)的UP裝置,并且S將只包括其上還沒有駐留數(shù)據(jù)的UP裝置。如果|“max”|<|W&G|,則P將會(huì)包括一些其上已經(jīng)駐留有數(shù)據(jù)的UP裝置,并且S也將會(huì)包括一些其上已經(jīng)駐留有數(shù)據(jù)的UP裝置以及一些其上還沒有駐留數(shù)據(jù)的UP裝置。如果|“max”|>|W&G|,則P將會(huì)包括其上已經(jīng)駐留有數(shù)據(jù)的UP裝置,以及一些其上還沒有駐留數(shù)據(jù)的UP裝置。S將會(huì)包括一些其上還有沒駐留數(shù)據(jù)的UP裝置。
應(yīng)該認(rèn)識(shí)到,也可以使用其它選擇優(yōu)選裝置的方法。
接著,該選擇處理為當(dāng)前保護(hù)組識(shí)別一個(gè)最優(yōu)裝置的有序集合,即“最優(yōu)保護(hù)組”(狀態(tài)1725)。該最優(yōu)保護(hù)組可以被表示為O。在典型實(shí)施方案中,該最優(yōu)文件布局被解釋為如果第一次將文件寫入到整個(gè)優(yōu)選裝置集合上,將被使用的布局。當(dāng)P中的最后裝置被使用了,則下一個(gè)被使用的裝置就是P中的第一個(gè)裝置,其中該P(yáng)允許塊“環(huán)繞”P中的裝置。因此,第一保護(hù)組的第一塊會(huì)被存儲(chǔ)在P中的第一裝置上,第一保護(hù)組的第二塊會(huì)被存儲(chǔ)在P中的第二裝置上,第一保護(hù)組的第三塊會(huì)被存儲(chǔ)在P中的第三裝置上,對(duì)于第一保護(hù)組中的其余塊也是類似的。接著,第二保護(hù)組的第一塊會(huì)被存儲(chǔ)在其上存儲(chǔ)有前一保護(hù)組的最后塊的裝置上,第二保護(hù)組的第二塊會(huì)被存儲(chǔ)在下一個(gè)裝置上。雖然該實(shí)施方案允許在P的裝置的保護(hù)組中重疊一個(gè)塊,但是可以認(rèn)可的是,也可以使用其它的重疊大小,包括零。在該實(shí)施方案中,“最優(yōu)保護(hù)組”可以被解釋為如果第一次將文件寫入到優(yōu)選裝置上,其上將會(huì)存儲(chǔ)特定保護(hù)組裝置的有序集合??梢允褂糜糜谶x擇“最優(yōu)文件布局”和“最優(yōu)保護(hù)組”的其它定義。
接下來,該選擇處理識(shí)別出一組非最優(yōu)裝置,其可以被表示為N(狀態(tài)1730)。在該實(shí)施方案中,N為如果文件第一次被寫入,其中將會(huì)存儲(chǔ)保護(hù)組的優(yōu)選裝置中的裝置集合。
接著,該選擇處理就會(huì)生成一個(gè)裝置陣列或矩陣,其中保護(hù)組中的每個(gè)塊當(dāng)前都被存儲(chǔ)在該裝置上(狀態(tài)1735),這可以被稱為C。C具有與新保護(hù)組中塊的數(shù)量相同的列,并且每個(gè)列中行的數(shù)量都等于由當(dāng)前存儲(chǔ)的文件所使用的鏡像的數(shù)量,最小的行數(shù)為1。C中每個(gè)列的入口表示其中已經(jīng)存儲(chǔ)了塊的各種裝置。例如,如果一個(gè)文件當(dāng)前被存儲(chǔ)作為3x文件,并被改變?yōu)?x文件,則新保護(hù)組的大小為5,并且由當(dāng)前存儲(chǔ)的的文件使用的鏡像數(shù)為3。這樣,C就具有5列,每列中包括3行。如果一個(gè)文件當(dāng)前被3+1奇偶校驗(yàn)保護(hù)并被改變?yōu)?+1奇偶校驗(yàn)保護(hù),則C就具有6列,每列中包括1行。如果一個(gè)文件還沒有被存儲(chǔ)在系統(tǒng)上,則C具有用于新保護(hù)組中的每個(gè)決的列并具有1行,使得C中的每個(gè)入口為零,它表示在系統(tǒng)上目前沒有存儲(chǔ)塊。零入口表示該塊當(dāng)前并沒有被存儲(chǔ)在系統(tǒng)上,并且也可以被使用,例如當(dāng)奇偶校驗(yàn)保護(hù)被加給該文件時(shí),就好像在這之前并沒有使用過奇偶校驗(yàn),接著該奇偶校驗(yàn)塊將不會(huì)已經(jīng)被存儲(chǔ)在系統(tǒng)上。
該選擇處理接著確定已經(jīng)為該文件選擇了哪個(gè)優(yōu)先選擇(狀態(tài)1740)。在該典型實(shí)施方案中,有3個(gè)優(yōu)先選擇,第一個(gè)優(yōu)先選擇(“修復(fù)”)通過把塊分配給它們已經(jīng)駐留的智能存儲(chǔ)單元而有利地使數(shù)據(jù)的移動(dòng)最小化。第二優(yōu)先選擇(“重新均衡”)有利于分配塊,使得已經(jīng)駐留在“最優(yōu)列表”中的裝置上的塊保留在該裝置上,并且其它的塊被移動(dòng)到“最優(yōu)列表”中剩余的裝置中。第三個(gè)優(yōu)先選擇(“重調(diào)諧”)有利于將所有的塊分配給“最優(yōu)列表”中的有序值。應(yīng)該認(rèn)識(shí)到,如果優(yōu)先選擇與選擇的保護(hù)方案相互沖突,則并不是能夠一直滿足該優(yōu)先選擇。
應(yīng)該認(rèn)識(shí)到,上面討論的優(yōu)先選擇是典型的,并且可以使用各種優(yōu)先選擇。而且,一些實(shí)施方案可以不使用優(yōu)先選擇,而可以僅僅通過使用保護(hù)方案的限制來選擇裝置。在其它實(shí)施方案中,優(yōu)先選擇可以優(yōu)先于保護(hù)方案限制。
如果REPAIR(修復(fù))為優(yōu)先選擇,則選擇處理遍歷C中的每一列,并查看是否列中的一個(gè)裝置于O中的一個(gè)裝置相匹配(狀態(tài)1745)。如果匹配,則選擇處理通過,例如記錄最后分配列表中裝置的ID將匹配裝置分配給那個(gè)塊,從O中去除該裝置,并移動(dòng)到C中的下一列。如果不匹配,則該選擇處理移動(dòng)到C中的下一列。一旦C中的每一列都被遍歷了,則該選擇處理進(jìn)行至下一狀態(tài)。
在該狀態(tài)中,對(duì)于每個(gè)還沒有被分配的塊,該選擇處理遍歷C中的相應(yīng)列并查看是否列中的一個(gè)裝置與N中的一個(gè)裝置匹配(狀態(tài)1750)。如果匹配,則選擇處理通過,例如記錄最后分配列表中裝置的ID將匹配裝置分配給那個(gè)塊,從N中去除該裝置,并移動(dòng)到下一個(gè)還沒有被分配的塊。如果不匹配,則該選擇處理移動(dòng)到還沒有被分配的下一塊。一旦還沒有被分配的塊被遍歷了,則該選擇處理進(jìn)行至下一狀態(tài)。
在該狀態(tài)中,對(duì)于每個(gè)還沒有被分配的塊,該選擇處理遍歷C中的相應(yīng)列并查看是否列中的一個(gè)裝置與來自S的一個(gè)裝置匹配(狀態(tài)1755)。如果匹配,則選擇處理通過,例如記錄最后分配列表中裝置的ID將匹配裝置分配給那個(gè)塊,從S中去除該裝置,并移動(dòng)到下一個(gè)還沒有被分配的塊。如果不匹配,則該選擇處理移動(dòng)到還沒有被分配的下一塊。一旦每個(gè)還沒有被分配的塊被遍歷了,則該選擇處理進(jìn)行至下一狀態(tài)。
在該狀態(tài)下,對(duì)于每個(gè)還沒有被分配的塊,該選擇處理從O中分配一個(gè)裝置(狀態(tài)1760)。一旦每個(gè)塊都被分配完了,則該選擇處理進(jìn)行至結(jié)束狀態(tài)。
如果REBALANCE(重新均衡)為優(yōu)先選擇,則選擇處理遍歷C中的每一列,并查看是否列中的一個(gè)裝置于O中的一個(gè)裝置相匹配(狀態(tài)17650)。如果匹配,則選擇處理通過,例如記錄最后分配列表中裝置的ID將匹配裝置分配給那個(gè)塊,從O中去除該裝置,并移動(dòng)到C中的下一列。如果不匹配,則該選擇處理移動(dòng)到C中的下一列。一旦C中的每一列都被遍歷了,則該選擇處理進(jìn)行至下一狀態(tài)。
在該狀態(tài)下,對(duì)于每個(gè)還沒有被分配的塊,該選擇處理從O中分配一個(gè)裝置(狀態(tài)1770)并記錄最后分配列表中的分配。一旦每個(gè)塊都被分配完了,則該選擇處理進(jìn)行至結(jié)束狀態(tài)。
如果RETUNE(重調(diào)諧)為優(yōu)先選擇,則選擇處理從第一塊開始并分配O中的第一個(gè)裝置,第二塊被分配給O中的第二個(gè)裝置,諸如此類,使得通過使用有序的O列表來分配裝置(狀態(tài)1775)。一旦每個(gè)塊都被分配完了,則該選擇處理進(jìn)行至結(jié)束狀態(tài)。
這樣,該選擇處理為保護(hù)組中的每個(gè)塊選擇了一個(gè)裝置。
應(yīng)該認(rèn)識(shí)到,圖17說明了選擇處理的一個(gè)實(shí)施方案并且也可以使用其它的實(shí)施方案。例如,用于首先寫出文件的方法可以是不同的。如上所述,該典型實(shí)施方案使用了一個(gè)變體來在優(yōu)選裝置中分布?jí)K,并且使得保護(hù)組與一個(gè)塊重疊。在其它實(shí)施方案中,可以使用不同的變形。另外,該系統(tǒng)可以消除變形值的使用。在這種情況下,每個(gè)保護(hù)組每次都能使用相同的單元開始分配它的數(shù)據(jù),或者在將單元分配給保護(hù)組之后,就可以根據(jù)各種參數(shù)來記錄優(yōu)選單元的列表。而且,在其它實(shí)施方案中,該選擇處理可以在移動(dòng)到C中的下一列之前,遍歷各個(gè)O,N,和S集合。
另外,可以通過使用額外的和/或其它的標(biāo)準(zhǔn)來選擇該優(yōu)選裝置和最優(yōu)裝置的集合。該標(biāo)準(zhǔn)可以包括,例如哪個(gè)智能存儲(chǔ)單元正在運(yùn)行,智能存儲(chǔ)單元的存儲(chǔ)裝置上可用空間的量,智能存儲(chǔ)單元的吞吐率,其中已經(jīng)存儲(chǔ)了來自保護(hù)組的數(shù)據(jù)的智能存儲(chǔ)單元等。應(yīng)該認(rèn)識(shí)到,不同的系統(tǒng)可以具有不同的目的。
2.基礎(chǔ)概述接下來提供一些上面討論的數(shù)學(xué)結(jié)構(gòu)的概述。
a.操作符下面的就是用于為參照?qǐng)D17描述的典型實(shí)施方案提供基礎(chǔ)的操作符。
&=交集|=并集!=反-=減b.集合/列表下面就是用于為參照?qǐng)D17描述的典型實(shí)施方案提供基礎(chǔ)的集合和有序列表。
T=智能分布式文件系統(tǒng)中可用裝置的集合G=智能分布式文件系統(tǒng)中所有運(yùn)行裝置的集合W=由文件占據(jù)的裝置的集合S=備用裝置的集合P=優(yōu)選裝置的有序集合O[size]=對(duì)于保護(hù)組中每個(gè)塊的裝置最優(yōu)分配,其中“size”就是保護(hù)組的大小。
N=非最優(yōu)集合=P-OF[size]=用于保護(hù)組中每個(gè)塊的裝置最終分配C[size,k]=分配給每個(gè)塊的當(dāng)前裝置,其中k為當(dāng)文件被存儲(chǔ)時(shí),由該文件使用的鏡像的數(shù)量3.實(shí)例現(xiàn)在對(duì)一個(gè)裝置選擇的例子進(jìn)行說明。但是,可以認(rèn)識(shí)到,該例子并不意味著限制本發(fā)明的范圍,但是僅僅提供關(guān)于各種實(shí)施方案的細(xì)節(jié)。
A.修復(fù)假設(shè)我們在一個(gè)4節(jié)點(diǎn)陣列上修復(fù)一個(gè)3x文件,該陣列剛剛經(jīng)歷了節(jié)點(diǎn)3上的一個(gè)裝置出現(xiàn)故障。
W==(1,2,3)G==(1,2,4)
dev(X)==3;widthpolicy(X)==8R==修復(fù)group_index=0這里|G|>=dev(X),所以我們可以開始。我們有P==G&W==(1,2)S==G&!W==(4)現(xiàn)在,我們增加了取自S的P,從而P=(1,2,4)S=()該cycle_offset就是group_index%|P|,或者0%3=0。這導(dǎo)致O=(1,2,4)N=()現(xiàn)在,我們迭代F中所有的數(shù)值。
對(duì)于F
,由于這兩個(gè)鏡像都可能選擇,因此C
&O就是(1,2)。裝置1和2都包括F
的鏡像。選擇F
=1。從O中刪除1,因此O現(xiàn)在是(2,4)。
現(xiàn)在對(duì)于F[1],C[1]&O就是(2)。選擇F[1]=2。從O中刪除2,因此O現(xiàn)在是(4)。
對(duì)于F[2],C[2]&O是空集。我們現(xiàn)在進(jìn)行至最后步驟,將O的剩余值分配給F[2]。這樣F[2]=4。因此最終F就是F=(1,2,4)修復(fù)的目的完成了;只有一個(gè)簇必須被重構(gòu)。其它的兩個(gè)簇留在原地。
b.重新均衡在3節(jié)點(diǎn)陣列上給定一個(gè)2+1文件,該重新均衡的目的可以被用于當(dāng)?shù)谒膫€(gè)節(jié)點(diǎn)被加入到陣列中來時(shí),將文件重新條帶化為3+1。
W==(1,2,3)G==(1,2,3,4)dev(X)==4;widthpolicy(X)==8
R==重新均衡group_index=30這里|G|>=dev(X),所以我們可以繼續(xù)進(jìn)行。我們有P=(1,2,3)S=(4)我們增加了取自S的P,從而P=(1,2,3,4)S=()該group_index為30,因此cycle_offset就是30%4=2。接著O=(3,4,1,2)N=()注意,所有的C[i]具有最多一個(gè)元素,由于該文件并沒有被鏡像,并且因此每個(gè)源簇只存在一個(gè)數(shù)據(jù)拷貝。為了該例子,假設(shè)C=((3),(4),(2),(3))這樣,C
=(3),C[1]=(4)等等。
我們從F
開始。在這種情況下,C[i]&O提供了3,因此F
=3。類似的,F(xiàn)[1]=4并且F[2]=2。在每個(gè)步驟上,我們從O中刪除,因此O被剩下只包括(1)。
對(duì)于F[3],C[3]&O為空。我們進(jìn)行至將O的最后成員分配給F[3]的最后步驟,因此F[3]=1。我們的最后F就是F=(3,4,2,1)這里,有兩塊被移動(dòng)了,并且F中所有的成員都在O中。
c.重調(diào)諧該典型智能分布式文件系統(tǒng)具有8個(gè)裝置,A,B,C,D,E,F(xiàn),G和H。并且文件由12個(gè)內(nèi)容塊構(gòu)成,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11和b12。當(dāng)前,文件被存儲(chǔ)在A,B,C和D上并被鏡像兩次,但是沒有奇偶校驗(yàn)保護(hù)。接下來說明了其上當(dāng)前存儲(chǔ)了每個(gè)數(shù)據(jù)塊的裝置
如果新數(shù)據(jù)布局包括3+1奇偶校驗(yàn)保護(hù),但是沒有鏡像數(shù)據(jù),則該文件就會(huì)具有4個(gè)保護(hù)組,每個(gè)組具有4個(gè)塊-3個(gè)內(nèi)容塊,和一個(gè)奇偶校驗(yàn)塊??梢栽谄渖戏植嘉募难b置的最大數(shù)量max被設(shè)為4。
這樣T={A,B,C,D,E,F(xiàn),G,H}W={A,B,C,D}接下來,假設(shè)裝置F,G和H停機(jī)了。這就表示G={A,B,C,D,E}為了構(gòu)建P,從集合W和G的交集得到的裝置被加到P。如果P仍舊沒有“max”數(shù)量的裝置,則從集合G和W!的交集得到的裝置被加到P,直到達(dá)到“max”數(shù)量。集合G和W!的交集中剩余的裝置被放到S中。在一個(gè)實(shí)施方案中,G和W!的交集中的裝置按照在前面具有更多自由空間來排序。
P={A,B,C,D}S={F}使用上述的變體(skew),該最優(yōu)文件布局將為
這樣,對(duì)于奇偶校驗(yàn)組1O={A,B,C,D}N={E}C={{A,B},{B,C},{C,D},{0,0}}對(duì)于奇偶校驗(yàn)組2O={D,E,A,B}N={C}
C={{D,A},{A,B},{B,C},{0,0}}對(duì)于奇偶校驗(yàn)組3O={B,C,D,E}N={A}C={{C,D},{D,A},{A,B},{0,0}}對(duì)于奇偶校驗(yàn)組4O={E,A,B,C}N={D}C={{B,C},{C,D},{D,A},{0,0}}奇偶校驗(yàn)組1現(xiàn)在被用作使用RETURN(返回)優(yōu)先選擇來選擇裝置的例子。重新調(diào)用O={A,B,C,D}這樣,F(xiàn)中的第一塊被分配給A,F(xiàn)中的第二塊被分配給B,F(xiàn)中的第三塊被分配給C,并且F中的第四塊被分配給D。
為每個(gè)保護(hù)組調(diào)用該選擇處理會(huì)導(dǎo)致下面的分配。
F1={A,B,C,D}F1={D,E,A,B}F1={B,C,D,E}F1={E,A,B,C}這樣,該塊就被存儲(chǔ)在與如果該文件首先被寫入他們所處的位置一樣的位置-與上面討論的最優(yōu)文件布局中相同的布局。
4.示例偽碼下面提供了一個(gè)偽碼的例子,其用于舉例說明選擇處理的實(shí)現(xiàn)方式。但是應(yīng)該認(rèn)識(shí)到,該例子并不表示限制了本發(fā)明的范圍,而僅僅是為特定實(shí)施方案提供細(xì)節(jié)。
2003 ISILON SYSTEM,INC.(易斯龍系統(tǒng)公司)為保護(hù)組進(jìn)行裝置選擇----------------------------------------------------------&表示交集;|表示并集;!表示反。
該算法試圖為保護(hù)組提供一個(gè)F,即一組裝置選擇。F中的所有元素必須是唯一的。F是一個(gè)陣列,被索引為F[i]。對(duì)于FEC保護(hù)(奇偶校驗(yàn)保護(hù))文件,F(xiàn)描述了對(duì)于保護(hù)組中簇的集合的devid選擇,按照貫穿整個(gè)文件的偏移。對(duì)于鏡像文件,F(xiàn)描述了對(duì)于保護(hù)組中所有鏡像的devid選擇。
該算法考慮多個(gè)輸入group_index是保護(hù)組的索引。每個(gè)文件都被分成了多個(gè)不連接的保護(hù)組,該保護(hù)組可以是被分配的索引。
G是所有“up”裝置的集合——即可用的裝置并且沒有經(jīng)歷過故障條件。
W是已經(jīng)填滿了文件的裝置的集合。它是個(gè)有序列表。
X是描述如何布局文件的策略。對(duì)于每個(gè)X,都有一個(gè)值dev(x),該值表示根據(jù)X,保護(hù)文件所需裝置的數(shù)量。需要注意的是,這也是保護(hù)組中元素的數(shù)量,因此|F|=dev(x)。x也提供所希望的文件寬度widthpolicy(X),其為在理想條件下如果|G|>=widthpolicy(X)該文件應(yīng)該填滿的裝置的數(shù)量。需要注意的是我們要求widthpolicy(X)>dev(X)。
C描述了現(xiàn)存的布局。它描述了對(duì)于每個(gè)F[i],裝置的集合,在該裝置上,存儲(chǔ)有F[i]所需的拷貝,如果有的話。該裝置的集合可以被當(dāng)作C[i]來發(fā)送。|C|==|F|。
R為算法的目標(biāo)。它描述了算法是否應(yīng)該R==Repair(修復(fù))當(dāng)獲得F是盡量最小化塊的移動(dòng)。
R==Rebalance(重新均衡)在獲得F時(shí)盡量實(shí)現(xiàn)|W|=widthpolicy(X)。
1.通過驗(yàn)證G適于被提交的X開始。如果|G|<dev(x),則算法無法完成,并返回一個(gè)錯(cuò)誤給調(diào)用者,允許其重試一個(gè)不同的X。
我們希望建立一個(gè)優(yōu)選裝置的有序集合P,從中可以選擇F。建立有序W的子集P如同P=G&W因?yàn)镚中的所有成員并沒有在W中,因此初始建立一個(gè)備用陣列,并按照它們的自由空間的量進(jìn)行排序S=G&!WP和S都是有序的?,F(xiàn)在從S中增加P成員,直到|P|==wpwhile(|P|<widthpolicy(X)and|S|>0){x=s.pop()//從前面取出P.append(x)//加至末端}|P|現(xiàn)在表示由文件填滿的裝置的理想列表。其大小應(yīng)該盡可能的接近widthpolicy(X),給定的G,但是,當(dāng)然我們可以使得|G|<widthpolicy(X)。
2.根據(jù)保護(hù)組索引計(jì)算cycle_offset,以允許循環(huán)鏡像和奇偶校驗(yàn)。從P中的cycle_offset開始,點(diǎn)數(shù)裝置,并將其加入到最優(yōu)集合O中cycle_offset=group_index%|P|for(i=0;i<dev(x);i++)O.append(P[(cycle_offset+i)%|P|])定義N作為次最優(yōu)裝置N=P-O注意-N,O和S是不相連的-N|O==P3.重復(fù)現(xiàn)存的當(dāng)前deVids,盡量選擇每個(gè)F[i],使得R能被實(shí)現(xiàn)。對(duì)于R==Repair,我們愿意最小化塊移動(dòng)。對(duì)于R==Rebalance,我們愿意使得F接近O。
對(duì)于R==Repair(修復(fù)),定義一個(gè)選擇陣列的有序集合A={O,N,S}對(duì)于R==Rebalance(重新均衡),簡單定義A為A=O在根據(jù)R適當(dāng)選擇了A之后,我們可以如下實(shí)現(xiàn)Ffor SET in A{for(i=0;I<|F|;i++){
x=C[i]&SET //對(duì)現(xiàn)存的devids與所希望的進(jìn)行交集if (|x|>0){y=x.first()//得到這些中的一個(gè)SET=SET-y //防止它被重新考慮F[i]=y(tǒng)//把它放入F中}}}4.我們?nèi)耘f不得不在F中為每個(gè)F[i]選擇devids,其中沒有合適的選擇來自從C[i],因此我們?nèi)缦聦?shí)現(xiàn)Ffor(i=0;i<|F|;i++){if (F[i]unassigned){F=O.pop();}}E.偽碼的例子下面提供了一個(gè)偽碼的例子,用于示例性的實(shí)現(xiàn)重新條帶化處理。但是應(yīng)該認(rèn)識(shí)到,該例子并不表示限制了本發(fā)明的范圍,而僅僅是提供了一個(gè)實(shí)施方案的細(xì)節(jié)。
2003 ISILON SYSTEM,INC.(易斯龍系統(tǒng)公司)該部分描述了文件系統(tǒng)的部件,而該系統(tǒng)確定塊是如何在裝置層(BAM中)分配的。在磁盤和塊層的分配是由LBM分配代碼處理的。下面描述的模塊將主要由BAM的寫入和重新條帶化部件使用,以找出在寫入和重新條帶化處理期間新的塊應(yīng)該被分配到哪里。但是,API一般足夠用于其它部件所需。
該函數(shù)位于bam_layout.c中,并且最初由新寫入和重新條帶化代碼使用??梢詫?duì)其它的模塊例如DFM進(jìn)行修改,以備將來需要的時(shí)候使用int bam_layout_protection_group(const struct gmp_group_info *gi,
long*free_cluster_counts,enum layout_goal_t goal,struct protection_level*protection,int width_policy,ifs_lbn_t start_lbn,int num_clusters,int curr_devid_depth,ifs_devid_t**curr_devids,u_int8_t*alloc_counts,ifs_devid_t*result_devids,ifs_baddr_t*result_pbas);概述該函數(shù)根據(jù)特定的保護(hù)設(shè)置來為計(jì)算用于一個(gè)單一保護(hù)組的布局信息。該函數(shù)被一個(gè)完整的保護(hù)組調(diào)用(根據(jù)特定的保護(hù)設(shè)置)。布局推薦將會(huì)以用于組中每個(gè)簇的單一裝置id的形式被返回一個(gè)輸出參數(shù)(result_devids)。另一個(gè)輸出參數(shù)(result_pbas)將包括用于每個(gè)將要在分配時(shí)使用前一塊地址。
參數(shù)Gi當(dāng)前簇組信息。
free_cluster_counts用于組中每個(gè)節(jié)點(diǎn)的空閑簇?cái)?shù)量。這就允許布局引擎根據(jù)他們當(dāng)前的空閑空間決定使用那個(gè)裝置。該陣列在長度上應(yīng)該正好‘dset_size(&gi->group)’。
Ip信息節(jié)點(diǎn)。這主要用于訪問寬度裝置信息以及前一塊地址信息。
Goal指定該布局操作目標(biāo)的標(biāo)志。該標(biāo)記給布局引擎一個(gè)清楚的目標(biāo),指出何時(shí)確定如何對(duì)塊布局。當(dāng)前有3個(gè)目標(biāo)LAYOUT_REPAIR這告訴布局引擎最高的優(yōu)先級(jí)就是最小化塊移動(dòng)。該布局引擎將只會(huì)把新的devid分配給要求保持我們的保護(hù)限制的地方(應(yīng)該在不同的裝置上鏡像等等)。只有當(dāng)非常需要的時(shí)候才會(huì)移動(dòng)現(xiàn)存的塊。這就是在驅(qū)動(dòng)或節(jié)點(diǎn)出現(xiàn)故障之后進(jìn)行修復(fù)時(shí)可能被使用的目標(biāo)。由于在這種情況下仍然會(huì)存在還沒有被分配的簇,因此這就是可能才寫路徑(bam_new_write)時(shí)使用的目標(biāo)。在所有的情況下,這至少與其它的兩個(gè)目標(biāo)一樣快,甚至在很多情況下“更”快。
LAYOUT_REBALANCE這告訴該布局引擎最優(yōu)的裝置應(yīng)該被用于布局。可是,這些裝置可能被打亂避免移動(dòng)現(xiàn)存的塊。通過這種方式,該系統(tǒng)在可能的時(shí)候避免移動(dòng)塊,但是當(dāng)需要均衡校正數(shù)量的點(diǎn)中的文件時(shí)就會(huì)移動(dòng)塊。在很多情況下,這不會(huì)與LAYOUT_REPAIR一樣快;但是,這會(huì)導(dǎo)致更優(yōu)化和更好的均衡文件布局。當(dāng)由于增加了新的節(jié)點(diǎn)而要改變保護(hù)設(shè)置或重新均衡時(shí),很可能由重新條帶化器采用該目標(biāo)。
LAYOUT_RETUNE這告訴該布局引擎優(yōu)化布局是最高優(yōu)先級(jí)。不會(huì)注意到現(xiàn)存塊的位置,并且任何或全部現(xiàn)存的塊都可以被完全移動(dòng)到布局文件。如果我們一直從事于一個(gè)相當(dāng)好的布局文件,則就不需要移動(dòng)塊,因?yàn)樗鼈冋梦挥谶m當(dāng)?shù)难b置上,但是沒有試圖完成這個(gè)。事實(shí)上,如果塊正好沒有位于最優(yōu)裝置上,調(diào)用者就會(huì)希望重新分配塊,以磁盤上的標(biāo)記。該目標(biāo)在多數(shù)情況下是最慢的并且永遠(yuǎn)不會(huì)比LAYOUT_REPAIR和LAYOUT_REBALANCE快。調(diào)用者選擇這個(gè)目標(biāo)將會(huì)是類似于用于讀出性能的整理和優(yōu)化的“調(diào)諧”操作。根據(jù)“按需”原則或者在正常文件系統(tǒng)操作期間的背景下運(yùn)行這些處理。
Protection(保護(hù))希望的保護(hù)設(shè)置。這可能于信息節(jié)點(diǎn)中的保護(hù)設(shè)置不相同(例如,當(dāng)奇偶校驗(yàn)不可能時(shí)如果調(diào)用者正在考慮以2x書寫一個(gè)奇偶校驗(yàn)文件)。在確定往哪里放置塊的時(shí)候,該布局代碼就會(huì)使用該保護(hù)設(shè)置。也會(huì)就忽略信息節(jié)點(diǎn)本身中的保護(hù)設(shè)置Width_policy用于文件的希望寬度策略。這是整個(gè)文件上應(yīng)該包括的節(jié)點(diǎn)的目標(biāo)數(shù)。在很多情況下這是無法達(dá)到的,但是布局引擎可以努力實(shí)現(xiàn)該策略。
start_lbn區(qū)域中的第一個(gè)lbn。由于該函數(shù)要求在其上運(yùn)行的保護(hù)組,因此這將是一個(gè)保護(hù)組的開始。start_lbn提供一個(gè)容易的方式來計(jì)算變形,允許我們圍繞簇旋轉(zhuǎn)數(shù)據(jù)和奇偶校驗(yàn)信息。該lbn還可以被用于標(biāo)識(shí)最后結(jié)構(gòu)中的特定塊。
num-cluster將要被布局的保護(hù)組中所有簇的數(shù)量。例如,在3+1保護(hù)設(shè)置中,每個(gè)保護(hù)組包括4個(gè)簇,而3x保護(hù)組中包括3個(gè)簇。num-cluster應(yīng)該與保護(hù)參數(shù)完全一致。如果不一致,EINVAL就會(huì)被返回。需要注意的是,num-cluster參數(shù)定義了下三個(gè)參數(shù)陣列的長度curr_devids,alloc_counts,以及result_devids。
curr_devids每個(gè)簇中第一個(gè)被分配的塊的devid。這是一個(gè)長度恰好為‘num_clusters’的2維陣列。該第二維允許調(diào)用者為每個(gè)將要被布局的簇提供另一個(gè)現(xiàn)存的位置。請(qǐng)參看本文件中接下來的‘curr_devids’以對(duì)該參數(shù)進(jìn)行更設(shè)徹底的討論。需要注意的是,該陣列中的很多元素應(yīng)該被置為0,表示當(dāng)前沒有塊被分配在那個(gè)特定的簇中。該布局引擎將試圖將新的塊放置在現(xiàn)存的塊已經(jīng)被分配的位置,除非該布局限制這么做。需要注意的是,該奇偶校驗(yàn)簇應(yīng)該被放置在這個(gè)以及其它的陣列參數(shù)中。
alloc_counts對(duì)于每個(gè)簇,該調(diào)用者想要分配的塊的數(shù)量。這允許布局引擎將全部分配完的組保留在原來的位置,而移動(dòng)被部分分配并無法在該當(dāng)前裝置上完成的簇(因?yàn)樵撗b置已經(jīng)用光了它的自由空間)。只有當(dāng)一個(gè)或多個(gè)裝置接近容量時(shí)才會(huì)考慮該參數(shù)。該參數(shù)在長度上應(yīng)該與‘num_clusters’完全一致。
result_devids該輸出參數(shù)由調(diào)用者分配,并且在長度上應(yīng)該與‘num_clusters’完全一致。它包括用于保護(hù)組中每個(gè)簇大推薦devid。將來,該布局引擎也會(huì)推薦特定的驅(qū)動(dòng)器。該調(diào)用者將會(huì)為每個(gè)簇檢查推薦的devid。如果該devid不等于已經(jīng)在該簇中被分配的塊的devids,則就要移動(dòng)這些現(xiàn)存的塊,以符合布局限制。新塊被分配在推薦的devid上。再一次,任何奇偶校驗(yàn)簇都被列在這個(gè)或其它陣列參數(shù)的最后,并按照升序的順序列出鏡像。
Result_pbas這個(gè)輸出參數(shù)由調(diào)用者分配,并且在長度上與‘num_clusters’相同。它包括用于每個(gè)簇的前一塊地址(pba),它隨著塊分配請(qǐng)求一塊被發(fā)出,用于優(yōu)化連續(xù)的分配。如果沒有前一數(shù)據(jù)和奇偶校驗(yàn)塊已經(jīng)被分配在該節(jié)點(diǎn)上,則這些pba中的一些可以為零。如果非連續(xù)寫入已經(jīng)防止我們很容易的在那個(gè)塊上發(fā)現(xiàn)前一個(gè)被分配的塊,則這些也可能是零。與其它的陣列參數(shù)一樣,在奇偶校驗(yàn)簇位于陣列的最后,并按照升序的順序列出鏡像。
Curr_devids_Format上面提到的該curr_devids變量允許調(diào)用者與布局引擎通信關(guān)于保護(hù)組中當(dāng)前被分配塊的信息。該布局引擎將考慮該信息并試圖盡可能的移動(dòng)新塊,同時(shí)仍舊滿足被請(qǐng)求的“目標(biāo)”。
與其它陣列參數(shù)一樣,該curr_devid陣列在長度上與‘num_clusters’相同(恰好是一個(gè)保護(hù)組的大小)。在采用奇偶校驗(yàn)的情況下,該奇偶校驗(yàn)簇被列在保護(hù)組的最后,并且按照升序的順序列出鏡像。
使得該參數(shù)與其它陣列不一樣的地方就在于這是一個(gè)2維陣列。對(duì)于新保護(hù)組中的每個(gè)簇,該陣列包括1列devids(就是‘num_clusters’的長度)。每個(gè)列中都包括現(xiàn)存數(shù)據(jù)塊的鏡像(因此,該陣列的行數(shù)幾乎一直等于就布局中數(shù)據(jù)鏡像的數(shù)量)。通過這種方式,該調(diào)用者可以告訴布局引擎,現(xiàn)存的簇具有關(guān)于裝置A、B和C的鏡像。該布局引擎就會(huì)知道了,如果為那個(gè)簇選擇A、B或C,則該調(diào)用者就有可能不得不移動(dòng)當(dāng)前已經(jīng)分配的塊。
僅僅幾個(gè)例子就可以使得這一點(diǎn)更清楚。假設(shè)系統(tǒng)將一個(gè)文件從3x重新條帶化為3+1。該系統(tǒng)要求布局引擎布局一個(gè)3+1保護(hù)組(包括文件中的第一個(gè)3簇?cái)?shù)據(jù))。該系統(tǒng)通過分配具有3行、4列的陣列來重構(gòu)curr_devid陣列。4列是因?yàn)樾碌谋Wo(hù)組有4個(gè)簇,以及3行是因?yàn)槊總€(gè)現(xiàn)存的會(huì)有3個(gè)鏡像。
curr_devids[4][3][1][2][3]
[2][3][4]
[3][4][5]
需要注意的是,第4列為空是因?yàn)槟壳皼]有奇偶校驗(yàn)塊被分配,但是每個(gè)數(shù)據(jù)簇都具有3個(gè)現(xiàn)存的鏡像。這告訴該布局引擎它所需要關(guān)于當(dāng)前文件布局的任何事情。
另一個(gè)例子,假設(shè)該系統(tǒng)將一個(gè)文件從3+1保護(hù)重新條帶化為3x保護(hù)。該系統(tǒng)將要生成一個(gè)其長度為3的curr_devids列表(因?yàn)槲覀冃碌?x保護(hù)組將有3個(gè)簇),并且深度為1個(gè)簇(因?yàn)榕f的數(shù)據(jù)并沒有被鏡像)。
curr_devids[3][1][2][3]這說明如果當(dāng)前簇被鏡像了,則只需要額外的行,并且系統(tǒng)想要告訴布局引擎現(xiàn)存的鏡像位于哪里。就像前面的狀態(tài),第2個(gè)維數(shù)將幾乎一直被設(shè)置成為文件的舊鏡像數(shù)量。如果舊的文件是奇偶校驗(yàn)保護(hù),這將為1。
當(dāng)從一個(gè)鏡像設(shè)置重新條帶化至另一個(gè)時(shí),該結(jié)構(gòu)的有效功率展示了其本身。例如,假設(shè)該系統(tǒng)將一個(gè)文件從5x重新條帶化為2x。該系統(tǒng)會(huì)生成一個(gè)長度為2(因?yàn)槲覀兊男卤Wo(hù)組將包括2個(gè)簇)、深度為5(因?yàn)槊總€(gè)現(xiàn)存數(shù)據(jù)簇都具有5個(gè)鏡像)的curr_devids陣列。該布局引擎需要直到現(xiàn)存鏡像的位置使得它能夠選擇最好的2個(gè)來保持curr_devids[2][5][1][1][2][2][3][3][4][4][5][5]需要注意的是,在這種情況下,一些信息是冗余的,因?yàn)樵撓到y(tǒng)僅僅討論1個(gè)簇(其被鏡像5次)。可是,這個(gè)結(jié)構(gòu)對(duì)于布局引擎來說是很容易理解的。所有的引擎都注意的事實(shí)就是它可以為第一鏡像選擇第一列的任何成員,并且為第二鏡像選擇第二列的任何成員,并且最終的布局將會(huì)要求沒有數(shù)據(jù)塊移動(dòng)。這種格式把它需要進(jìn)行有效的布局決定的信息提供給布局引擎。
在大部分時(shí)間內(nèi),當(dāng)寫入正常文件時(shí),該陣列將會(huì)非常簡單。只有當(dāng)重新條帶化時(shí)才會(huì)需要額外的復(fù)雜性,或當(dāng)裝置不可用時(shí),進(jìn)行恢復(fù)的書寫。例如,如果寫入3+1文件中的第3個(gè)簇,則該curr_devids就簡單為curr_devids[4][1][1][2]
[4]類似地,如果寫入寫入3x文件的第3個(gè)簇,則陣列就可以簡單為curr_devids[3][1][2]
在這些情況下,現(xiàn)存的保護(hù)設(shè)置正好與新設(shè)置一樣,因此該系統(tǒng)能夠傳輸一個(gè)平面陣列中的現(xiàn)存布局信息。
返回值0成功。該輸出參數(shù)包括用于需要被分配或移動(dòng)的塊的裝置ID,并且沒有不需要移動(dòng)的塊。每個(gè)要求分配的簇將有一個(gè)相關(guān)的前一塊地址(pba),用于時(shí)間分配調(diào)用。
EROFS在不違反布局限制的情況下,沒有足夠的可用裝置來布局該被請(qǐng)求的塊。該調(diào)用者可以返回這個(gè)錯(cuò)誤給它們的調(diào)用者,或者采用另一種希望的保護(hù)設(shè)置來調(diào)用bam_layout_protection_group()。
EINVAL無效參數(shù)。例如,如果指定的‘num_clusters’不等于一個(gè)完整的保護(hù)組,則該錯(cuò)誤就會(huì)被返回。在調(diào)試結(jié)構(gòu)中,它可以由布局模塊中的一個(gè)斷言失敗來完成,以幫助跟蹤壞的調(diào)用者。該錯(cuò)誤代碼并不期望正常的操作,并且指示一個(gè)編碼錯(cuò)誤。
偽碼該文檔描述了BAM級(jí)布局模塊的基本實(shí)現(xiàn)方式。
階段1根據(jù)組信息,寬度需求以及總裝置自由塊統(tǒng)計(jì),形成了一列有足夠的空間以供使用的可用裝置。系統(tǒng)沒有空間或者太多的裝置無法在希望的保護(hù)層進(jìn)行寫入的情況將在這里說明,并且會(huì)把錯(cuò)誤返回給調(diào)用者。
階段2從裝置列表中把不同的devid分配給保護(hù)組中的每個(gè)簇。如果已經(jīng)有塊被分配在特定裝置上,則該系統(tǒng)會(huì)試圖分配devid,使得現(xiàn)存的塊不需要被移動(dòng)。這可能或不可能取決于現(xiàn)存的塊布局以及當(dāng)前可用的裝置。需要注意的是,該目標(biāo)參數(shù)將會(huì)扮演一個(gè)重要角色。如果該目標(biāo)為LAYOUT_REPAIR,則每一個(gè)企圖都會(huì)避免移動(dòng)塊。如果該目標(biāo)為LAYOUT_REBALANCE,則系統(tǒng)就會(huì)避免移動(dòng)塊,但是如果需要均衡文件時(shí)就不會(huì)這樣做。最后如果該目標(biāo)為LAYOUT_RETUNE,則會(huì)計(jì)算最優(yōu)布局,而不考慮現(xiàn)存塊在哪里。
階段3已經(jīng)為每個(gè)簇分配了一個(gè)devid,則該系統(tǒng)為了分配的目的而為每個(gè)簇分配一個(gè)pba。這通過查看結(jié)構(gòu)信息節(jié)點(diǎn)中的pba列表來完成,其中該結(jié)構(gòu)信息節(jié)點(diǎn)會(huì)給出分配在每個(gè)裝置上的最后的塊的塊地址。該系統(tǒng)為每個(gè)簇獲取正確的一個(gè)并完成。細(xì)微的區(qū)別之處就在于該系統(tǒng)系統(tǒng)希望數(shù)據(jù)塊使用數(shù)據(jù)pba以及奇偶校驗(yàn)塊使用奇偶校驗(yàn)pba。他們都被單獨(dú)存儲(chǔ)在結(jié)構(gòu)信息節(jié)點(diǎn)中,所以可以得出正確的列表。
問題1)沒有磁盤空間該算法的一個(gè)顯著問題就是當(dāng)一些或全部節(jié)點(diǎn)都接近容量的時(shí)候該怎么辦。如果可能,系統(tǒng)將避免把裝置推薦給將會(huì)在分配中導(dǎo)致ENOSPC錯(cuò)誤的調(diào)用者。如果沒有陣列的狀態(tài)會(huì)發(fā)生改變,則這些錯(cuò)誤將不會(huì)引發(fā)一個(gè)系統(tǒng)調(diào)用重新開始,并且會(huì)通過所有的方式被反饋給用戶。當(dāng)我們實(shí)際上正在把devids分配給結(jié)果列表時(shí),這個(gè)問題最好在階段2中解決。那時(shí),我們能夠檢查那個(gè)裝置上可用的磁盤空間(記著我們無法訪問的保留空間量)。下面就是該信息是如何影響各個(gè)情況的LAYOUT_RETUNE在行為上沒有改變。該情況之處無論何種情況下的最優(yōu)布局。如果該系統(tǒng)給出很少最優(yōu)布局,則機(jī)會(huì)就是不會(huì)比已經(jīng)可用的要好。
LAYOUT_REPAIR/LAYOUT_REBALANCE如果該系統(tǒng)被分配了一個(gè)與被檢查的current_devid相匹配的devid,則該系統(tǒng)就不需要擔(dān)心自由空間。該系統(tǒng)已經(jīng)分配了被分配在哪里的塊,因此該系統(tǒng)或者不需要移動(dòng)它們中的任何一個(gè),或者只需要分配一個(gè)新的。在這種情況下,系統(tǒng)希望移動(dòng)盡可能少的塊,因此留下了這些與他們一樣的devids。
當(dāng)系統(tǒng)想要把一個(gè)devid分配給一個(gè)空槽(表示沒有用于那個(gè)簇的當(dāng)前devid)時(shí),查看用于那個(gè)裝置的自由空間。如果它幾乎滿了,則試圖找出有更多自由空間的另一個(gè)優(yōu)選裝置,并用它替換。如果所有的優(yōu)選裝置都幾乎滿了,則從優(yōu)選和備用裝置列表中分配出具有最大量自由空間的裝置。
需要注意的是,并沒有從布局引擎API返回ENOSPC。因?yàn)閺倪h(yuǎn)程裝置檢索這些數(shù)量會(huì)花費(fèi)一些時(shí)間,因此自由空間有一點(diǎn)過時(shí)了。當(dāng)空間緊密時(shí),系統(tǒng)就會(huì)根據(jù)現(xiàn)存的量來推薦最有希望的裝置。在最壞的情況下,在試圖進(jìn)行分配時(shí),調(diào)用者會(huì)得到了一個(gè)ENOSPC。
算法偽碼intbam_layout_protection_group(gi,free_clusters,ip,goal,protection,width_policy,start_lbn,num_clusters,curr_devid_depth,curr_devids,alloc_counts,*result_devids,*result_pbas){/*從dinode中得到當(dāng)前寬度裝置列表*//*從列表中移除n個(gè)停機(jī)裝置*//*計(jì)算max_width(MAX_WIDTH-n).*//*將所有剩余的UP裝置加入到列表中*/while(width device list size<UP device list size){/*增加具有最自由簇的UP裝置*/}/**在長度上截?cái)嗔斜碇羗ax_width。這防止我們溢出dinode寬度裝置限制。
*//*計(jì)算preferred_width以及min_width,使用width_policy以及所希望的保護(hù)參數(shù)*//*驗(yàn)證我們具有足夠的可用裝置。*/if(not)返回EROFS;/**在這一點(diǎn)上,我們具有我們可能會(huì)使用的所有在線裝置的列表。在列表的開始就是目前該文件正在使用的裝置,接下來的就是按照可用自由空間排序的剩余裝置
*//**將該表被分成兩部分。該第一子列表從我們的組列表開始,并在長度上恰好為preferred_width,第二子列表包括該主列表的剩余部分。我們稱第一列表為“preferred_devices”(優(yōu)選裝置),第二列表為“spare_device”(備用裝置)。第二列表可以為空。
*//*現(xiàn)在開始布局保護(hù)組。*//*明智檢查num_clusters(簇?cái)?shù))以及alloc_counts(分配數(shù))。*/If(insane)/*我們需要多個(gè)保護(hù)組的全部,并且alloc_counts應(yīng)該在0和16之間。
*/返回EINVAL;/*計(jì)算start_lbn(保護(hù)組中的第一個(gè)lbn)*//*使用start_lbn計(jì)算group_number。*//*清空停機(jī)的current_devids的元素。*//*清空current_devids中的復(fù)制裝置。*//**在preferre_device(可能只是(group_number%列表大小))中計(jì)算start_offset。這將會(huì)注意變體。
*//**從preferred_list中的start_offset開始,單步調(diào)試用于每個(gè)我們正在分配的簇的列表,并將每個(gè)devid復(fù)制到新的列表中(如果需要的話,環(huán)繞優(yōu)選列表的開始)。該新的子列表將由optimal_device列表調(diào)用。
*//*根據(jù)調(diào)用者指定的目標(biāo)分配devids*/switch(goal){
case LAYOUT_REPAIR/*避免塊移動(dòng)。*/error=bam_layout_repair();break;case LAYOUT_REBALANCE/*確保均衡布局。*/error=bam_layout_rebalance();break;case LAYOUT_RETUNE/*優(yōu)化布局。*/error=bam_layout_retune();break;defaultASSERT(0);};/*幾乎完成!每個(gè)簇現(xiàn)在應(yīng)該被分配一個(gè)devids。
*//*現(xiàn)在,我們必須選擇前前的塊地址...*/for(each cluster in the protection group){/*將pba初始化為zero_baddr。*//*確定這是否就是一個(gè)奇偶校驗(yàn)或數(shù)據(jù)簇。*//*從結(jié)構(gòu)信息節(jié)點(diǎn)中獲取適當(dāng)?shù)膒ba*//*查找可用的pba.*/for(each item in the pba list){/**如果devid與用于該簇的推薦的devid匹配,則使用該pba,并終止*/}
}/*現(xiàn)在我們真正完成了*/}intbam_layout_repair(){/*分配現(xiàn)存的devid到任何可能的地方。*//*用來自最優(yōu)列表中的devids填滿空槽。*/}intbam_layout_rebalance(){/*不存在沒有出現(xiàn)在最優(yōu)列表中的devids。*//*如果需要最小化現(xiàn)存塊的移動(dòng),重新配置最優(yōu)列表并分配輸出*/}intbam_layout_retune(){/*分配最優(yōu)列表到輸出,沒有問題被問起*/IX.版權(quán)信息該專利文檔公開內(nèi)容的一部分包括服從版權(quán)保護(hù)的材料。該版權(quán)所有者不反對(duì)通過專利文檔或?qū)@_中的一個(gè)來傳真復(fù)制品,因?yàn)樗霈F(xiàn)在專利商標(biāo)局專利文件或記錄中,但是另外保留所有的版權(quán)。
X.結(jié)論雖然對(duì)本發(fā)明的某些實(shí)施方案進(jìn)行了描述,但是這些實(shí)施方案僅僅通過例子的方式進(jìn)行了表示,并且并不會(huì)限制本發(fā)明的范圍。因此,應(yīng)該根據(jù)下面的權(quán)利要求及其等同物來定義本發(fā)明的范圍和寬度。
權(quán)利要求
1.一種同多個(gè)智能存儲(chǔ)裝置進(jìn)行通信的分布式文件系統(tǒng),其中所述分布式文件系統(tǒng)包括一個(gè)消息傳遞系統(tǒng)并被設(shè)置為存儲(chǔ)和管理與存儲(chǔ)在所述分布式文件系統(tǒng)上的文件和目錄相關(guān)的元數(shù)據(jù),使得所述元數(shù)據(jù)包括元數(shù)據(jù)數(shù)據(jù)塊的位置、內(nèi)容數(shù)據(jù)塊、以及奇偶校驗(yàn)數(shù)據(jù)塊,并且所述分布式文件系統(tǒng)還被設(shè)置為對(duì)數(shù)據(jù)文件重新條帶化。
2.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng),進(jìn)一步被設(shè)置為在對(duì)數(shù)據(jù)文件進(jìn)行重新條帶化期間使數(shù)據(jù)的移動(dòng)最小化。
3.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng),進(jìn)一步被設(shè)置為對(duì)數(shù)據(jù)文件重新條帶化,以改變保護(hù)方案。
4.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng),進(jìn)一步被設(shè)置為對(duì)數(shù)據(jù)文件重新條帶化,以增加額外的存儲(chǔ)裝置。
5.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng),進(jìn)一步被設(shè)置為對(duì)數(shù)據(jù)文件重新條帶化,以響應(yīng)出現(xiàn)故障的存儲(chǔ)裝置。
6.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng),進(jìn)一步被設(shè)置為對(duì)數(shù)據(jù)文件重新條帶化,以移除現(xiàn)存的存儲(chǔ)裝置。
7.一種用于對(duì)數(shù)據(jù)進(jìn)行重新條帶化的方法,所述數(shù)據(jù)保存在智能分布式文件系統(tǒng)內(nèi)的多個(gè)智能存儲(chǔ)裝置之中,所述方法包括識(shí)別至少一個(gè)其上能夠存儲(chǔ)來自現(xiàn)存文件的數(shù)據(jù)簇的智能存儲(chǔ)裝置;將所述簇存儲(chǔ)在被識(shí)別出的智能存儲(chǔ)裝置上;確定所述簇被成功地存儲(chǔ);以及更新與所述數(shù)據(jù)簇相關(guān)的元數(shù)據(jù),以反映出新的分配。
8.根據(jù)權(quán)利要求7所述的方法,還包括根據(jù)新的保護(hù)方案來分配智能存儲(chǔ)裝置。
9.根據(jù)權(quán)利要求8所述的方法,還包括更新元數(shù)據(jù),以反映出新的保護(hù)方案。
10.根據(jù)權(quán)利要求7所述的方法,還包括響應(yīng)于智能存儲(chǔ)裝置的故障來分配智能存儲(chǔ)裝置。
11.根據(jù)權(quán)利要求7所述的方法,其中分配智能存儲(chǔ)裝置包括使數(shù)據(jù)移動(dòng)最小化。
12.根據(jù)權(quán)利要求7所述的方法,其中分配智能存儲(chǔ)裝置包括實(shí)施保護(hù)方案限制。
13.根據(jù)權(quán)利要求7的方法,其中分配智能存儲(chǔ)裝置包括試圖結(jié)合被指定的優(yōu)先選擇。
14.一種用于對(duì)數(shù)據(jù)重新條帶化的系統(tǒng),所述系統(tǒng)包括多個(gè)智能裝置,所述智能裝置被設(shè)置為將數(shù)據(jù)塊存儲(chǔ)在分布于智能裝置中的數(shù)據(jù)條中;分配模塊,其被設(shè)置為將數(shù)據(jù)塊分配給智能裝置;請(qǐng)求模塊,其被設(shè)置為發(fā)送指令給智能裝置,以在分配完數(shù)據(jù)塊之后對(duì)這些數(shù)據(jù)塊進(jìn)行存儲(chǔ);以及更新模塊,其被設(shè)置為在存儲(chǔ)完數(shù)據(jù)塊之后更新與數(shù)據(jù)塊相關(guān)的元數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述更新模塊被進(jìn)一步設(shè)置為確定所述數(shù)據(jù)塊是否被成功地存儲(chǔ)。
16.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述請(qǐng)求模塊被進(jìn)一步設(shè)置為確定所述數(shù)據(jù)塊是否被成功地存儲(chǔ)。
17.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述分配模塊被進(jìn)一步設(shè)置為使數(shù)據(jù)在多個(gè)智能裝置中的移動(dòng)最小化。
18.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述分配模塊被進(jìn)一步設(shè)置為遵守保護(hù)方案限制。
19.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述分配模塊被進(jìn)一步設(shè)置為試圖遵守被指定的優(yōu)先選擇。
20.一種對(duì)由數(shù)據(jù)塊構(gòu)成的數(shù)據(jù)進(jìn)行重新條帶化的方法,包括將數(shù)據(jù)塊分配給存儲(chǔ)單元;確定所述數(shù)據(jù)塊是否被存儲(chǔ)在所述存儲(chǔ)單元中;如果所述數(shù)據(jù)塊尚未駐留在所述存儲(chǔ)單元中,則將所述數(shù)據(jù)塊存儲(chǔ)在所述存儲(chǔ)單元中;以及如果該數(shù)據(jù)塊已經(jīng)被存儲(chǔ),則更新與所述數(shù)據(jù)塊相關(guān)的元數(shù)據(jù)。
21.根據(jù)權(quán)利要求20所述的方法,其中分配數(shù)據(jù)塊包括使數(shù)據(jù)在存儲(chǔ)單元中的移動(dòng)最小化。
22.根據(jù)權(quán)利要求20所述的方法,其中分配數(shù)據(jù)塊包括符合保護(hù)方案限制。
23.根據(jù)權(quán)利要求20所述的方法,其中分配數(shù)據(jù)塊包括試圖符合被指定的優(yōu)先選擇。
24.一種將數(shù)據(jù)塊分配給存儲(chǔ)單元的方法,包括識(shí)別可用的存儲(chǔ)單元;為每個(gè)數(shù)據(jù)塊選擇一個(gè)可用的存儲(chǔ)單元;以及為每個(gè)被選中的存儲(chǔ)單元確定相關(guān)的地址單元。
25.根據(jù)權(quán)利要求24所述的方法,還包括確定是否存在足夠的可用存儲(chǔ)單元。
26.根據(jù)權(quán)利要求24所述的方法,其中選擇可用的存儲(chǔ)單元包括使數(shù)據(jù)在存儲(chǔ)單元中的移動(dòng)最小化。
27.根據(jù)權(quán)利要求24所述的方法,其中選擇可用的存儲(chǔ)單元包括對(duì)保護(hù)方案限制的符合。
28.根據(jù)權(quán)利要求24的所述方法,其中選擇可用的存儲(chǔ)單元包括嘗試對(duì)被指定的優(yōu)先選擇的符合。
29.一種從一組存儲(chǔ)單元中選擇一存儲(chǔ)單元以用于將數(shù)據(jù)塊存儲(chǔ)在保護(hù)組中的方法,包括從一組存儲(chǔ)單元中識(shí)別出哪個(gè)存儲(chǔ)單元是與保護(hù)組相關(guān)的最優(yōu)存儲(chǔ)單元;以及選擇該最優(yōu)存儲(chǔ)單元。
30.根據(jù)權(quán)利要求29所述的方法,其中根據(jù)優(yōu)選的文件布局來確定哪個(gè)來自所述存儲(chǔ)單元組的存儲(chǔ)單元是最優(yōu)存儲(chǔ)單元。
31.一種為數(shù)據(jù)塊選擇存儲(chǔ)單元的方法,包括識(shí)別出其中當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元;識(shí)別出第一存儲(chǔ)單元中的一個(gè)最優(yōu)位置;確定一組最優(yōu)存儲(chǔ)單元;如果所述第一存儲(chǔ)單元是其中當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元中的一個(gè),則選擇所述第一存儲(chǔ)單元;以及如果所述第一存儲(chǔ)單元不是其中當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元中的一個(gè),則從所述最優(yōu)存儲(chǔ)單元組中選擇一個(gè)存儲(chǔ)單元。
32.根據(jù)權(quán)利要求31所述的方法,其中選擇最優(yōu)存儲(chǔ)單元組中的一個(gè)進(jìn)一步包括選擇最優(yōu)存儲(chǔ)單元組中的這樣一個(gè)存儲(chǔ)單元,它也是其中當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元中的一個(gè)。
33.一種具有存儲(chǔ)裝置的系統(tǒng),其包括有指令,當(dāng)所述指令被執(zhí)行時(shí),致使所述系統(tǒng)執(zhí)行以下方法識(shí)別其上將要存儲(chǔ)來自現(xiàn)存文件的數(shù)據(jù)簇的存儲(chǔ)裝置;將所述簇存儲(chǔ)在所述存儲(chǔ)裝置中;確定所述簇被成功地存儲(chǔ);以及更新與所述數(shù)據(jù)簇相關(guān)的元數(shù)據(jù)。
34.一種被設(shè)置為對(duì)數(shù)據(jù)文件重新條帶化的分布式文件系統(tǒng),所述系統(tǒng)包括用于對(duì)其上將存儲(chǔ)來自現(xiàn)存文件的數(shù)據(jù)簇的裝置進(jìn)行識(shí)別的裝置;用于在被識(shí)別出的裝置上存儲(chǔ)所述簇的裝置;用于確定所述簇被成功地存儲(chǔ)的裝置;以及用于更新與所述數(shù)據(jù)簇相關(guān)的元數(shù)據(jù)的裝置。
35.一種被設(shè)置為對(duì)一組由數(shù)據(jù)塊構(gòu)成的數(shù)據(jù)重新條帶化的分布式文件系統(tǒng),所述系統(tǒng)包括用于將所述數(shù)據(jù)塊分配給存儲(chǔ)單元的裝置;用于確定所述數(shù)據(jù)塊是否已經(jīng)駐留在所述被分配的存儲(chǔ)單元中的裝置;用于如果所述數(shù)據(jù)塊尚未駐留在所述分配的存儲(chǔ)單元中則將所述數(shù)據(jù)塊存儲(chǔ)在所述分配的存儲(chǔ)單元中的裝置;以及用于如果所述數(shù)據(jù)塊已經(jīng)被存儲(chǔ)在所述分配的存儲(chǔ)單元中則更新與所述數(shù)據(jù)塊相關(guān)的元數(shù)據(jù)的裝置。
全文摘要
用于對(duì)分布在一組智能存儲(chǔ)單元114中的文件重新條帶化的方法,其中用于特殊數(shù)據(jù)條的數(shù)據(jù)塊不需要被定位于存儲(chǔ)單元上的任何特定位置上,其中數(shù)據(jù)能夠在智能存儲(chǔ)單元中以最小的數(shù)據(jù)移動(dòng)而被重新條帶化,并且其中即使在重新條帶化數(shù)據(jù)期間出現(xiàn)了系統(tǒng)故障,數(shù)據(jù)也會(huì)得到保護(hù)并且是可恢復(fù)的。一個(gè)實(shí)施方案涉及一種為每個(gè)數(shù)據(jù)塊選擇一個(gè)存儲(chǔ)單元114的方法。該方法包括識(shí)別出當(dāng)前其中存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元114;在第一存儲(chǔ)單元中識(shí)別出一個(gè)最優(yōu)位置;確定一組最優(yōu)存儲(chǔ)單元;如果該第一存儲(chǔ)單元就是其中當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元中的一個(gè),則選擇該第一存儲(chǔ)單元;以及如果該第一存儲(chǔ)單元不是其中當(dāng)前存儲(chǔ)有數(shù)據(jù)塊的存儲(chǔ)單元的列表中的一個(gè),則從該最優(yōu)存儲(chǔ)單元組中選擇一個(gè)。本發(fā)明的另一個(gè)方面涉及一種重新條帶化存儲(chǔ)在一個(gè)智能分布式系統(tǒng)110的多個(gè)智能存儲(chǔ)裝置114中的數(shù)據(jù)的方法。該方法包括識(shí)別至少一個(gè)智能存儲(chǔ)裝置,其中來自現(xiàn)存文件的數(shù)據(jù)簇可以被存儲(chǔ)在該存儲(chǔ)裝置上;將該簇存儲(chǔ)在被識(shí)別出的智能存儲(chǔ)裝置上;確定該簇被成功地存儲(chǔ);以及更新與該數(shù)據(jù)簇相關(guān)的元數(shù)據(jù),以反映出新的分配。
文檔編號(hào)G06F3/06GK1692356SQ200380100380
公開日2005年11月2日 申請(qǐng)日期2003年11月14日 優(yōu)先權(quán)日2002年11月14日
發(fā)明者保羅·A·米克塞爾, 羅布·安德森, 阿龍·J·帕西, 彼得·約翰·戈德曼, 哈?!·坎, 達(dá)雷恩·P·斯卡克 申請(qǐng)人:易斯龍系統(tǒng)公司