節(jié)約資源型擴(kuò)展文件系統(tǒng)的制作方法
【專(zhuān)利摘要】根據(jù)一種實(shí)施方式,存儲(chǔ)系統(tǒng)的文件系統(tǒng)(FS)被分割成多個(gè)FS分區(qū),其中每個(gè)FS分區(qū)存儲(chǔ)數(shù)據(jù)文件的段。響應(yīng)于對(duì)訪(fǎng)問(wèn)所述FS分區(qū)的第一FS分區(qū)的輸入輸出(IO)請(qǐng)求,當(dāng)前處于訪(fǎng)問(wèn)就緒狀態(tài)的所述FS分區(qū)的第二FS分區(qū)被選擇。該第二FS分區(qū)然后被從訪(fǎng)問(wèn)就緒狀態(tài)移除。所述第一FS分區(qū)被帶入至訪(fǎng)問(wèn)就緒狀態(tài)中。
【專(zhuān)利說(shuō)明】節(jié)約資源型擴(kuò)展文件系統(tǒng)
[0001]相關(guān)申請(qǐng)
[0002]該申請(qǐng)涉及2011年3月31日提交的名稱(chēng)為“Time-Based Data Partitioning”的同時(shí)待審的美國(guó)專(zhuān)利申請(qǐng)N0.13/077,775,其全部?jī)?nèi)容通過(guò)弓I用被合并于此。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明的實(shí)施方式一般地涉及存儲(chǔ)系統(tǒng)的文件系統(tǒng)。特別地,本發(fā)明的實(shí)施方式涉及有效管理文件系統(tǒng)的資源。
【背景技術(shù)】
[0004]由原始數(shù)據(jù)(primary data)增長(zhǎng)和由新的工作量(如盤(pán)式備份)的出現(xiàn)而引起對(duì)建立更大存儲(chǔ)系統(tǒng)的需求的不斷增加。為了更好的性能和成本效率,傳統(tǒng)上被存儲(chǔ)在磁帶上的備份現(xiàn)在正被存儲(chǔ)在盤(pán)式存儲(chǔ)系統(tǒng)上。這種備份系統(tǒng)具有通常比傳統(tǒng)原始存儲(chǔ)系統(tǒng)(primary storage system)大幾倍的巨大占用空間(footprint),并且仍然不能滿(mǎn)足最大的企業(yè)客戶(hù)的需求。
[0005]不幸地,由于巨大內(nèi)存需求,擴(kuò)展文件系統(tǒng)容量不是微不足道的問(wèn)題,對(duì)于重復(fù)項(xiàng)消除系統(tǒng)(deduplicated system)尤其如此。重復(fù)項(xiàng)消除文件系統(tǒng)在內(nèi)存中為每個(gè)物理數(shù)據(jù)塊維持一些元數(shù)據(jù)。該元數(shù)據(jù)開(kāi)銷(xiāo)的范圍從對(duì)于最佳文件系統(tǒng)而言的每個(gè)塊幾個(gè)比特變化到對(duì)于更基本實(shí)施而言的超過(guò)十二字節(jié)。向系統(tǒng)增加內(nèi)存以擴(kuò)展容量并不是微不足道的。傳統(tǒng)的服務(wù)器類(lèi)母板對(duì)能夠被附加至其上的內(nèi)存數(shù)量具有限制。主內(nèi)存也是“高價(jià)”資源,其不僅僅是系統(tǒng)中最貴部件之一,其還經(jīng)常是最耗能部件之一。因此,一直存在減小文件系統(tǒng)的內(nèi)存占用空間的需要。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0006]通過(guò)示例的方式來(lái)闡述本發(fā)明的實(shí)施方式,但是并不限制在附圖的圖示中,在附圖中類(lèi)似的參考指示相似的元件。
[0007]圖1是示出根據(jù)本發(fā)明一種實(shí)施方式的存儲(chǔ)系統(tǒng)的框圖;
[0008]圖2是示出根據(jù)本發(fā)明一種實(shí)施方式的段存儲(chǔ)引擎的框圖;
[0009]圖3是示出根據(jù)本發(fā)明一種實(shí)施方式的存儲(chǔ)系統(tǒng)的框圖;
[0010]圖4是示出根據(jù)本發(fā)明一種實(shí)施方式的用于管理存儲(chǔ)系統(tǒng)的資源的方法的流程圖;
[0011]圖5是示出根據(jù)本發(fā)明一種實(shí)施方式的用于管理由存儲(chǔ)系統(tǒng)的文件系統(tǒng)分區(qū)使用的資源的方法的流程圖;
[0012]圖6是示出根據(jù)本發(fā)明另一實(shí)施方式的用于管理由存儲(chǔ)系統(tǒng)的文件系統(tǒng)分區(qū)使用的資源的方法的流程圖;
[0013]圖7是示出根據(jù)本發(fā)明另一實(shí)施方式的用于管理由存儲(chǔ)系統(tǒng)的文件系統(tǒng)分區(qū)使用的資源的方法的流程圖;[0014]圖8是示出根據(jù)本發(fā)明另一實(shí)施方式的存儲(chǔ)系統(tǒng)的框圖;
[0015]圖9是示出典型文件系統(tǒng)的索引節(jié)點(diǎn)(inode)的示例的圖;
[0016]圖10是示出根據(jù)本發(fā)明一種實(shí)施方式的用于分割文件系統(tǒng)的方法的流程圖;
[0017]圖11是示出根據(jù)本發(fā)明另一實(shí)施方式的用于分割文件系統(tǒng)的方法的流程圖;
[0018]圖12是示出可以與本發(fā)明實(shí)施方式一起使用的數(shù)據(jù)存儲(chǔ)系統(tǒng)的示例的框圖;
[0019]圖13是可以與本發(fā)明一種實(shí)施方式一起使用的數(shù)據(jù)處理系統(tǒng)的框圖。
【具體實(shí)施方式】
[0020]本發(fā)明的不同實(shí)施方式和方面將參考以下所討論的細(xì)節(jié)而被描述,并且附圖將闡述所述不同實(shí)施方式。以下描述和附圖是本發(fā)明的說(shuō)明,并不被解釋為限制本發(fā)明。多個(gè)具體細(xì)節(jié)被描述以提供本發(fā)明的不同實(shí)施方式的透徹理解。但是,在某些情況下,熟知的或傳統(tǒng)細(xì)節(jié)不被描述以便提供本發(fā)明實(shí)施方式的簡(jiǎn)明討論。
[0021]說(shuō)明書(shū)中對(duì)“一種實(shí)施方式”或“實(shí)施方式”的引用意味著結(jié)合該實(shí)施方式描述的特定的特征、結(jié)構(gòu)、或特性可以被包括在本發(fā)明的至少一種實(shí)施方式中。說(shuō)明書(shū)中不同地方出現(xiàn)的短語(yǔ)“在一種實(shí)施方式中”并不必都指相同的實(shí)施方式。
[0022]根據(jù)一些實(shí)施方式,文件系統(tǒng)被分割成多個(gè)文件系統(tǒng)分區(qū)。文件系統(tǒng)分區(qū)被托管(host)在存儲(chǔ)系統(tǒng)中,并分享存儲(chǔ)計(jì)算節(jié)點(diǎn)的系統(tǒng)內(nèi)存。每個(gè)文件系統(tǒng)分區(qū)可以被存儲(chǔ)在存儲(chǔ)系統(tǒng)的多個(gè)存儲(chǔ)單元中的一個(gè)存儲(chǔ)單元中。每個(gè)文件系統(tǒng)分區(qū)包括元數(shù)據(jù),該元數(shù)據(jù)具有足夠的信息來(lái)在由文件系統(tǒng)分區(qū)代表的單個(gè)較大邏輯文件系統(tǒng)中識(shí)別其自身。這種元數(shù)據(jù)還包括足夠的信息以允許訪(fǎng)問(wèn)其相關(guān)的數(shù)據(jù)。當(dāng)正在被訪(fǎng)問(wèn)時(shí),每個(gè)文件系統(tǒng)分區(qū)可以被交換至系統(tǒng)內(nèi)存中。類(lèi)似的,當(dāng)不被訪(fǎng)問(wèn)時(shí),每個(gè)文件系統(tǒng)分區(qū)可以被交換出系統(tǒng)內(nèi)存。
[0023]在一種實(shí)施方式中,文件系統(tǒng)分區(qū)根據(jù)調(diào)度或驅(qū)逐算法(eviction algorithm)而被交換至和交換出內(nèi)存,這確保一旦分區(qū)被加載至內(nèi)存中,足夠的IO需求在被考慮交換出之前在文件系統(tǒng)分區(qū)上被執(zhí)行。這確保交換分區(qū)的花費(fèi)被攤銷(xiāo)到多個(gè)IO操作之上。即使沒(méi)有足夠的當(dāng)前待定的IO請(qǐng)求,調(diào)度算法保持文件系統(tǒng)分區(qū)被加載至預(yù)期的潛在的將來(lái)的IO操作中。調(diào)度算法還是公平無(wú)饑餓的。
[0024]在一種實(shí)施方式中,文件系統(tǒng)按照某種方式被分割以確保存在強(qiáng)輸入輸出(IO)局域性(locality),即,10請(qǐng)求在給定時(shí)間時(shí)被僅僅指向一個(gè)或較少的文件系統(tǒng)分區(qū)。在一種實(shí)施方式中,基于文件的時(shí)間屬性(例如其最后被修改的時(shí)間),文件被分組到分區(qū)中。對(duì)于長(zhǎng)期備份和歸檔工作量,該分割方案提供較好的10局域性。由于文件通常是局域性域(例如,應(yīng)用程序常常訪(fǎng)問(wèn)文件的部分或全部),所以通過(guò)在一個(gè)文件系統(tǒng)分區(qū)中存儲(chǔ)文件的所有內(nèi)容,這降低了大量的用于訪(fǎng)問(wèn)文件的文件系統(tǒng)分區(qū)交換。
[0025]圖1是示出根據(jù)本發(fā)明一種實(shí)施方式的存儲(chǔ)系統(tǒng)的框圖。參考圖1,系統(tǒng)100包括但不限于通過(guò)網(wǎng)絡(luò)103通信地耦合至存儲(chǔ)系統(tǒng)104的一個(gè)或多個(gè)客戶(hù)端系統(tǒng)101-102。客戶(hù)端101-102可以是任何類(lèi)型的客戶(hù)端,諸如服務(wù)器、個(gè)人計(jì)算機(jī)(如臺(tái)式電腦、筆記本電腦、和平板電腦)、“瘦”客戶(hù)端、個(gè)人數(shù)字助理(PDA)、激活Web的裝置、游戲設(shè)備、媒體播放器、或移動(dòng)電話(huà)(如,智能手機(jī))等。網(wǎng)絡(luò)103可以是任何類(lèi)型的網(wǎng)絡(luò),諸如,局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)(如因特網(wǎng))、企業(yè)內(nèi)部網(wǎng)、城域網(wǎng)(MAN)、存儲(chǔ)區(qū)域網(wǎng)(SAN)、總線(xiàn)、或它們的組合,有線(xiàn)的和/或無(wú)線(xiàn)的網(wǎng)絡(luò)。
[0026]存儲(chǔ)系統(tǒng)104可以包括任何類(lèi)型的服務(wù)器或服務(wù)器集群。例如,存儲(chǔ)系統(tǒng)104可以是用于各種不同目的中的任何目的(諸如,用于向多個(gè)用戶(hù)提供對(duì)共享數(shù)據(jù)的訪(fǎng)問(wèn)和/或用于備份任務(wù)關(guān)鍵數(shù)據(jù))的存儲(chǔ)服務(wù)器。存儲(chǔ)系統(tǒng)104可以是例如文件服務(wù)器(例如,用于提供NAS能力的裝置)、基于塊的存儲(chǔ)服務(wù)器(例如,被用于提供SAN能力)、統(tǒng)一存儲(chǔ)設(shè)備(例如結(jié)合NAS和SAN能力的設(shè)備)、近線(xiàn)存儲(chǔ)設(shè)備、直接附加存儲(chǔ)(DAS)設(shè)備、磁帶備份設(shè)備、或基本上任何其他類(lèi)型的數(shù)據(jù)存儲(chǔ)設(shè)備。存儲(chǔ)系統(tǒng)104可以具有分布式結(jié)構(gòu),或者它的所有部件可以被集成在單個(gè)單元中。存儲(chǔ)系統(tǒng)104可以被實(shí)施為歸檔和/或備份系統(tǒng)的一
部分,如可以從馬薩諸塞州霍普金頓的EMCk公司購(gòu)買(mǎi)的重復(fù)項(xiàng)消除存儲(chǔ)系統(tǒng)。
[0027]在一種實(shí)施方式中,存儲(chǔ)系統(tǒng)104包括但不限于通信連接的系統(tǒng)接口 106、文件系統(tǒng)控制107、和一個(gè)或多個(gè)存儲(chǔ)單元108-109。存儲(chǔ)系統(tǒng)104的文件系統(tǒng)可以被分割成多個(gè)文件系統(tǒng)分區(qū),其中每個(gè)文件系統(tǒng)分區(qū)可以被存儲(chǔ)在存儲(chǔ)單元108-109中的一個(gè)存儲(chǔ)單元中。存儲(chǔ)單元108-109可以經(jīng)由互聯(lián)體或總線(xiàn)120彼此相互地通信耦合,其中存儲(chǔ)單元108-109可以是物理和/或邏輯存儲(chǔ)單元或存儲(chǔ)體。在一種實(shí)施方式中,存儲(chǔ)單元108-109中的第一存儲(chǔ)單元作為活動(dòng)存儲(chǔ)器進(jìn)行操作以存儲(chǔ)外部或新用戶(hù)數(shù)據(jù),而存儲(chǔ)單元108-109中的第二存儲(chǔ)單元作為目標(biāo)存儲(chǔ)器進(jìn)行操作以根據(jù)歸檔原則或方案周期性地歸檔或傳送來(lái)自活動(dòng)存儲(chǔ)器的數(shù)據(jù)。存儲(chǔ)單元108-109可以是例如,傳統(tǒng)的磁盤(pán)、光盤(pán)(如基于CD-ROM或DVD的存儲(chǔ)器)、磁帶存儲(chǔ)器、磁光(MO)存儲(chǔ)媒介、固態(tài)盤(pán)、基于閃存的設(shè)備、或任何其他類(lèi)型的適用于存儲(chǔ)大卷數(shù)據(jù)的非易失性存儲(chǔ)設(shè)備。存儲(chǔ)單元108-109還可以是這些設(shè)備的結(jié)合。在盤(pán)存儲(chǔ)媒介的情況下,存儲(chǔ)單元108-109可以被組織成一個(gè)或多個(gè)卷的獨(dú)立磁盤(pán)冗余陣列(RAID)。
[0028]在一種實(shí)施方式中,如圖1所示的存儲(chǔ)系統(tǒng)可以被用作存儲(chǔ)層級(jí)中的一層存儲(chǔ)器,所述存儲(chǔ)層級(jí)包括其他層級(jí)的存儲(chǔ)器。在該層級(jí)中的一層或多層存儲(chǔ)器可以利用不同種類(lèi)的存儲(chǔ)設(shè)備和/或可以被針對(duì)不同特性(如隨機(jī)更新性能)而被優(yōu)化。基于數(shù)據(jù)管理策略來(lái)周期性地在層之間移動(dòng)文件以實(shí)現(xiàn)針對(duì)文件的當(dāng)前存儲(chǔ)需求的成本有效匹配。例如,文件可以最初被存儲(chǔ)在為讀寫(xiě)提供高性能的存儲(chǔ)器層中。隨著文件的成熟,其可能根據(jù)本發(fā)明被移動(dòng)至某層存儲(chǔ)器中。在不同的實(shí)施方式中,層包括不同的存儲(chǔ)技術(shù)(例如,磁帶、硬盤(pán)驅(qū)動(dòng)器、基于半導(dǎo)體的存儲(chǔ)器、光驅(qū)動(dòng)器)、不同的位置(例如,本地計(jì)算機(jī)存儲(chǔ)器、本地網(wǎng)絡(luò)存儲(chǔ)器、遠(yuǎn)程網(wǎng)絡(luò)存儲(chǔ)器、分布式存儲(chǔ)器、云存儲(chǔ)器、歸檔存儲(chǔ)器、庫(kù)存儲(chǔ)器等)、或任何其他用于分層式數(shù)據(jù)存儲(chǔ)系統(tǒng)的合適存儲(chǔ)器。
[0029]回顧圖1,根據(jù)一種實(shí)施方式,文件系統(tǒng)被分割成多個(gè)文件系統(tǒng)分區(qū)114-115,其中,每個(gè)文件系統(tǒng)分區(qū)可以被存儲(chǔ)在存儲(chǔ)系統(tǒng)104的存儲(chǔ)單元108-109中的一個(gè)存儲(chǔ)單元中。文件系統(tǒng)分區(qū)114-115中的每個(gè)文件系統(tǒng)分區(qū)包括元數(shù)據(jù),該元數(shù)據(jù)具有足夠的信息以在由文件系統(tǒng)分區(qū)114-115代表的單個(gè)較大邏輯文件系統(tǒng)中識(shí)別其自身。這種元數(shù)據(jù)還包括足夠的信息以允許訪(fǎng)問(wèn)其相關(guān)的數(shù)據(jù)。
[0030]響應(yīng)于數(shù)據(jù)文件將被寫(xiě)至分區(qū)114-115中,段存儲(chǔ)引擎(未示出)被配置成根據(jù)種種分段策略或規(guī)則將數(shù)據(jù)文件分成多個(gè)段。文件系統(tǒng)控制107可以被實(shí)施為段存儲(chǔ)引擎的一部分。如果段之前還沒(méi)有被存儲(chǔ)在分區(qū)中,則段存儲(chǔ)引擎僅僅在分區(qū)中存儲(chǔ)段。在段之前已經(jīng)被存儲(chǔ)的事件中,元數(shù)據(jù)存儲(chǔ)能夠使用之前存儲(chǔ)的段進(jìn)行文件重建的信息。因此,數(shù)據(jù)文件的段被以重復(fù)項(xiàng)消除的方式而存儲(chǔ)在每個(gè)分區(qū)114-115中或分區(qū)114-115的至少一些之上。此外,元數(shù)據(jù)被添加到分區(qū)114-115中的至少一些,以使得文件可以獨(dú)立于其他分區(qū)而被訪(fǎng)問(wèn)。存儲(chǔ)在分區(qū)中的數(shù)據(jù)可以以壓縮形式被存儲(chǔ)(例如,無(wú)損壓縮:霍夫曼編碼、Lempel-Ziv韋爾奇編碼;增量編碼:對(duì)段加上差異的引用;子分段:子段列表或?qū)ψ佣蔚囊玫?。在一種實(shí)施方式中,不同分區(qū)可以使用不同的壓縮(例如,主或活動(dòng)分區(qū)不同于其他分區(qū),一個(gè)分區(qū)不同于另一個(gè)分區(qū),等等)。
[0031]每個(gè)分區(qū)的元數(shù)據(jù)包括足夠的信息以提供對(duì)其包含的文件的訪(fǎng)問(wèn)。當(dāng)活動(dòng)分區(qū)故障時(shí),包含在另一分區(qū)中的元數(shù)據(jù)可以被用于恢復(fù)活動(dòng)分區(qū)。當(dāng)一個(gè)分區(qū)不可用時(shí)(例如,底層的存儲(chǔ)單元已經(jīng)故障,或正被升級(jí),等等),系統(tǒng)保持啟動(dòng)和運(yùn)行以提供對(duì)任何未存儲(chǔ)在故障分區(qū)中的文件的訪(fǎng)問(wèn)。當(dāng)文件被刪除時(shí),關(guān)聯(lián)于系統(tǒng)中的文件的元數(shù)據(jù)被更新以體現(xiàn)該文件已經(jīng)被刪除。
[0032]在一種實(shí)施方式中,元數(shù)據(jù)信息包括文件名稱(chēng)、與文件名稱(chēng)相關(guān)聯(lián)的段被存儲(chǔ)于其中的分區(qū)、使用這些段的文件的重建信息、以及任何其他合適的元數(shù)據(jù)信息。在一種實(shí)施方式中,元數(shù)據(jù)的副本被存儲(chǔ)在用于存儲(chǔ)在分區(qū)上的文件的那個(gè)分區(qū)上,以使得被存儲(chǔ)在分區(qū)上的文件可以?xún)H使用存儲(chǔ)在該分區(qū)上的信息而被訪(fǎng)問(wèn)。在一種實(shí)施方式中,在主元數(shù)據(jù)丟失、毀壞、損壞等的事件中,主要的元數(shù)據(jù)信息集合可以通過(guò)使用關(guān)聯(lián)于存儲(chǔ)系統(tǒng)的所有分區(qū)的信息而被重建。分區(qū)的元數(shù)據(jù)可以使用存儲(chǔ)在主分區(qū)或其他一個(gè)分區(qū)或多個(gè)分區(qū)(復(fù)制品分區(qū))上的元數(shù)據(jù)信息而被重建。元數(shù)據(jù)信息進(jìn)一步包括索引信息(例如,存儲(chǔ)單元中段的位置信息)。在一種實(shí)施方式中,元數(shù)據(jù)包括基本段信息(prime segmentinformation),該基本段信息可以被用于提供文件系統(tǒng)的共同點(diǎn)和/或在文件系統(tǒng)故障事件中重建文件系統(tǒng)。
[0033]回顧圖1,當(dāng)正被訪(fǎng)問(wèn)時(shí),文件系統(tǒng)分區(qū)114-115中的每個(gè)分區(qū)可以由文件系統(tǒng)控制107的分區(qū)管理器111交換至系統(tǒng)內(nèi)存110中。類(lèi)似地,每個(gè)文件系統(tǒng)分區(qū)在其沒(méi)有正被訪(fǎng)問(wèn)時(shí)可以被分區(qū)管理器111交換出系統(tǒng)內(nèi)存110。因此,文件系統(tǒng)分區(qū)可以使用有限數(shù)量的內(nèi)存進(jìn)行訪(fǎng)問(wèn)。特別地,當(dāng)文件系統(tǒng)分區(qū)被交換至系統(tǒng)內(nèi)存110中時(shí),其元數(shù)據(jù)(例如,元數(shù)據(jù)112-113)實(shí)際上被交換至系統(tǒng)內(nèi)存110中,從而使得對(duì)應(yīng)文件系統(tǒng)分區(qū)的數(shù)據(jù)可以被訪(fǎng)問(wèn)。在整個(gè)申請(qǐng)中,出于闡述的目的,當(dāng)文件系統(tǒng)分區(qū)被交換至或交換出內(nèi)存時(shí),指的是將相關(guān)聯(lián)的元數(shù)據(jù)交換至或交換出內(nèi)存。
[0034]在一種實(shí)施方式中,文件系統(tǒng)分區(qū)108-109根據(jù)調(diào)度或驅(qū)逐算法而被交換至和交換出內(nèi)存120,其確保一旦分區(qū)被加載至內(nèi)存120中,足夠的IO請(qǐng)求在其被考慮交換出之前在文件系統(tǒng)分區(qū)上被執(zhí)行。這確保交換分區(qū)的花費(fèi)被攤銷(xiāo)到多個(gè)IO操作之上。即使沒(méi)有足夠的當(dāng)前待定的IO請(qǐng)求,調(diào)度算法保持文件系統(tǒng)分區(qū)被加載至預(yù)期的潛在的將來(lái)的IO操作中。調(diào)度算法還是公平且無(wú)饑餓的。
[0035]在一種實(shí)施方式中,文件系統(tǒng)按照某種方式被分割以確保存在強(qiáng)輸入輸出(IO)局域性,即,IO請(qǐng)求在給定時(shí)間時(shí)被僅僅指向一個(gè)或較少的文件系統(tǒng)分區(qū)。在一種實(shí)施方式中,基于文件的時(shí)間屬性(例如它們最后被修改的時(shí)間),文件被分組到分區(qū)中。對(duì)于長(zhǎng)期備份和歸檔工作量,該分割方案提供較好的IO局域性。由于文件通常是局域性域(例如,應(yīng)用程序常常訪(fǎng)問(wèn)文件的部分或全部),所以通過(guò)在一個(gè)文件系統(tǒng)分區(qū)中存儲(chǔ)文件的所有內(nèi)容,這降低了大量的用于訪(fǎng)問(wèn)文件的文件系統(tǒng)分區(qū)交換。[0036]圖2是示出根據(jù)本發(fā)明一種實(shí)施方式的段存儲(chǔ)引擎的框圖。注意僅出于闡述的目的,具有與先前附圖或描述相同或相似功能的某些部件的某些參考編號(hào)可以保持相同。參考圖2,在一種實(shí)施方式中,段存儲(chǔ)引擎200包括接口 202、分段器204、復(fù)制消除器206、文件系統(tǒng)控制208、命名空間210、以及分區(qū)接口 212。文件系統(tǒng)控制208可以被實(shí)施為圖1的文件系統(tǒng)控制107的一部分。段存儲(chǔ)引擎200經(jīng)由接口 202接收一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)。一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)或一個(gè)或多個(gè)文件被分段器204和文件系統(tǒng)控制208處理。分段器204基于各種規(guī)則或考量將一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)分成段。例如,一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)可以通過(guò)使用基于內(nèi)容的技術(shù)(例如,當(dāng)功能等于一值時(shí)或當(dāng)該值為最小值、最大值或相對(duì)于針對(duì)數(shù)據(jù)項(xiàng)計(jì)算的其他功能值的其他值時(shí),功能在數(shù)據(jù)項(xiàng)的不同位置處被計(jì)算)、不基于內(nèi)容的技術(shù)(例如,基于數(shù)據(jù)項(xiàng)屬性,如,字節(jié)長(zhǎng)度、標(biāo)題、創(chuàng)建日期)、或任何其他合適技術(shù)來(lái)識(shí)別段邊界而被分到段中。在一種實(shí)施方式中,段被限制成最小和/或最大長(zhǎng)度、限制成每數(shù)據(jù)項(xiàng)最小或最大數(shù)量的段、或任何其他合適限制。
[0037]在一種實(shí)施方式中,文件系統(tǒng)控制208處理用于指示關(guān)聯(lián)于數(shù)據(jù)項(xiàng)的一個(gè)或多個(gè)段的信息。在一些實(shí)施方式中,指紋列表被用于指示關(guān)聯(lián)于數(shù)據(jù)項(xiàng)的段。文件系統(tǒng)控制208將段關(guān)聯(lián)信息傳遞至索引(未示出)。該索引被用于定位經(jīng)由分區(qū)接口 212存儲(chǔ)在一個(gè)或多個(gè)分區(qū)中的段。復(fù)制消除器206識(shí)別新接收到的段是否已經(jīng)被存儲(chǔ)在一個(gè)或多個(gè)分區(qū)中。在段已經(jīng)被存儲(chǔ)在一個(gè)或多個(gè)分區(qū)中的事件中,存儲(chǔ)對(duì)先前存儲(chǔ)的段的引用,而不是存儲(chǔ)新接收到的段。
[0038]接口 202被配置成接收檢索數(shù)據(jù)項(xiàng)的請(qǐng)求。接口 202經(jīng)由命名空間210與文件系統(tǒng)208通信,以識(shí)別經(jīng)由分區(qū)接口 212存儲(chǔ)在分區(qū)中合適的段。文件系統(tǒng)208與索引通信以定位經(jīng)由分區(qū)接口 212存儲(chǔ)在分區(qū)中合適的段。合適的段被用于構(gòu)件所請(qǐng)求的數(shù)據(jù)項(xiàng)。響應(yīng)于該請(qǐng)求,數(shù)據(jù)項(xiàng)經(jīng)由接口 202而被提供。在一種實(shí)施方式中,文件系統(tǒng)208和/或索引使用基于內(nèi)容的標(biāo)識(shí)符(例如指紋)樹(shù)以能夠文件關(guān)聯(lián)于數(shù)據(jù)段和它們?cè)诜謪^(qū)中的位置。在關(guān)聯(lián)于給定文件或數(shù)據(jù)項(xiàng)的段改變的事件中,基于內(nèi)容的標(biāo)識(shí)符(ID)將改變,并且所述改變將從關(guān)聯(lián)于文件名稱(chēng)(目錄結(jié)構(gòu))的樹(shù)的底部有效地延伸(ripple)至頂部,因?yàn)楹线m的基于內(nèi)容的ID使用樹(shù)結(jié)構(gòu)很容易被識(shí)別。
[0039]在一種實(shí)施方式中,文件系統(tǒng)引擎107進(jìn)一步包括分區(qū)管理器111,該分區(qū)管理器111被配置成根據(jù)至少一個(gè)分區(qū)策略214將文件系統(tǒng)分割成多個(gè)文件系統(tǒng)(FS)分區(qū)并基于分區(qū)策略214管理由FS分區(qū)消耗的資源。例如,分區(qū)策略214可以包括驅(qū)逐算法或交換方案,以將FS分區(qū)交換至或交換出系統(tǒng)內(nèi)存。在一種實(shí)施方式中,當(dāng)?shù)谝?FS分區(qū)沒(méi)有正被訪(fǎng)問(wèn)時(shí),該第一 FS分區(qū)可以被交換出內(nèi)存以為將被訪(fǎng)問(wèn)的第二 FS分區(qū)釋放空間。因此,文件系統(tǒng)分區(qū)可以使用有限數(shù)量的內(nèi)存而被訪(fǎng)問(wèn)。注意圖1-2所示的部分或所有部件可以以軟件、硬件或二者的結(jié)合來(lái)實(shí)施。
[0040]圖3是示出根據(jù)本發(fā)明一種實(shí)施方式的存儲(chǔ)系統(tǒng)的框圖。例如,系統(tǒng)300可以作為圖1的存儲(chǔ)系統(tǒng)104的部分而被實(shí)施。參考圖3,存儲(chǔ)單元301-303可以表示圖1的存儲(chǔ)單元108-109中的至少部分存儲(chǔ)單元。存儲(chǔ)單元301-303可以在單個(gè)計(jì)算節(jié)點(diǎn)中實(shí)施。存儲(chǔ)單元301-303中的每個(gè)存儲(chǔ)單元通過(guò)存儲(chǔ)ID而被識(shí)別,存儲(chǔ)ID唯一地標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)單元。存儲(chǔ)單元301-303可以是物理的和/或邏輯的存儲(chǔ)單元或存儲(chǔ)體。
[0041]根據(jù)一種實(shí)施方式,系統(tǒng)300表示歸檔存儲(chǔ)系統(tǒng)。在正常操作期間,外部的或新的用戶(hù)數(shù)據(jù)被寫(xiě)至第一分區(qū),在該實(shí)施例中,第一分區(qū)為分區(qū)304,第一分區(qū)還被稱(chēng)為活動(dòng)分區(qū)或主分區(qū)。周期性地,存儲(chǔ)在第一分區(qū)中的數(shù)據(jù)被遷移到第二分區(qū),在該實(shí)施例中,第二分區(qū)為分區(qū)305,該第二分區(qū)還被稱(chēng)為目標(biāo)分區(qū)。當(dāng)?shù)诙謪^(qū)已經(jīng)被填充至預(yù)定閾值時(shí),目標(biāo)分區(qū)被密封以稱(chēng)為歸檔分區(qū),該實(shí)施例中的分區(qū)306,其可以是只讀分區(qū)。然后另一分區(qū)可以被分派并指定為新的目標(biāo)分區(qū)以對(duì)來(lái)自活動(dòng)分區(qū)的其他數(shù)據(jù)進(jìn)行歸檔。
[0042]數(shù)據(jù)遷移可以根據(jù)不同的數(shù)據(jù)遷移策略來(lái)執(zhí)行。根據(jù)一些實(shí)施方式,文件被存儲(chǔ)為一個(gè)或多個(gè)段,其中段在存儲(chǔ)系統(tǒng)中進(jìn)行重復(fù)項(xiàng)消除(例如,僅僅一個(gè)復(fù)本被存儲(chǔ)且被/可以被用于重建多個(gè)文件)(例如,在系統(tǒng)的一個(gè)分區(qū)中進(jìn)行重復(fù)項(xiàng)消除)。段被存儲(chǔ)在主或活動(dòng)分區(qū)(例如,分區(qū)301)中并周期性地(例如,每周)基于傳輸協(xié)議(例如,分區(qū)超過(guò)容量限制、每小時(shí)段的數(shù)量、暫停時(shí)間等)、或當(dāng)分區(qū)為滿(mǎn)或符合一個(gè)或多個(gè)條件(例如,80%滿(mǎn)、小于20%的活動(dòng)性、在最后一小時(shí)已經(jīng)不具有訪(fǎng)問(wèn)性),屬于基于遷移策略(例如,在預(yù)定時(shí)間段內(nèi)還未被修改或訪(fǎng)問(wèn)的特定文件類(lèi)型文件將被遷移,等等)識(shí)別的文件的段被轉(zhuǎn)移至第二分區(qū)(例如,分區(qū)302)。
[0043]隨著第二分區(qū)被填充,元數(shù)據(jù)被轉(zhuǎn)移至第二分區(qū),以使得第二分區(qū)具有所有必要信息以訪(fǎng)問(wèn)在第二分區(qū)中的文件。元數(shù)據(jù)使得系統(tǒng)能夠重建存儲(chǔ)在系統(tǒng)中(例如,整個(gè)系統(tǒng)中、分區(qū)中等等)文件和/或?qū)⒋鎯?chǔ)在系統(tǒng)中的文件與其文件名稱(chēng)相關(guān)聯(lián)。這還允許系統(tǒng)斷電或降低分區(qū)的存儲(chǔ)單元的功率以節(jié)省能源或使分區(qū)離線(xiàn)以升級(jí)分區(qū)或使得系統(tǒng)能夠具備容錯(cuò)性因此在任何給定分區(qū)故障的情況下系統(tǒng)可以運(yùn)行。當(dāng)分區(qū)填滿(mǎn)時(shí),系統(tǒng)將段從主分區(qū)轉(zhuǎn)移至另一分區(qū)。系統(tǒng)可以通過(guò)逐漸增加分區(qū)而被擴(kuò)展。文件可以使用單一名稱(chēng)空間而被訪(fǎng)問(wèn)以為使用接口提供方便。由于僅一個(gè)重復(fù)項(xiàng)消除引擎被用于多個(gè)分區(qū),所以硬件可以被有效的使用。
[0044]在一種實(shí)施方式中,文件通過(guò)獨(dú)立于文件存儲(chǔ)在其中的分區(qū)的名稱(chēng)被標(biāo)識(shí)。當(dāng)文件被接收以將被存儲(chǔ)時(shí),名稱(chēng)也被接收到以與該文件相關(guān)聯(lián)。當(dāng)讀取文件的請(qǐng)求被接收到時(shí),名稱(chēng)也被接收到。系統(tǒng)查詢(xún)關(guān)聯(lián)于系統(tǒng)中文件的元數(shù)據(jù)以識(shí)別關(guān)聯(lián)于接收到的名稱(chēng)的文件。然后查詢(xún)關(guān)聯(lián)于被識(shí)別的文件的元數(shù)據(jù)以確定在其中存儲(chǔ)被識(shí)別的文件的分區(qū)。在一種實(shí)施方式中,關(guān)聯(lián)于系統(tǒng)中文件的元數(shù)據(jù)可以被保持在主分區(qū)或活動(dòng)分區(qū)中??商娲兀獢?shù)據(jù)可以被保持在每個(gè)分區(qū)中,其中關(guān)聯(lián)于該元數(shù)據(jù)的文件被存儲(chǔ)在內(nèi)。此外,元數(shù)據(jù)可以在許多分區(qū)(例如,針對(duì)容差)上按分布的或冗余的方式來(lái)保持。而且,元數(shù)據(jù)可以被保持在分開(kāi)的分區(qū)或分區(qū)、或任何其他合適的存儲(chǔ)位置。
[0045]在一些實(shí)施方式中,對(duì)于關(guān)聯(lián)于文件的元數(shù)據(jù)的更新僅對(duì)于存儲(chǔ)在活動(dòng)分區(qū)中的元數(shù)據(jù)的復(fù)本進(jìn)行。當(dāng)活動(dòng)分區(qū)故障時(shí),系統(tǒng)使用包含在其他附加分區(qū)(例如,之前的活動(dòng)分區(qū))中的元數(shù)據(jù)來(lái)提供對(duì)仍在系統(tǒng)中的文件的訪(fǎng)問(wèn)。在一種實(shí)施方式中,當(dāng)分區(qū)不可用時(shí)(例如,基本的存儲(chǔ)單元已經(jīng)故障、正被升級(jí),等等),系統(tǒng)保持啟動(dòng)和運(yùn)行以向未存儲(chǔ)在故障分區(qū)中的任何文件提供訪(fǎng)問(wèn)。
[0046]回顧圖3,在一種實(shí)施方式中,分區(qū)301-303中的每個(gè)分區(qū)可以存儲(chǔ)用于表示已經(jīng)被分割成多個(gè)分區(qū)304-306的文件系統(tǒng)的部分或分區(qū)的元數(shù)據(jù),其中文件系統(tǒng)分區(qū)304-306共同表示存儲(chǔ)系統(tǒng)300的單個(gè)較大邏輯文件系統(tǒng)(也被稱(chēng)為文件系統(tǒng)分區(qū)集合或文件系統(tǒng)集合)。文件系統(tǒng)分區(qū)304-306作為單個(gè)計(jì)算節(jié)點(diǎn)被托管在存儲(chǔ)系統(tǒng)300中并共享系統(tǒng)內(nèi)存110。每個(gè)文件系統(tǒng)分區(qū)包括元數(shù)據(jù)(未示出),該元數(shù)據(jù)具有足夠的信息以在由文件系統(tǒng)分區(qū)表示的單個(gè)較大邏輯文件系統(tǒng)中識(shí)別其自身。這種元數(shù)據(jù)還包括足夠的信息以訪(fǎng)問(wèn)其相關(guān)聯(lián)的數(shù)據(jù)。
[0047]根據(jù)本發(fā)明的一種實(shí)施方式,文件系統(tǒng)集合的每個(gè)FS分區(qū)包含元數(shù)據(jù),該元數(shù)據(jù)具有使得對(duì)應(yīng)分區(qū)能夠單獨(dú)識(shí)別和配置的足夠信息。某些信息特定于FS分區(qū)和關(guān)聯(lián)于整個(gè)FS集合的部分信息。在一種實(shí)施方式中,存儲(chǔ)在活動(dòng)分區(qū)和歸檔分區(qū)中的FS集合特定信息可以是不同的,而FS分區(qū)特定信息可以是相似的。
[0048]在一種實(shí)施方式中,特定于FS分區(qū)的FS分區(qū)元數(shù)據(jù)包括但不限于以下中的至少一些:分區(qū)的位移名稱(chēng)、分區(qū)的版本、分區(qū)的訪(fǎng)問(wèn)狀態(tài)、相關(guān)聯(lián)的容器設(shè)置ID、分區(qū)通用唯一標(biāo)識(shí)符(UUID)、發(fā)起者UUID、非易失隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器(NVRAM) ID、分區(qū)運(yùn)行時(shí)狀態(tài)、及分區(qū)密封狀態(tài)。
[0049]FS分區(qū)的訪(fǎng)問(wèn)狀態(tài)可以是ENABLED、DISABLED、或PROBLEM。容器集ID包括關(guān)聯(lián)于FS分區(qū)中的容器集的名稱(chēng),其中容器類(lèi)保存FS分區(qū)的所有數(shù)據(jù)。FS分區(qū)的分區(qū)UUID唯一地標(biāo)識(shí)對(duì)應(yīng)的FS分區(qū)。發(fā)起者UUID唯一地標(biāo)識(shí)分區(qū)的發(fā)起者并可以被用于復(fù)制目的。NVRAM ID被用于識(shí)別相關(guān)聯(lián)的針對(duì)對(duì)應(yīng)分區(qū)的NVRAM區(qū)域。分區(qū)運(yùn)行時(shí)狀態(tài)包含指示分區(qū)的運(yùn)行時(shí)狀態(tài)的信息。分區(qū)運(yùn)行時(shí)狀態(tài)可以是以下?tīng)顟B(tài)之一:正在初始化、正在恢復(fù)NVRAM、準(zhǔn)備(例如,已經(jīng)被安裝)開(kāi)啟、正在核查(例如,離線(xiàn)工具正在訪(fǎng)問(wèn)分區(qū))、已核查(例如,離線(xiàn)工具已經(jīng)完成分區(qū)的訪(fǎng)問(wèn))、未安裝、以及損壞。分區(qū)密封狀態(tài)指示對(duì)應(yīng)分區(qū)是否已經(jīng)被密封。如果分區(qū)已經(jīng)被密封,在該分區(qū)上不能執(zhí)行進(jìn)一步的寫(xiě)入訪(fǎng)問(wèn)。
[0050]在一種實(shí)施方式中,保持在每個(gè)歸檔分區(qū)中的上述信息可以被獨(dú)立地用于唯一地確定每個(gè)歸檔分區(qū)。如果分區(qū)是健康的,文件系統(tǒng)可以促使分區(qū)在線(xiàn)。如果文件系統(tǒng)確定該分區(qū)不健康,這可以標(biāo)志并保持分區(qū)離線(xiàn)和/或?qū)⒃摲謪^(qū)列入至問(wèn)題狀態(tài)。因此,只要活動(dòng)分區(qū)健康,文件系統(tǒng)可以保持在線(xiàn)。一個(gè)或多個(gè)歸檔分區(qū)可以被損壞,但是文件系統(tǒng)保持可用。
[0051]此外,每個(gè)FS分區(qū)進(jìn)一步包括相關(guān)于整個(gè)文件系統(tǒng)集合的一些元數(shù)據(jù)。在一種實(shí)施方式中,這種元數(shù)據(jù)包括但不限于集合分區(qū)類(lèi)型(例如,活動(dòng)、目標(biāo)、或歸檔)和集合ID,該集合ID唯一地標(biāo)識(shí)對(duì)應(yīng)分區(qū)是其成員的集合。另外,每個(gè)歸檔FS分區(qū)中的元數(shù)據(jù)進(jìn)一步包括報(bào)頭和分區(qū)表,該報(bào)頭具有版本號(hào)、序列號(hào)、和校驗(yàn)值。分區(qū)表包括標(biāo)識(shí)相關(guān)聯(lián)的分區(qū)是其成員的文件系統(tǒng)集合的集合ID、集合中的分區(qū)數(shù)量、集合中所有歸檔分區(qū)的UUID、以及表示文件系統(tǒng)集合的共同點(diǎn)的基本或基本段。
[0052]在一種實(shí)施方式中,保持在活動(dòng)分區(qū)中的上述信息幫助識(shí)別集合(文件系統(tǒng))的所有不同分區(qū)。文件系統(tǒng)使用該信息來(lái)發(fā)現(xiàn)所有分區(qū)并試圖將它們置于在線(xiàn)。但是,如果活動(dòng)分區(qū)被破壞,集合信息為不可用并且文件系統(tǒng)不能立即被置于在線(xiàn)。該集合信息然后必須通過(guò)探索系統(tǒng)上所有可用的歸檔分區(qū)而被組合。歸檔分區(qū)將它們本身識(shí)別為集合的部分并且來(lái)自歸檔分區(qū)的信息可以被用于重新創(chuàng)建歸檔分區(qū)的集合信息。
[0053]在一種實(shí)施方式中,當(dāng)被訪(fǎng)問(wèn)時(shí),每個(gè)文件系統(tǒng)分區(qū)可以被分區(qū)管理器111交換至系統(tǒng)內(nèi)存110中,類(lèi)似地,當(dāng)未被訪(fǎng)問(wèn)時(shí),每個(gè)文件系統(tǒng)分區(qū)可以被分區(qū)管理器111交換出系統(tǒng)內(nèi)存。在該實(shí)施例中,假設(shè)僅存在用于FS分區(qū)從內(nèi)存110分配的兩個(gè)內(nèi)存插槽307-308,并且存在三個(gè)FS分區(qū)304-306。首先,F(xiàn)S分區(qū)304-305的元數(shù)據(jù)分別被作為元數(shù)據(jù)307-308的部分加載至內(nèi)存110。隨后,當(dāng)訪(fǎng)問(wèn)存儲(chǔ)在FS分區(qū)306中的數(shù)據(jù)的請(qǐng)求被接收到時(shí),F(xiàn)S分區(qū)304-305中此刻未被訪(fǎng)問(wèn)的一個(gè)分區(qū)被識(shí)別并從內(nèi)存110卸載,從而使得分區(qū)306的元數(shù)據(jù)可以被加載至相同的內(nèi)存插槽中而無(wú)需分配額外的內(nèi)存插槽。因此內(nèi)存使用占用空間可以被大大減小。
[0054]圖4是示出根據(jù)本發(fā)明一種實(shí)施方式的用于管理存儲(chǔ)系統(tǒng)的資源的方法的流程圖。方法400可以由圖3的系統(tǒng)300執(zhí)行。參考圖4,在塊401處,存儲(chǔ)系統(tǒng)的文件系統(tǒng)被分割成多個(gè)FS分區(qū)。每個(gè)FS分區(qū)包括文件的重復(fù)項(xiàng)消除段。隨后,在塊402處,確定是否存在不具有任何待決IO請(qǐng)求的任何FS分區(qū)。如果不存在,在塊407處,處理線(xiàn)程進(jìn)入睡眠狀態(tài)。如果存在至少一個(gè)FS分區(qū)不具有任何待決IO請(qǐng)求,在塊403處,確定該至少一個(gè)FS分區(qū)是否可以被驅(qū)逐,例如,根據(jù)文件系統(tǒng)驅(qū)逐策略。如果是這樣,在塊404處,可以被驅(qū)逐的第一 FS分區(qū)被從內(nèi)存卸載(例如,交換出)以為第二 FS分區(qū)騰出空間。在塊405處,第二FS分區(qū)被加載至(例如,交換至)內(nèi)存中,從而使得第二 FS分區(qū)的數(shù)據(jù)可以在不必分配額外內(nèi)存的情況下被訪(fǎng)問(wèn)。在一種實(shí)施方式中,第二 FS分區(qū)被加載至相同的內(nèi)存插槽中,第一FS分區(qū)已經(jīng)被從該內(nèi)存插槽交換出。在塊406處,可選擇地,令牌被指定給第二 FS分區(qū)并且用于第二 FS分區(qū)的已經(jīng)被排列的任何待決IO請(qǐng)求被執(zhí)行。
[0055]具有正確數(shù)據(jù)分區(qū)是必要條件,但是不是減少交換至和交換出內(nèi)存310的分區(qū)數(shù)量的充分條件。文件系統(tǒng)經(jīng)常服務(wù)來(lái)自不同用戶(hù)和/或主機(jī)的同時(shí)請(qǐng)求,并且這些各自的IO請(qǐng)求可以是彼此獨(dú)立的。例如,在備份情況中,一個(gè)主機(jī)可能正在進(jìn)行備份并因此訪(fǎng)問(wèn)保存最近數(shù)據(jù)(recent data)的分區(qū),而另一主機(jī)可能正在對(duì)歷史數(shù)據(jù)進(jìn)行監(jiān)管查詢(xún)并因此訪(fǎng)問(wèn)不同分區(qū)??赡艿氖牵M管最佳數(shù)據(jù)分割方案被置于獨(dú)立的IO資源僅訪(fǎng)問(wèn)一個(gè)分區(qū)的情形;但是,因?yàn)橄到y(tǒng)必須在獨(dú)立的IO請(qǐng)求之間轉(zhuǎn)換(juggle),所以FS分區(qū)可仍舊被交換至其中或交換出。
[0056]回顧圖3,在一種實(shí)施方式中,根據(jù)調(diào)度或驅(qū)逐算法310文件系統(tǒng)分區(qū)被分區(qū)管理器111交換至內(nèi)存區(qū)域中或交換出內(nèi)存區(qū)域,以確保一旦分區(qū)被加載至內(nèi)存中并且在被考慮交換出之前足夠的IO請(qǐng)求在文件系統(tǒng)分區(qū)上被執(zhí)行。這確保交換分區(qū)的花費(fèi)被攤銷(xiāo)到多個(gè)IO操作之上。即使不存在足夠的當(dāng)前待決IO請(qǐng)求,調(diào)度算法保持文件系統(tǒng)分區(qū)被加載期望潛在的進(jìn)一步的IO操作。調(diào)度算法還是公平無(wú)饑餓的。
[0057]在一種實(shí)施方式中,驅(qū)逐策略310基于令牌的驅(qū)逐策略。在基于令牌調(diào)度的基本原理是當(dāng)被加載至內(nèi)存中時(shí)將令牌(具有初始值)分配至FS分區(qū)。令牌確定在可以被交換出之前分區(qū)可以停留在內(nèi)存中多長(zhǎng)時(shí)間。在一種實(shí)施方式中,令牌每一次被消耗或扣除,IO請(qǐng)求(處于批處理粒度)在相關(guān)聯(lián)的FS分區(qū)上被執(zhí)行。令牌還按照固定的時(shí)間間隔被周期性地的拿走。在FS分區(qū)已經(jīng)用盡其所有令牌之后,其被認(rèn)為用于交換出的候選。
[0058]基于令牌的驅(qū)逐策略保證了 FS分區(qū)在被加載之后不會(huì)被快速地交換出。當(dāng)然,其令牌計(jì)數(shù)必須在可以被考慮替換之前達(dá)到零。因此,在被加載時(shí)FS分區(qū)接收機(jī)會(huì)以服務(wù)至少一些IO請(qǐng)求。此外,周期性地扣除令牌保證FS分區(qū)將總是耗盡令牌并將被考慮交換出。這避免了解餓情景。正等待被加載至內(nèi)存中的FS分區(qū)將總是尋找耗盡令牌并被驅(qū)逐的一些其他FS分區(qū)。根據(jù)一種實(shí)施方式,當(dāng)FS分區(qū)的令牌計(jì)數(shù)達(dá)到零時(shí),如果不存在對(duì)FS分區(qū)的待決IO請(qǐng)求,則FS分區(qū)被交換出;否則,F(xiàn)S分區(qū)保留在內(nèi)存中直到一個(gè)或多個(gè)待決IO請(qǐng)求已經(jīng)被執(zhí)行。
[0059]圖5是示出根據(jù)本發(fā)明實(shí)施方式的用于管理由存儲(chǔ)系統(tǒng)的文件系統(tǒng)分區(qū)使用的資源的方法的流程圖。方法500可以由圖3的系統(tǒng)300來(lái)執(zhí)行。參考圖5,在塊502處,響應(yīng)于訪(fǎng)問(wèn)FS分區(qū)的請(qǐng)求,確定與FS分區(qū)相關(guān)聯(lián)的元數(shù)據(jù)是否已經(jīng)被加載至內(nèi)存中。如果相應(yīng)的FS分區(qū)未被加載,則在塊503處,IO請(qǐng)求被排隊(duì)以用于在文件系統(tǒng)分區(qū)被加載至內(nèi)存中之后的隨后執(zhí)行。此外,相應(yīng)的FS分區(qū)被調(diào)度以被加載(例如交換至)。
[0060]如果FS分區(qū)已經(jīng)被加載,則在塊504處,IO請(qǐng)求被調(diào)度以被執(zhí)行并且與FS分區(qū)相關(guān)聯(lián)的待決IO請(qǐng)求計(jì)數(shù)被遞增。該待決IO請(qǐng)求計(jì)數(shù)表示用于FS分區(qū)的當(dāng)前待決的將被執(zhí)行的IO請(qǐng)求的數(shù)量。因此,每個(gè)FS分區(qū)域與單獨(dú)的待決IO請(qǐng)求計(jì)數(shù)相關(guān)聯(lián)。隨后在塊505處,當(dāng)接收到指示IO請(qǐng)求的執(zhí)行已經(jīng)完成的信號(hào)時(shí),待決IO請(qǐng)求計(jì)數(shù)被遞減??蛇x擇地,在塊506處,F(xiàn)S分區(qū)的令牌也被遞減。注意,塊501、塊502-504、及塊505-506處涉及的操作可以按照不同進(jìn)程或線(xiàn)程來(lái)執(zhí)行,其可以由操作系統(tǒng)獨(dú)立地和/或基本同時(shí)地執(zhí)行。
[0061]圖6是示出根據(jù)本發(fā)明另一實(shí)施方式的用于管理由存儲(chǔ)系統(tǒng)的文件系統(tǒng)分區(qū)使用的資源的方法。方法600可以由圖3的系統(tǒng)300執(zhí)行,其可以是周期性執(zhí)行的維護(hù)或內(nèi)務(wù)整理的部分線(xiàn)程。參考圖6,在塊601處,當(dāng)前被加載至存儲(chǔ)系統(tǒng)的內(nèi)存中的一個(gè)或多個(gè)FS分區(qū)列表被識(shí)別,一個(gè)或多個(gè)FS分區(qū)是共同表示存儲(chǔ)系統(tǒng)的單個(gè)較大邏輯文件系統(tǒng)的多個(gè)FS分區(qū)部分。在塊602處,對(duì)于每個(gè)加載的FS分區(qū),關(guān)聯(lián)令牌被檢查以確定令牌值是否達(dá)到預(yù)定值(如零)。如果未達(dá)到,則在塊603處,令牌值被遞減。一旦FS分區(qū)的令牌值達(dá)到零,則FS分區(qū)被認(rèn)為是將被交換出去的候選。上述過(guò)程被針對(duì)加載至內(nèi)存中的每個(gè)FS分區(qū)反復(fù)執(zhí)行。
[0062]圖7是示出根據(jù)本發(fā)明另一實(shí)施方式的用于管理由存儲(chǔ)系統(tǒng)的文件系統(tǒng)分區(qū)使用費(fèi)資源的方法的流程圖。方法700可以由圖3的系統(tǒng)300執(zhí)行。參考圖7,在塊701處,一個(gè)或多個(gè)FS分區(qū)列表當(dāng)前被加載至內(nèi)存中。在塊702處,對(duì)于每個(gè)加載的FS分區(qū),對(duì)應(yīng)令牌被檢查儀確定令牌值是否達(dá)到零。如果令牌值達(dá)到零,在塊703處,確定是否存在FS分區(qū)的任何待決IO請(qǐng)求。如果`不存在,在塊704處,F(xiàn)S分區(qū)可以關(guān)閉并從內(nèi)存中交換出去。注意,方法500-700可以經(jīng)由不同進(jìn)程或線(xiàn)程來(lái)獨(dú)立地和/或基本同時(shí)地執(zhí)行。
[0063]根據(jù)一些實(shí)施方式,每個(gè)FS分區(qū)存儲(chǔ)具有相似特性(如訪(fǎng)問(wèn)模式)的文件的段。例如,文件可以基于文件的時(shí)間屬性被存儲(chǔ)在多個(gè)FS分區(qū)中。在一種實(shí)施方式中,具有相似訪(fǎng)問(wèn)時(shí)間(如最后修改時(shí)間)的文件被存儲(chǔ)在相同的分區(qū)中。也就是說(shuō),已經(jīng)以類(lèi)似時(shí)間幀被修改的文件可以被分組到相同的FS分區(qū)中?;跁r(shí)間的分區(qū)方案后的基本思想是基于文件的時(shí)間創(chuàng)建分區(qū)。例如特定的示例,如果文件系統(tǒng)具有100個(gè)文件Π……Π00 (按照修改時(shí)間排序)并且十個(gè)分區(qū)被創(chuàng)建,包括分區(qū)Pi……pio,每個(gè)分區(qū)具有10個(gè)文件,則分區(qū)Pl將包括η……HO,ρ2將包括fll……f20,以此類(lèi)推。
[0064]文件通常是位置網(wǎng)域,即應(yīng)用常常訪(fǎng)問(wèn)部分或全部文件。通過(guò)在一個(gè)分區(qū)上存儲(chǔ)文件的全部?jī)?nèi)容減少了訪(fǎng)問(wèn)文件的分區(qū)交換。在長(zhǎng)期備份/歸檔工作量中,文件更可能是被按照它們的修改時(shí)間順序被訪(fǎng)問(wèn)。典型的訪(fǎng)問(wèn)查詢(xún)(例如在監(jiān)管查詢(xún)期間)具有例如“產(chǎn)生在日期X和y之間發(fā)送的所有郵件”的形式。這種查詢(xún)被按照時(shí)間順序掃描文件來(lái)處理并因此自然利用文件分割基于的時(shí)間排列。如“產(chǎn)生具有字X和y的所有文件”的關(guān)鍵字查詢(xún)通過(guò)首先查閱倒排索引結(jié)構(gòu)來(lái)回答。倒排索引將按照修改時(shí)間順序組織并返回相符文件,因?yàn)樵谠擁樞蛑兴饕Y(jié)構(gòu)被遞增排列(例如,當(dāng)文件被創(chuàng)建/修改時(shí)文件被插入至索引中)。
[0065]對(duì)于基于時(shí)間的分割方案,這兩種工作量下的分區(qū)的訪(fǎng)問(wèn)模式將是連續(xù)的,S卩,來(lái)自一個(gè)分區(qū)的所有相關(guān)文件將在轉(zhuǎn)移到下一個(gè)分區(qū)前被訪(fǎng)問(wèn)。數(shù)據(jù)基于時(shí)間的分割還給出好的重復(fù)項(xiàng)消除性能。圍繞相同或相似時(shí)間幀創(chuàng)建的文件與時(shí)間間隔長(zhǎng)創(chuàng)建的文件相比更可能具有較多共同數(shù)據(jù)。數(shù)據(jù)分割方案還應(yīng)該容易被設(shè)置和維護(hù)。在基于時(shí)間分割方案中,無(wú)論文件被創(chuàng)建或更新,必須將其寫(xiě)入到或移動(dòng)(從其當(dāng)前分區(qū))到保持最后修改數(shù)據(jù)的分區(qū)中。將文件從一個(gè)分區(qū)移動(dòng)到另一個(gè)分區(qū)可能是非常昂貴的操作,但是大量工作量(長(zhǎng)期歸檔/備份工作量)主要是寫(xiě)一次讀多次(WORM),其中一旦數(shù)據(jù)被第一次寫(xiě)入時(shí)文件被創(chuàng)建并且以后從不更新。
[0066]WORM數(shù)據(jù)集理想地適用于基于修改時(shí)間的分割方案。所有新的數(shù)據(jù)必須被只寫(xiě)入至一個(gè)分區(qū),即,當(dāng)前分區(qū)。一旦當(dāng)前分區(qū)填滿(mǎn),其可以被標(biāo)志為只讀并且另一個(gè)新的當(dāng)前分區(qū)被創(chuàng)建以開(kāi)始填充。因此,任何時(shí)刻,只存在一個(gè)可寫(xiě)分區(qū)和多個(gè)只讀分區(qū)??蓪?xiě)分區(qū)與只讀分區(qū)相比通常具有非常大的內(nèi)存需求,因此,只具有一個(gè)可寫(xiě)分區(qū)進(jìn)一步降低了系統(tǒng)內(nèi)存需求。
[0067]圖8是示出根據(jù)本發(fā)明另一實(shí)施方式的存儲(chǔ)系統(tǒng)的框圖。例如,系統(tǒng)800可以作為圖1的存儲(chǔ)系統(tǒng)104的部分而被實(shí)施。參考圖8,類(lèi)似于圖3的系統(tǒng)300,分區(qū)301-303可以表示圖1的分區(qū)108-109的至少部分分區(qū)。分區(qū)301-303可以在單個(gè)計(jì)算節(jié)點(diǎn)中被實(shí)施。分區(qū)301-303中的每個(gè)分區(qū)由唯一標(biāo)識(shí)對(duì)應(yīng)分區(qū)的分區(qū)ID來(lái)標(biāo)識(shí)。分區(qū)301-303中的每個(gè)分區(qū)進(jìn)一步包括元數(shù)據(jù),該元數(shù)據(jù)包括獨(dú)立存儲(chǔ)與此的足夠信息接入數(shù)據(jù)。系統(tǒng)800進(jìn)一步包括分區(qū)管理器111,該分區(qū)管理器111具有與圖3所示的分區(qū)管理器相同或相似功能。例如,分區(qū)管理器111被配置成根據(jù)交換或驅(qū)逐方案(如如上所述基于令牌的方案)將FS分區(qū)801-803中的任何一個(gè)分區(qū)作為FS分區(qū)元數(shù)據(jù)307-308的部分交換至或交換出內(nèi)存110,以使得所利用的資源按照有效的方式被管理。
[0068]根據(jù)一種實(shí)施方式,當(dāng)文件將被寫(xiě)入至分區(qū)301-303的FS分區(qū)801-803中的一個(gè)時(shí),文件被寫(xiě)入至基于分區(qū)算法810 (如,基于將來(lái)可能的文件訪(fǎng)問(wèn)模式)而選擇的FS分區(qū)中。在一種實(shí)施方式中,文件可以基于文件的時(shí)間屬性被寫(xiě)至FS分區(qū)。由于FS分區(qū)801-803被基于文件的時(shí)間屬性而被限定或分組,所以FS分區(qū)801-803中的每個(gè)分區(qū)關(guān)聯(lián)于特定時(shí)期。如上所述,圍繞相同或相似時(shí)間幀創(chuàng)建的文件更可能被一起訪(fǎng)問(wèn)。因此,當(dāng)文件被訪(fǎng)問(wèn)時(shí),較少的FS分區(qū)將需要被交換至或交換出內(nèi)存110。
[0069]用于分割的文件時(shí)間屬性可以是與圖9所示文件相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)900的最后訪(fǎng)問(wèn)時(shí)間屬性901、最后修改時(shí)間屬性902、及最后狀態(tài)改變時(shí)間屬性903中的任何一者。在一種實(shí)施方式中,用于分割的時(shí)間屬性可以是文件的創(chuàng)建時(shí)間。數(shù)據(jù)結(jié)構(gòu)900表示部分標(biāo)準(zhǔn)文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的索引節(jié)點(diǎn)。索引節(jié)點(diǎn)被用于存儲(chǔ)關(guān)于文件的信息,其中數(shù)據(jù)塊是用于存儲(chǔ)文件實(shí)際數(shù)據(jù)的結(jié)構(gòu)。包含在索引節(jié)點(diǎn)中的信息可以包括例如文件所有權(quán)、文件訪(fǎng)問(wèn)許可、文件大小、文件類(lèi)型和文件數(shù)據(jù)塊的盤(pán)上的位置的參考。該文件數(shù)據(jù)位置的參考通過(guò)索引節(jié)點(diǎn)中的指針來(lái)提供,其還可以參考間接塊,該間接塊反過(guò)來(lái)參考數(shù)據(jù)塊,這依賴(lài)于文件中的數(shù)據(jù)量。
[0070]回顧圖8,根據(jù)一種實(shí)施方式,系統(tǒng)800是歸檔系統(tǒng),其中外部或新的用戶(hù)數(shù)據(jù)通常被寫(xiě)至作為活動(dòng)分區(qū)的分區(qū)801。存儲(chǔ)在分區(qū)801中的數(shù)據(jù)可以遷移至分區(qū)802,分區(qū)802為目標(biāo)分區(qū)。當(dāng)分區(qū)802填滿(mǎn)時(shí),分區(qū)802被密封并且變?yōu)橐褮w檔的分區(qū)803 (例如,只讀分區(qū))。另一個(gè)分區(qū)被分配為新的目標(biāo)分區(qū)。根據(jù)一種實(shí)施方式,在數(shù)據(jù)遷移過(guò)程中,存儲(chǔ)在活動(dòng)分區(qū)(例如801)中的文件基于文件的時(shí)間屬性(例如,最后修改時(shí)間屬性)而被掃描,并被轉(zhuǎn)移至目標(biāo)分區(qū)(例如分區(qū)802),以使得存儲(chǔ)在目標(biāo)分區(qū)中的文件以類(lèi)似時(shí)間幀被最后修改。
[0071]圖10是示出根據(jù)本發(fā)明一種實(shí)施方式的用于分割文件系統(tǒng)的方法的流程圖。方法1000可以由圖8的系統(tǒng)800來(lái)執(zhí)行。參考圖10,在塊1001處,存儲(chǔ)系統(tǒng)的文件系統(tǒng)被分割成多個(gè)FS分區(qū)。每個(gè)FS分區(qū)域特定時(shí)期相關(guān)聯(lián)。響應(yīng)于寫(xiě)文件的請(qǐng)求,在塊1002,文件的時(shí)間屬性被確定。在一種實(shí)施方式中,時(shí)間屬性為文件的最后修改時(shí)間屬性。在塊1003處,F(xiàn)S分區(qū)被基于文件的時(shí)間屬性識(shí)別。在塊1004處,文件被存儲(chǔ)在被識(shí)別的FS分區(qū)中。
[0072]圖11是示出根據(jù)本發(fā)明另一實(shí)施方式的用于分割文件系統(tǒng)的方法的流程圖。方法1100可以由圖8的系統(tǒng)800來(lái)執(zhí)行。參考圖11,在塊1101處,用于將數(shù)據(jù)從活動(dòng)分區(qū)遷移至目標(biāo)分區(qū)的請(qǐng)求被接收?;顒?dòng)分區(qū)和目標(biāo)分區(qū)中的每一個(gè)分區(qū)包含在分區(qū)之上可被重復(fù)項(xiàng)消除的文件的段。響應(yīng)于請(qǐng)求,在塊1102處,存儲(chǔ)在活動(dòng)分區(qū)中的所有文件按照根據(jù)文件時(shí)間屬性(例如,最后修改的時(shí)間屬性)的順序被掃描。在塊1103處,經(jīng)掃描的文件被從活動(dòng)分區(qū)轉(zhuǎn)移至目標(biāo)分區(qū)以用于歸檔,以使得目標(biāo)分區(qū)包含具有相似訪(fǎng)問(wèn)模式的文件。
[0073]圖12是示出可以與本發(fā)明的實(shí)施方式一起使用的數(shù)據(jù)存儲(chǔ)系統(tǒng)的示例的框圖。例如,系統(tǒng)1200可以作為圖1所示的存儲(chǔ)系統(tǒng)的部分而被實(shí)施。在該示例中,系統(tǒng)1200可以是重復(fù)項(xiàng)刪除數(shù)據(jù)存儲(chǔ)系統(tǒng)。參考圖12,系統(tǒng)1200包括但是不限于文件服務(wù)接口 1201、內(nèi)容存儲(chǔ)管理器1202、具有段指紋1204的段存儲(chǔ)管理器1203、及用于管理存儲(chǔ)在一個(gè)或多個(gè)盤(pán)1206的容器中的段的容器管理器1405。
[0074]根據(jù)一種實(shí)施方式系統(tǒng)1200以?xún)?nèi)容依賴(lài)方式將數(shù)據(jù)對(duì)象(例如,文件)拆分成不同長(zhǎng)度的段并針對(duì)每個(gè)段計(jì)算指紋。系統(tǒng)1200使用指紋來(lái)識(shí)別重復(fù)段和用于引用段的段描述符的部分二者。其表示文件為指紋分段序列。在寫(xiě)期間,系統(tǒng)1200識(shí)別重復(fù)段并盡力只存儲(chǔ)任何特定段的一個(gè)復(fù)本。在存儲(chǔ)新段之前,系統(tǒng)1200可以使用各種壓縮算法(如各種Ziv-Lempel算法)來(lái)壓縮段。在一種實(shí)施方式中,系統(tǒng)1200支持多種訪(fǎng)問(wèn)協(xié)議,這些訪(fǎng)問(wèn)協(xié)議在公共文件服務(wù)接口 1201上被分層。支持的協(xié)議包括網(wǎng)絡(luò)文件系統(tǒng)(NFS)、通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS)、及虛擬磁帶庫(kù)接口(VTL)等。系統(tǒng)1200包括用于管理系統(tǒng)的管理接口。管理接口可以是文件服務(wù)接口 1201的一部分。
[0075]當(dāng)數(shù)據(jù)流進(jìn)入系統(tǒng)1200時(shí),其通過(guò)標(biāo)準(zhǔn)接口中的一個(gè)到達(dá)通用類(lèi)文件服務(wù)層,該通用類(lèi)文件服務(wù)層管理名稱(chēng)空間和文件元數(shù)據(jù)。文件服務(wù)層向管理文件中數(shù)據(jù)內(nèi)容的內(nèi)容存儲(chǔ)管理器1202轉(zhuǎn)達(dá)寫(xiě)請(qǐng)求。內(nèi)容存儲(chǔ)管理器1202將數(shù)據(jù)流拆分成段,使用段存儲(chǔ)管理器1203來(lái)執(zhí)行重復(fù)項(xiàng)消除,以及保持文件的引用軌跡(例如,在邏輯數(shù)據(jù)對(duì)象和物理數(shù)據(jù)對(duì)象之間進(jìn)行映射)。段存儲(chǔ)管理器1203進(jìn)行重復(fù)項(xiàng)消除的實(shí)際工作。其將經(jīng)重復(fù)項(xiàng)消除的(唯一的)段包裝成相對(duì)大的單元,使用各種壓縮方法(如Ziv-Lempel算法)壓縮這種單元,以進(jìn)一步壓縮數(shù)據(jù),并且然后將壓縮的結(jié)果寫(xiě)至由容器管理器1205管理的容器中。
[0076]為了從系統(tǒng)1200讀取數(shù)據(jù)流,客戶(hù)端通過(guò)標(biāo)準(zhǔn)接口中的一個(gè)和文件服務(wù)層1201來(lái)驅(qū)動(dòng)讀操作。內(nèi)容存儲(chǔ)器1202使用對(duì)重復(fù)項(xiàng)消除段的引用來(lái)向客戶(hù)端傳遞期望的數(shù)據(jù)流。段存儲(chǔ)管理器1203預(yù)讀取、解壓縮、讀取和高速緩存來(lái)自容器管理器1205的數(shù)據(jù)段。根據(jù)一種實(shí)施方式,內(nèi)容存儲(chǔ)管理器1202對(duì)重復(fù)項(xiàng)消除的數(shù)據(jù)對(duì)象實(shí)施字節(jié)范圍寫(xiě)和讀,其中對(duì)象是客戶(hù)數(shù)據(jù)字節(jié)的線(xiàn)性序列并具有固有的和客戶(hù)可設(shè)定屬性或元數(shù)據(jù)。對(duì)象可以是常規(guī)文件、整卷或盒式磁帶的備份圖像。
[0077]為了將字節(jié)范圍寫(xiě)至對(duì)象中,內(nèi)容管理器1202執(zhí)行多個(gè)操作。首先,錨定以?xún)?nèi)容依賴(lài)方式將字節(jié)范圍分割成不同長(zhǎng)度的段。然后段指紋計(jì)算散列(如SHA-1散列)并基于該散列生成段描述符。每個(gè)段描述符包括至少指紋和大小的段信息。進(jìn)一步地,段映射建立段樹(shù),該段樹(shù)記錄對(duì)象字節(jié)范圍和段描述符之間的映射。目的是表示使用對(duì)重復(fù)項(xiàng)消除的段的引用的數(shù)據(jù)對(duì)象。為了讀取對(duì)象中的字節(jié)范圍,內(nèi)容存儲(chǔ)管理器1202遍歷通過(guò)上述段映射操作而創(chuàng)建的段樹(shù),以獲得相關(guān)段的段描述符。其從段存儲(chǔ)(未示出)獲取段并將請(qǐng)求的字節(jié)范圍返回至客戶(hù)端。
[0078]段存儲(chǔ)管理器1203本質(zhì)上管理由它們的段描述符1204鍵控的段的數(shù)據(jù)庫(kù)。為了支持寫(xiě)操作,其接受具有它們的段描述符的段并存儲(chǔ)它們。為了支持讀操作,其獲取由它們的段描述符指定的段。為了寫(xiě)數(shù)據(jù)段,段存儲(chǔ)執(zhí)行多個(gè)操作。首先,段篩選確定段是否是復(fù)本。這是用于消除重復(fù)段的關(guān)鍵操作并可以觸發(fā)盤(pán)1/0,因此,其開(kāi)銷(xiāo)可以顯著影響吞吐量性能。進(jìn)一步地,容器包裝向作為系統(tǒng)中存儲(chǔ)單元的容器中添加將被存儲(chǔ)的段。該包裝操作還使用各種壓縮算法(如各種ZiV-Lempel算法)來(lái)壓縮段數(shù)據(jù)。當(dāng)被完全包裝時(shí),容器被附加至容器管理器1205。最后,在容器已經(jīng)被附加至容器管理器1205后,段索引更新段索弓丨,該段索引將段映射至持有該段的容器。為了讀取數(shù)據(jù)段,段存儲(chǔ)管理器1203執(zhí)行某些操作。首先,段查詢(xún)查找存儲(chǔ)所請(qǐng)求的段的容器。該操作可以觸發(fā)盤(pán)I/O搜索盤(pán)上的索引,因此其是吞吐量敏感的。容器檢索通過(guò)調(diào)用容器管理器1205來(lái)讀取所指示的容器的相關(guān)部分。容器拆包解壓縮容器的檢索部分并返回所請(qǐng)求的數(shù)據(jù)段。
[0079]容器管理器1205向段存儲(chǔ)1203提供存儲(chǔ)容器記錄提取,而不是塊提取。容器包括具有用于存儲(chǔ)的段的段描述符的元數(shù)據(jù)部分。它們?cè)诳梢员桓郊拥男氯萜骱捅粍h除的舊容器中是不變的,但是一旦寫(xiě)入容器不能被修改。當(dāng)段存儲(chǔ)管理器1203附加容器時(shí),容器管理器1205返回容器ID,該容器ID在系統(tǒng)的生命中是唯一的。容器管理器1205負(fù)責(zé)分配、解除分配、讀、寫(xiě)及可靠存儲(chǔ)容器。其支持元數(shù)據(jù)部分或一部分?jǐn)?shù)據(jù)部分的讀取,但是其僅支持所有容器的附加。如果容器未滿(mǎn)但是需要被寫(xiě)入盤(pán),其被補(bǔ)全為它的全尺寸。容器管理器1205被建立在標(biāo)準(zhǔn)塊存儲(chǔ)1206上。如軟件RAID-6、連續(xù)數(shù)據(jù)清理、容器驗(yàn)證和端到端數(shù)據(jù)核查的先進(jìn)技術(shù)被應(yīng)用以確保高級(jí)別的數(shù)據(jù)完整性和可靠性。
[0080]容器提取提供多個(gè)益處:1)固定的容器尺寸使得容器分配和解除分配變得容易;2)大粒度的容器寫(xiě)實(shí)現(xiàn)高效的盤(pán)吞吐量使用;以及3)適當(dāng)大小的容器尺寸允許有效的完全條帶RAID寫(xiě),這能夠使有效的軟件RAID在存儲(chǔ)層實(shí)施。根據(jù)一種實(shí)施方式,系統(tǒng)1200的某些組件(如文件服務(wù)接口)包括邏輯,該邏輯被配置成檢查接收到的特定請(qǐng)求是否能夠可以對(duì)不變數(shù)據(jù)對(duì)象的完整性讓步并被配置成使用上述技術(shù)從用于請(qǐng)求的授權(quán)代理請(qǐng)求必要的認(rèn)可。其它配置也可以存在。
[0081]圖13是可以與本發(fā)明一種實(shí)施方式一起使用的數(shù)據(jù)處理系統(tǒng)的框圖。例如,系統(tǒng)1300可以被用作圖1所示的客戶(hù)端或服務(wù)計(jì)算機(jī)。注意,盡管圖13示出了計(jì)算機(jī)系統(tǒng)的不同組件,但是并不意欲表示互聯(lián)這些組件的任何特定的結(jié)構(gòu)或方式,因?yàn)檫@些細(xì)節(jié)并不與本發(fā)明密切相關(guān)。還將理解網(wǎng)絡(luò)計(jì)算機(jī)、掌上電腦、手機(jī)、及其他具有較少組件或可能更多組件的數(shù)據(jù)處理系統(tǒng)也可以與本發(fā)明一起使用。圖13的計(jì)算機(jī)系統(tǒng)可以例如是蘋(píng)果Macintosh計(jì)算機(jī)或IBM可兼容PC。
[0082]如圖13所示,作為數(shù)據(jù)處理系統(tǒng)形式的計(jì)算機(jī)系統(tǒng)1300包括耦合至處理器1303和R0M1307、易失性RAM1305、及非易失性?xún)?nèi)存1306的總線(xiàn)或互聯(lián)1302。處理器1303可以包括多個(gè)處理器和/或核邏輯,該多個(gè)處理器和/或核邏輯構(gòu)成系統(tǒng)的中央處理器(CPU)并從而控制系統(tǒng)的所有操作。根據(jù)某些實(shí)施方式,處理器1303通過(guò)執(zhí)行存儲(chǔ)在存儲(chǔ)器1305-1307中任何一個(gè)存儲(chǔ)器中的軟件(例如,應(yīng)用程序和操作系統(tǒng)等)來(lái)實(shí)現(xiàn)上述過(guò)程。處理器1303可以包括一個(gè)或多個(gè)可編程通用或?qū)S梦⑻幚砥鳌?shù)據(jù)信號(hào)處理器(DSP)、可編程控制器、專(zhuān)用集成電路(ASIC)、可編程邏輯設(shè)備(PLD)等或這些設(shè)備的組合。
[0083]如圖13所示,處理器1303 (可以是例如因特爾處理器或PowerPC處理器)被耦合至高速緩存內(nèi)存1304??偩€(xiàn)1302將這些不同組件互相連接在一起,并且還將這些組件1303和1305-1307連接至顯示控制器和顯示設(shè)備1308,并連接至輸入/輸出(I/O)設(shè)備1310,該輸入/輸出設(shè)備1310可以是鼠標(biāo)、鍵盤(pán)、調(diào)制解調(diào)器、網(wǎng)絡(luò)接口、打印機(jī)、及本領(lǐng)域已知的其他設(shè)備。
[0084]通常,輸入/輸出設(shè)備1310通過(guò)輸入/輸出控制器1309被f禹合至系統(tǒng)。易失性RAM1305通常被實(shí)施為動(dòng)態(tài)RAM (DRAM),該DRAM需要持續(xù)的電力以為了更新或保持內(nèi)存中的數(shù)據(jù)。非易失性?xún)?nèi)存1306通常是磁硬盤(pán)、磁光盤(pán)、光盤(pán)、DVD RAM、閃存、或甚至在從系統(tǒng)移除電力后保持?jǐn)?shù)據(jù)的其它類(lèi)型的內(nèi)存系統(tǒng)。通常,非易失性?xún)?nèi)存還將是隨機(jī)訪(fǎng)問(wèn)內(nèi)存,盡管這并不需要。
[0085]盡管圖13示出非易失性?xún)?nèi)存是直接耦合至數(shù)據(jù)處理系統(tǒng)中的其他組件的本地設(shè)備,但是將理解本發(fā)明可以利用遠(yuǎn)離系統(tǒng)的非易失性?xún)?nèi)存,如通過(guò)網(wǎng)絡(luò)接口(如調(diào)制解調(diào)器或以太網(wǎng)接口)被耦合至數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡(luò)存儲(chǔ)設(shè)備??偩€(xiàn)1302可以包括通過(guò)如本領(lǐng)域已知的各種橋、控制器、和/或適配器彼此連接的一個(gè)或多個(gè)總線(xiàn)。在一種實(shí)施方式中,I/O控制器1309包括用于控制USB外圍設(shè)備的USB (通用串行總線(xiàn))適配器??商娲?,I/O控制器1309可以包括IEEE-1394適配器,也被稱(chēng)為火線(xiàn)(FireWire)適配器,以用于控制火線(xiàn)設(shè)備。其它組件也可以被包括。
[0086]已經(jīng)從對(duì)計(jì)算機(jī)內(nèi)存內(nèi)數(shù)據(jù)比特進(jìn)行操作的算法和符號(hào)表示方面闡述了之前詳細(xì)描述的一部分。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域中的技術(shù)人員更有效地向本領(lǐng)域技術(shù)人員傳達(dá)他們的工作的主旨的方式。于此的算法通常被構(gòu)思成實(shí)現(xiàn)期望結(jié)果的一系列有條理的操作。這些操作為請(qǐng)求物理量的物理處理的那些操作。
[0087]然而應(yīng)該牢記,所有這些和類(lèi)似術(shù)語(yǔ)將與合適的物理量相關(guān)聯(lián),并且只是被應(yīng)用至這些量的方便標(biāo)簽。除非特別規(guī)定,否則如上文討論所呈現(xiàn)的,將理解在整個(gè)說(shuō)明書(shū)中,利用如以下權(quán)利要求書(shū)中陳述的那些術(shù)語(yǔ)的討論指的是計(jì)算機(jī)系統(tǒng)或類(lèi)似電子計(jì)算設(shè)備的動(dòng)作和處理,其用于將被表示為計(jì)算機(jī)系統(tǒng)的寄存器和內(nèi)存內(nèi)的物理(電子)量進(jìn)行操縱并變換成被類(lèi)似地表示為計(jì)算機(jī)系統(tǒng)內(nèi)存或寄存器或其它信息存儲(chǔ)、傳輸或顯示設(shè)備內(nèi)的物理量的其他數(shù)據(jù)。
[0088]本發(fā)明的實(shí)施方式還涉及用于執(zhí)行于此的操作的裝置。這種計(jì)算機(jī)程序被存儲(chǔ)在永久性計(jì)算機(jī)可讀介質(zhì)上。機(jī)器可讀介質(zhì)包括用于以機(jī)器(如計(jì)算機(jī))可讀形式存儲(chǔ)信息的任何機(jī)制。例如,機(jī)器可讀(如,計(jì)算機(jī)可讀)介質(zhì)包括機(jī)器(如,計(jì)算機(jī))可讀存儲(chǔ)介質(zhì)(如,只讀內(nèi)存(“ROM”)、隨機(jī)接入內(nèi)存(“RAM”)、磁盤(pán)存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存設(shè)備)。
[0089]之前附圖描述的過(guò)程或方法可以由處理邏輯來(lái)執(zhí)行,該處理邏輯包括硬件(如,電路、專(zhuān)用邏輯等)、軟件(如,包含在永久性計(jì)算機(jī)可讀介質(zhì)上)、或二者的結(jié)合。盡管過(guò)程或方法在上文從某些順序操作的方面進(jìn)行了描述,但是應(yīng)該理解描述的某些操作可以以不同順序被執(zhí)行。此外,某些操作可以并行地而不是順序地被執(zhí)行。
[0090]本發(fā)明的實(shí)施方式未參考任何特殊的編程語(yǔ)言而被描述。將理解各種編程語(yǔ)言可以被用于實(shí)施于此描述的本發(fā)明的實(shí)施方式的教導(dǎo)。
[0091]在之前的說(shuō)明書(shū)中,本發(fā)明的實(shí)施方式已經(jīng)參考其特定的示例性實(shí)施方式而被描述。顯然的是,在不脫離所附權(quán)利要求書(shū)陳述的本發(fā)明的廣泛精神和范圍的情況下對(duì)其可以進(jìn)行各種修改。因此,說(shuō)明書(shū)和附圖將被認(rèn)為是說(shuō)明性的意義而非限制性的意義。
【權(quán)利要求】
1.一種用于提供文件系統(tǒng)的計(jì)算機(jī)實(shí)施的方法,該方法包括: 將存儲(chǔ)系統(tǒng)的文件系統(tǒng)(FS)分割成多個(gè)FS分區(qū),每個(gè)FS分區(qū)存儲(chǔ)多個(gè)數(shù)據(jù)文件的段; 響應(yīng)于對(duì)訪(fǎng)問(wèn)所述多個(gè)FS分區(qū)中的第一 FS分區(qū)的輸入輸出(IO)請(qǐng)求, 選擇所述多個(gè)FS分區(qū)的當(dāng)前處于訪(fǎng)問(wèn)就緒狀態(tài)的第二 FS分區(qū); 將所述第二 FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)中移除;以及 將所述第一 FS分區(qū)帶入至訪(fǎng)問(wèn)就緒狀態(tài)中。
2.根據(jù)權(quán)利要求1所述的方法,其中將所述第二FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)中移除包括將關(guān)聯(lián)于所述第二 FS分區(qū)的元數(shù)據(jù)從所述存儲(chǔ)系統(tǒng)的系統(tǒng)內(nèi)存卸載,所述系統(tǒng)內(nèi)存在所述多個(gè)FS分區(qū)之間被共享,并且其中將所述第一 FS分區(qū)帶入至訪(fǎng)問(wèn)就緒狀態(tài)中包括將關(guān)聯(lián)于所述第一 FS分區(qū)的元數(shù)據(jù)加載至所述系統(tǒng)內(nèi)存中。
3.根據(jù)權(quán)利要求1所述的方法,其中將所述第二FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)中移除包括對(duì)關(guān)聯(lián)于所述第二 FS分區(qū)的存儲(chǔ)設(shè)備進(jìn)行斷電,并且其中將所述第一 FS分區(qū)帶入至所述訪(fǎng)問(wèn)就緒狀態(tài)中包括對(duì)關(guān)聯(lián)于所述第一 FS分區(qū)的存儲(chǔ)設(shè)備進(jìn)行上電。
4.根據(jù)權(quán)利要求1所述的方法,其中存儲(chǔ)在每個(gè)FS分區(qū)中的所述數(shù)據(jù)文件的段在所述FS分區(qū)內(nèi)被進(jìn)行重復(fù)項(xiàng)消除。
5.根據(jù)權(quán)利要求1所述的方法,該方法還包括: 響應(yīng)于所述IO請(qǐng)求,確定所述第一 FS分區(qū)是否處于訪(fǎng)問(wèn)就緒狀態(tài);以及 如果所述第一 FS分區(qū)未處于訪(fǎng)問(wèn)就緒狀態(tài),則將所述請(qǐng)求排列在所述文件系統(tǒng)的待決IO隊(duì)列中。
6.根據(jù)權(quán)利要求5所述的方法,其中如果所述第一FS分區(qū)處于訪(fǎng)問(wèn)就緒狀態(tài),則所述方法還包括: 調(diào)度所述IO請(qǐng)求的執(zhí)行;以及 遞增關(guān)聯(lián)于所述第一 FS分區(qū)的待決IO計(jì)數(shù),其中所述待決IO計(jì)數(shù)指示當(dāng)前在所述第一 FS分區(qū)中用于執(zhí)行的待決IO請(qǐng)求的數(shù)量。
7.根據(jù)權(quán)利要求6所述的方法,該方法還包括響應(yīng)于指示所述IO請(qǐng)求的執(zhí)行已經(jīng)被完成的信號(hào),遞減所述待決IO計(jì)數(shù)。
8.根據(jù)權(quán)利要求7所述的方法,該方法還包括: 當(dāng)所述FS分區(qū)正被加載時(shí),將具有初始值的令牌分配至所述第一 FS分區(qū);以及 響應(yīng)于指示完成所述IO請(qǐng)求的執(zhí)行的信號(hào),遞減關(guān)聯(lián)于所述第一 FS分區(qū)的所述令牌的值。
9.根據(jù)權(quán)利要求8所述的方法,該方法還包括周期性遞減關(guān)聯(lián)于所述第一FS分區(qū)的所述令牌的值。
10.根據(jù)權(quán)利要求9所述的方法,所述方法還包括如果所述待決IO計(jì)數(shù)和所述令牌的值中的至少一者達(dá)到預(yù)定值,則將所述第一 FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)移除。
11.根據(jù)權(quán)利要求1所述的方法,其中只要不存在用于所述第二FS分區(qū)的IO請(qǐng)求待決并且所述第二 FS分區(qū)已經(jīng)處于所述訪(fǎng)問(wèn)就緒狀態(tài)的時(shí)間達(dá)到預(yù)定時(shí)間段,則所述第二 FS分區(qū)被從所述訪(fǎng)問(wèn)就緒狀態(tài)移除。
12.—種具有存儲(chǔ)在其上的指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)所述指令被計(jì)算機(jī)執(zhí)行時(shí),促使所述計(jì)算機(jī)執(zhí)行用于管理文件系統(tǒng)的資源的方法,該方法包括: 將存儲(chǔ)系統(tǒng)的文件系統(tǒng)(FS)分割成多個(gè)FS分區(qū),每個(gè)FS分區(qū)存儲(chǔ)數(shù)據(jù)文件的段; 響應(yīng)于對(duì)訪(fǎng)問(wèn)所述多個(gè)FS分區(qū)中的第一 FS分區(qū)的輸入輸出(IO)請(qǐng)求, 選擇所述多個(gè)FS分區(qū)的當(dāng)前處于訪(fǎng)問(wèn)就緒狀態(tài)的第二 FS分區(qū); 將所述第二 FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)中移除;以及 將所述第一 FS分區(qū)帶入至訪(fǎng)問(wèn)就緒狀態(tài)中。
13.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中將所述第二FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)中移除包括將關(guān)聯(lián)于所述第二 FS分區(qū)的元數(shù)據(jù)從所述存儲(chǔ)系統(tǒng)的系統(tǒng)內(nèi)存卸載,所述系統(tǒng)內(nèi)存在所述多個(gè)FS分區(qū)之間被共享,并且其中將所述第一 FS分區(qū)帶入至訪(fǎng)問(wèn)就緒狀態(tài)中包括將關(guān)聯(lián)于所述第一 FS分區(qū)的元數(shù)據(jù)加載至所述系統(tǒng)內(nèi)存中。
14.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中將所述第二FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)中移除包括對(duì)關(guān)聯(lián)于所述第二 FS分區(qū)的存儲(chǔ)設(shè)備進(jìn)行斷電,并且其中將所述第一 FS分區(qū)帶入至所述訪(fǎng)問(wèn)就緒狀態(tài)中包括對(duì)關(guān)聯(lián)于所述第一 FS分區(qū)的存儲(chǔ)設(shè)備進(jìn)行上電。
15.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中存儲(chǔ)在每個(gè)FS分區(qū)中的所述數(shù)據(jù)文件的段在所述FS分區(qū)內(nèi)被進(jìn)行重復(fù)項(xiàng)消除。
16.根據(jù)權(quán)利要求15所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中該方法還包括: 響應(yīng)于所述IO請(qǐng)求,確定所述第一 FS分區(qū)是否處于訪(fǎng)問(wèn)就緒狀態(tài);以及 如果所述第一 FS分區(qū)未處于訪(fǎng)問(wèn)就緒狀態(tài),則將所述請(qǐng)求排列在所述文件系統(tǒng)的待決IO隊(duì)列中。
17.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中如果所述第一FS分區(qū)處于所述訪(fǎng)問(wèn)就緒狀態(tài),則所述方法還包括: 調(diào)度所述IO請(qǐng)求的執(zhí)行;以及 遞增關(guān)聯(lián)于所述第一 FS分區(qū)的待決IO計(jì)數(shù),其中所述待決IO計(jì)數(shù)指示當(dāng)前在所述第一 FS分區(qū)中用于執(zhí)行的待決IO請(qǐng)求的數(shù)量。
18.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述方法還包括響應(yīng)于指示所述IO請(qǐng)求的執(zhí)行已經(jīng)被完成的信號(hào),遞減所述待決IO計(jì)數(shù)。
19.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中該方法還包括: 當(dāng)所述FS分區(qū)正被加載時(shí),將具有初始值的令牌分配至所述第一 FS分區(qū);以及 響應(yīng)于指示完成所述IO請(qǐng)求的執(zhí)行的信號(hào),遞減關(guān)聯(lián)于所述第一 FS分區(qū)的所述令牌的值。
20.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述方法還包括周期性遞減關(guān)聯(lián)于所述第一 FS分區(qū)的所述令牌的值。
21.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述方法還包括如果所述待決IO計(jì)數(shù)和所述令牌的值中的至少一者達(dá)到預(yù)定值,則將所述第一 FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)移除。
22.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中只要不存在用于所述第二FS分區(qū)的IO請(qǐng)求待決并且所述第二 FS分區(qū)已經(jīng)處于所述訪(fǎng)問(wèn)就緒狀態(tài)的時(shí)間達(dá)到預(yù)定時(shí)間段,則所述第二 FS分區(qū)被從所述訪(fǎng)問(wèn)就緒狀態(tài)移除。
23.一種存儲(chǔ)系統(tǒng),該存儲(chǔ)系統(tǒng)包括: 系統(tǒng)內(nèi)存; 在所述系統(tǒng)內(nèi)存中執(zhí)行的文件系統(tǒng)(FS),所述文件系統(tǒng)具有多個(gè)FS分區(qū),每個(gè)FS分區(qū)存儲(chǔ)數(shù)據(jù)文件的段; 耦合到所述文件系統(tǒng)和所述系統(tǒng)內(nèi)存的分區(qū)管理器,其中所述分區(qū)管理器被配置成:響應(yīng)于對(duì)訪(fǎng)問(wèn)所述多個(gè)FS分區(qū)中的第一 FS分區(qū)的輸入輸出(IO)請(qǐng)求,選擇所述多個(gè)FS分區(qū)的當(dāng)前處于訪(fǎng)問(wèn)就緒狀態(tài)的第二 FS分區(qū); 將所述第二 FS分區(qū)從所述訪(fǎng)問(wèn)就緒狀態(tài)中移除;以及 將所述第一 FS分區(qū)帶入至訪(fǎng) 問(wèn)就緒狀態(tài)中。
【文檔編號(hào)】G06F17/30GK103562914SQ201280025403
【公開(kāi)日】2014年2月5日 申請(qǐng)日期:2012年3月7日 優(yōu)先權(quán)日:2011年3月31日
【發(fā)明者】S·麥卓, W·W·蘇 申請(qǐng)人:伊姆西公司