基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的制作方法
【專(zhuān)利摘要】基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)由存儲(chǔ)服務(wù)器實(shí)施,所述存儲(chǔ)服務(wù)器從客戶(hù)端接收對(duì)擴(kuò)展區(qū)的讀取請(qǐng)求,其中所述擴(kuò)展區(qū)包含鄰接塊的群組且所述讀取請(qǐng)求包含文件塊編號(hào)。所述存儲(chǔ)服務(wù)器從第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)檢索擴(kuò)展區(qū)識(shí)別符,其中所述存儲(chǔ)服務(wù)器使用所述所接收文件塊編號(hào)來(lái)遍歷所述第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到所述擴(kuò)展區(qū)識(shí)別符。所述存儲(chǔ)服務(wù)器從第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)檢索對(duì)所述擴(kuò)展區(qū)的參考,其中所述存儲(chǔ)服務(wù)器使用所述所檢索擴(kuò)展區(qū)識(shí)別符來(lái)遍歷所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到所述參考,且其中所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)跨越多個(gè)卷為全局的。所述存儲(chǔ)服務(wù)器使用所述參考從存儲(chǔ)裝置檢索所述擴(kuò)展區(qū)并將所述擴(kuò)展區(qū)返回到所述客戶(hù)端。
【專(zhuān)利說(shuō)明】基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)
[0001]版權(quán)公告/許可
[0002]本專(zhuān)利文檔的揭示內(nèi)容的一部分含有受版權(quán)保護(hù)的材料。如美國(guó)專(zhuān)利與商標(biāo)局專(zhuān)利文件或記錄中所顯現(xiàn),版權(quán)所有者不反對(duì)任何人對(duì)本專(zhuān)利文檔或本專(zhuān)利揭示內(nèi)容進(jìn)行拓制,但另外保留所有版權(quán)。以下公告適用于如下文所描述及本文圖式中的軟件及數(shù)據(jù):版權(quán)?: 2011年,NetApp公司,保留所有權(quán)利。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明的至少一個(gè)實(shí)施例涉及數(shù)據(jù)存儲(chǔ)系統(tǒng),且更特定來(lái)說(shuō),涉及根據(jù)基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)來(lái)執(zhí)行讀取與寫(xiě)入操作。
【背景技術(shù)】
[0004]當(dāng)今存在各種形式的基于網(wǎng)絡(luò)的存儲(chǔ)系統(tǒng)。這些形式包含網(wǎng)絡(luò)附接存儲(chǔ)裝置(NAS)、存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)以及其它形式?;诰W(wǎng)絡(luò)的存儲(chǔ)系統(tǒng)通常用于多種目的,例如為多個(gè)用戶(hù)提供對(duì)所共享數(shù)據(jù)的存取、備份關(guān)鍵數(shù)據(jù)(例如,通過(guò)數(shù)據(jù)鏡射)等。
[0005]基于網(wǎng)絡(luò)的存儲(chǔ)系統(tǒng)通常包含至少一個(gè)存儲(chǔ)服務(wù)器,其為經(jīng)配置以代表一個(gè)或一個(gè)以上客戶(hù)端處理系統(tǒng)(客戶(hù)端)存儲(chǔ)及檢索數(shù)據(jù)的處理系統(tǒng)。所述數(shù)據(jù)作為存儲(chǔ)對(duì)象(例如塊及/或文件)來(lái)存儲(chǔ)及檢索。塊是具有預(yù)定長(zhǎng)度的數(shù)據(jù)字節(jié)或位的序列。文件是具有任意長(zhǎng)度的相關(guān)字節(jié)或位的集合。在NAS的上下文中,存儲(chǔ)服務(wù)器代表一個(gè)或一個(gè)以上客戶(hù)端而操作以存儲(chǔ)及管理對(duì)數(shù)據(jù)的文件級(jí)存取。可通過(guò)使用例如廉價(jià)磁盤(pán)冗余陣列(RAID)的數(shù)據(jù)存儲(chǔ)方案將文件存儲(chǔ)于包含一個(gè)或一個(gè)以上大容量存儲(chǔ)裝置陣列(例如磁盤(pán)或光盤(pán)或磁帶)的存儲(chǔ)系統(tǒng)中。在SAN上下文中,存儲(chǔ)服務(wù)器為客戶(hù)端提供對(duì)所存儲(chǔ)數(shù)據(jù)的塊級(jí)存取而非文件級(jí)存取。一些存儲(chǔ)服務(wù)器能夠?yàn)榭蛻?hù)端提供文件級(jí)存取及塊級(jí)存取兩者,例如由加利福尼亞州森尼維耳市(Sunnyvale, California)的NetApp公司(NctApp*)制造的某些存儲(chǔ)服務(wù)器。
[0006]圖1是隨處寫(xiě)入文件布局(WAFL)文件系統(tǒng)的現(xiàn)有技術(shù)說(shuō)明性實(shí)施例。參考圖1,WAFL聚合體100為WAFL文件系統(tǒng)的實(shí)例。WAFL聚合體100包含一個(gè)或一個(gè)以上靈活卷110、一個(gè)或一個(gè)以上卷容器120及物理存儲(chǔ)裝置130。
[0007]WAFL聚合體100為可在WAFL文件系統(tǒng)中存儲(chǔ)數(shù)據(jù)的物理存儲(chǔ)容器。靈活卷110為允許對(duì)物理存儲(chǔ)裝置130上的卷分配的虛擬化的邏輯卷。借此,多個(gè)獨(dú)立管理的靈活卷110可共享相同物理存儲(chǔ)裝置(例如,物理存儲(chǔ)裝置130)。所述虛擬化需要由靈活卷110使用的虛擬卷塊編號(hào)(VVBN)與由WAFL聚合體100使用的物理卷塊編號(hào)(PVBN)之間的映射來(lái)存取存儲(chǔ)于物理存儲(chǔ)裝置130中的數(shù)據(jù)。如本文中所使用,PVBN指代已在聚合體中抽象成單一線性序列的磁盤(pán)塊。每一卷容器120對(duì)應(yīng)于一靈活卷110。卷容器120含有對(duì)應(yīng)靈活卷110的所有數(shù)據(jù)塊。
[0008]如本文中所使用,塊偏移或偏移指代距存儲(chǔ)對(duì)象(例如卷、文件、擴(kuò)展區(qū)等)的開(kāi)始的以塊為單位的距離。在靈活卷110內(nèi)所使用的塊地址指代卷容器120內(nèi)的塊偏移。由于卷容器120含有靈活卷110內(nèi)的每個(gè)塊,因此存在兩種方式來(lái)指代特定塊的位置。所述PVBN指定一塊在WAFL聚合體100內(nèi)的位置。所述VVBN指定所述塊在容器文件內(nèi)的偏移。當(dāng)請(qǐng)求文件中的塊時(shí),靈活卷110將文件偏移轉(zhuǎn)譯成VVBN。將所述VVBN從靈活卷110傳遞到卷容器120。卷容器120將VVBN轉(zhuǎn)譯為PBVN。接著使用所述PVBN來(lái)存取物理存儲(chǔ)裝置130中的所請(qǐng)求塊。另外,當(dāng)最初寫(xiě)入PVBN時(shí),在靈活卷110中寫(xiě)入所述PVBN的塊指針以針對(duì)VVBN包含(例如,在高速緩沖存儲(chǔ)器中)所述PVBN。借此,當(dāng)需要所請(qǐng)求塊時(shí),靈活卷110可使用所存儲(chǔ)PVBN來(lái)存取物理存儲(chǔ)裝置130。
[0009]WAFL的當(dāng)前實(shí)施方案將文件定義為間接塊的樹(shù)。所述樹(shù)中的每一間接塊具有固定跨度:固定數(shù)目個(gè)條目,每一條目指向所述樹(shù)中的另一塊。使用擴(kuò)展區(qū)內(nèi)的每一塊的條目來(lái)表示擴(kuò)展區(qū)。如本文中所使用,擴(kuò)展區(qū)指代一個(gè)或一個(gè)以上塊的鄰接群組。因此,間接塊元數(shù)據(jù)的量相對(duì)于文件的大小為線性的。另外,磁盤(pán)整理(gardening)技術(shù)(例如段清理、文件重新分配等)因?qū)VBN指針高速緩存在VVBN塊中而復(fù)雜化。
[0010]存儲(chǔ)系統(tǒng)通常針對(duì)所有內(nèi)部操作使用預(yù)定塊大小。舉例來(lái)說(shuō),WAFL針對(duì)VVBN及PVBN兩者使用4KB(例如,4096個(gè)字節(jié))塊,客戶(hù)端側(cè)文件系統(tǒng)針對(duì)文件塊編號(hào)(FBN)也使用4KB(例如,4096個(gè)字節(jié))塊。預(yù)期從初始偏移(例如,F(xiàn)BN O)每隔4KB就出現(xiàn)塊邊界。由于文件系統(tǒng)通?;谶@些塊邊界而使個(gè)別文件偏移,因此應(yīng)用程序編寫(xiě)者利用文件系統(tǒng)的塊大小及對(duì)準(zhǔn)來(lái)增加其輸入/輸出(“I/O”)操作的性能-舉例來(lái)說(shuō),始終執(zhí)行為4KB的倍數(shù)的I/O操作且始終使這些操作與文件的開(kāi)始對(duì)準(zhǔn)。其它文件系統(tǒng)或應(yīng)用程序(例如虛擬機(jī))可使用不同大小的塊邊界(例如,其中512個(gè)字節(jié)的初始主引導(dǎo)記錄塊后跟預(yù)期的4KB塊的虛擬機(jī)環(huán)境),從而導(dǎo)致FBN與PVBN之間的不對(duì)準(zhǔn)。另外,多個(gè)虛擬機(jī)可共享單一卷容器120且每一虛擬機(jī)可不對(duì)準(zhǔn)達(dá)不同的量。
【發(fā)明內(nèi)容】
[0011]基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的實(shí)施例由存儲(chǔ)服務(wù)器實(shí)施,所述存儲(chǔ)服務(wù)器從客戶(hù)端接收對(duì)擴(kuò)展區(qū)的讀取請(qǐng)求,其中所述擴(kuò)展區(qū)包含鄰接塊的群組且所述讀取請(qǐng)求包含文件塊編號(hào)。所述存儲(chǔ)服務(wù)器從卷層中的第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)檢索擴(kuò)展區(qū)識(shí)別符,其中所述存儲(chǔ)服務(wù)器使用所述所接收文件塊編號(hào)來(lái)遍歷所述第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到所述擴(kuò)展區(qū)識(shí)別符。所述存儲(chǔ)服務(wù)器從聚合體層中的第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)檢索對(duì)所述擴(kuò)展區(qū)的參考,其中所述存儲(chǔ)服務(wù)器使用所述所檢索擴(kuò)展區(qū)識(shí)別符來(lái)遍歷所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到所述參考。所述存儲(chǔ)服務(wù)器使用所述參考從存儲(chǔ)裝置檢索所述擴(kuò)展區(qū)并將所述擴(kuò)展區(qū)返回到所述客戶(hù)端。
[0012]基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的另一實(shí)施例由存儲(chǔ)服務(wù)器實(shí)施,所述存儲(chǔ)服務(wù)器從客戶(hù)端接收對(duì)包含鄰接塊的群組的擴(kuò)展區(qū)的寫(xiě)入請(qǐng)求及文件塊編號(hào)。所述存儲(chǔ)服務(wù)器在聚合體層中的第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中寫(xiě)入條目,所述條目包含擴(kuò)展區(qū)識(shí)別符及存儲(chǔ)裝置中對(duì)所述擴(kuò)展區(qū)的參考,其中所述擴(kuò)展區(qū)識(shí)別符用于確定所述條目在所述第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中的位置。所述存儲(chǔ)服務(wù)器進(jìn)一步在卷層中的第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中寫(xiě)入條目,所述條目包含所述文件塊編號(hào)及所述擴(kuò)展區(qū)識(shí)別符,其中所述文件塊編號(hào)用于確定所述條目在所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中的位置?!緦?zhuān)利附圖】
【附圖說(shuō)明】
[0013]在隨附圖式的各圖中以實(shí)例而非限制方式圖解說(shuō)明本發(fā)明的一個(gè)或一個(gè)以上實(shí)施例,在圖式中相似參考指示類(lèi)似元件且其中:
[0014]圖1圖解說(shuō)明隨處寫(xiě)入文件布局的實(shí)施例的現(xiàn)有技術(shù)示范性實(shí)施方案;
[0015]圖2A圖解說(shuō)明其中可實(shí)施基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng);
[0016]圖2B圖解說(shuō)明在替代實(shí)施例中其中可實(shí)施基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的分布式或群集式架構(gòu);
[0017]圖3是其中可實(shí)施基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的存儲(chǔ)服務(wù)器的硬件架構(gòu)的說(shuō)明性實(shí)施例的框圖;
[0018]圖4圖解說(shuō)明其中可實(shí)施基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的圖3的存儲(chǔ)操作系統(tǒng)的實(shí)施例;
[0019]圖5圖解說(shuō)明基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的示范性框圖;
[0020]圖6圖解說(shuō)明基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)內(nèi)的示范性基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu);
[0021]圖7圖解說(shuō)明當(dāng)用于實(shí)施間接卷時(shí)圖6的基于擴(kuò)展區(qū)的數(shù)據(jù)結(jié)構(gòu)的頁(yè)節(jié)點(diǎn)的示范性卷層間接條目;
[0022]圖8圖解說(shuō)明當(dāng)用于實(shí)施擴(kuò)展區(qū)到物理塊映射時(shí)圖6的基于擴(kuò)展區(qū)的數(shù)據(jù)結(jié)構(gòu)的頁(yè)節(jié)點(diǎn)的示范性擴(kuò)展區(qū)映射條目;
[0023]圖9圖解說(shuō)明在基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的卷層及聚合體層中查找以將FBN映射到PVBN的示范性序列;
[0024]圖10圖解說(shuō)明在基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的卷層及聚合體層中查找以將FBN映射到PVBN的另一示范性序列;
[0025]圖11是在基于擴(kuò)展區(qū)的架構(gòu)中處理讀取請(qǐng)求的示范性方法;
[0026]圖12是在基于擴(kuò)展區(qū)的架構(gòu)中處理寫(xiě)入請(qǐng)求的示范性方法;
[0027]圖13是在基于擴(kuò)展區(qū)的架構(gòu)中處理蓋寫(xiě)請(qǐng)求的示范性方法;且
[0028]圖14展示在基于擴(kuò)展區(qū)的架構(gòu)中對(duì)擴(kuò)展區(qū)的示范性部分蓋寫(xiě)。
【具體實(shí)施方式】
[0029]在以下對(duì)本發(fā)明的實(shí)施例的詳細(xì)描述中,參考附圖,其中相似參考指示類(lèi)似元件且其中以圖解說(shuō)明的方式展示可實(shí)踐本發(fā)明的特定實(shí)施例。充分詳細(xì)地描述這些實(shí)施例以使得所屬領(lǐng)域的技術(shù)人員能夠?qū)嵺`本發(fā)明,且應(yīng)理解,可利用其它實(shí)施例且可在不背離本發(fā)明的范圍的情況下做出邏輯、機(jī)械、電、功能及其它改變。因此,不應(yīng)將以下詳細(xì)描述視為限制意義,且本發(fā)明的范圍僅由所附權(quán)利要求書(shū)界定。在本說(shuō)明書(shū)中對(duì)“一實(shí)施例”、“一個(gè)實(shí)施例”等的提及意指特定特征、結(jié)構(gòu)或特性包含于本發(fā)明的至少一個(gè)實(shí)施例中。然而,此些短語(yǔ)在本說(shuō)明書(shū)中的出現(xiàn)未必全部指代同一實(shí)施例。
[0030]如下文進(jìn)一步詳細(xì)地陳述,基于擴(kuò)展區(qū)的架構(gòu)的實(shí)施例包含存儲(chǔ)服務(wù)器,其接收對(duì)擴(kuò)展區(qū)的包含F(xiàn)BN的I/O請(qǐng)求。所述存儲(chǔ)服務(wù)器使用所接收FBN作為密鑰來(lái)遍歷卷層中的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到擴(kuò)展區(qū)識(shí)別符。所述存儲(chǔ)服務(wù)器使用所述擴(kuò)展區(qū)識(shí)別符作為密鑰來(lái)遍歷聚合體層中的第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到參考或指針。第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)將擴(kuò)展區(qū)識(shí)別符直接或間接映射到PVBN。對(duì)于一個(gè)實(shí)施例,第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中的參考或指針識(shí)別或直接指代擴(kuò)展區(qū)的PVBN?;蛘撸鰠⒖蓟蛑羔樧R(shí)別另一擴(kuò)展區(qū)識(shí)別符,所述另一擴(kuò)展區(qū)識(shí)別符又直接指代所述擴(kuò)展區(qū)的PVBN。假定卷層中的條目是每擴(kuò)展區(qū)的而非如在WAFL的先前實(shí)施方案中是每數(shù)據(jù)塊的,則基于擴(kuò)展區(qū)的架構(gòu)的實(shí)施方案導(dǎo)致卷層元數(shù)據(jù)的顯著減少且又由于常見(jiàn)操作中所涉及的元數(shù)據(jù)的減少而導(dǎo)致性能改進(jìn)。通過(guò)將存儲(chǔ)于卷層中的數(shù)據(jù)與存儲(chǔ)于聚合體層中的數(shù)據(jù)分離,基于擴(kuò)展區(qū)的架構(gòu)為存儲(chǔ)服務(wù)器提供在不改變對(duì)應(yīng)擴(kuò)展區(qū)識(shí)別符的情況下寫(xiě)入及重新布置磁盤(pán)上的數(shù)據(jù)塊的能力。此暗示針對(duì)磁盤(pán)上的數(shù)據(jù)塊的某一操作不需要更新卷層中的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)??稍诓慌c卷層通信的情況下執(zhí)行塊/擴(kuò)展區(qū)壓縮、塊/擴(kuò)展區(qū)解壓縮、塊/擴(kuò)展區(qū)共享、磁盤(pán)整理等。另外,由于使用映射到擴(kuò)展區(qū)識(shí)別符的FBN來(lái)遍歷卷層中的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu),因此基于擴(kuò)展區(qū)的架構(gòu)可避免在數(shù)據(jù)塊的初始偏移以不同于數(shù)據(jù)塊大小的粒度出現(xiàn)(例如,4KB塊的512字節(jié)偏移)時(shí)WAFL的先前實(shí)施方案的不對(duì)準(zhǔn)問(wèn)題。
[0031]對(duì)于一個(gè)實(shí)施例,可通過(guò)僅一個(gè)擴(kuò)展區(qū)識(shí)別符來(lái)直接參考PVBN且如果第二擴(kuò)展區(qū)識(shí)別符參考第三擴(kuò)展區(qū)識(shí)別符,那么擴(kuò)展區(qū)識(shí)別符可能不參考所述第二擴(kuò)展區(qū)識(shí)別符。此實(shí)施例防止擴(kuò)展區(qū)映射條目中的間接參考層級(jí)變得任意深并花費(fèi)任意時(shí)間量(如依據(jù)磁盤(pán)I/o操作來(lái)測(cè)量,假定每一擴(kuò)展區(qū)條目可能存儲(chǔ)于不同磁盤(pán)塊內(nèi)且需要單獨(dú)I/O操作)。
[0032]對(duì)于一個(gè)實(shí)施例,擴(kuò)展區(qū)識(shí)別符可包含多個(gè)參考或指針。可蓋寫(xiě)、去重復(fù)、壓縮等擴(kuò)展區(qū)內(nèi)的數(shù)據(jù)塊的部分范圍。另外,由基于擴(kuò)展區(qū)的架構(gòu)提供的間接性允許在不首先讀取擴(kuò)展區(qū)的情況下蓋寫(xiě)所述擴(kuò)展區(qū)內(nèi)的數(shù)據(jù)塊的部分范圍。相比之下,文件系統(tǒng)的先前實(shí)施方案中的擴(kuò)展區(qū)蓋寫(xiě)操作包含將數(shù)據(jù)的數(shù)據(jù)塊從存儲(chǔ)裝置讀取到緩沖器中、在所述緩沖器內(nèi)蓋寫(xiě)所述數(shù)據(jù)塊的一部分并將經(jīng)更新數(shù)據(jù)塊寫(xiě)回到所述存儲(chǔ)裝置。
[0033]對(duì)于一個(gè)實(shí)施例,聚合體層中的擴(kuò)展區(qū)到PVBN映射跨越卷為全局的。如本文中所使用,對(duì)跨越卷為全局的擴(kuò)展區(qū)到PVBN映射的提及指代存儲(chǔ)服務(wù)器210能夠跨越如卷層515中所定義的卷邊界共享(或結(jié)束共享)擴(kuò)展區(qū)內(nèi)的數(shù)據(jù)塊(例如,經(jīng)由擴(kuò)展區(qū)到物理塊映射520)。此在文件系統(tǒng)的先前實(shí)施方案中為極困難的,因?yàn)槲募到y(tǒng)通常并不支持橫跨比單一卷大的空間的間接層。
[0034]圖2A展示其中可實(shí)施基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)495的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)200。存儲(chǔ)服務(wù)器210 (存儲(chǔ)服務(wù)器210A、210B)各自管理包含大容量存儲(chǔ)裝置的多個(gè)存儲(chǔ)單元270 (存儲(chǔ)裝置270A、270B)。這些存儲(chǔ)服務(wù)器210通過(guò)網(wǎng)絡(luò)230為一個(gè)或一個(gè)以上客戶(hù)端202提供數(shù)據(jù)存儲(chǔ)服務(wù)。舉例來(lái)說(shuō),網(wǎng)絡(luò)230可為局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、城域網(wǎng)(MAN)、全域網(wǎng)(GAN),例如因特網(wǎng)、光纖信道組構(gòu)或此些互連的任何組合。舉例來(lái)說(shuō),客戶(hù)端202中的每一者可為常規(guī)個(gè)人計(jì)算機(jī)(PC)、服務(wù)器類(lèi)計(jì)算機(jī)、工作站、手持式計(jì)算或通信裝置、虛擬機(jī)或其它專(zhuān)用或通用計(jì)算機(jī)。
[0035]數(shù)據(jù)在存儲(chǔ)單元270中的存儲(chǔ)由存儲(chǔ)服務(wù)器210管理,存儲(chǔ)服務(wù)器210從客戶(hù)端202接收針對(duì)存儲(chǔ)于存儲(chǔ)單元270中或待存儲(chǔ)于存儲(chǔ)單元270中的數(shù)據(jù)的各種I/O請(qǐng)求并對(duì)所述請(qǐng)求做出響應(yīng)。以塊為單位(在本實(shí)施例中大小為4KB)來(lái)存取(例如,響應(yīng)于I/O請(qǐng)求)數(shù)據(jù),但也可使用其它塊大小(例如,512個(gè)字節(jié)、2KB、8KB等)。對(duì)于一個(gè)實(shí)施例,如本文中所使用的4KB指代4,096個(gè)字節(jié)。對(duì)于替代實(shí)施例,4KB指代4,000個(gè)字節(jié)。存儲(chǔ)單元270構(gòu)成圖解說(shuō)明為磁盤(pán)271 (271A、271B)的大容量存儲(chǔ)裝置,舉例來(lái)說(shuō),其可包含快閃存儲(chǔ)器、磁盤(pán)或光盤(pán)或磁帶驅(qū)動(dòng)器。存儲(chǔ)裝置271可進(jìn)一步組織成實(shí)施廉價(jià)磁盤(pán)/裝置冗余陣列(RAID)方案的陣列(未圖解說(shuō)明),借此存儲(chǔ)服務(wù)器210使用一個(gè)或一個(gè)以上RAID協(xié)議來(lái)存取存儲(chǔ)單元270。RAID為在多個(gè)硬盤(pán)驅(qū)動(dòng)器當(dāng)中劃分及復(fù)制數(shù)據(jù)(例如,以數(shù)據(jù)條帶的形式)的數(shù)據(jù)存儲(chǔ)方案。數(shù)據(jù)分條(striping)是在邏輯上對(duì)序列數(shù)據(jù)(例如單一文件)進(jìn)行分段使得可將段指派給多個(gè)物理裝置/硬盤(pán)驅(qū)動(dòng)器的技術(shù)。存儲(chǔ)冗余(奇偶)數(shù)據(jù)以允許檢測(cè)及可能解決問(wèn)題。舉例來(lái)說(shuō),如果將使用三個(gè)250GB硬盤(pán)驅(qū)動(dòng)器(兩個(gè)驅(qū)動(dòng)器用于數(shù)據(jù)且一個(gè)用于奇偶)配置基于硬件的RAID-5卷,那么將向操作系統(tǒng)呈現(xiàn)單一 500GB卷且可跨越兩個(gè)數(shù)據(jù)驅(qū)動(dòng)器存儲(chǔ)示范性單一文件。雖然圖解說(shuō)明為單獨(dú)組件,但對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210及存儲(chǔ)單元270可為單一裝置的一部分/裝納于所述裝置內(nèi)。
[0036]存儲(chǔ)服務(wù)器210可提供例如在網(wǎng)絡(luò)附接存儲(chǔ)(NAS)環(huán)境中使用的文件級(jí)服務(wù)、例如在存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)環(huán)境中使用的塊級(jí)服務(wù)、能夠提供文件級(jí)及塊級(jí)服務(wù)兩者的服務(wù)或能夠提供其它數(shù)據(jù)存取服務(wù)的任何其它服務(wù)。雖然在圖2A中將存儲(chǔ)服務(wù)器210各自圖解說(shuō)明為單一單元,但在其它實(shí)施例中存儲(chǔ)服務(wù)器可構(gòu)成單獨(dú)網(wǎng)絡(luò)元件或模塊^1模塊”)及磁盤(pán)元件或模塊(“D模塊”)。在一個(gè)實(shí)施例中,D模塊包含用于服務(wù)于客戶(hù)端請(qǐng)求的存儲(chǔ)存取組件。相比之下,所述N模塊包含實(shí)現(xiàn)對(duì)存儲(chǔ)存取組件(例如,D模塊)的客戶(hù)端存取的功能性且可包含用于促進(jìn)此連接性的協(xié)議組件,例如公共因特網(wǎng)文件系統(tǒng)(CIFS)、網(wǎng)絡(luò)文件系統(tǒng)(NFS)或因特網(wǎng)協(xié)議(IP)模塊。下文關(guān)于圖2B進(jìn)一步描述涉及D模塊及N模塊的分布式架構(gòu)環(huán)境的細(xì)節(jié),且下文關(guān)于圖4進(jìn)一步描述D模塊及N模塊的實(shí)施例。
[0037]在又一些實(shí)施例中,存儲(chǔ)服務(wù)器210稱(chēng)為網(wǎng)絡(luò)存儲(chǔ)子系統(tǒng)。網(wǎng)絡(luò)存儲(chǔ)子系統(tǒng)針對(duì)特定應(yīng)用或目的提供連網(wǎng)存儲(chǔ)服務(wù)。此些應(yīng)用的實(shí)例包含(例如)在客戶(hù)端中實(shí)施的數(shù)據(jù)庫(kù)應(yīng)用、web應(yīng)用、企業(yè)資源規(guī)劃(ERP)應(yīng)用等。此些目的的實(shí)例包含(舉例來(lái)說(shuō))在連接到一級(jí)存儲(chǔ)服務(wù)器的歸檔、備 份或二級(jí)存儲(chǔ)服務(wù)器上提供的文件歸檔、備份、鏡射等。也可用跨越多個(gè)存儲(chǔ)服務(wù)器及/或存儲(chǔ)單元提供的連網(wǎng)資源的集合來(lái)實(shí)施網(wǎng)絡(luò)存儲(chǔ)子系統(tǒng)。
[0038]在圖2A的實(shí)施例中,存儲(chǔ)服務(wù)器中的一者(例如,存儲(chǔ)服務(wù)器210A)用作對(duì)客戶(hù)端202的數(shù)據(jù)存儲(chǔ)服務(wù)的一級(jí)提供者。使用組織為一個(gè)或一個(gè)以上存儲(chǔ)對(duì)象的磁盤(pán)271A來(lái)服務(wù)于來(lái)自客戶(hù)端202的數(shù)據(jù)存儲(chǔ)請(qǐng)求。二級(jí)存儲(chǔ)服務(wù)器(例如,存儲(chǔ)服務(wù)器210B)以與一級(jí)存儲(chǔ)服務(wù)器的鏡像關(guān)系起到備用作用,從而將存儲(chǔ)對(duì)象從一級(jí)存儲(chǔ)服務(wù)器復(fù)制到組織于二級(jí)存儲(chǔ)服務(wù)器的磁盤(pán)(例如,磁盤(pán)270B)上的存儲(chǔ)對(duì)象。在操作中,二級(jí)存儲(chǔ)服務(wù)器直到一級(jí)存儲(chǔ)對(duì)象中的數(shù)據(jù)變得不可存取(例如在一級(jí)存儲(chǔ)服務(wù)器的災(zāi)難中)才服務(wù)于來(lái)自客戶(hù)端202的服務(wù)請(qǐng)求,此事件被視為一級(jí)存儲(chǔ)服務(wù)器處的故障。在一級(jí)存儲(chǔ)服務(wù)器處的故障后,即刻使用二級(jí)存儲(chǔ)服務(wù)器處的經(jīng)復(fù)制數(shù)據(jù)(即,二級(jí)存儲(chǔ)對(duì)象)服務(wù)于來(lái)自客戶(hù)端202的既定針對(duì)一級(jí)存儲(chǔ)對(duì)象的請(qǐng)求。
[0039]將了解,在其它實(shí)施例中,網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)200可包含兩個(gè)以上存儲(chǔ)服務(wù)器。在這些情況中,保護(hù)關(guān)系可在系統(tǒng)200中的各種存儲(chǔ)服務(wù)器之間操作使得來(lái)自存儲(chǔ)服務(wù)器210A的一個(gè)或一個(gè)以上一級(jí)存儲(chǔ)對(duì)象可被復(fù)制到除存儲(chǔ)服務(wù)器210B之外的存儲(chǔ)服務(wù)器(此圖中未展示)。二級(jí)存儲(chǔ)對(duì)象可進(jìn)一步實(shí)施與其它存儲(chǔ)對(duì)象的保護(hù)關(guān)系以使得二級(jí)存儲(chǔ)對(duì)象被復(fù)制(例如)到三級(jí)存儲(chǔ)對(duì)象以免受二級(jí)存儲(chǔ)對(duì)象的故障的影響。因此,存儲(chǔ)服務(wù)器210的一級(jí)與二級(jí)存儲(chǔ)對(duì)象之間的單層保護(hù)關(guān)系的描述應(yīng)僅視為說(shuō)明性的。[0040]圖2B圖解說(shuō)明在一個(gè)實(shí)施例中可實(shí)施快速克隆的分布式或群集式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)220的框圖。系統(tǒng)220可包含實(shí)施為各自經(jīng)配置以提供對(duì)存儲(chǔ)裝置271的存取的節(jié)點(diǎn)210(節(jié)點(diǎn)210A、210B)的存儲(chǔ)服務(wù)器。在圖2B中,節(jié)點(diǎn)210由可體現(xiàn)為以太網(wǎng)交換機(jī)的群集交換組構(gòu)225互連。
[0041]節(jié)點(diǎn)210可作為協(xié)作以提供系統(tǒng)220的分布式架構(gòu)的多個(gè)功能組件操作。為此目的,每一節(jié)點(diǎn)210可組織為網(wǎng)絡(luò)元件或模塊(N模塊221A、221B)、磁盤(pán)元件或模塊(D模塊222A、222B)及管理元件或模塊(M主機(jī)223A、223B)。在一個(gè)實(shí)施例中,每一模塊包含用于執(zhí)行相應(yīng)模塊操作的處理器及存儲(chǔ)器。舉例來(lái)說(shuō),N模塊221可包含使得節(jié)點(diǎn)210能夠經(jīng)由網(wǎng)絡(luò)230連接到客戶(hù)端202的功能性且可包含協(xié)議組件,例如媒體存取層、因特網(wǎng)協(xié)議(IP)層、輸送控制協(xié)議(TCP)層、用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)層及此項(xiàng)技術(shù)中已知的其它協(xié)議。
[0042]相比之下,D模塊222可經(jīng)由群集交換組構(gòu)225連接到一個(gè)或一個(gè)以上存儲(chǔ)裝置271且可操作以服務(wù)于對(duì)裝置270的存取請(qǐng)求。在一個(gè)實(shí)施例中,D模塊222實(shí)施基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)495,如下文將更詳細(xì)地描述。在一個(gè)實(shí)施例中,D模塊222包含存儲(chǔ)存取組件,例如支持多協(xié)議數(shù)據(jù)存取(例如,公共因特網(wǎng)文件系統(tǒng)協(xié)議、網(wǎng)絡(luò)文件系統(tǒng)協(xié)議及超文本傳送協(xié)議)的存儲(chǔ)抽象層、實(shí)施存儲(chǔ)協(xié)議(例如,RAID協(xié)議)的存儲(chǔ)層及實(shí)施用于執(zhí)行支持存儲(chǔ)存取操作的操作的存儲(chǔ)裝置協(xié)議(例如,小計(jì)算機(jī)系統(tǒng)接口協(xié)議)的驅(qū)動(dòng)器層。在圖2B中所展示的實(shí)施例中,D模塊的存儲(chǔ)抽象層(例如,文件系統(tǒng))將裝置270的物理存儲(chǔ)劃分成若干存儲(chǔ)對(duì)象。因此,由節(jié)點(diǎn)210接收(例如,經(jīng)由N模塊221)的請(qǐng)求可包含指示將對(duì)其執(zhí)行所述請(qǐng)求的存儲(chǔ)對(duì)象的存儲(chǔ)對(duì)象識(shí)別符。
[0043]也在節(jié)點(diǎn)210中操作的是M主機(jī)223,其通過(guò)執(zhí)行支持(舉例來(lái)說(shuō))跨越系統(tǒng)220的分布式存儲(chǔ)系統(tǒng)映像的操作來(lái)為節(jié)點(diǎn)210執(zhí)行群集服務(wù)。M主機(jī)223通過(guò)管理數(shù)據(jù)結(jié)構(gòu)(例如,含有由N模塊221用來(lái)確定哪一 D模塊222 “擁有”(服務(wù)于)每一存儲(chǔ)對(duì)象的信息的RDB 224 (RDB 224A、RDB 224B))來(lái)提供群集服務(wù)??缭较鄳?yīng)節(jié)點(diǎn)210的RDB 224的各個(gè)實(shí)例可由M主機(jī)223使用在M主機(jī)中的每一者之間操作(例如,跨越網(wǎng)絡(luò)230)以使其彼此同步的常規(guī)協(xié)議來(lái)定期更新??山又鴮⒂蒒模塊221接收的客戶(hù)端請(qǐng)求路由到適當(dāng)D模塊222以服務(wù)于提供分布式存儲(chǔ)系統(tǒng)映像。
[0044]應(yīng)注意,盡管圖2B在說(shuō)明性系統(tǒng)中展示構(gòu)成節(jié)點(diǎn)的相等數(shù)目個(gè)N模塊及D模塊,但根據(jù)快速克隆的各種實(shí)施例可存在構(gòu)成節(jié)點(diǎn)的不同數(shù)目個(gè)N模塊及D模塊。舉例來(lái)說(shuō),節(jié)點(diǎn)210A可存在并不反映節(jié)點(diǎn)210B的N模塊與D模塊之間的一對(duì)一對(duì)應(yīng)性的數(shù)目個(gè)N模塊及D模塊。如此,對(duì)針對(duì)每一節(jié)點(diǎn)包括一個(gè)N模塊及一個(gè)D模塊的節(jié)點(diǎn)的描述應(yīng)僅視為說(shuō)明性。
[0045]圖3是存儲(chǔ)服務(wù)器300的實(shí)施例(例如圖2A的存儲(chǔ)服務(wù)器210A及210B)的框圖,其體現(xiàn)為包含由系統(tǒng)總線350 (例如慣例的外圍組件互連(PCI)總線)互連的處理器302、存儲(chǔ)器310、網(wǎng)絡(luò)適配器320、用戶(hù)控制臺(tái)312及存儲(chǔ)適配器340的通用或?qū)S糜?jì)算機(jī)。未展示與對(duì)本發(fā)明實(shí)施例的理解不密切相關(guān)的某些標(biāo)準(zhǔn)且眾所周知的組件。
[0046]處理器302為存儲(chǔ)服務(wù)器210的中央處理單元(CPU)且因此控制其總體操作。處理器302通過(guò)執(zhí)行存儲(chǔ)于存儲(chǔ)器310中的軟件來(lái)實(shí)現(xiàn)此目的。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210中包含多個(gè)處理器302或具有多個(gè)核心的一個(gè)或一個(gè)以上處理器302。對(duì)于一個(gè)實(shí)施例,個(gè)別適配器(例如,網(wǎng)絡(luò)適配器320及存儲(chǔ)適配器340)各自包含用于執(zhí)行相應(yīng)模塊操作的處理器及存儲(chǔ)器。
[0047]存儲(chǔ)器310包含可由處理器302、網(wǎng)絡(luò)適配器320及存儲(chǔ)適配器340尋址以用于存儲(chǔ)與基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)的實(shí)施方案相關(guān)聯(lián)的處理器可執(zhí)行指令及數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)位置。存儲(chǔ)操作系統(tǒng)314(其部分通常駐留于存儲(chǔ)器310中且由處理器302執(zhí)行)通過(guò)調(diào)用支持由存儲(chǔ)服務(wù)器210提供的存儲(chǔ)服務(wù)的操作而在功能上組織存儲(chǔ)服務(wù)器210。所屬領(lǐng)域的技術(shù)人員將明了,可使用其它處理構(gòu)件來(lái)執(zhí)行指令,且可使用其它存儲(chǔ)器構(gòu)件(包含各種計(jì)算機(jī)可讀媒體)來(lái)存儲(chǔ)與本文中所描述的發(fā)明性技術(shù)有關(guān)的程序指令。還將明了,處理器302及可執(zhí)行軟件的功能性中的一些或全部可由硬件來(lái)實(shí)施,例如配置為可編程邏輯陣列的集成電路、ASIC等。
[0048]網(wǎng)絡(luò)適配器320包括一個(gè)或一個(gè)以上端口以經(jīng)由點(diǎn)對(duì)點(diǎn)鏈路或網(wǎng)絡(luò)將存儲(chǔ)服務(wù)器耦合到一個(gè)或一個(gè)以上客戶(hù)端。因此,網(wǎng)絡(luò)適配器320包含經(jīng)由網(wǎng)絡(luò)將存儲(chǔ)服務(wù)器耦合到一個(gè)或一個(gè)以上客戶(hù)端所需的機(jī)械、電及發(fā)信電路。網(wǎng)絡(luò)適配器320可包含協(xié)議組件,例如媒體存取控制(MAC)層、公共因特網(wǎng)文件系統(tǒng)(CIFS)、網(wǎng)絡(luò)文件系統(tǒng)(NFS)、因特網(wǎng)協(xié)議(IP)層、輸送控制協(xié)議(TCP)層、用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)層及此項(xiàng)技術(shù)中已知的用于促進(jìn)此連接性的其它協(xié)議。每一客戶(hù)端可經(jīng)由網(wǎng)絡(luò)通過(guò)根據(jù)預(yù)定義協(xié)議(例如TCP/IP)交換離散數(shù)據(jù)幀或包而與存儲(chǔ)服務(wù)器通信。
[0049]存儲(chǔ)適配器340包含具有輸入/輸出(I/O)接口電路的多個(gè)端口以經(jīng)由I/O互連布置(例如常規(guī)高性能FC或SAS鏈路技術(shù))將存儲(chǔ)裝置(例如,磁盤(pán))耦合到總線321。存儲(chǔ)適配器340通常包含包括處理器及存儲(chǔ)器的裝置控制器(未圖解說(shuō)明)以用于根據(jù)從存儲(chǔ)操作系統(tǒng)314接收的讀取與寫(xiě)入命令來(lái)控制存儲(chǔ)單元的總體操作。在一個(gè)實(shí)施例中,存儲(chǔ)操作系統(tǒng)314實(shí)施基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)495,如下文將更詳細(xì)地描述。如本文中所使用,由裝置控制器響應(yīng)于寫(xiě)入命令而寫(xiě)入的數(shù)據(jù)稱(chēng)為“寫(xiě)入數(shù)據(jù)”,而由裝置控制器響應(yīng)于讀取命令讀取的數(shù)據(jù)稱(chēng)為“讀取數(shù)據(jù)”。
[0050]用戶(hù)控制臺(tái)312使得管理員能夠與存儲(chǔ)服務(wù)器介接以使用命令線接口(CLI)或圖形用戶(hù)接口(GUI)調(diào)用操作并將輸入提供到存儲(chǔ)服務(wù)器。在一個(gè)實(shí)施例中,使用監(jiān)視器及鍵盤(pán)來(lái)實(shí)施用戶(hù)控制臺(tái)312。
[0051]當(dāng)實(shí)施為群集(例如圖2B的群集220)的節(jié)點(diǎn)時(shí),存儲(chǔ)服務(wù)器進(jìn)一步包含具有一個(gè)或一個(gè)以上端口以將所述節(jié)點(diǎn)耦合到群集中的其它節(jié)點(diǎn)的群集存取適配器330 (以幻影/虛線展示)。在一個(gè)實(shí)施例中,使用以太網(wǎng)作為群集協(xié)議及互連媒體,但所屬領(lǐng)域的技術(shù)人員將明了可在群集架構(gòu)內(nèi)利用其它類(lèi)型的協(xié)議及互連。
[0052]圖4是實(shí)施基于擴(kuò)展區(qū)的架構(gòu)的實(shí)施例的存儲(chǔ)操作系統(tǒng)(例如圖3的存儲(chǔ)操作系統(tǒng)314)的框圖。所述存儲(chǔ)操作系統(tǒng)包括一系列軟件層,其由處理器(例如圖3的處理器302)執(zhí)行且經(jīng)組織以形成集成網(wǎng)絡(luò)協(xié)議堆?;蚋还蓙?lái)說(shuō)形成為客戶(hù)端提供使用塊及文件存取協(xié)議存取存儲(chǔ)于存儲(chǔ)服務(wù)器上的信息的數(shù)據(jù)路徑的多協(xié)議引擎425。
[0053]多協(xié)議引擎425包含網(wǎng)絡(luò)驅(qū)動(dòng)器(例如,千兆位以太網(wǎng)驅(qū)動(dòng)器)的媒體存取層412,所述網(wǎng)絡(luò)驅(qū)動(dòng)器與網(wǎng)絡(luò)協(xié)議層(例如IP層414及其支持輸送機(jī)制、TCP層416及用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)層415)介接。文件系統(tǒng)協(xié)議層提供多協(xié)議文件存取且為此目的包含對(duì)直接存取文件系統(tǒng)(DAFS)協(xié)議418、NFS協(xié)議420、CIFS協(xié)議422及超文本傳送協(xié)議(HTTP)協(xié)議424中的一者或一者以上的支持。VI層426實(shí)施VI架構(gòu)以提供如DAFS協(xié)議418所需的直接存取輸送(DAT)能力(例如RDMA)。iSCSI驅(qū)動(dòng)器層428經(jīng)由TCP/IP網(wǎng)絡(luò)協(xié)議層提供塊協(xié)議存取,而FC驅(qū)動(dòng)器層430接收去往存儲(chǔ)服務(wù)器的塊存取請(qǐng)求及發(fā)射來(lái)自存儲(chǔ)服務(wù)器的響應(yīng)。在某些情況中,以太網(wǎng)光纖信道(FCoE)層(未展示)也可在多協(xié)議引擎425中操作以接收去往存儲(chǔ)服務(wù)器的請(qǐng)求及發(fā)射來(lái)自存儲(chǔ)服務(wù)器的響應(yīng)。FC及iSCSI驅(qū)動(dòng)器提供對(duì)塊的相應(yīng)FC特定及iSCSI特定存取控制,且因此在存取存儲(chǔ)服務(wù)器上的數(shù)據(jù)塊時(shí)管理Iun到iSCSI或FCP或替代地到iSCSI及FCP兩者的導(dǎo)出。
[0054]所述存儲(chǔ)操作系統(tǒng)還包含經(jīng)組織以形成提供用于存取存儲(chǔ)于存儲(chǔ)裝置上的信息的數(shù)據(jù)路徑的存儲(chǔ)服務(wù)器465的一系列軟件層。除由存儲(chǔ)操作系統(tǒng)為支持存儲(chǔ)服務(wù)器操作而存取的數(shù)據(jù)(例如程序應(yīng)用數(shù)據(jù)或其它系統(tǒng)數(shù)據(jù))以外,信息還可包含從客戶(hù)端接收的數(shù)據(jù)。優(yōu)選地,可將客戶(hù)端數(shù)據(jù)組織為包括協(xié)作以定義總體邏輯布置的存儲(chǔ)裝置的集合的一個(gè)或一個(gè)以上邏輯存儲(chǔ)對(duì)象(例如,卷)。在一個(gè)實(shí)施例中,所述邏輯布置可涉及邏輯卷塊編號(hào)(VBN)空間,其中每一卷與唯一 VBN相關(guān)聯(lián)。
[0055]文件系統(tǒng)460通過(guò)與一個(gè)或一個(gè)以上虛擬化模塊(圖解說(shuō)明為SCSI目標(biāo)模塊435)的交互來(lái)實(shí)施存儲(chǔ)操作系統(tǒng)的虛擬化系統(tǒng)。SCSI目標(biāo)模塊435通常安置于驅(qū)動(dòng)器428、430與文件系統(tǒng)460之間以提供數(shù)據(jù)塊(Iun)空間與文件系統(tǒng)空間之間的轉(zhuǎn)譯層,其中Iun表示為數(shù)據(jù)塊。在一個(gè)實(shí)施例中,文件系統(tǒng)460使用(例如)4KB塊且使用用以識(shí)別文件及文件屬性(例如創(chuàng)建時(shí)間、存取許可、大小及塊位置)的數(shù)據(jù)結(jié)構(gòu)(例如索引節(jié)點(diǎn)(“inode”))來(lái)實(shí)施具有基于塊的磁盤(pán)上格式表示的WAFL文件系統(tǒng)。文件系統(tǒng)460使用文件來(lái)存儲(chǔ)描述其文件系統(tǒng)的布局的元數(shù)據(jù),包含索引節(jié)點(diǎn)文件,其直接或間接參考(指向)文件的基本數(shù)據(jù)塊。
[0056]對(duì)于一個(gè)實(shí)施例,文件系統(tǒng)460包含基于擴(kuò)展區(qū)的架構(gòu)495作為對(duì)WAFL的擴(kuò)展。在操作上,經(jīng)由網(wǎng)絡(luò)將來(lái)自客戶(hù)端的請(qǐng)求作為包轉(zhuǎn)發(fā)且轉(zhuǎn)發(fā)到存儲(chǔ)服務(wù)器上,其中在網(wǎng)絡(luò)適配器處接收所述包。網(wǎng)絡(luò)驅(qū)動(dòng)器(例如層412或?qū)?30)處理所述包且在適當(dāng)情況下將其傳遞到網(wǎng)絡(luò)協(xié)議與文件存取層上以用于在轉(zhuǎn)發(fā)到文件系統(tǒng)460之前進(jìn)行額外處理。此處,文件系統(tǒng)460產(chǎn)生在所請(qǐng)求數(shù)據(jù)未駐留“在核心中”(即,在存儲(chǔ)器310中)的情況下從磁盤(pán)加載(檢索)所述數(shù)據(jù)的操作。如果信息未在存儲(chǔ)器中,那么文件系統(tǒng)460與基于擴(kuò)展區(qū)的架構(gòu)495協(xié)作而存取間接卷以檢索擴(kuò)展區(qū)識(shí)別符、存取擴(kuò)展區(qū)到物理塊映射以檢索PVBN,如參考圖5-14更詳細(xì)地描述。對(duì)于一個(gè)實(shí)施例,文件系統(tǒng)460將所述PVBN傳遞到RAID系統(tǒng)480。此處,將所述PVBN映射到磁盤(pán)識(shí)別符及裝置塊編號(hào)(磁盤(pán),DBN)并發(fā)送到磁盤(pán)驅(qū)動(dòng)器系統(tǒng)490的適當(dāng)驅(qū)動(dòng)器。磁盤(pán)驅(qū)動(dòng)器從所指定磁盤(pán)存取DBN并將所請(qǐng)求數(shù)據(jù)塊加載于存儲(chǔ)器中以由存儲(chǔ)服務(wù)器處理。在完成請(qǐng)求后,節(jié)點(diǎn)(及操作系統(tǒng)400)即刻經(jīng)由網(wǎng)絡(luò)將回復(fù)返回到到客戶(hù)端。
[0057]應(yīng)注意,針對(duì)在可適應(yīng)本發(fā)明教示的存儲(chǔ)服務(wù)器處接收的客戶(hù)端請(qǐng)求執(zhí)行數(shù)據(jù)存儲(chǔ)存取所需的通過(guò)上文所描述的存儲(chǔ)操作系統(tǒng)層的軟件“路徑”可替代地以硬件來(lái)實(shí)施。也就是說(shuō),在本發(fā)明的替代實(shí)施例中,存儲(chǔ)存取請(qǐng)求數(shù)據(jù)路徑可實(shí)施為在現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或?qū)S眉呻娐?ASIC)內(nèi)體現(xiàn)的邏輯電路。此類(lèi)型的硬件實(shí)施方案增加由存儲(chǔ)服務(wù)器響應(yīng)于由客戶(hù)端發(fā)出的請(qǐng)求而提供的存儲(chǔ)服務(wù)的性能。此外,在本發(fā)明的另一替代實(shí)施例中,適配器320、340的處理元件可經(jīng)配置以分別從處理器302卸載包處理及存儲(chǔ)存取操作中的一些或全部,以借此增加由存儲(chǔ)服務(wù)器提供的存儲(chǔ)服務(wù)的性能。本發(fā)明明確預(yù)期,可以硬件、固件或軟件來(lái)實(shí)施本文中所描述的各種過(guò)程、架構(gòu)及程序。
[0058]當(dāng)在群集中實(shí)施時(shí),可將存儲(chǔ)操作系統(tǒng)的數(shù)據(jù)存取組件體現(xiàn)為用于存取存儲(chǔ)于磁盤(pán)上的數(shù)據(jù)的D模塊450。相比之下,可將多協(xié)議引擎425體現(xiàn)為N模塊410以相對(duì)于經(jīng)由網(wǎng)絡(luò)發(fā)出傳入存取的客戶(hù)端執(zhí)行協(xié)議終止且將存取請(qǐng)求重新引導(dǎo)到群集中的任何其它N模塊。群集服務(wù)系統(tǒng)436可進(jìn)一步實(shí)施M主機(jī)(例如,M主機(jī)401)以提供用于產(chǎn)生信息共享操作從而為群集呈現(xiàn)分布式文件系統(tǒng)映像的群集服務(wù)。舉例來(lái)說(shuō),媒體存取層412可在節(jié)點(diǎn)的各種群集服務(wù)系統(tǒng)之間發(fā)送及接收信息包以使節(jié)點(diǎn)中的每一者中的經(jīng)復(fù)制數(shù)據(jù)庫(kù)同步。
[0059]另外,群集組構(gòu)(CF)接口模塊440化?接口模塊44(^、44(?)可使用CF協(xié)議470來(lái)促進(jìn)N模塊410與D模塊450之間的群集內(nèi)通信。舉例來(lái)說(shuō),D模塊450可展露N模塊410 (或未展示的另一 D模塊)向其發(fā)出呼叫的CF應(yīng)用程序編程接口(API)。為此目的,可將CF接口模塊440組織為CF編碼器/解碼器,其分別使用本地程序調(diào)用(LPC)及遠(yuǎn)程程序調(diào)用(RPC)在駐留于相同節(jié)點(diǎn)及遠(yuǎn)程節(jié)點(diǎn)上的D模塊之間傳達(dá)文件系統(tǒng)命令。
[0060]雖然本文將本發(fā)明的實(shí)施例展示為在存儲(chǔ)服務(wù)器的所圖解說(shuō)明組件及層內(nèi)實(shí)施基于擴(kuò)展區(qū)的架構(gòu),但將了解,在其它實(shí)施例中可在存儲(chǔ)服務(wù)器的其它模塊或組件中實(shí)施基于擴(kuò)展區(qū)的架構(gòu)。另外,可將基于擴(kuò)展區(qū)的架構(gòu)實(shí)施為存儲(chǔ)服務(wù)器內(nèi)的軟件執(zhí)行處理器、硬件或固件中的一者或其組合。如此,根據(jù)本發(fā)明的教示,基于擴(kuò)展區(qū)的架構(gòu)可直接或間接地與存儲(chǔ)操作系統(tǒng)的模塊介接。
[0061 ] 如本文中所使用,術(shù)語(yǔ)“存儲(chǔ)操作系統(tǒng)”通常指代可在計(jì)算機(jī)上操作以執(zhí)行管理數(shù)據(jù)存取的存儲(chǔ)功能的計(jì)算機(jī)可執(zhí)行代碼且可實(shí)施通用操作系統(tǒng)的數(shù)據(jù)存取語(yǔ)義。還可將所述存儲(chǔ)操作系統(tǒng)實(shí)施為微核、在通用操作系統(tǒng)(例如UNIX?或Windows?:)上操作的應(yīng)用程序或?qū)嵤榫哂锌膳渲霉δ苄缘耐ㄓ貌僮飨到y(tǒng)(其經(jīng)配置以用于如本文中所描述的存儲(chǔ)應(yīng)用)。
[0062]另外,所屬領(lǐng)域的技術(shù)人員將理解,本文中所描述的發(fā)明可適用于體現(xiàn)為或包含存儲(chǔ)系統(tǒng)的任何類(lèi)型的專(zhuān)用(例如,文件服務(wù)器或存儲(chǔ)服務(wù)器具)或通用計(jì)算機(jī),包含獨(dú)立計(jì)算機(jī)或其部分。此外,本發(fā)明的教示可適于多種存儲(chǔ)系統(tǒng)架構(gòu),包含但不限于網(wǎng)絡(luò)附接存儲(chǔ)環(huán)境、存儲(chǔ)區(qū)域網(wǎng)絡(luò)及直接附接到客戶(hù)端或主機(jī)計(jì)算機(jī)的磁盤(pán)組合件。因此,術(shù)語(yǔ)“存儲(chǔ)系統(tǒng)”應(yīng)廣泛地理解為除經(jīng)配置以執(zhí)行存儲(chǔ)功能且與其它設(shè)備或系統(tǒng)相關(guān)聯(lián)的任何子系統(tǒng)以外還包含此些布置。應(yīng)注意,盡管此描述是依據(jù)隨處寫(xiě)入文件系統(tǒng)來(lái)寫(xiě)的,但本發(fā)明的教示可與任何適合文件系統(tǒng)一起利用,包含常規(guī)在位寫(xiě)入文件系統(tǒng)。
[0063]圖5圖解說(shuō)明基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)495的示范性框圖?;跀U(kuò)展區(qū)的架構(gòu)495包含卷層505及聚合體或區(qū)管理器層510。卷層505包含一個(gè)或一個(gè)以上間接卷515以將來(lái)自客戶(hù)端202的I/O請(qǐng)求間接映射到存儲(chǔ)磁盤(pán)271內(nèi)的一個(gè)或一個(gè)以上物理塊。對(duì)于一個(gè)實(shí)施例,與針對(duì)每一數(shù)據(jù)塊使用一個(gè)間接卷?xiàng)l目(例如,靈活卷110中)的現(xiàn)有技術(shù)基于塊的實(shí)施方案相比,存儲(chǔ)服務(wù)器210針對(duì)每一擴(kuò)展區(qū)使用間接卷515中的一個(gè)條目。對(duì)于一個(gè)實(shí)施例,所述I/O請(qǐng)求借助于文件塊編號(hào)(FBN)來(lái)參考數(shù)據(jù)。FBN指代卷5 15中由客戶(hù)端202參考的數(shù)據(jù)塊。存儲(chǔ)服務(wù)器210使用FBN作為密鑰來(lái)存取擴(kuò)展區(qū)識(shí)別符。擴(kuò)展區(qū)指代FBN空間中的一個(gè)或一個(gè)以上數(shù)據(jù)塊的鄰接群組。聚合體層510包含擴(kuò)展區(qū)到物理塊映射520及一個(gè)或一個(gè)以上物理卷525。擴(kuò)展區(qū)到物理塊映射520將擴(kuò)展區(qū)識(shí)別符(例如,借助于FBN在卷層505中存取)映射到另一擴(kuò)展區(qū)的指針或映射到物理卷525中的一個(gè)或一個(gè)以上物理卷塊編號(hào)(PVBN)。
[0064]擴(kuò)展區(qū)到物理塊映射520的基于擴(kuò)展區(qū)的條目提供每聚合體間接性。相比之下,卷容器120的虛擬卷塊編號(hào)(VVBN)提供每卷間接性。如本文中所使用,每聚合體基于擴(kuò)展區(qū)的條目指代擴(kuò)展區(qū)跨越聚合體內(nèi)的卷邊界是唯一的。每卷間接條目指代條目在卷邊界內(nèi)是唯一的。對(duì)于每聚合體間接性,當(dāng)存儲(chǔ)服務(wù)器210拷貝、移動(dòng)物理塊或?qū)ζ渥龀銎渌淖儠r(shí),在聚合體層510內(nèi)于擴(kuò)展區(qū)到物理塊映射520中反映所述改變。然而,不需要將這些改變傳播到卷層505中,因?yàn)閿U(kuò)展區(qū)識(shí)別符不需要改變。此使得能夠在不與卷層505通信的情況下發(fā)生擴(kuò)展區(qū)的壓縮、解壓縮、共享及共享終止??扇菀椎乜缭骄磉吔鐏?lái)共享塊,從而實(shí)現(xiàn)交叉卷去重復(fù)。可在單一遍次中對(duì)擴(kuò)展區(qū)到物理塊映射520執(zhí)行段清理及相關(guān)磁盤(pán)整理技術(shù),所有這些均不必將改變向上傳播到卷層505中。
[0065]圖6展示基于擴(kuò)展區(qū)的存儲(chǔ)架構(gòu)內(nèi)的示范性基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600。對(duì)于一個(gè)實(shí)施例,基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)為B+樹(shù)。或者,基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600為能夠在至多0(log η)時(shí)間中執(zhí)行查找及修改操作的另一類(lèi)型的樹(shù)或經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu),其中η為文件中的數(shù)據(jù)塊的數(shù)目。索引節(jié)點(diǎn)605指向基于擴(kuò)展區(qū)的樹(shù)/經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600的根且含有卷/文件元數(shù)據(jù)以及到數(shù)據(jù)塊620或間接塊610/615的指針。舉例來(lái)說(shuō),在B+樹(shù)中,間接塊稱(chēng)為內(nèi)部節(jié)點(diǎn)610/615且數(shù)據(jù)塊稱(chēng)為頁(yè)節(jié)點(diǎn)620。對(duì)于一個(gè)實(shí)施例,索引節(jié)點(diǎn)605指向內(nèi)部節(jié)點(diǎn)610/615的一個(gè)或一個(gè)以上分支。對(duì)于替代實(shí)施例,索引節(jié)點(diǎn)605直接指向頁(yè)節(jié)點(diǎn)620。對(duì)于一個(gè)實(shí)施例,內(nèi)部節(jié)點(diǎn)610/615存儲(chǔ)到其它節(jié)點(diǎn)的指針,但不存儲(chǔ)數(shù)據(jù),例如,例如FBN、擴(kuò)展區(qū)識(shí)別符、PVBN等數(shù)據(jù)。另一方面,頁(yè)節(jié)點(diǎn)620存儲(chǔ)數(shù)據(jù),例如,例如FBN、擴(kuò)展區(qū)識(shí)別符、PVBN等數(shù)據(jù)。
[0066]對(duì)于一個(gè)實(shí)施例,擴(kuò)展區(qū)的長(zhǎng)度變化。對(duì)于一個(gè)實(shí)施例,將擴(kuò)展區(qū)的長(zhǎng)度表達(dá)為擴(kuò)展區(qū)內(nèi)的固定大小的數(shù)據(jù)塊的數(shù)目。舉例來(lái)說(shuō),僅含有單一 4ΚΒ塊的擴(kuò)展區(qū)將具有長(zhǎng)度1,含有兩個(gè)4ΚΒ塊的擴(kuò)展區(qū)將具有長(zhǎng)度2等。對(duì)于一個(gè)實(shí)施例,擴(kuò)展區(qū)具有由用戶(hù)I/O或?qū)懭敕峙潋?qū)動(dòng)的最大長(zhǎng)度(例如,擴(kuò)展區(qū)具有64個(gè)塊的最大長(zhǎng)度)。對(duì)于替代實(shí)施例,可一致地定義擴(kuò)展區(qū)的長(zhǎng)度(例如,8個(gè)塊)。
[0067]對(duì)于利用具有可變長(zhǎng)度的擴(kuò)展區(qū)的基于擴(kuò)展區(qū)的樹(shù)600的實(shí)施例,甚至在相同大小的兩個(gè)文件之間樹(shù)的高度也為可變的。對(duì)于一個(gè)實(shí)施例,內(nèi)部節(jié)點(diǎn)610/615的跨度也為可變的。如本文中所使用,間接塊的跨度指代所述間接塊所指代的塊的數(shù)目。作為比較,在WAFL的先前實(shí)施方案中,間接塊的跨度為固定的:傳統(tǒng)卷(tradvol)間接塊的跨度為1024個(gè)塊,靈活卷(flexvol)間接塊的跨度為510個(gè)塊(例如,如存儲(chǔ)于靈活卷110中),且64位靈活卷間接塊的跨度為255個(gè)塊(例如,如存儲(chǔ)于靈活卷110中)。
[0068]另外,在WAFL的先前實(shí)施方案中,含有N個(gè)塊的鄰接擴(kuò)展區(qū)將使用與N個(gè)隨機(jī)定位塊相同量的間接空間,因?yàn)閿U(kuò)展區(qū)的每一數(shù)據(jù)塊將由卷層中的單獨(dú)間接條目表示。然而,基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600大大減少了所使用的間接空間的量,因?yàn)榫韺訔l目是每擴(kuò)展區(qū)而非每塊的。舉例來(lái)說(shuō),考慮如在WAFL的先前實(shí)施方案中實(shí)施的存儲(chǔ)含有532,685,800個(gè)數(shù)據(jù)字節(jié)(大致508MB)的文件的64位靈活卷。所述靈活卷包含具有255個(gè)條目(255的跨度)的間接塊且每一條目指代一 4KB塊。靈活卷使用指向510個(gè)層級(jí)I間接塊(指向130050個(gè)4KB層級(jí)O數(shù)據(jù)塊)的兩個(gè)層級(jí)2間接塊來(lái)表示508MB文件。在基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中,代替針對(duì)每一 4KB塊使用一個(gè)條目,存儲(chǔ)服務(wù)器210針對(duì)每一擴(kuò)展區(qū)使用一個(gè)條目。擴(kuò)展區(qū)可比單一 4KB塊長(zhǎng)。舉例來(lái)說(shuō),擴(kuò)展區(qū)為一個(gè)或一個(gè)以上4KB塊的鄰接群組。使用具有16塊長(zhǎng)的擴(kuò)展區(qū)及每塊127個(gè)條目的基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600,存儲(chǔ)服務(wù)器210僅用8129個(gè)頁(yè)節(jié)點(diǎn)620及65個(gè)內(nèi)部節(jié)點(diǎn)610/615來(lái)表示130050 4KB,從而導(dǎo)致間接塊元數(shù)據(jù)的87%節(jié)省。
[0069]對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210使用基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600來(lái)實(shí)施間接卷515。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210將每一間接卷515實(shí)施為B+樹(shù)。圖7展示用于實(shí)施間接卷515的基于擴(kuò)展區(qū)的數(shù)據(jù)結(jié)構(gòu)600的頁(yè)節(jié)點(diǎn)620的示范性卷層間接條目700。卷層間接條目700存儲(chǔ)FBN 705、對(duì)應(yīng)擴(kuò)展區(qū)識(shí)別符710及擴(kuò)展區(qū)的長(zhǎng)度715。存儲(chǔ)服務(wù)器210使用FBN 705作為一級(jí)存儲(chǔ)密鑰來(lái)導(dǎo)覽基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600并找出對(duì)應(yīng)于FBN 705的擴(kuò)展區(qū)識(shí)別符710。對(duì)于一個(gè)實(shí)施例,F(xiàn)BN 705為48個(gè)位,且擴(kuò)展區(qū)識(shí)別符710為48個(gè)位,且長(zhǎng)度715為8個(gè)位?;蛘撸鎯?chǔ)服務(wù)器210針對(duì)FBN 705、擴(kuò)展區(qū)識(shí)別符710或長(zhǎng)度715中的一者或一者以上使用不同大小。舉例來(lái)說(shuō),在替代實(shí)施例中,擴(kuò)展區(qū)識(shí)別符710可為64個(gè)位長(zhǎng),以(例如)在塊的偏移中提供512字節(jié)粒度。對(duì)于一個(gè)實(shí)施例,擴(kuò)展區(qū)長(zhǎng)度715變化。對(duì)于替代實(shí)施例,擴(kuò)展區(qū)長(zhǎng)度715為固定的。
[0070]對(duì)于一個(gè)實(shí)施例,F(xiàn)BN 705為51個(gè)位以在塊的偏移中提供512字節(jié)粒度(其中48位FBN 705提供FBN偏移的4KB字節(jié)粒度)。由于存儲(chǔ)服務(wù)器210使用基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600來(lái)存儲(chǔ)間接塊,因此不需要基于塊大小而對(duì)準(zhǔn)FBN(例如,512字節(jié)偏移對(duì)準(zhǔn)及4KB塊)?;跀U(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600基于FBN及擴(kuò)展區(qū)的長(zhǎng)度而存儲(chǔ)整個(gè)擴(kuò)展區(qū)的條目。基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600并不僅僅存儲(chǔ)所述FBN處的塊且那么需要對(duì)應(yīng)于每一后續(xù)FBN的后續(xù)條目。舉例來(lái)說(shuō),假定各自長(zhǎng)度為16個(gè)塊的兩個(gè)毗連擴(kuò)展區(qū),則基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中針對(duì)這兩個(gè)擴(kuò)展區(qū)的條目將具有偏移至少16個(gè)塊的FBN。在遍歷基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600時(shí),存儲(chǔ)服務(wù)器210不需要假定每一條目分離相同偏移或條目的FBN偏移塊大小的整數(shù)倍。另外,由使用基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600導(dǎo)致的間接元數(shù)據(jù)的節(jié)省補(bǔ)償針對(duì)每一 FBN 705使用三個(gè)額外位。在卷層內(nèi)提供512字節(jié)偏移粒度消除由FBN空間中的塊與聚合體空間中的塊之間的不對(duì)準(zhǔn)產(chǎn)生的先前所描述的復(fù)雜化。一旦將FBN映射到擴(kuò)展區(qū)識(shí)別符710,便可將所述擴(kuò)展區(qū)識(shí)別符映射到擴(kuò)展區(qū)(如下文所描述),而不必?fù)?dān)心不對(duì)準(zhǔn),因?yàn)榫酆象w層在聚合體內(nèi)維持一致的塊大小偏移對(duì)準(zhǔn)。
[0071]存儲(chǔ)服務(wù)器210在寫(xiě)入分配期間分配擴(kuò)展區(qū)識(shí)別符710。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210從有限池分配擴(kuò)展區(qū)識(shí)別符710?;蛘?,擴(kuò)展區(qū)識(shí)別符710為永不繞回的單調(diào)增加的值。
[0072]對(duì)于一個(gè)實(shí)施例,擴(kuò)展區(qū)的長(zhǎng)度715用于一致性檢查,如下文參考圖8所描述。
[0073]在用于實(shí)施間接卷515的基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中不使用WAFL的先前實(shí)施方案的每卷容器文件120。代替每卷容器文件120,存儲(chǔ)服務(wù)器210使用擴(kuò)展區(qū)到物理塊映射520。如上文所描述,擴(kuò)展區(qū)到物理塊映射520的使用可導(dǎo)致減少的間接元數(shù)據(jù)。然而,間接卷塊不再含有到PVBN的經(jīng)高速緩存指針。對(duì)擴(kuò)展區(qū)的存取涉及存儲(chǔ)服務(wù)器210查找間接卷515中的擴(kuò)展區(qū)識(shí)別符710并查找擴(kuò)展區(qū)到物理塊映射520中的PVBN(例如,借助于指針)。此額外I/O查找的計(jì)算額外開(kāi)銷(xiāo)由基于擴(kuò)展區(qū)的架構(gòu)495的特征中的一些特征抵消。舉例來(lái)說(shuō),I/o存取是每擴(kuò)展區(qū)而非每塊的,且因此通過(guò)間接卷515及擴(kuò)展區(qū)到物理塊映射520中的每一者的單一 I/O存取來(lái)存取多個(gè)塊。另外,基于擴(kuò)展區(qū)的架構(gòu)495獲得可在變更擴(kuò)展區(qū)識(shí)別符710的情況下執(zhí)行的壓縮、去重復(fù)、段清理等方面的優(yōu)點(diǎn)。例如去重復(fù)等動(dòng)作可容易橫跨聚合體而非僅僅單一卷,且不需要將(例如)由壓縮及段清理產(chǎn)生的對(duì)塊的許多改變向上傳播到間接卷515 (例如,以如同在WAFL的先前實(shí)施方案中校正經(jīng)高速緩存間接指針)。
[0074]對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210使用基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600來(lái)實(shí)施擴(kuò)展區(qū)到物理塊映射520。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210將擴(kuò)展區(qū)到物理塊映射520實(shí)施為B+樹(shù)。圖8展示用于實(shí)施擴(kuò)展區(qū)到物理塊映射520的基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600的頁(yè)節(jié)點(diǎn)620的示范性擴(kuò)展區(qū)映射條目800。用于實(shí)施擴(kuò)展區(qū)到物理塊映射520的基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600的頁(yè)節(jié)點(diǎn)620存儲(chǔ)擴(kuò)展區(qū)識(shí)別符805、參考810 (例如到PVBN或其它擴(kuò)展區(qū)識(shí)別符的指針)、擴(kuò)展區(qū)的偏移815及擴(kuò)展區(qū)的長(zhǎng)度820。如本文中所使用,擴(kuò)展區(qū)的偏移為距組成擴(kuò)展區(qū)的塊的鄰接群組的第一塊的以塊為單位的距離。對(duì)于一個(gè)實(shí)施例,擴(kuò)展區(qū)識(shí)別符805為48個(gè)位,指針/擴(kuò)展區(qū)識(shí)別符810為48個(gè)位,偏移815為8個(gè)位,且長(zhǎng)度820為8個(gè)位。對(duì)于替代實(shí)施例,針對(duì)擴(kuò)展區(qū)映射條目800的每一部分使用不同數(shù)目個(gè)位。
[0075]對(duì)于一個(gè)實(shí)施例,每一擴(kuò)展區(qū)映射條目800包含直接到PVBN或到直接參考PVBN的另一擴(kuò)展區(qū)識(shí)別符805的指針或其它參考810。對(duì)于一個(gè)實(shí)施例,每一 PVBN僅被一個(gè)擴(kuò)展區(qū)擁有,且參考PVBN的任何其它擴(kuò)展區(qū)借助于參考擁有者擴(kuò)展區(qū)而也為如此。因此,為了到達(dá)PVBN而對(duì)給定擴(kuò)展區(qū)的最大額外查找不應(yīng)多于一個(gè)以上。此最大值防止擴(kuò)展區(qū)映射條目800中的間接參考層級(jí)變得任意深且花費(fèi)任意時(shí)間量(如依據(jù)磁盤(pán)I/O操作來(lái)測(cè)量,假定每一擴(kuò)展區(qū)條目可能存儲(chǔ)于不同磁盤(pán)塊內(nèi))。由于擴(kuò)展區(qū)具有單一擁有者,因此存儲(chǔ)服務(wù)器210可使用擁有者擴(kuò)展區(qū)識(shí)別符作為標(biāo)簽、唯一編號(hào)或用于丟失寫(xiě)入檢測(cè)的目的的其它上下文。
[0076]對(duì)于替代實(shí)施例,所有擴(kuò)展區(qū)識(shí)別符805直接映射到PVBN且PVBN可被一個(gè)以上擴(kuò)展區(qū)擁有。對(duì)于包含丟失寫(xiě)入檢測(cè)的實(shí)施例,存儲(chǔ)服務(wù)器210 (例如)經(jīng)由單獨(dú)表創(chuàng)建與擴(kuò)展區(qū)識(shí)別符805分離/不同(此歸因于多個(gè)擴(kuò)展區(qū)識(shí)別符參考單一 PVBN的可能性)的上下文、標(biāo)簽或唯一編號(hào)。
[0077]對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210通過(guò)將如存儲(chǔ)于卷層505中的擴(kuò)展區(qū)的長(zhǎng)度715與如存儲(chǔ)于聚合體層510中的擴(kuò)展區(qū)的長(zhǎng)度820進(jìn)行比較來(lái)檢查數(shù)據(jù)一致性。
[0078]對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210利用有限數(shù)目個(gè)擴(kuò)展區(qū)識(shí)別符。如果擴(kuò)展區(qū)識(shí)別符為將重新使用的候選者,那么(例如)根據(jù)刪除擴(kuò)展區(qū)的請(qǐng)求,存儲(chǔ)服務(wù)器210首先確定其它擴(kuò)展區(qū)是否指代所述擴(kuò)展區(qū)識(shí)別符。如果一個(gè)或一個(gè)以上擴(kuò)展區(qū)參考候選擴(kuò)展區(qū)識(shí)別符,那么存儲(chǔ)服務(wù)器210確保一個(gè)或一個(gè)以上擴(kuò)展區(qū)繼續(xù)指向相同數(shù)據(jù)(例如,通過(guò)將擴(kuò)展區(qū)中的一者變更為直接參考對(duì)應(yīng)PVBN且將其它擴(kuò)展區(qū)變更為參考所述經(jīng)變更擴(kuò)展區(qū))。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210 (例如)在一個(gè)或一個(gè)以上元文件中維持由擴(kuò)展區(qū)對(duì)每一擴(kuò)展區(qū)及由擴(kuò)展區(qū)對(duì)每一 PVBN的參考的參考計(jì)數(shù)。參考計(jì)數(shù)使得存儲(chǔ)服務(wù)器210能夠知曉其它擴(kuò)展區(qū)是否將受對(duì)擴(kuò)展區(qū)/PVBN執(zhí)行的操作(例如,重新分配、段清理等)影響。存儲(chǔ)服務(wù)器210在一個(gè)或一個(gè)以上日志文件中追蹤參考計(jì)數(shù)的遞增及遞減。舉例來(lái)說(shuō),當(dāng)分配新擴(kuò)展區(qū)/PVBN時(shí),當(dāng)共享(例如,經(jīng)由克隆創(chuàng)建、快照創(chuàng)建或去重復(fù))擴(kuò)展區(qū)識(shí)別符時(shí)等,存儲(chǔ)服務(wù)器210將遞增參考計(jì)數(shù)。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210使用日志文件積累遞增及遞減,且對(duì)參考計(jì)數(shù)元文件做出批次更新(例如,在一致性點(diǎn)處)。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210在分配新擴(kuò)展區(qū)/PVBN時(shí)針對(duì)一 PVBN直接(繞過(guò)日志文件)將參考計(jì)數(shù)從O遞增到I且經(jīng)由相應(yīng)參考計(jì)數(shù)日志文件執(zhí)行參考計(jì)數(shù)的所有其它遞增及遞減。
[0079]圖9展示在卷層505及聚合體層510中查找以將FBN映射到物理卷525中的PVBN的示范性序列。舉例來(lái)說(shuō),當(dāng)存儲(chǔ)服務(wù)器210接收到包含F(xiàn)BN 705的I/O請(qǐng)求時(shí),存儲(chǔ)服務(wù)器210在間接卷515中使用所述FBN作為密鑰來(lái)查找卷層間接條目700中的擴(kuò)展區(qū)識(shí)別符710。存儲(chǔ)服務(wù)器210使用擴(kuò)展區(qū)識(shí)別符710作為密鑰來(lái)查找擴(kuò)展區(qū)到物理塊映射520中的擴(kuò)展區(qū)映射條目800。存儲(chǔ)服務(wù)器210使用指針810來(lái)存取物理卷525中的PVBN 905。在此實(shí)例中,偏移815為零。如果偏移為正值,那么存儲(chǔ)服務(wù)器210將存取在PVBN 905之后的一個(gè)或一個(gè)以上塊(例如,PVBN 910、PVBN 915等)。如果長(zhǎng)度820大于1,那么存儲(chǔ)服務(wù)器210將存取PVBN 905及一個(gè)或一個(gè)以上后續(xù)塊(例如,PVBN 910、PVBN 915等)。
[0080]圖10展示在卷層505及聚合體層510中查找以將FBN映射到物理卷525中的PVBN的另一示范性序列。類(lèi)似于參考圖9所描述的實(shí)例,存儲(chǔ)服務(wù)器210接收包含F(xiàn)BN 705的I/O請(qǐng)求并在間接卷515中使用所述FBN作為密鑰來(lái)查找卷層間接條目700中的擴(kuò)展區(qū)識(shí)別符710。存儲(chǔ)服務(wù)器210使用擴(kuò)展區(qū)識(shí)別符710作為密鑰來(lái)查找擴(kuò)展區(qū)到物理塊映射520中的第一擴(kuò)展區(qū)映射條目800。在此實(shí)例中,擴(kuò)展區(qū)識(shí)別符805與到PVBN 905的指針810及到第二擴(kuò)展區(qū)映射條目1000的指針或擴(kuò)展區(qū)識(shí)別符810相關(guān)聯(lián)。對(duì)于一個(gè)實(shí)施例,第一擴(kuò)展區(qū)具有多個(gè)擴(kuò)展區(qū)映射條目800,對(duì)于每一指針或參考810—個(gè)條目。舉例來(lái)說(shuō),每一條目800將包含相同擴(kuò)展區(qū)識(shí)別符805,但包含指針810、偏移815與長(zhǎng)度820的不同組合。為簡(jiǎn)明起見(jiàn),圖10圖解說(shuō)明包含多個(gè)指針810、偏移815及長(zhǎng)度820的單一擴(kuò)展區(qū)映射條目。存儲(chǔ)服務(wù)器210使用指針810來(lái)存取物理卷525中的PVBN 905。存儲(chǔ)服務(wù)器210使用擴(kuò)展區(qū)識(shí)別符810來(lái)查找擴(kuò)展區(qū)到物理塊映射520中的第二擴(kuò)展區(qū)映射條目1000。存儲(chǔ)服務(wù)器210使用指針1010來(lái)存取物理卷525中的PVBN 915。
[0081]圖11是在基于擴(kuò)展區(qū)的架構(gòu)中處理讀取請(qǐng)求的示范性方法1100。在處理框1105處,存儲(chǔ)服務(wù)器210從客戶(hù)端202接收包含F(xiàn)BN的讀取請(qǐng)求。對(duì)于一個(gè)實(shí)施例,所述讀取請(qǐng)求包含若干個(gè)待讀取的數(shù)據(jù)塊。或者,所述讀取請(qǐng)求假定將返回預(yù)定義數(shù)目個(gè)數(shù)據(jù)塊(例如,如由擴(kuò)展區(qū)的長(zhǎng)度715/820定義的整個(gè)擴(kuò)展區(qū),跟在FBN之后到擴(kuò)展區(qū)的末尾的塊等)。在處理框1110處,存儲(chǔ)服務(wù)器210使用所述FBN來(lái)遍歷卷層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600 (例如,間接卷515)并檢索對(duì)應(yīng)于所述FBN的擴(kuò)展區(qū)識(shí)別符710。如果讀取請(qǐng)求中所包含的FBN與存儲(chǔ)于卷層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中的FBN705準(zhǔn)確匹配,那么存儲(chǔ)服務(wù)器210基于擴(kuò)展區(qū)識(shí)別符710及偏移零而處理所述讀取請(qǐng)求。如果所述讀取請(qǐng)求包含不匹配存儲(chǔ)于卷層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中的FBN 705的FBN,但所請(qǐng)求FBN及數(shù)據(jù)塊集合含在現(xiàn)有擴(kuò)展區(qū)內(nèi)或與其重疊,那么存儲(chǔ)服務(wù)器210確定讀取請(qǐng)求中所包含的FBN與存儲(chǔ)于卷層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中的參考重疊擴(kuò)展區(qū)的FBN 705之間的偏移。存儲(chǔ)服務(wù)器210使用所檢索擴(kuò)展區(qū)識(shí)別符710及所確定偏移來(lái)處理所述讀取請(qǐng)求。在處理框1115處,存儲(chǔ)服務(wù)器210使用所檢索擴(kuò)展區(qū)識(shí)別符710來(lái)遍歷聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600 (例如,擴(kuò)展區(qū)到物理塊映射520)并檢索所述擴(kuò)展區(qū)的對(duì)應(yīng)條目800。在決策框1120處,存儲(chǔ)服務(wù)器確定條目800是否識(shí)別或以其它方式指代數(shù)據(jù)塊(例如,到PVBN的指針)或另一擴(kuò)展區(qū)(例如,使用第二擴(kuò)展區(qū)識(shí)別符)。如果條目800指代擴(kuò)展區(qū),那么在處理框1125處,存儲(chǔ)服務(wù)器210使用第二擴(kuò)展區(qū)識(shí)別符810來(lái)遍歷聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600以檢索第二擴(kuò)展區(qū)條目。如上文所論述,對(duì)于一個(gè)實(shí)施例,第一條目800將指代第二條目1000,而第二條目1000又指代數(shù)據(jù)塊(但并非指代第三條目的第二條目1000)。如果第一條目800指代數(shù)據(jù)塊905,或在檢索第二條目1000后,存儲(chǔ)服務(wù)器210即刻在處理框1130處使用參考來(lái)檢索一個(gè)或一個(gè)以上數(shù)據(jù)塊。在決策框1135處,存儲(chǔ)服務(wù)器210確定在聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中是否存在包含所檢索擴(kuò)展區(qū)識(shí)別符710的另一條目800。如果在聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中存在包含所檢索擴(kuò)展區(qū)識(shí)別符710的另一條目800,那么存儲(chǔ)服務(wù)器210繼續(xù)如上文所描述而在決策框1120處檢索數(shù)據(jù)塊。如果在聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中不存在針對(duì)所檢索擴(kuò)展區(qū)識(shí)別符710的額外條目800,那么存儲(chǔ)服務(wù)器210在處理框1140處將所請(qǐng)求擴(kuò)展區(qū)/數(shù)據(jù)塊返回到客戶(hù)端202。
[0082]舉例來(lái)說(shuō),參考圖9,在接收到對(duì)與FBN 705匹配的FBN處的四個(gè)塊的讀取請(qǐng)求后,存儲(chǔ)服務(wù)器210將即刻通過(guò)遍歷卷層及聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600以分別檢索擴(kuò)展區(qū)識(shí)別符710及指代PVBN 905的參考810來(lái)處理所述請(qǐng)求。存儲(chǔ)服務(wù)器210將檢索PVBN 905,910,915及920并將其返回到客戶(hù)端202。類(lèi)似地,如果第一擴(kuò)展區(qū)映射條目800指代第二擴(kuò)展區(qū)映射條目1000,那么存儲(chǔ)服務(wù)器210將遍歷聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600以檢索指代PVBN 915的參考1010。存儲(chǔ)服務(wù)器210將檢索PVBN 915、920,925及930并將其返回到客戶(hù)端202。
[0083]對(duì)于其中FBN不匹配所存儲(chǔ)FBN 705的實(shí)例,比如說(shuō),F(xiàn)BN 705具有值50且所請(qǐng)求FBN具有值51。如果與FBN 705相關(guān)聯(lián)的擴(kuò)展區(qū)具有八個(gè)塊的長(zhǎng)度且讀取請(qǐng)求是針對(duì)四個(gè)數(shù)據(jù)塊,那么存儲(chǔ)服務(wù)器210將確定與FBN 705相關(guān)聯(lián)的擴(kuò)展區(qū)與所請(qǐng)求數(shù)據(jù)塊重疊(例如,通過(guò)將FBN 705及長(zhǎng)度715與所請(qǐng)求FBN及所請(qǐng)求塊的數(shù)目進(jìn)行比較)。存儲(chǔ)服務(wù)器210將通過(guò)遍歷卷層及聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600以分別檢索擴(kuò)展區(qū)識(shí)別符710及指代PVBN 905的參考810來(lái)處理所述請(qǐng)求。存儲(chǔ)服務(wù)器210將在所請(qǐng)求FBN與所存儲(chǔ)FBN 705之間添加偏移(其為I個(gè)塊),并檢索在PVBN 910處開(kāi)始的四個(gè)塊(PVBN910,915,920 及 925)。
[0084]圖12是在基于擴(kuò)展區(qū)的架構(gòu)中處理寫(xiě)入請(qǐng)求的示范性方法1200。在處理框1205處,存儲(chǔ)服務(wù)器210從客戶(hù)端202接收包含F(xiàn)BN及待寫(xiě)入的數(shù)據(jù)塊的寫(xiě)入請(qǐng)求。對(duì)于一個(gè)實(shí)施例,客戶(hù)端202提供待寫(xiě)入的數(shù)據(jù)?;蛘?,客戶(hù)端202提供對(duì)待寫(xiě)入的數(shù)據(jù)的參考。在處理框1210處,存儲(chǔ)服務(wù)器210將所述數(shù)據(jù)塊寫(xiě)入到存儲(chǔ)裝置271。在決策框1215處,存儲(chǔ)服務(wù)器210確定在卷層經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中是否存在包含與隨所述寫(xiě)入請(qǐng)求一起提供的FBN匹配或重疊的FBN 705的現(xiàn)有條目。如果存在匹配或重疊的擴(kuò)展區(qū),那么存儲(chǔ)服務(wù)器繼續(xù)進(jìn)行以處理蓋寫(xiě)請(qǐng)求1300,如下文參考圖13進(jìn)一步詳細(xì)地描述。在處理框1220處,如果不存在匹配或重疊的擴(kuò)展區(qū),那么存儲(chǔ)服務(wù)器分配擴(kuò)展區(qū)識(shí)別符805并為聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600 (例如,擴(kuò)展區(qū)到物理塊映射520)創(chuàng)建新條目800,其包含擴(kuò)展區(qū)識(shí)別符805、對(duì)新存儲(chǔ)的擴(kuò)展區(qū)的參考810、偏移815及擴(kuò)展區(qū)的長(zhǎng)度820。在處理框1225處,存儲(chǔ)服務(wù)器210使用所分配擴(kuò)展區(qū)識(shí)別符805作為密鑰來(lái)遍歷聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600并添加新創(chuàng)建的條目800。在處理框1230處,存儲(chǔ)服務(wù)器210為卷層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600 (例如,間接卷515)創(chuàng)建新條目700,其包含由客戶(hù)端202隨寫(xiě)入請(qǐng)求一起提供的FBN 705、所分配擴(kuò)展區(qū)識(shí)別符710/805及擴(kuò)展區(qū)的長(zhǎng)度715/820。在處理框1235處,存儲(chǔ)服務(wù)器210使用FBN 705來(lái)遍歷卷層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600并添加新創(chuàng)建的條目700。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210將已成功處理寫(xiě)入請(qǐng)求的指示返回到客戶(hù)端202。
[0085]圖13是在基于擴(kuò)展區(qū)的架構(gòu)中處理蓋寫(xiě)請(qǐng)求的示范性方法1300。圖14圖解說(shuō)明在基于擴(kuò)展區(qū)的架構(gòu)中對(duì)擴(kuò)展區(qū)的示范性部分蓋寫(xiě)。在處理框1305處,存儲(chǔ)服務(wù)器210分配待寫(xiě)入的擴(kuò)展區(qū)/部分?jǐn)U展區(qū)的擴(kuò)展區(qū)識(shí)別符805。在決策框1310處,存儲(chǔ)服務(wù)器210確定隨寫(xiě)入請(qǐng)求一起提供的FBN與重疊擴(kuò)展區(qū)的FBN 705之間的偏移是否為零。舉例來(lái)說(shuō),圖14中所圖解說(shuō)明的部分蓋寫(xiě)是針對(duì)從FBN 705(例如,值50)偏移四個(gè)數(shù)據(jù)塊的FBN(例如,值54)及對(duì)蓋寫(xiě)單一數(shù)據(jù)塊925的請(qǐng)求。
[0086]在處理框1315處,如果存在非零偏移,那么存儲(chǔ)服務(wù)器210創(chuàng)建新擴(kuò)展區(qū)映射條目800,其包含新分配的擴(kuò)展區(qū)識(shí)別符805、對(duì)現(xiàn)有擴(kuò)展區(qū)識(shí)別符的參考810、等于零的偏移815及將不蓋寫(xiě)的現(xiàn)有數(shù)據(jù)塊的長(zhǎng)度820 (例如,隨寫(xiě)入請(qǐng)求一起提供的FBN與現(xiàn)有擴(kuò)展區(qū)的FBN 705之間的偏移的值)。再次參考圖14中的實(shí)例,存儲(chǔ)服務(wù)器分配擴(kuò)展區(qū)識(shí)別符2、對(duì)擴(kuò)展區(qū)識(shí)別符I (EID I指向Pl)的條目800的參考810、為零的初始偏移及將不蓋寫(xiě)的PVBN 905-920為四的長(zhǎng)度820。
[0087]在處理框1320處,如果隨寫(xiě)入請(qǐng)求一起提供的FBN從重疊擴(kuò)展區(qū)的FBN 705的偏移為零或在創(chuàng)建將不蓋寫(xiě)的初始?jí)K集合的新擴(kuò)展區(qū)映射條目800之后,存儲(chǔ)服務(wù)器210創(chuàng)建新擴(kuò)展區(qū)映射條目800,其包含新分配的擴(kuò)展區(qū)識(shí)別符805、對(duì)隨蓋寫(xiě)請(qǐng)求一起提供的所存儲(chǔ)數(shù)據(jù)塊的參考810、其中新存儲(chǔ)的數(shù)據(jù)塊開(kāi)始的從參考810的偏移815及新數(shù)據(jù)的以塊為單位的長(zhǎng)度820。再次參考圖14中的實(shí)例,存儲(chǔ)服務(wù)器分配擴(kuò)展區(qū)識(shí)別符2、對(duì)新存儲(chǔ)的PVBN 1405的參考P2及偏移O及長(zhǎng)度I。
[0088]在決策框1325處,存儲(chǔ)服務(wù)器210確定蓋寫(xiě)過(guò)程是否已到達(dá)現(xiàn)有擴(kuò)展區(qū)的末尾。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210確定從新數(shù)據(jù)塊的現(xiàn)有擴(kuò)展區(qū)的開(kāi)始的偏移與新數(shù)據(jù)塊的長(zhǎng)度的和是否大于或等于現(xiàn)有擴(kuò)展區(qū)的長(zhǎng)度,以確定在完成過(guò)程1300的蓋寫(xiě)部分之后是否已到達(dá)現(xiàn)有擴(kuò)展區(qū)的末尾。再次參考圖14中的實(shí)例,新數(shù)據(jù)塊具有偏移4及長(zhǎng)度I。假定偏移與長(zhǎng)度的和5小于現(xiàn)有擴(kuò)展區(qū)的長(zhǎng)度8,那么仍將需要尋址現(xiàn)有擴(kuò)展區(qū)的其余部分。
[0089]在處理框1330處,如果蓋寫(xiě)尚未到達(dá)現(xiàn)有擴(kuò)展區(qū)的末尾,那么存儲(chǔ)服務(wù)器210創(chuàng)建新擴(kuò)展區(qū)映射條目800,其包含新分配的擴(kuò)展區(qū)識(shí)別符805、對(duì)現(xiàn)有擴(kuò)展區(qū)識(shí)別符的參考810、等于將不蓋寫(xiě)的現(xiàn)有塊的其余部分的第一塊的偏移815 (從現(xiàn)有擴(kuò)展區(qū)的開(kāi)始到待蓋寫(xiě)的第一塊的偏移+新數(shù)據(jù)的長(zhǎng)度)及將不蓋寫(xiě)的現(xiàn)有數(shù)據(jù)塊的其余部分的長(zhǎng)度820。再次參考圖14中的實(shí)例,三個(gè)塊(PVBN 930、935及940)也將不蓋寫(xiě)。存儲(chǔ)服務(wù)器分配擴(kuò)展區(qū)識(shí)別符2、對(duì)擴(kuò)展區(qū)識(shí)別符I (EID I指向Pl)的條目800的參考810、從PVBN 905起指代PVBN 930的五個(gè)塊的偏移及三個(gè)塊的長(zhǎng)度820。
[0090]在處理框1335處,存儲(chǔ)服務(wù)器210使用所分配擴(kuò)展區(qū)識(shí)別符805作為密鑰來(lái)遍歷聚合體層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600并添加一個(gè)或一個(gè)以上新擴(kuò)展區(qū)映射條目800。在處理框1340處,存儲(chǔ)服務(wù)器210在卷層基于擴(kuò)展區(qū)的經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)600中與重疊擴(kuò)展區(qū)的FBN 705相關(guān)聯(lián)的現(xiàn)有條目700中用所分配擴(kuò)展區(qū)識(shí)別符805蓋寫(xiě)現(xiàn)有擴(kuò)展區(qū)識(shí)別符710。
[0091]再次參考圖14中的實(shí)例,已用數(shù)據(jù)塊PVBN 1405有效地蓋寫(xiě)PVBN 925處的數(shù)據(jù)塊,如通過(guò)以虛線及陰影勾畫(huà)PVBN 925所圖解說(shuō)明。所述蓋寫(xiě)利用塊共享來(lái)僅寫(xiě)入一個(gè)新數(shù)據(jù)塊并使用參考810來(lái)存取借助于現(xiàn)有擴(kuò)展區(qū)而不蓋寫(xiě)的數(shù)據(jù)塊。另外,不需要在執(zhí)行蓋寫(xiě)操作之前讀取現(xiàn)有擴(kuò)展區(qū)的數(shù)據(jù)塊。對(duì)于一個(gè)實(shí)施例,如果擴(kuò)展區(qū)映射條目800識(shí)別或以其它方式指代包含對(duì)PVBN 925處的數(shù)據(jù)塊的參考(例如,通過(guò)對(duì)擴(kuò)展區(qū)識(shí)別符I的參考)的現(xiàn)有擴(kuò)展區(qū)映射條目800,那么所述擴(kuò)展區(qū)保持不被蓋寫(xiě)改變,因?yàn)楝F(xiàn)有擴(kuò)展區(qū)仍指代PVBN 905,其中偏移為零,且長(zhǎng)度為八。
[0092]對(duì)于替代實(shí)施例,當(dāng)存儲(chǔ)服務(wù)器210檢測(cè)到蓋寫(xiě)請(qǐng)求時(shí),存儲(chǔ)服務(wù)器210讀取將不蓋寫(xiě)的數(shù)據(jù)塊并用新數(shù)據(jù)塊作為新擴(kuò)展區(qū)來(lái)重寫(xiě)所述數(shù)據(jù)塊,所述新擴(kuò)展區(qū)可在不依賴(lài)于與現(xiàn)有擴(kuò)展區(qū)的塊共享的情況下(例如,在不參考現(xiàn)有擴(kuò)展區(qū)的擴(kuò)展區(qū)識(shí)別符805的情況下)通過(guò)擴(kuò)展區(qū)映射條目800直接存取。對(duì)于一個(gè)實(shí)施例,存儲(chǔ)服務(wù)器210包含在上文參考圖12-14所描述的塊共享蓋寫(xiě)與交替非共享蓋寫(xiě)之間交替的設(shè)定,作為空間效率(塊共享)與針對(duì)新蓋寫(xiě)的擴(kuò)展區(qū)處的后續(xù)讀取請(qǐng)求中的速度效率(非共享)之間的折衷。
[0093]因此,如本文中所描述,在計(jì)算機(jī)系統(tǒng)中實(shí)施基于擴(kuò)展區(qū)的架構(gòu)的實(shí)施例。實(shí)際上,方法1100、1200及1300可構(gòu)成由計(jì)算機(jī)可執(zhí)行指令組成的一個(gè)或一個(gè)以上程序。計(jì)算機(jī)可執(zhí)行指令可以計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言(例如,軟件)來(lái)編寫(xiě)或可以固件邏輯或以硬件電路來(lái)體現(xiàn)。用以實(shí)施持久高速緩沖存儲(chǔ)器的計(jì)算機(jī)可執(zhí)行指令可存儲(chǔ)于機(jī)器可讀存儲(chǔ)媒體上。如本文中所使用的術(shù)語(yǔ)“計(jì)算機(jī)可讀存儲(chǔ)媒體”或“非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)媒體”包含提供(即,存儲(chǔ)及/或發(fā)射)呈可由機(jī)器(例如,計(jì)算機(jī)、網(wǎng)絡(luò)裝置、個(gè)人數(shù)字助理(PDA)、制造工具、具有一個(gè)或一個(gè)以上處理器的集合的任何裝置等)存取的形式的信息的任何機(jī)制。如本文中所使用的術(shù)語(yǔ)“非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)媒體”不包含信號(hào)、載波等。如本文中所使用的術(shù)語(yǔ)RAM既定涵蓋所有易失性存儲(chǔ)媒體,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)及靜態(tài)RAM(SRAM)。計(jì)算機(jī)可執(zhí)行指令可存儲(chǔ)于非易失性存儲(chǔ)裝置(例如硬磁盤(pán)、光盤(pán))上,且在處理器對(duì)軟件的執(zhí)行期間通常通過(guò)直接存儲(chǔ)器存取過(guò)程寫(xiě)入到RAM/存儲(chǔ)器中。所屬領(lǐng)域的技術(shù)人員將立即認(rèn)識(shí)到,術(shù)語(yǔ)“機(jī)器可讀存儲(chǔ)媒體”及“計(jì)算機(jī)可讀存儲(chǔ)媒體”包含可由處理器存取的任何類(lèi)型的易失性或非易失性存儲(chǔ)裝置。舉例來(lái)說(shuō),機(jī)器可讀取存儲(chǔ)媒體包含可記錄/不可記錄媒體(例如,只讀存儲(chǔ)器(ROM);隨機(jī)存取存儲(chǔ)器(RAM);磁盤(pán)存儲(chǔ)媒體;光學(xué)存儲(chǔ)媒體;快閃存儲(chǔ)器裝置等)。
[0094]雖然已參考特定示范性實(shí)施例描述了本發(fā)明,但將認(rèn)識(shí)到本發(fā)明并不限于所描述的實(shí)施例,而是可在所附權(quán)利要求書(shū)的精神及范圍內(nèi)在修改及變更的情況下加以實(shí)踐。因此,應(yīng)將說(shuō)明書(shū)及圖式視為具有說(shuō)明性意義而非限制性意義。
[0095]因此,明確打算使本發(fā)明的實(shí)施例僅由所附權(quán)利要求書(shū)及其等效內(nèi)容限制。
【權(quán)利要求】
1.一種計(jì)算機(jī)化方法,其包括: 由存儲(chǔ)服務(wù)器從客戶(hù)端接收對(duì)擴(kuò)展區(qū)的讀取請(qǐng)求,其中所述擴(kuò)展區(qū)包含鄰接數(shù)據(jù)塊的群組且所述讀取請(qǐng)求包含文件塊編號(hào)FBN ; 由所述存儲(chǔ)服務(wù)器從第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)檢索第一擴(kuò)展區(qū)識(shí)別符,其中所述存儲(chǔ)服務(wù)器使用所述所接收FBN來(lái)遍歷所述第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到所述第一擴(kuò)展區(qū)識(shí)別符 '及由所述存儲(chǔ)服務(wù)器從第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)檢索對(duì)所述第一擴(kuò)展區(qū)的第一參考,其中所述存儲(chǔ)服務(wù)器使用所述所檢索第一擴(kuò)展區(qū)識(shí)別符來(lái)遍歷所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到所述第一參考,且其中所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)跨越多個(gè)卷為全局的; 由所述存儲(chǔ)服務(wù)器使用所述第一參考從存儲(chǔ)裝置檢索所述擴(kuò)展區(qū);及 由所述存儲(chǔ)服務(wù)器將所述擴(kuò)展區(qū)返回到所述客戶(hù)端。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)化方法,其中所述第一參考識(shí)別物理塊編號(hào)PVBN。
3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)化方法,其中每一PVBN由不多于一個(gè)擴(kuò)展區(qū)識(shí)別符直接參考。
4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)化方法,其中所述第一參考識(shí)別第二擴(kuò)展區(qū)識(shí)別符且所述第二擴(kuò)展區(qū)識(shí)別符包含識(shí)別PVBN的第二參考。
5.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)化方法,其中所述存儲(chǔ)服務(wù)器使用所述所檢索第一擴(kuò)展區(qū)識(shí)別符來(lái)遍歷所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到包含所述第一參考的多個(gè)參考,其中所述存儲(chǔ)服務(wù)器使用所述多個(gè)參考來(lái)檢索所述擴(kuò)展區(qū)。
6.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)化方法,其中擴(kuò)展區(qū)在長(zhǎng)度上變化。
7.根據(jù)權(quán)利要求1所述的計(jì)`算機(jī)化方法,其中FBN偏移粒度小于預(yù)定塊大小。
8.—種存儲(chǔ)服務(wù)器,其包括: 存儲(chǔ)器; 處理器,其通過(guò)總線耦合到所述存儲(chǔ)器,其中所述處理器執(zhí)行致使所述處理器進(jìn)行以下操作的指令 從客戶(hù)端接收對(duì)擴(kuò)展區(qū)的讀取請(qǐng)求,其中所述擴(kuò)展區(qū)包含鄰接數(shù)據(jù)塊的群組且所述讀取請(qǐng)求包含文件塊編號(hào)FBN ; 從第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)檢索擴(kuò)展區(qū)識(shí)別符,其中所述存儲(chǔ)服務(wù)器使用所述所接收FBN來(lái)遍歷所述第一數(shù)據(jù)結(jié)構(gòu)直到所述第一擴(kuò)展區(qū)識(shí)別符; 從第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)檢索對(duì)所述擴(kuò)展區(qū)的第一參考,其中所述存儲(chǔ)服務(wù)器使用所述所檢索第一擴(kuò)展區(qū)識(shí)別符來(lái)遍歷所述第二數(shù)據(jù)結(jié)構(gòu)直到所述第一參考,且其中所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)跨越多個(gè)卷為全局的; 使用所述第一參考從存儲(chǔ)裝置檢索所述擴(kuò)展區(qū);及 將所述擴(kuò)展區(qū)返回到所述客戶(hù)端。
9.根據(jù)權(quán)利要求8所述的存儲(chǔ)服務(wù)器,其中所述第一參考識(shí)別物理塊編號(hào)PVBN。
10.根據(jù)權(quán)利要求9所述的存儲(chǔ)服務(wù)器,其中每一PVBN由不多于一個(gè)擴(kuò)展區(qū)識(shí)別符直接參考。
11.根據(jù)權(quán)利要求8所述的存儲(chǔ)服務(wù)器,其中所述第一參考識(shí)別第二擴(kuò)展區(qū)識(shí)別符且所述第二擴(kuò)展區(qū)識(shí)別符包含識(shí)別PVBN的第二參考。
12.根據(jù)權(quán)利要求8所述的存儲(chǔ)服務(wù)器,其中所述存儲(chǔ)服務(wù)器使用所述所檢索第一擴(kuò)展區(qū)識(shí)別符來(lái)遍歷所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)直到包含所述第一參考的多個(gè)參考,其中所述存儲(chǔ)服務(wù)器使用所述多個(gè)參考來(lái)檢索所述擴(kuò)展區(qū)。
13.根據(jù)權(quán)利要求8所述的存儲(chǔ)服務(wù)器,其中擴(kuò)展區(qū)在長(zhǎng)度上變化。
14.根據(jù)權(quán)利要求8所述的存儲(chǔ)服務(wù)器,其中所述存儲(chǔ)服務(wù)器利用小于預(yù)定塊大小的FBN偏移粒度。
15.一種計(jì)算機(jī)化方法,其包括: 由存儲(chǔ)服務(wù)器從客戶(hù)端接收對(duì)包含鄰接數(shù)據(jù)塊的群組的第一擴(kuò)展區(qū)的寫(xiě)入請(qǐng)求及文件塊編號(hào)FBN ; 由所述存儲(chǔ)服務(wù)器在第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中寫(xiě)入第一條目,所述第一條目包含第一擴(kuò)展區(qū)識(shí)別符及存儲(chǔ)裝置中對(duì)所述第一擴(kuò)展區(qū)的第一參考,其中所述第一擴(kuò)展區(qū)識(shí)別符用于確定所述第一條目在所述第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中的位置;及 由所述存儲(chǔ)服務(wù)器在第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中寫(xiě)入第二條目,所述第二條目包含所述FBN及所述第一擴(kuò)展區(qū)識(shí)別符,其中所述FBN用于確定所述第二條目在所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中的位置,且其中所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)跨越多個(gè)卷為全局的。
16.根據(jù)權(quán)利要求15所述的計(jì)算機(jī)化方法,其中所述第一參考識(shí)別物理卷塊編號(hào)PVBN0
17.根據(jù)權(quán)利要求15所述的計(jì)算機(jī)化方法,其中所述第一參考識(shí)別第二擴(kuò)展區(qū)識(shí)別符且所述第二擴(kuò)展區(qū)識(shí)別符包含識(shí)別PVBN的第二參考。
18.根據(jù)權(quán)利要求15所述的計(jì)算機(jī)化方法,其中所述寫(xiě)入請(qǐng)求是蓋寫(xiě)第二擴(kuò)展區(qū)的一部分的請(qǐng)求,其中所述寫(xiě)入所述第二條目包含用所述第一擴(kuò)展區(qū)識(shí)別符蓋寫(xiě)第二擴(kuò)展區(qū)識(shí)別符,且其中所述第一條目進(jìn)一步包含所述第二擴(kuò)展區(qū)的所述第二擴(kuò)展區(qū)識(shí)別符、所述第二擴(kuò)展區(qū)內(nèi)指示所述第二擴(kuò)展區(qū)內(nèi)待蓋寫(xiě)的塊的開(kāi)始的偏移及從所述偏移起待蓋寫(xiě)的塊的數(shù)目。
19.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)化方法,其中所述蓋寫(xiě)所述第二擴(kuò)展區(qū)的一部分的請(qǐng)求包含所述第二擴(kuò)展區(qū)內(nèi)指示所述第二擴(kuò)展區(qū)內(nèi)將不蓋寫(xiě)的塊的開(kāi)始的第二偏移及從所述偏移起將不蓋寫(xiě)的塊的數(shù)目。
20.—種存儲(chǔ)服務(wù)器,其包括: 存儲(chǔ)器; 處理器,其通過(guò)總線耦合到所述存儲(chǔ)器,其中所述處理器執(zhí)行致使所述處理器進(jìn)行以下操作的指令 從客戶(hù)端接收對(duì)包含鄰接數(shù)據(jù)塊的群組的第一擴(kuò)展區(qū)的寫(xiě)入請(qǐng)求及文件塊編號(hào)FBN, 在第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中寫(xiě)入第一條目,所述第一條目包含第一擴(kuò)展區(qū)識(shí)別符及存儲(chǔ)裝置中對(duì)所述第一擴(kuò)展區(qū)的第一參考,其中所述第一擴(kuò)展區(qū)識(shí)別符用于確定所述第一條目在所述第一經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中的位置,及 在第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中寫(xiě)入第二條目,所述第二條目包含所述FBN及所述第一擴(kuò)展區(qū)識(shí)別符,其中所述FBN用于確定所述第二條目在所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)中的位置,且其中所述第二經(jīng)分類(lèi)數(shù)據(jù)結(jié)構(gòu)跨越多個(gè)卷為全局的。
21.根據(jù)權(quán)利要求20所述的存儲(chǔ)服務(wù)器,其中所述第一參考識(shí)別物理卷塊編號(hào)PVBN。
22.根據(jù)權(quán)利要求20所述的存儲(chǔ)服務(wù)器,其中所述第一參考識(shí)別第二擴(kuò)展區(qū)識(shí)別符且所述第二擴(kuò)展區(qū)識(shí)別符包含識(shí)別PVBN的第二參考。
23.根據(jù)權(quán)利要求20所述的存儲(chǔ)服務(wù)器,其中所述寫(xiě)入請(qǐng)求是蓋寫(xiě)第二擴(kuò)展區(qū)的一部分的請(qǐng)求,其中所述寫(xiě)入所述第二條目包含用所述第一擴(kuò)展區(qū)識(shí)別符蓋寫(xiě)第二擴(kuò)展區(qū)識(shí)別符,且其中所述第一條目進(jìn)一步包含所述第二擴(kuò)展區(qū)的所述第二擴(kuò)展區(qū)識(shí)別符、所述第二擴(kuò)展區(qū)內(nèi)指示所述第二擴(kuò)展區(qū)內(nèi)待蓋寫(xiě)的塊的開(kāi)始的偏移及從所述偏移起待蓋寫(xiě)的塊的數(shù)目。
24.根據(jù)權(quán)利要求23所述的存儲(chǔ)服務(wù)器,其中所述蓋寫(xiě)所述第二擴(kuò)展區(qū)的一部分的請(qǐng)求包含所述第二擴(kuò)展區(qū)內(nèi)指示所述第二擴(kuò)展區(qū)內(nèi)將不蓋寫(xiě)的塊的開(kāi)始的第二偏移及從所述偏移起將不蓋寫(xiě)的塊的數(shù)目。
25.一種計(jì)算機(jī)化方法,其包括: 由存儲(chǔ)服務(wù)器使用將卷層中的條目映射到聚合體層中的條目的基于擴(kuò)展區(qū)的架構(gòu)來(lái)存儲(chǔ)數(shù)據(jù),其中所述卷層包括包含每一擴(kuò)展區(qū)的條目的多個(gè)間接卷,且其中所述聚合體層包括跨越所述多個(gè)間接卷的邊界共享所述擴(kuò)展區(qū)內(nèi)的數(shù)據(jù)塊的擴(kuò)展區(qū)到物理塊映射。
26.根據(jù)權(quán)利要求25所述的方法,其中所述存儲(chǔ)服務(wù)器跨越所述多個(gè)間接卷的邊界對(duì)數(shù)據(jù)進(jìn)行去重復(fù)。
27.根據(jù)權(quán)利要求25所述的方法,其中所述間接卷?xiàng)l目包含文件塊編號(hào)到擴(kuò)展區(qū)識(shí)別符映射,且其中所述擴(kuò)展區(qū)到物理塊映射中的所述條目包含擴(kuò)展區(qū)識(shí)別符到物理塊映射。
28.根據(jù)權(quán)利要求27所述的方法,其中所述存儲(chǔ)服務(wù)器執(zhí)行段清理并在不改變所述擴(kuò)展區(qū)識(shí)別符的情況下更新所述擴(kuò)展區(qū)`到物理映射以反映對(duì)所述物理塊的改變。
【文檔編號(hào)】G06F3/06GK103502926SQ201280021084
【公開(kāi)日】2014年1月8日 申請(qǐng)日期:2012年4月17日 優(yōu)先權(quán)日:2011年4月29日
【發(fā)明者】里卡德·E·費(fèi)絲, 蘇布拉馬尼亞姆·佩里亞甘拉姆, 桑迪普·亞達(dá)夫, 阿希什·普拉卡什, 布萊克·劉易斯, 杰夫·基梅爾, 史蒂夫·丹尼爾 申請(qǐng)人:美國(guó)網(wǎng)域存儲(chǔ)技術(shù)有限公司