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