專利名稱:壓縮存儲用文件以及對壓縮的文件進(jìn)行操作的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及支持對存儲的數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)訪問的網(wǎng)絡(luò)基礎(chǔ)構(gòu)造裝置,具體地,涉及進(jìn)行壓縮并通過文件系統(tǒng)協(xié)議對具有壓縮數(shù)據(jù)的文件系統(tǒng)進(jìn)行操作的方法和裝置。
背景技術(shù):
在當(dāng)前的業(yè)務(wù)環(huán)境中,對于業(yè)務(wù)成功而言,所有類型的業(yè)務(wù)數(shù)據(jù)正變得越來越關(guān)鍵。業(yè)務(wù)產(chǎn)生的數(shù)據(jù)的巨大增長和復(fù)雜性正驅(qū)動著信息存儲的需求,定義了信息資產(chǎn)(asset)的共享、管理和保護(hù)。
通常,沒有單種技術(shù)或架構(gòu)能夠解決所有組織的所有需要。主存(main storage)技術(shù)在EMC的2003年的白皮書“Leveraging Networkedstorage for your business”(www.emc.com/pdf/products/networked_storage/leveraging_net_storage.pdf)中進(jìn)行了描述,并且基本上可按連接類型(直連式存儲(DAS)、IP和信道網(wǎng)絡(luò))和訪問數(shù)據(jù)的方法進(jìn)行識別。存在與數(shù)據(jù)訪問方法相關(guān)地考慮的三種基本類型的存儲架構(gòu)塊訪問、文件訪問和對象訪問。
在塊訪問架構(gòu)中,服務(wù)器/客戶機(jī)與存儲裝置之間的通信是按塊發(fā)生的;從盤中逐塊地直接取出信息。操作系統(tǒng)跟蹤每條信息在盤上的何處,而存儲裝置通常不知道用來在該裝置上組織數(shù)據(jù)的文件系統(tǒng)。當(dāng)需要讀取或?qū)懭霑r,由知道數(shù)據(jù)的各個塊位于盤上的何處以及如何將這些塊放到一起的處理器從盤中直接訪問該數(shù)據(jù)。塊訪問存儲技術(shù)的示例是DAS(直連式存儲)、SAN(存儲域網(wǎng))和IP上的塊存儲(例如,F(xiàn)CIP、iFCP、iSCSI等)。
文件訪問需要服務(wù)器或客戶機(jī)按名稱而不是按物理位置請求文件。結(jié)果,存儲裝置通常負(fù)責(zé)將文件映射回用于創(chuàng)建、維護(hù)和更新文件系統(tǒng)的數(shù)據(jù)塊。文件服務(wù)器接收文件讀取或?qū)懭胝埱?,并處理“后臺的”塊訪問。文件訪問存儲技術(shù)的示例是NAS(利用NFS、CIFS、HTTP等協(xié)議的網(wǎng)絡(luò)連接存儲)和MPFS(多通文件服務(wù))。例如,可以針對通用文件、web應(yīng)用、工程應(yīng)用(例如,CAD、CAM、軟件開發(fā)等)、成像和3D數(shù)據(jù)處理、多媒體流傳輸?shù)?,來實現(xiàn)文件訪問存儲。
對象訪問通過對應(yīng)用隱藏關(guān)于塊、文件和存儲拓?fù)涞乃屑?xì)節(jié),進(jìn)一步簡化了數(shù)據(jù)訪問。通過整合在內(nèi)容管理應(yīng)用中的API而發(fā)生對象訪問。對象訪問存儲技術(shù)的示例是CAS(內(nèi)容尋址存儲)。
通過在存儲數(shù)據(jù)前進(jìn)行數(shù)據(jù)壓縮可以實現(xiàn)對存儲器更有效的利用。數(shù)據(jù)壓縮技術(shù)用于減少要存儲或發(fā)送的數(shù)據(jù)量,以分別減少存儲容量和發(fā)送時間??梢岳靡韵虏煌膲嚎s算法來實現(xiàn)壓縮,例如標(biāo)準(zhǔn)壓縮算法,諸如由J.Ziv和A.Lempel描述的算法″A Universal Algorithm ForSequential Data Compression,″IEEE Transactions on Information Theory,IT-23,337-343頁(1997)。重要的是透明地執(zhí)行壓縮,這意味著可在不改變現(xiàn)有應(yīng)用的情況下使用數(shù)據(jù)。在任一情況下,必須提供使原始數(shù)據(jù)能夠重構(gòu)并且能被應(yīng)用訪問的對應(yīng)的解壓縮技術(shù)。當(dāng)對壓縮數(shù)據(jù)進(jìn)行更新時,尤其當(dāng)更新是針對數(shù)據(jù)的相對較小的部分時,將整個塊或文件解壓縮并重新壓縮通常是低效的。
例如在下面的專利公報中公開了對存儲數(shù)據(jù)的存儲和訪問進(jìn)行優(yōu)化的各種實現(xiàn)美國專利第5,761,536號(Franaszek)公開了一種系統(tǒng)和方法,其存儲可變長度對象以減少存儲器碎片,同時消除了存儲器重組的需要?;谧罴哑ヅ浠蜃钕绕ヅ?,可將可變長度對象的余部(remainder)分配為與另一可變長度對象的余部共享固定大小的存儲塊(兩個這種共享一個塊的余部被稱為室友)。一個余部存儲在該塊的一端,而另一個余部存儲在該塊的另一端。從同一群(cohort)中選擇要共享一個存儲塊的可變長度對象。從而,對象間存在了某種關(guān)聯(lián)。該關(guān)聯(lián)例如可以是對象是來自同一頁的、或者對象在按某線性順序生成的多個頁中。將關(guān)于群的可變長度對象的信息(諸如一對象是否具有室友)存儲在存儲器中。
美國專利第5,813,011號(Yoshida等人)公開了一種存儲壓縮數(shù)據(jù)的方法和裝置,其中壓縮文件包括頭,其帶有示出壓縮管理表的位置的信息;壓縮碼;和壓縮管理表,其保存這樣的信息,該信息示出了各原始記錄的壓縮碼的存儲位置。
美國專利第5,813,017號(Morris等人)公開了一種方法和裝置,用于減少備份子系統(tǒng)的存儲需求以及進(jìn)一步減少發(fā)送帶寬的負(fù)載,其中基礎(chǔ)文件(base file)以分段壓縮的格式保存在服務(wù)器上。當(dāng)在客戶機(jī)上修改文件時,該文件被發(fā)送到服務(wù)器并利用差分函數(shù)與該文件的分段壓縮的基礎(chǔ)版本進(jìn)行比較,但是不解壓縮整個基礎(chǔ)文件。創(chuàng)建一delta文件并將其存儲在作為備份子系統(tǒng)的一部分的存儲介質(zhì)上,該delta文件是壓縮的基礎(chǔ)文件和該文件的修改版本之間的差異。
美國專利第6,092,071號(Bolan等人)公開了一種系統(tǒng),該系統(tǒng)基于系統(tǒng)老化參數(shù)控制數(shù)據(jù)的壓縮和解壓縮,以使壓縮數(shù)據(jù)成為在系統(tǒng)存儲層級中具有獨特位置的系統(tǒng)管理的資源。處理器的寄存器由高速緩存支持,高速緩存由主存支持,主存由解壓縮的盤存儲器支持,解壓縮的盤存儲由壓縮的盤存儲器支持,然后是磁帶等等。基于系統(tǒng)老化參數(shù)或者可選地按以下需求根據(jù)數(shù)據(jù)的生命周期在系統(tǒng)的控制下將數(shù)據(jù)從解壓縮形式變?yōu)閴嚎s形式并使其在存儲層級中移動,所述需求為初次創(chuàng)建并存儲數(shù)據(jù);在系統(tǒng)的控制下在以后壓縮該數(shù)據(jù);當(dāng)訪問該數(shù)據(jù)時,根據(jù)需求按段解壓縮該數(shù)據(jù);在以后某時刻,在系統(tǒng)的控制下再次壓縮該數(shù)據(jù),直到下一次引用。將大的數(shù)據(jù)對象分段,并對使用頻率低的數(shù)據(jù)進(jìn)行壓縮。
美國專利第6,115,787號(Obara等人)公開了一種盤存儲器系統(tǒng),其中,將要存儲在高速緩沖存儲器中的數(shù)據(jù)分成多個數(shù)據(jù)塊并進(jìn)行壓縮,所述每個數(shù)據(jù)塊具有與該數(shù)據(jù)所屬的軌道塊相關(guān)聯(lián)的兩個高速緩存塊,從而以易于讀取的方式將存儲的多個壓縮記錄設(shè)置在盤存儲器系統(tǒng)的高速緩沖存儲器中。將壓縮后的各個數(shù)據(jù)塊存儲在一個或多個高速緩存塊中。將用于根據(jù)數(shù)據(jù)塊的在軌(in-track)地址檢索各高速緩存塊的信息存儲為高速緩沖存儲器的檢索信息的一部分。當(dāng)讀取一記錄中的各個數(shù)據(jù)塊時,基于數(shù)據(jù)塊的在軌地址和所述檢索信息來確定存儲有壓縮數(shù)據(jù)塊的高速緩存塊。
美國專利第6,349,375號(Faulkner等人)公開了一種利用虛擬存儲器系統(tǒng)的數(shù)據(jù)壓縮和解壓縮的組合。討論了包括所謂的嵌入式系統(tǒng)的許多計算機(jī)系統(tǒng),在所述嵌入式系統(tǒng)中,數(shù)據(jù)以壓縮格式存儲在存儲裝置中。響應(yīng)于中央處理單元(CPU)的數(shù)據(jù)請求,虛擬存儲器系統(tǒng)將首先確定所請求的數(shù)據(jù)是否存在于主存中的CPU可訪問的部分中,該部分還正好是存儲解壓縮數(shù)據(jù)的地方。如果所請求的數(shù)據(jù)不在主存的解壓縮部分中,而是以壓縮格式存在于存儲裝置中,則通過按需調(diào)頁(demandpaging)操作將該數(shù)據(jù)傳送到主存的解壓縮部分。在按需調(diào)頁操作期間,壓縮數(shù)據(jù)將被解壓縮。同樣地,如果數(shù)據(jù)被調(diào)出主存的解壓縮部分并且必須保存該數(shù)據(jù),則數(shù)據(jù)在存儲在用于壓縮數(shù)據(jù)的存儲裝置中之前還可被壓縮。
美國專利第6,584,520號(Cowart等人)公開了一種存儲和檢索壓縮文件的方法,該方法包括動態(tài)地產(chǎn)生文件分配表,以從壓縮盤只讀存儲器中檢索壓縮文件。
美國專利第6,678,828號(Pham等人)公開了一種安全網(wǎng)絡(luò)文件訪問裝置,該裝置支持在客戶機(jī)計算機(jī)系統(tǒng)的文件系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)存儲器之間安全訪問和傳送數(shù)據(jù)。設(shè)置在客戶機(jī)計算機(jī)系統(tǒng)上并由安全網(wǎng)絡(luò)文件訪問裝置監(jiān)控的代理確??蛻魴C(jī)計算機(jī)系統(tǒng)針對發(fā)送到網(wǎng)絡(luò)數(shù)據(jù)存儲器的文件系統(tǒng)請求的認(rèn)證。該安全網(wǎng)絡(luò)文件訪問裝置設(shè)置在客戶機(jī)計算機(jī)系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)存儲器之間的網(wǎng)絡(luò)基礎(chǔ)構(gòu)造中,以應(yīng)用資格訪問策略并選擇性地讓文件系統(tǒng)請求通過。安全網(wǎng)絡(luò)文件訪問裝置維護(hù)加密密鑰存儲器,并使加密密鑰與對應(yīng)的文件系統(tǒng)文件相關(guān)聯(lián),以對通過該安全網(wǎng)絡(luò)文件訪問裝置傳送至網(wǎng)絡(luò)數(shù)據(jù)存儲器和從網(wǎng)絡(luò)數(shù)據(jù)存儲器讀取的文件數(shù)據(jù)進(jìn)行加密和解密。
美國專利申請第2004/030,813號(Benveniste等人)公開了一種存儲信息的方法和系統(tǒng),其包括在不對主存儲器壓縮信息進(jìn)行解壓縮的情況下將主存儲器壓縮信息存儲到存儲器壓縮盤上,在存儲器壓縮盤中單獨地存儲和檢索頁。
美國專利申請第2005/021,657號(Negishi等人)公開了一種用于暫時保存針對NAS服務(wù)器的操作請求的前端服務(wù)器,所述操作請求是從預(yù)定客戶機(jī)發(fā)送的,并且插入在網(wǎng)絡(luò)上的NAS服務(wù)器和客戶機(jī)之間。該前端服務(wù)器保存與存儲在NAS服務(wù)器中的數(shù)據(jù)文件之間的相關(guān)性有關(guān)的信息,基于該信息對從客戶機(jī)接收的操作請求進(jìn)行優(yōu)化,并將該操作請求發(fā)送到NAS服務(wù)器。
發(fā)明內(nèi)容
本領(lǐng)域需要提供一種與文件訪問存儲器系統(tǒng)一起使用的壓縮存儲器的新系統(tǒng)和方法,其不降低存儲和檢索能力且不需要用戶知道壓縮/解壓縮操作以及壓縮數(shù)據(jù)的存儲位置。本發(fā)明在其某些方面中旨在提供一種新穎的方案,該方案能夠幫助對壓縮存儲的文件中的數(shù)據(jù)進(jìn)行隨機(jī)存取,從而使得能夠在無需解壓縮整個文件的情況下對壓縮數(shù)據(jù)進(jìn)行操作。
根據(jù)本發(fā)明的特定方面,提供了一種與文件訪問存儲器一起使用的用于創(chuàng)建、讀取和寫入壓縮文件的方法和系統(tǒng);所述方法和系統(tǒng)便于對壓縮數(shù)據(jù)進(jìn)行直接訪問, 同時保持壓縮文件的去碎片化(de-fragmentation)。
根據(jù)本發(fā)明的特定方面,所述方法包括以下步驟—對原始文件進(jìn)行壓縮從而產(chǎn)生壓縮數(shù)據(jù),其中,所述原始文件的至少一個固定大小部分的數(shù)據(jù)(簇)被順序地處理成對應(yīng)的壓縮區(qū),所述壓縮區(qū)劃分為至少一個固定大小的壓縮邏輯單元(CLU);—將所述壓縮數(shù)據(jù)存儲為壓縮文件,所述壓縮文件包含與所述原始文件的簇相對應(yīng)的壓縮區(qū)、以及包括唯一的文件描述符的頭;—創(chuàng)建包括描述壓縮區(qū)的至少一個記錄的區(qū)表,所述記錄至少保存與對應(yīng)于所述壓縮區(qū)的CLU有關(guān)的信息以及屬于所述CLU的存儲位置指針。
為了讀取存儲在如上壓縮的文件中的數(shù)據(jù),所述方法還包括以下步驟
—確定包括要讀取的數(shù)據(jù)的第一個壓縮區(qū)的序列號;—通過參照所述區(qū)表,確定與所述壓縮區(qū)相對應(yīng)的CLU及其存儲位置;—從所述壓縮區(qū)恢復(fù)簇;—如果要讀取的數(shù)據(jù)的范圍超過所述恢復(fù)的簇的大小,則針對序列號加1的壓縮區(qū)重復(fù)步驟b)和c),直到恢復(fù)了要讀取的所有數(shù)據(jù)為止。
為了將數(shù)據(jù)寫入在如上壓縮的文件,所述方法還包括以下步驟—確定包括要更新的數(shù)據(jù)的第一個壓縮區(qū)(原始區(qū))的序列號;—通過參照所述區(qū)表,確定與所述原始壓縮區(qū)相對應(yīng)的CLU及其存儲位置;—從所述原始壓縮區(qū)恢復(fù)簇;—計算更新數(shù)據(jù)在所述簇內(nèi)的偏移量并進(jìn)行所需數(shù)據(jù)范圍的更新;—將經(jīng)更新的簇壓縮成經(jīng)更新的壓縮區(qū);—用所述經(jīng)更新的壓縮區(qū)重寫所述原始壓縮區(qū);—更新所述區(qū)表;—如果要寫入的數(shù)據(jù)的范圍超過所述恢復(fù)的簇的大小,則針對序列號加1的壓縮區(qū)重復(fù)步驟b)至g),直到寫入了所有需要的數(shù)據(jù)為止。
根據(jù)本發(fā)明的其他方面,所述方法包括對在將數(shù)據(jù)寫入所述壓縮文件期間釋放的空閑CLU的列表進(jìn)行處理,在關(guān)閉所述文件前,在與所述文件有關(guān)的所有會話期間都處理所述列表。所述方法還包括對所述原始壓縮區(qū)需要的CLU的數(shù)量No和所述經(jīng)更新的壓縮區(qū)需要的CLU的數(shù)量Nu進(jìn)行比較,并且進(jìn)行以下之一—如果No=Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU;—如果No>Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的前Nu個CLU,并關(guān)于釋放的CLU更新空閑CLU的列表;—如果No<Nu<No+Nf,其中Nf是空閑CLU的列表中的CLU的數(shù)量,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU,并將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的其余CLU寫入包含在所述空閑CLU的列表中的CLU;—如果No+Nf<Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU,將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU寫入包含在空閑CLU的列表中的CLU,并將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的其余CLU連續(xù)寫入下一空閑存儲位置。
根據(jù)本發(fā)明的又一方面,所述方法還包括在關(guān)閉所述文件前檢查空閑CLU的列表,并且如果所述列表非空,則—限定包括在所述壓縮區(qū)中的CLU之中具有最高存儲位置指針的CLU(第一CLU);—將壓縮數(shù)據(jù)從所述第一CLU移動到具有較低存儲位置指針的空閑CLU(第二CLU);—將所述第二CLU分配給所屬壓縮區(qū)并將所述第一CLU分配給空閑CLU的列表;—重復(fù)步驟b)至d),直到包括在壓縮區(qū)中的所有CLU的存儲位置指針都低于包括在空閑CLU的列表中的任一CLU的指針為止;根據(jù)本發(fā)明的再一方面,用于對存儲用文件進(jìn)行壓縮的所述系統(tǒng)包括—壓縮子系統(tǒng),用于對原始文件進(jìn)行壓縮從而產(chǎn)生壓縮數(shù)據(jù),其中,所述原始文件的每個固定大小部分的數(shù)據(jù)(簇)被順序地處理成壓縮區(qū),所述壓縮區(qū)劃分為固定大小的壓縮邏輯單元(CLU);—存儲子系統(tǒng),用于將所述壓縮數(shù)據(jù)存儲為壓縮文件,所述壓縮文件包含與所述原始文件的簇相對應(yīng)的所述壓縮區(qū)、以及包括唯一的文件描述符的頭;—區(qū)表創(chuàng)建子系統(tǒng),用于創(chuàng)建包括所有壓縮區(qū)的記錄的區(qū)表,所述記錄中的每個記錄都保存與對應(yīng)于所述壓縮區(qū)的CLU有關(guān)的信息以及屬于所述CLU的存儲位置指針。
應(yīng)該理解,根據(jù)本發(fā)明的系統(tǒng)可以是適當(dāng)編程的計算機(jī)。同樣地,本發(fā)明設(shè)想了一種可由計算機(jī)讀取的用于執(zhí)行本發(fā)明的方法的計算機(jī)程序。本發(fā)明還設(shè)想了一種機(jī)器可讀存儲器,其明確地包含有用于執(zhí)行本發(fā)明的方法的可由機(jī)器執(zhí)行的指令的程序。
為了理解本發(fā)明并明白本發(fā)明是如何在實踐中執(zhí)行的,現(xiàn)在將參照附圖僅通過非限制性示例來描述優(yōu)選實施例,在附圖中圖1是本領(lǐng)域中公知的典型NAS存儲網(wǎng)絡(luò)架構(gòu)的示意性框圖。
圖2a和2b是根據(jù)本發(fā)明特定實施例的NAS存儲網(wǎng)絡(luò)架構(gòu)的示意性框圖。
圖3是根據(jù)本發(fā)明特定實施例的系統(tǒng)功能架構(gòu)的示意性框圖。
圖4是根據(jù)本發(fā)明特定實施例的原始文件和壓縮文件的示意圖。
圖5是根據(jù)本發(fā)明特定實施例的區(qū)表的示例性結(jié)構(gòu)。
圖6是根據(jù)本發(fā)明特定實施例的壓縮文件創(chuàng)建操作的概括流程圖。
圖7是根據(jù)本發(fā)明特定實施例的對壓縮文件進(jìn)行的讀取操作的概括流程圖。
圖8是根據(jù)本發(fā)明特定實施例的對壓縮文件進(jìn)行的寫入操作的概括流程圖。
圖9是示出了根據(jù)本發(fā)明特定實施例的對壓縮區(qū)進(jìn)行的寫入操作的序列的概括流程圖。
圖10是對文件進(jìn)行關(guān)閉操作期間的CLU管理的概括流程圖。
圖11a-11c是根據(jù)本發(fā)明特定實施例的CLU和分配的盤存儲器段之間的關(guān)系的示意性圖例。
具體實施例方式
在下面的詳細(xì)描述中,為了提供對本發(fā)明的徹底理解,闡述了大量具體細(xì)節(jié)。然而,本領(lǐng)域的技術(shù)人員應(yīng)該理解,在沒有這些具體細(xì)節(jié)的情況下也可實施本發(fā)明。在其他示例中,為了不使本發(fā)明模糊,對公知方法、過程、組件和電路不進(jìn)行詳細(xì)描述。
除非另外專門說明,從以下討論中可顯見,應(yīng)該理解的是,在整篇說明書的討論中,利用諸如“處理”、“計算(computing)”、“計算(calculating)”、“確定”等的術(shù)語,指的是計算機(jī)或計算系統(tǒng)或處理器或類似的電子計算裝置的行為和/或處理,所述計算機(jī)或計算系統(tǒng)或處理器或類似的電子計算裝置將計算系統(tǒng)的寄存器和/或存儲器內(nèi)的物理(諸如電子)量表示的數(shù)據(jù)操作和/或變換為計算系統(tǒng)的存儲器、寄存器或其他這種信息存儲、發(fā)送或顯示裝置內(nèi)的物理量類似地表示的其他數(shù)據(jù)。
本發(fā)明的實施例可以使用以下術(shù)語諸如用于在此執(zhí)行操作的處理器、計算機(jī)、裝置、系統(tǒng)、子系統(tǒng)、模塊、單元、設(shè)備(單數(shù)或復(fù)數(shù)形式)。這可以是專門為期望的目的而構(gòu)建的,或者其可包括由存儲在通用計算機(jī)中的計算機(jī)程序選擇性地激活或重新配置的該通用計算機(jī)??梢詫⑦@種計算機(jī)程序存儲在計算機(jī)可讀存儲介質(zhì)中,所述計算機(jī)可讀存儲介質(zhì)例如是(但不限于)包括軟盤、光盤、CD-ROM、磁光盤的任何類型的盤、只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、電可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)、磁卡或光卡、或者適于存儲電子指令并能夠連接至計算機(jī)系統(tǒng)總線的任何其他類型的介質(zhì)。
在此提出的處理/裝置(或上面指定的類似術(shù)語)以及顯示并不是與任何特定計算機(jī)或其他裝置固有地相關(guān)的,除非另外專門說明??梢愿鶕?jù)這里的教導(dǎo)與程序一起使用各種通用系統(tǒng),或者可以證明構(gòu)建更專用的裝置來執(zhí)行期望的方法是方便的。以下描述中將出現(xiàn)各種各樣的這些系統(tǒng)的期望結(jié)構(gòu)。此外,本發(fā)明的實施例并不是參照任何具體的編程語言進(jìn)行描述的。應(yīng)該理解,可以使用各種編程語言來實現(xiàn)如在此所述的本發(fā)明的教導(dǎo)。
記著此點,將注意力移到圖1,圖1示出了本領(lǐng)域中公知的典型NAS存儲網(wǎng)絡(luò)架構(gòu)的示意圖。來自客戶機(jī)11和/或服務(wù)器12的文件經(jīng)由IP網(wǎng)絡(luò)13傳送到文件存儲裝置14。該文件存儲裝置可以是專用NAS文件服務(wù)器、通用文件服務(wù)器、SAN存儲、流存儲裝置等。該IP網(wǎng)絡(luò)可以是局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、它們的組合等。
參照圖2a,圖2a示出了根據(jù)本發(fā)明特定實施例的NAS存儲網(wǎng)絡(luò)架構(gòu)的示意圖。服務(wù)器12和/或客戶機(jī)11與文件存儲裝置14之間的通信通過平臺20。平臺20包括客戶機(jī)/服務(wù)器接口21,連接一個或更多個客戶機(jī)/服務(wù)器;和文件存儲接口22,用于與一個或更多個文件存儲裝置進(jìn)行橋連接/代理連接。平臺20用作選定事務(wù)的代理,從而保持控制事務(wù)的吞吐量,并用作數(shù)據(jù)事務(wù)的代理。平臺20可支持任何物理接口(例如以太網(wǎng)、光纖信道等)并且可保持存儲裝置的特征,例如,冗余、鏡像、快照、故障恢復(fù)(failover)、回滾(rollback)、管理等。該平臺可與現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)構(gòu)造無縫地整合。為了實現(xiàn)下述壓縮和訪問功能,通常,該平臺不需要改變文件自身以上的任何級。用戶無需知道壓縮和解壓縮操作以及壓縮數(shù)據(jù)的存儲位置。
在對要在存儲前壓縮的文件進(jìn)行“寫入”操作期間,來自客戶機(jī)11和/或服務(wù)器12的文件流過網(wǎng)絡(luò)13到達(dá)平臺20,被該平臺壓縮并被寫在文件存儲裝置14中??梢杂貌煌膲嚎s算法(例如參見http://www.data-compression.com)來壓縮包含不同種類的數(shù)據(jù)(例如文本、圖像、語音等)的文件?!白x取”操作按反方向進(jìn)行;所需文件被平臺檢索到,(根據(jù)所需數(shù)據(jù)的范圍,部分或全部地)被解壓縮并被發(fā)送到適當(dāng)?shù)目蛻魴C(jī)/服務(wù)器。下面參照圖3-9進(jìn)一步描述根據(jù)本發(fā)明的特定方面的壓縮/解壓縮操作。圖2b示出了當(dāng)從客戶機(jī)/服務(wù)器接收的文件在經(jīng)由網(wǎng)絡(luò)13進(jìn)行傳送之前在平臺處被壓縮并寫入時的本發(fā)明的其他實施例的存儲架構(gòu)。
根據(jù)特定實施例,平臺20還可提供安全功能,例如,加密、認(rèn)證等。
將平臺20配置為在客戶機(jī)/服務(wù)器和文件存儲裝置之間以透明的方式傳送選定事務(wù)(通常為與控制有關(guān)的事務(wù),例如,復(fù)制文件、刪除文件、重新命名文件、拍攝快照等),同時干預(yù)與數(shù)據(jù)有關(guān)的事務(wù)(例如,打開、關(guān)閉、讀取、寫入、創(chuàng)建等)和某些與控制有關(guān)的事務(wù),例如,目錄列出命令。
在本發(fā)明的特定實施例中,可將平臺配置為還對先前存儲在文件存儲裝置14中而沒有通過平臺20的未壓縮文件進(jìn)行壓縮。該平臺可根據(jù)預(yù)定義的標(biāo)準(zhǔn)文件從存儲裝置中提取所有文件或選定文件,根據(jù)本發(fā)明對其進(jìn)行壓縮,并以壓縮形式重新寫入存儲裝置。
在本發(fā)明的特定實施例中,還可將平臺20配置為根據(jù)預(yù)定義的標(biāo)準(zhǔn)(例如,大小、IP地址、目錄、文件類型)僅對選定的通過文件進(jìn)行壓縮。
原始文件(或其相關(guān)部分)在寫入文件存儲裝置14期間或之前被平臺20壓縮。類似地,該文件(或其相關(guān)部分)在從文件存儲裝置14讀取期間或之后被平臺20解壓縮。在本發(fā)明的某些實施例中,在平臺20和文件存儲裝置14之間,文件可以以壓縮方式傳送;例如,可以在平臺內(nèi)對原始文件進(jìn)行壓縮和寫入,可將得到的壓縮文件進(jìn)一步傳送到文件存儲裝置,和/或可以從文件存儲裝置接收壓縮文件以在平臺內(nèi)進(jìn)行進(jìn)一步的讀取/寫入操作。
要注意,本發(fā)明不受參照圖1和2描述的具體網(wǎng)絡(luò)架構(gòu)的限制。本領(lǐng)域的技術(shù)人員將容易理解,本發(fā)明同樣可應(yīng)用于包括NAS的任何網(wǎng)絡(luò)或者基于利用IP的文件訪問存儲子網(wǎng)或者基于信道的通信的其他網(wǎng)絡(luò)。平臺20的功能(或部分功能)可以實現(xiàn)在獨立服務(wù)器中(如圖2所示)、分布在幾個平臺之間或者整合在其他存儲網(wǎng)絡(luò)部件(例如,文件服務(wù)器、企業(yè)交換機(jī)等)內(nèi)。
圖3示出了根據(jù)本發(fā)明特定實施例的平臺20的示意性功能框圖。
輸入/輸出塊31的主要功能是套接字(socket)處理;該塊負(fù)責(zé)IP通信的整合。I/O塊31接收新的TCP分組,對它們進(jìn)行解包并移至?xí)捁芾砥?2。塊31還從會話管理器獲得數(shù)據(jù),將其打包成TCP結(jié)構(gòu)并將其發(fā)送到所請求的地址。
會話由“打開文件”請求開始并由從同一IP地址(用戶)接收的“關(guān)閉文件”請求而結(jié)束。會話管理器32保存所有會話的私有數(shù)據(jù),例如,源IP地址、使用中的所有文件實例、會話計數(shù)器、會話狀態(tài)、使用中的緩沖區(qū)的所有實例等。會話管理器還處理“文件塊”并在斷開時釋放所有相關(guān)資源。會話管理器32將會話任務(wù)載入用于對接收到分組進(jìn)行過濾的調(diào)度器(dispatcher)33。該調(diào)度器將CIFS/NFS分組發(fā)送到CIFS/NFS管理器34,并將所有其他分組(經(jīng)由會話管理器)原樣轉(zhuǎn)發(fā)回I/O塊。根據(jù)本發(fā)明特定實施例,CIFS/NFS管理器34相應(yīng)地整合CIFS和NFS事務(wù)并向文件管理器35請求與數(shù)據(jù)有關(guān)的事務(wù)(例如,打開、讀取、寫入、關(guān)閉等)以及向壓縮/解壓縮塊37請求壓縮/解壓縮操作。通常,壓縮算法具有幾個壓縮等級,其特征在于在壓縮效率和性能參數(shù)之間進(jìn)行權(quán)衡。壓縮塊37可選擇最佳壓縮等級,并根據(jù)當(dāng)前由輸入/輸出塊31處理的套接字的數(shù)量(和/或CPU利用率)來調(diào)整壓縮比。與選定壓縮等級有關(guān)的信息保存在數(shù)據(jù)的壓縮部分中。文件管理器35負(fù)責(zé)文件的整合和操作。文件管理器35還組合與文件有關(guān)的所有請求以使得能夠共享文件操作。壓縮/解壓縮塊37能夠讀取并解壓縮緩沖區(qū),以及壓縮并寫入CLUS。由與CIFS/NFS管理器相連接的緩沖區(qū)管理器36來管理存儲器的緩沖區(qū)資源。整合管理器38與I/O塊、會話管理器、緩沖區(qū)管理器和文件管理器相連接,并且負(fù)責(zé)平臺中所有處理的同步和全面控制。
本領(lǐng)域的技術(shù)人員將容易理解,本發(fā)明不受圖3的配置的限制;可以以其他形式合并或劃分等同和/或變型的功能。
圖4示出了根據(jù)本發(fā)明特定實施例的原始文件和壓縮文件的示意圖。未壓縮的原始文件41被分割為具有基本相等的預(yù)定義大小的數(shù)據(jù)部分43(下文中稱為簇)。這些簇在文件的輸入/輸出事務(wù)期間用作壓縮/解壓縮操作的原子元素(atomic element)??梢栽趬嚎s處理期間“實時(on-the-fly)”地將原始文件分割成簇,其中,具有預(yù)定義大小的各個下一部分43組成要經(jīng)受壓縮的簇。在本發(fā)明的其他特定實施例中,可以在壓縮前進(jìn)行分割。原始文件的最后一部分的大小可能等于或小于簇的預(yù)定義大??;在兩種情況下都將該部分按其具有完整簇的大小一樣地進(jìn)行處理。簇的大小可以是可配置的;較大的簇提供較低的處理開銷和較高的壓縮比,而較小的簇提供更有效的訪問但是處理開銷更高。此外,由于各文件會話需要存儲器中至少有一個可用簇而性能限定了同時進(jìn)行的會話的數(shù)量,所以簇的大小取決于可用存儲器和所需性能。簇的數(shù)量等于(原始文件的大小除以簇的大小的)整數(shù)部分,如果有余數(shù)的話再加一。
另選地,在本發(fā)明的其他特定實施例中,簇的大小可以根據(jù)例如取決于數(shù)據(jù)類型(例如,文本、圖像、語音、組合等)的預(yù)定義標(biāo)準(zhǔn)而變化。例如,每種類型的數(shù)據(jù)可具有預(yù)定義大小的簇,在壓縮期間,平臺可以根據(jù)在原始文件的壓縮部分中占優(yōu)勢的數(shù)據(jù)類型來選擇簇的適當(dāng)大小。
將各個文件內(nèi)(intra-file)的簇43(例如,如圖4所示的43A-43C)壓縮為對應(yīng)的壓縮區(qū)(section)46(例如,如圖4所示的46A-46C)。根據(jù)各簇中的數(shù)據(jù)的性質(zhì)和壓縮算法,具有相同大小的簇會自然導(dǎo)致具有不同大小的壓縮區(qū)。如果簇的壓縮比小于預(yù)定義值,則壓縮文件中的對應(yīng)壓縮區(qū)可能包括來自該簇的未壓縮數(shù)據(jù)。例如,如果給定簇中的原始數(shù)據(jù)被壓縮到不小于原始簇大小的X%(比如說95%),那么由于該壓縮比可忽略,因而對應(yīng)區(qū)將容納原始簇數(shù)據(jù)而不是壓縮數(shù)據(jù)。
在本發(fā)明的特定實施例中,壓縮處理可包括自適應(yīng)能力,針對各簇根據(jù)其內(nèi)容提供最佳壓縮算法(例如,最適于具有語音、文本、圖像等占優(yōu)勢的數(shù)據(jù)的簇的不同的壓縮算法)。
根據(jù)本發(fā)明的特定實施例,每個壓縮文件44都包括一個頭45、多個壓縮區(qū)46和一個區(qū)表47。壓縮文件的頭45包括唯一的文件描述符、原始文件41的大小以及指示該文件是否由平臺20進(jìn)行了處理的簽名(也針對由于可獲得的壓縮比小于預(yù)定義值而未被平臺壓縮的文件)。
壓縮文件內(nèi)的壓縮區(qū)的數(shù)量等于簇的數(shù)量。根據(jù)本發(fā)明的特定實施例,壓縮區(qū)46中的數(shù)據(jù)存儲在全部具有相等的預(yù)定義大小的多個壓縮邏輯單元(CLU)48(例如,如圖4所示,壓縮邏輯單元48A0-48A2與對應(yīng)于簇43A的壓縮區(qū)46A相對應(yīng))中。該預(yù)定義的CLU大小是可配置的;較大的CLU提供較低的開銷,而較小的CLU導(dǎo)致較高的分辨率。此外,在本發(fā)明的特定實施例中,可將CLU大小調(diào)整為最大和/或最佳CIFS/NFS分組長度。
壓縮區(qū)內(nèi)的CLU的數(shù)量等于(壓縮區(qū)的大小除以CLU的大小的)整數(shù)部分,如果有余數(shù)的話再加一。壓縮區(qū)中的最后一個CLU可以是部分充滿的(例如,圖4中的48-A2、48-C1)??梢园磁c充滿的CLU相同的方式來處理這種CLU。在本發(fā)明的特定實施例中,可以按特殊方式處理最后一個壓縮區(qū)中的最后一個CLU(如圖4中的48-C1所示);即,如果其是部分充滿的,則將其縮減至精確的壓縮大小(下面參照圖9進(jìn)一步進(jìn)行描述)。
可將CLU視為由存儲器中虛擬順序的段形成的壓縮文件的虛擬部分。后文將參照圖11進(jìn)一步描述CLU和分配的存儲器段之間的關(guān)系。
區(qū)表47包括所有壓縮區(qū)46的記錄并指明從哪里可找到與各壓縮區(qū)相對應(yīng)的CLU。關(guān)于各壓縮區(qū)的記錄(以下稱為區(qū)記錄)包括指示該區(qū)是否被壓縮的簽名、該壓縮區(qū)的總大小、以及指向包含在該區(qū)中的所有CLU的指針的列表。該記錄可任意包括在壓縮對應(yīng)簇期間使用的壓縮算法以及簇的大小(如果根據(jù)每個預(yù)定義標(biāo)準(zhǔn)可變的話)的指示。優(yōu)選地,由于在更新壓縮文件的內(nèi)容時其長度可能改變,所以將區(qū)表47置于壓縮文件的末端(如要進(jìn)一步例示的,區(qū)表的長度與壓縮區(qū)的數(shù)量成正比,因而,與簇的數(shù)量成正比)。
圖5通過非限制性示例示出了示例性文件的區(qū)表的示例性結(jié)構(gòu)。
該示例性文件50(在其他示例中也這樣稱呼)的原始大小為3MB+413比特,預(yù)定義的簇大小為1M,CLU大小為60K。因此,原始文件包含4個簇(3個1MB的簇以及一個部分充滿但是按完整簇進(jìn)行處理的簇)。
壓縮區(qū)的記錄51包括簽名52、區(qū)的大小53以及多個條目54。區(qū)記錄的每個條目54包括與包含在壓縮區(qū)中的CLU之一有關(guān)的信息。該區(qū)表包括物理位置和邏輯CLU號之間的關(guān)系。
示例性文件50的簇被壓縮成例如大小分別為301123字節(jié)、432111字節(jié)、120423字節(jié)和10342字節(jié)的區(qū)。由于60K的CLU長度指的是61440字節(jié),所以區(qū)號0具有5個分配的CLU([301123/61440]+1);區(qū)號1具有8個分配的CLU([432111/61440]+1);區(qū)號2具有2個分配的CLU([120423/61440]+1);區(qū)號3具有1個分配的CLU([10342/61440]+1)。總計,該壓縮文件將包括16個CLU(總大小為15×61440字節(jié)+10342字節(jié))、固定長度的頭(例如24字節(jié),其包括用于簽名的4字節(jié)、用于文件ID(唯一描述符)的16字節(jié)、以及用于與原始大小有關(guān)的信息的4字節(jié))、以及具有4個區(qū)記錄的區(qū)表。
如果創(chuàng)建示例性文件50作為新的壓縮文件,則將順序地分配CLU,例如,將具有指針1、2、3、4、5的頭5個CLU分配給區(qū)0;將具有指針6、7、8、9、10、11、12、13的接下來的8個CLU分配給區(qū)1;將具有指針14、15的接下來的2個CLU分配給區(qū)2;將具有指針16的接下來的1個CLU分配給區(qū)3。
在更新后可以改變文件內(nèi)的CLU的分布(下面將參照圖8-11進(jìn)一步進(jìn)行描述)。例如,將具有指針1、4、5、6、9的CLU分配給區(qū)0;將具有指針2、3、7、10、11、12、15、14的CLU分配給區(qū)1;將具有指針8、13的CLU分配給區(qū)2;將具有指針16的CLU分配給區(qū)3。
(在當(dāng)前的示例中,更新不影響壓縮區(qū)的大小)。
當(dāng)創(chuàng)建文件作為新的壓縮文件時,CLU的虛擬(邏輯)順序與對應(yīng)于這些CLU的盤段的物理順序相同。在經(jīng)更新的文件中,CLU的虛擬(邏輯)順序可能與對應(yīng)于這些CLU的盤段的物理順序不同。例如,在以上示例中,第一個簇的第二個CLU最初位于物理段號2,其中,在更新后其位于物理段號4。每個CLU都被分配給存儲器中的段,對應(yīng)段寫在CLU長度乘以段序列號再加上頭45的長度的偏移量處。例如,在以上示例性文件中,當(dāng)?shù)谝粋€簇的第二個CLU位于物理段號2時,其在存儲位置存儲器中寫在頭的24字節(jié)加上2×61440字節(jié)的偏移量位置處。在更新之后,該CLU位于物理段號4,其偏移量變成頭的24字節(jié)加上4×61440字節(jié)。
在本發(fā)明的特定實施例中,每個區(qū)記錄中的條目的數(shù)量是恒定的,并且與存儲簇可能需要的CLU的最大數(shù)量相對應(yīng),因此不管包括在區(qū)中的CLU的實際數(shù)量是多少,各個區(qū)記錄的大小都是恒定的;未使用的條目可具有特殊標(biāo)記。區(qū)記錄中的條目的數(shù)量等于簇的大小除以CLU的大小的整數(shù)部分加一。
在例示的簇的預(yù)定義大小為1MB并且CLU的預(yù)定義大小為60K的示例中,壓縮區(qū)的每個記錄具有17個條目(1MB/60K的整數(shù)部分加一),每一個條目具有4個字節(jié)。相應(yīng)地,例示的壓縮區(qū)號0的區(qū)記錄50具有包含與對應(yīng)CLU的物理位置有關(guān)的信息的5個條目以及12個空條目(例如標(biāo)記為-1)。區(qū)記錄的大小為72字節(jié)(4字節(jié)用于與壓縮區(qū)大小和簽名有關(guān)的信息加上17個條目×4字節(jié))。區(qū)表的總大小為288字節(jié)(4個壓縮區(qū)×每個區(qū)記錄的72字節(jié))。
在本發(fā)明的特定實施例中,可以將壓縮數(shù)據(jù)與區(qū)表47分開存儲??梢詫^(qū)表存儲在與壓縮數(shù)據(jù)相同的存儲空間內(nèi)的分立文件中或者將其存儲在不同的物理上潛在遠(yuǎn)程的存儲空間(例如平臺20上)的分立文件中。應(yīng)當(dāng)以這樣的方式配置平臺20使得在讀取/寫入操作期間維護(hù)壓縮數(shù)據(jù)和對應(yīng)區(qū)表之間的關(guān)聯(lián)更容易。
圖6-11示出了根據(jù)本發(fā)明特定實施例的對壓縮文件執(zhí)行的輸入/輸出操作。要注意,平臺20還干預(yù)這樣的命令,所述命令(例如DIR、STAT等)引用原始文件的大小,將該大小保存在對應(yīng)壓縮文件的頭中,并響應(yīng)于請求提供所述數(shù)據(jù)。因此,例如,考慮文件大小為X(在其原始形式下)并且在其壓縮形式(當(dāng)存儲在盤中時)下為Y(<X)的一文件。根據(jù)所說明的特征,存儲在頭中的文件大小將是X(原始文件大小),從而在涉及諸如DIR、STAT的系統(tǒng)命令的范圍內(nèi)保持了完全透明。
根據(jù)本發(fā)明特定實施例,當(dāng)接收到用于打開壓縮的特定文件的輸入請求(inbound request)時(用戶可能不知道文件已壓縮),平臺20將該請求傳送到NAS系統(tǒng)(存儲裝置14)并接收用作文件管理的密鑰的“句柄(Handle)”應(yīng)答(或者“空”,如果沒有找到該文件的話)。在接收到“句柄”后,平臺20讀取包括文件ID(唯一的文件描述符)和對應(yīng)原始文件的大小的頭45。對于每個文件ID,平臺20檢查是否存在與該文件有關(guān)的并發(fā)會話。如果“否”,則平臺產(chǎn)生包括唯一的文件描述符和原始文件的大小的文件塊。如果該文件已經(jīng)在使用,則平臺將附加會話添加到現(xiàn)有的文件塊。然后將“句柄”返回用戶,以與對文件操作的后續(xù)請求一起發(fā)送至平臺。
打開文件操作還包括讀取壓縮文件的區(qū)表47并獲得與該文件相對應(yīng)的所有CLU的信息。從文件被打開的時刻開始直到其被關(guān)閉為止,平臺知道文件的CLU結(jié)構(gòu)以及該文件內(nèi)任何字節(jié)的偏移量。
參照圖6,圖6示出了根據(jù)本發(fā)明特定實施例進(jìn)行的壓縮文件創(chuàng)建的概括流程圖。由輸入的創(chuàng)建請求發(fā)起該處理。平臺20產(chǎn)生針對文件存儲裝置14的輸出請求(步驟60);并且在確認(rèn)后,開始將壓縮文件的頭寫在文件存儲裝置中(步驟61)。如圖4所示,頭將包括文件描述符、原始未壓縮文件的大小、以及指示文件已被平臺20進(jìn)行了處理的簽名。在下一步驟62,平臺將原始文件的第一個固定大小的部分(簇)處理成大小為X的壓縮區(qū)。(可在任何適當(dāng)?shù)纳虡I(yè)或?qū)S盟惴ǖ膸椭逻M(jìn)行壓縮)。平臺限定第一個CLU的第一個空閑存儲位置,開始并連續(xù)地將壓縮區(qū)寫入該CLU以及后續(xù)的CLU中,以存儲在文件存儲裝置處(步驟63),并準(zhǔn)備處理期間占用的CLU的指針以記錄在區(qū)表中(步驟64)。平臺針對接下來的簇重復(fù)該處理(步驟65),直到整個文件的數(shù)據(jù)以壓縮形式寫入為止,然后創(chuàng)建了區(qū)表(步驟66)。在本發(fā)明的特定實施例中,可將區(qū)表存儲在壓縮文件之外。
參照圖7,圖7示出了根據(jù)本發(fā)明特定實施例的對壓縮文件進(jìn)行的讀取操作的概括流程圖。
讀取操作由輸入的讀取請求啟動(步驟70),該讀取請求包括輸入?yún)?shù)(例如,文件句柄、查尋號(數(shù)據(jù)偏移量)和數(shù)據(jù)長度Y)和輸出參數(shù)(例如,目標(biāo)緩沖區(qū)地址)。輸入的讀取請求識別要讀取的數(shù)據(jù)(在原始文件中)的偏移量和范圍Y。平臺20計算要讀取的第一個簇(以下稱為起始簇)的序列號(步驟71),其為(偏移量除以簇的大小)的整數(shù)部分,如果有余數(shù)的話再加一。由(要讀取的數(shù)據(jù)的范圍除以簇的大小)的整數(shù)部分加一來限定要讀取的簇的數(shù)量。結(jié)果,平臺限定了與要讀取的簇一一對應(yīng)的壓縮區(qū),并產(chǎn)生輸出讀取請求(步驟72)。該請求是基于壓縮文件指向與要讀取的壓縮區(qū)相對應(yīng)的CLU的元數(shù)據(jù)(頭和區(qū)表)的。在本發(fā)明的特定實施例中,可如下容易地計算置于壓縮文件末端的區(qū)表的偏移量從壓縮文件的大小中減去簇的數(shù)量與區(qū)記錄的固定大小的乘積。
在其他實施例中,可將平臺配置為使壓縮數(shù)據(jù)與存儲在分立文件中的對應(yīng)元數(shù)據(jù)之間進(jìn)行關(guān)聯(lián)更容易。
在本發(fā)明的特定實施例中,可發(fā)送指定要讀取的數(shù)據(jù)的所有范圍的輸出的讀取請求。另選地,如圖7所示,在這些步驟中處理了整個讀取請求,并且針對讀取操作,平臺保持了基本等于簇的大小的緩沖區(qū)。第一個輸出的讀取請求包括指向在起始簇的壓縮區(qū)中包含的CLU的指針。由平臺對與起始簇相對應(yīng)的整個壓縮區(qū)進(jìn)行讀取(步驟73)并解壓縮至目標(biāo)緩沖區(qū)(步驟74)。在下一步驟,平臺計算簇內(nèi)的所需偏移量(步驟75),并復(fù)制所需數(shù)據(jù)以傳遞給應(yīng)用(步驟76)。如下計算對數(shù)據(jù)進(jìn)行復(fù)制所需的長度長度=MIN{數(shù)據(jù)范圍Y;(簇大小-偏移量mod簇大小)}如果數(shù)據(jù)范圍Y超過簇大小,則重復(fù)該操作(步驟77)。
例如,參照示例性文件50,請求是要從偏移量1MB+1340處開始讀取20字節(jié)長度的文件數(shù)據(jù)。讀取將從第二個簇開始,因此,所述數(shù)據(jù)包含在從第二個壓縮區(qū)開始的壓縮文件中。區(qū)表的偏移量被限定為從壓縮文件的大小中減去簇的數(shù)量(4)×區(qū)記錄的大小(72字節(jié))。區(qū)表中第二個壓縮區(qū)的記錄包含具有指針2、3、7、10、11、12、15、14的CLU。因此,這些CLU將被讀取到平臺20中的臨時緩沖區(qū)中并被解壓縮至平臺中的1MB緩沖區(qū)中。然后,從緩沖區(qū)偏移量1340開始的20字節(jié)將被移至目標(biāo)(用戶的)緩沖區(qū)。對數(shù)據(jù)進(jìn)行復(fù)制的所需長度為20字節(jié)(等于20字節(jié)和(1MB-1340字節(jié))中的最小值)。如果另一請求是要從相同的偏移量處開始讀取2MB長度的文件數(shù)據(jù),則以相似的方式針對第三個和第四個壓縮區(qū)執(zhí)行該操作;并且從起始簇復(fù)制數(shù)據(jù)的所需長度為1MB-1340字節(jié)(等于2MB和(1MB-1340字節(jié))中的最小值)。
參照圖8,圖8示出了對根據(jù)本發(fā)明特定實施例的壓縮文件進(jìn)行的寫入操作的概括流程圖。輸入的寫入請求(步驟80)識別要寫入的數(shù)據(jù)(在原始文件中)的偏移量和范圍Y。平臺20計算要更新(重寫)的第一個簇的序列號(步驟81),其為(偏移量除以簇的大小)的整數(shù)部分,如果有余數(shù)的話再加一。由(要寫入的數(shù)據(jù)的范圍除以簇的大小)的整數(shù)部分(如果有余數(shù)的話)加一來限定要重寫的簇的數(shù)量。結(jié)果,平臺限定了要重寫的壓縮區(qū),并以與參照圖7描述的方式相似的方式產(chǎn)生輸出的讀取請求)。在由平臺對與起始簇相對應(yīng)的整個壓縮區(qū)進(jìn)行讀取(步驟82)并解壓縮至緩沖區(qū)(步驟83)之后,如參照圖7所描述的,平臺計算簇內(nèi)的所需偏移量(步驟84),并更新(重寫)所需數(shù)據(jù)范圍(步驟85)。然后,平臺對經(jīng)更新的簇進(jìn)行壓縮(步驟86),更新區(qū)表并請求將新的壓縮區(qū)寫入該壓縮文件(步驟87)。如果數(shù)據(jù)范圍Y超過了簇大小,則針對連續(xù)的簇重復(fù)(步驟88)該操作。在處理結(jié)束時,平臺更新區(qū)表(步驟89)。
如上所述,在本發(fā)明的特定實施例中,可以直接訪問所需數(shù)據(jù)的存儲位置,因此,讀取/更新(及類似)操作僅需恢復(fù)包含所需數(shù)據(jù)范圍的簇而不用恢復(fù)整個文件。
通常,由于在分配的存儲中出現(xiàn)的未使用空間,文件更新會產(chǎn)生碎片。圖9和10示出了根據(jù)本發(fā)明特定實施例的CLU管理的碎片處理算法。圖9示出了在壓縮區(qū)上進(jìn)行寫入/更新操作(圖8中的步驟87)期間的CLU管理算法。在寫入經(jīng)更新的壓縮區(qū)之前,平臺對經(jīng)更新的壓縮區(qū)和原來的壓縮區(qū)所需的CLU的數(shù)量進(jìn)行比較(步驟91)。如果CLU的數(shù)量不變,則平臺20請求將經(jīng)更新的壓縮區(qū)順序地寫入與原來的壓縮區(qū)相對應(yīng)的所有CLU(步驟92)。如果所需CLU的新的數(shù)量小于原來的數(shù)量,則將壓縮區(qū)順序地寫在與原來的壓縮區(qū)相對應(yīng)的一部分CLU上。在由平臺20處理的空閑CLU的特定列表(隊列)中更新與直到該文件關(guān)閉所釋放的CLU有關(guān)的信息(步驟93)。如果所需CLU的新的數(shù)量大于原來的數(shù)量,則將壓縮區(qū)順序地寫在與原來的壓縮區(qū)相對應(yīng)的所有CLU上(步驟94),然后寫在從空閑CLU隊列取得的CLU上(步驟95)。如果仍然需要更多的CLU,平臺將限定分配給該文件的最后一個CLU(號n),并請求在編號從(n+1)開始的CLU上順序地進(jìn)行寫入(步驟96);相應(yīng)地更新已分配CLU的列表(步驟97)。
在本發(fā)明的特定實施例中,可以按特殊方式處理最后一個壓縮區(qū)中的最后一個CLU(如圖4中的48-C1所示);即,如果該最后一個CLU是部分充滿的,則將其縮減至精確的壓縮大小。將區(qū)表寫在以下偏移量處頭長度+(N-1)×CLU大小+SL,其中,N是已分配CLU的總數(shù),SL是最后一個CLU中的壓縮數(shù)據(jù)的大小。
圖10示出了在對根據(jù)本發(fā)明特定實施例的文件進(jìn)行關(guān)閉操作期間的CLU管理算法。
在關(guān)閉該文件(步驟102)之前,平臺檢查空閑CLU的列表是否為空(步驟101)。如果該列表仍包括CLU,則平臺20對使用中的CLU之中具有最高存儲位置指針的CLU進(jìn)行限定。將包含在所述CLU中的壓縮數(shù)據(jù)傳送到具有較低指針的空閑CLU(步驟103),并將空出的CLU添加到空閑CLU的列表中。重復(fù)該處理,直到使用中的CLU的所有指針都低于包括在空閑CLU的列表中的任何CLU的指針為止(步驟104)。相應(yīng)地更新區(qū)表(步驟105)。可以在整個重寫處理結(jié)束后和根據(jù)其他預(yù)定義標(biāo)準(zhǔn),針對每次所述CLU重寫進(jìn)行這種更新。當(dāng)該處理結(jié)束時,關(guān)閉文件并釋放空閑CLU(步驟106)??梢愿鶕?jù)不同的算法來選擇用于以上處理的空閑CLU。例如,在本發(fā)明的特定實施例中,可以將來自具有最高存儲位置指針的CLU的所述壓縮數(shù)據(jù)傳送到具有最低存儲位置指針的空閑CLU。
參照圖11a-11c,它們示出了根據(jù)本發(fā)明特定實施例的CLU和分配的盤存儲器段之間的關(guān)系。圖11a示出了當(dāng)被創(chuàng)建為新的壓縮文件時的圖5中示出的示例性文件50。CLU的虛擬(邏輯)順序與對應(yīng)于這些CLU的盤段的物理順序相同(CLU內(nèi)的數(shù)字示出了指向相應(yīng)的盤存儲器段的指針)。圖11b示出了在參照圖5描述的經(jīng)更新的示例性文件中在壓縮區(qū)的大小不變的情況下該經(jīng)更新的壓縮文件內(nèi)的CLU的新的分布。CLU的虛擬(邏輯)順序與對應(yīng)于這些CLU的盤段的物理順序不同,但是保持了文件的去碎片化(de-fragmented)結(jié)構(gòu)。圖11c示出了經(jīng)更新的示例性壓縮文件50內(nèi)的CLU的去碎片后的分布,其中,在更新后,第二個壓縮區(qū)的大小從432111字節(jié)變?yōu)?00100字節(jié)。例如,如果更新偏移量為1MB+314字節(jié),則在更新期間第一個壓縮區(qū)未受影響。第二個壓縮區(qū)的新的大小僅需分配4個CLU([200100/61440]+1)。注意,如圖11b所示,在更新前,第二個壓縮區(qū)容納有8個CLU(序號為2、3、7、10、11、12、15和16)。如參照圖9所描述的,平臺20將經(jīng)更新的第二個壓縮區(qū)寫在所述壓縮區(qū)的前4個CLU(在本示例中為2、3、7、10)上,并將具有指針11、12、15和16的CLU發(fā)送到空閑CLU的列表。在該特定更新期間,第三個和第四個壓縮區(qū)也未受影響。如參照圖10所描述的,在關(guān)閉文件前,平臺20將檢查空閑CLU的列表是否為空。按照該示例,該列表包含具有存儲位置指針11、12、15和16的CLU。如參照圖10所描述的,平臺將壓縮數(shù)據(jù)從具有指針13的CLU重寫到具有指針11的CLU;將壓縮數(shù)據(jù)從具有指針16的CLU重寫到具有指針12的CLU,并釋放具有指針13-16的CLU。從而經(jīng)更新的文件具有12個分配的CLU但沒有碎片。
要注意,本發(fā)明不受參照圖6-11描述的平臺20和存儲裝置14之間的具體輸入/輸出通信的限制。本領(lǐng)域的技術(shù)人員將容易理解,根據(jù)網(wǎng)絡(luò)架構(gòu)和實現(xiàn)平臺20的功能的方式,本發(fā)明同樣可應(yīng)用于任何其他通信。例如,如果將壓縮文件寫入內(nèi)部平臺資源和/或從內(nèi)部平臺資源讀取壓縮文件,則不需要產(chǎn)生輸出的請求。同樣,如果平臺功能與存儲資源整合在一起,則不需要輸出的請求。另外的需求(例如,安全訪問、數(shù)據(jù)完整性等)會導(dǎo)致平臺和文件存儲裝置以及整個網(wǎng)絡(luò)資源之間的更復(fù)雜的通信。
還應(yīng)該理解,本發(fā)明不限于其針對在包含于此的描述中闡述或者在附圖中示出的細(xì)節(jié)的應(yīng)用。本發(fā)明還能有其他實施例并能以各種方式實施和執(zhí)行。因此,應(yīng)該理解,在此采用的措詞和術(shù)語是為了說明的目的而不應(yīng)被視為限制性的。同樣地,本領(lǐng)域的技術(shù)人員應(yīng)該理解,可以容易地將本公開所基于的概念用作設(shè)計用于執(zhí)行本發(fā)明的多個目的的其他結(jié)構(gòu)、方法和系統(tǒng)的基礎(chǔ)。
本領(lǐng)域的技術(shù)人員將容易理解,在不脫離本發(fā)明的在所附權(quán)利要求中限定的范圍的情況下,可對此前描述的本發(fā)明的實施例進(jìn)行各種修改和改變。
權(quán)利要求
1.一種創(chuàng)建存儲用壓縮文件的方法,該方法與文件訪問存儲器一起使用,所述方法包括以下步驟a)對原始文件進(jìn)行壓縮從而產(chǎn)生壓縮數(shù)據(jù),其中,所述原始文件的至少一個固定大小部分的數(shù)據(jù)(簇)被順序地處理成對應(yīng)的壓縮區(qū),所述壓縮區(qū)劃分為至少一個固定大小的壓縮邏輯單元(CLU);b)將所述壓縮數(shù)據(jù)存儲為壓縮文件,所述壓縮文件包含與所述原始文件的簇相對應(yīng)的壓縮區(qū)、以及包括唯一的文件描述符的頭;c)創(chuàng)建包括描述壓縮區(qū)的至少一個記錄的區(qū)表,所述記錄至少保存與對應(yīng)于所述壓縮區(qū)的CLU有關(guān)的信息以及屬于所述CLU的存儲位置指針。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述簇具有預(yù)定義的相等大小。
3.根據(jù)權(quán)利要求1所述的方法,其中,根據(jù)包括在所述簇中的數(shù)據(jù)的類型從預(yù)定義大小的列表中選擇簇的大小。
4.根據(jù)權(quán)利要求1所述的方法,其中,利用根據(jù)包括在所述簇中的數(shù)據(jù)的類型的壓縮算法對簇進(jìn)行處理。
5.根據(jù)權(quán)利要求1所述的方法,其中,所述壓縮文件包含容納所述對應(yīng)簇的非壓縮數(shù)據(jù)的至少一個區(qū)。
6.根據(jù)權(quán)利要求1所述的方法,其中,對簇的所述處理包括評估可獲得的壓縮比,并且僅當(dāng)所述壓縮比滿足預(yù)定義標(biāo)準(zhǔn)時才在所述壓縮區(qū)內(nèi)產(chǎn)生壓縮數(shù)據(jù)。
7.根據(jù)權(quán)利要求1所述的方法,其中,所述壓縮文件的所述頭保存指示至少一個簇是否被處理成壓縮區(qū)的信息。
8.根據(jù)權(quán)利要求1所述的方法,其中,所述壓縮文件的所述頭保存與所述原始文件的大小有關(guān)的信息。
9.根據(jù)權(quán)利要求1所述的方法,其中,描述所述壓縮區(qū)的所述記錄具有相等的預(yù)定義大小。
10.根據(jù)權(quán)利要求1所述的方法,其中,壓縮區(qū)的記錄保存指示所述壓縮區(qū)是否包含壓縮數(shù)據(jù)的信息。
11.根據(jù)權(quán)利要求1所述的方法,其中,僅當(dāng)文件符合預(yù)定義標(biāo)準(zhǔn)時才對所述文件進(jìn)行壓縮。
12.根據(jù)權(quán)利要求1所述的方法,其中,所述區(qū)表形成所述壓縮文件的一部分。
13.根據(jù)權(quán)利要求12所述的方法,其中,所述區(qū)表存儲在這樣的位置,所述位置在所述壓縮文件中包含的最后一個壓縮區(qū)之后。
14.根據(jù)權(quán)利要求1所述的方法,其中,所述區(qū)表形成所屬壓縮文件以外的文件的一部分。
15.根據(jù)權(quán)利要求1所述的方法,其中,所述最后一個壓縮區(qū)中的最后一個CLU的大小由存儲在所述CLU中的壓縮數(shù)據(jù)的實際大小限定。
16.一種讀取存儲在根據(jù)權(quán)利要求1壓縮的文件中的數(shù)據(jù)的方法,所述方法包括以下步驟a)確定包括要讀取的數(shù)據(jù)的第一個壓縮區(qū)的序列號;b)通過參照所述區(qū)表,確定與所述壓縮區(qū)相對應(yīng)的CLU及其存儲位置;c)從所述壓縮區(qū)恢復(fù)簇。
17.根據(jù)權(quán)利要求16所述的方法,該方法還包括如果要讀取的數(shù)據(jù)的范圍超過所述恢復(fù)的簇的大小,則針對序列號加1的壓縮區(qū)重復(fù)步驟b)和c),直到恢復(fù)了要讀取的所有數(shù)據(jù)為止。
18.一種將給定數(shù)據(jù)范圍的數(shù)據(jù)寫入根據(jù)權(quán)利要求1壓縮的文件的方法,所述方法包括以下步驟a)確定構(gòu)成所述原始壓縮區(qū)的包括要更新的數(shù)據(jù)的第一個壓縮區(qū)的序列號;b)通過參照所述區(qū)表,確定與所述原始壓縮區(qū)相對應(yīng)的CLU及其存儲位置;c)從所述原始壓縮區(qū)恢復(fù)簇;d)計算更新數(shù)據(jù)在所述簇內(nèi)的偏移量并在所述給定數(shù)據(jù)范圍進(jìn)行更新;e)將經(jīng)更新的簇壓縮成經(jīng)更新的壓縮區(qū);f)用經(jīng)更新的壓縮區(qū)重寫所述原始壓縮區(qū);g)更新所述區(qū)表。
19.根據(jù)權(quán)利要求18所述的方法,該方法還包括如果要寫入的數(shù)據(jù)的范圍超過所述恢復(fù)的簇的大小,則針對序列號加1的壓縮區(qū)重復(fù)步驟b)至g),直到寫入了所有需要的數(shù)據(jù)為止。
20.根據(jù)權(quán)利要求18所述的方法,該方法還包括對在將數(shù)據(jù)寫入所述壓縮文件期間釋放的空閑CLU的列表進(jìn)行處理,在關(guān)閉所述文件前,在與所述文件有關(guān)的所有會話期間都處理所述列表。
21.根據(jù)權(quán)利要求20所述的方法,該方法還包括對所述原始壓縮區(qū)需要的CLU的數(shù)量No和所述經(jīng)更新的壓縮區(qū)需要的CLU的數(shù)量Nu進(jìn)行比較,并且進(jìn)行以下之一a)如果No=Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU;b)如果No>Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的前Nu個CLU,并關(guān)于釋放的CLU更新空閑CLU的列表;c)如果No<Nu<No+Nf,其中Nf是空閑CLU的列表中的CLU的數(shù)量,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU,并將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的其余CLU寫入包含在所述空閑CLU的列表中的CLU;d)如果No+Nf<Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU,將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU寫入包含在空閑CLU的列表中的CLU,并將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的其余CLU連續(xù)寫入下一空閑存儲位置。
22.根據(jù)權(quán)利要求20所述的方法,該方法還包括a)在關(guān)閉所述文件前檢查空閑CLU的列表;b)如果所述列表非空,則限定包括在所述壓縮區(qū)中的CLU之中具有最高存儲位置指針的CLU(第一CLU);c)將壓縮數(shù)據(jù)從所述第一CLU移動到具有較低存儲位置指針的空閑CLU(第二CLU);d)將所述第二CLU分配給所屬壓縮區(qū)并將所述第一CLU分配給空閑CLU的列表;e)重復(fù)步驟b)至d),直到包括在壓縮區(qū)中的所有CLU的存儲位置指針都低于包括在空閑CLU的列表中的任一CLU的指針為止;f)更新所述區(qū)表。
23.一種讀取被存儲為壓縮數(shù)據(jù)的原始文件的方法,該方法與文件訪問存儲器一起使用,其中,所述壓縮數(shù)據(jù)被打包成與原始文件的固定大小部分的數(shù)據(jù)(簇)相對應(yīng)的一個或更多個壓縮區(qū),所述壓縮區(qū)劃分為固定大小的壓縮邏輯單元(CLU),所述方法包括以下步驟a)確定包括要讀取的數(shù)據(jù)的第一個壓縮區(qū)的序列號;b)通過參照區(qū)表確定要讀取的壓縮數(shù)據(jù)的存儲位置,所述區(qū)表保存與對應(yīng)于所述壓縮區(qū)的CLU及其存儲位置有關(guān)的信息;c)從所述壓縮區(qū)恢復(fù)簇。
24.根據(jù)權(quán)利要求23所述的方法,該方法還包括如果要讀取的數(shù)據(jù)的范圍超過所述恢復(fù)的簇的大小,則針對序列號加1的下一壓縮區(qū)重復(fù)步驟b)和c),直到恢復(fù)了要讀取的所有數(shù)據(jù)為止。
25.一種將給定數(shù)據(jù)范圍的數(shù)據(jù)寫入被存儲為壓縮數(shù)據(jù)的文件的方法,該方法與文件訪問存儲器一起使用,其中,所述壓縮數(shù)據(jù)被打包成與原始文件的固定大小部分的數(shù)據(jù)(簇)相對應(yīng)的一個或更多個壓縮區(qū),所述壓縮區(qū)劃分為固定大小的壓縮邏輯單元(CLU),所述方法包括以下步驟a)確定構(gòu)成所述原始壓縮區(qū)的包括要更新的數(shù)據(jù)的第一個壓縮區(qū)的序列號;b)通過參照區(qū)表確定要更新的壓縮數(shù)據(jù)的存儲位置,所述區(qū)表保存與對應(yīng)于所述壓縮區(qū)的CLU及其存儲位置有關(guān)的信息;c)從所述原始壓縮區(qū)恢復(fù)簇;d)計算更新數(shù)據(jù)在所述簇內(nèi)的偏移量并進(jìn)行所述給定數(shù)據(jù)范圍的更新;e)將經(jīng)更新的簇壓縮成經(jīng)更新的壓縮區(qū);f)用經(jīng)更新的壓縮區(qū)重寫所述原始壓縮區(qū);g)更新所述區(qū)表。
26.根據(jù)權(quán)利要求25所述的方法,該方法還包括如果要寫入的數(shù)據(jù)的范圍超過所述恢復(fù)的簇的大小,則針對序列號加1的下一壓縮區(qū)重復(fù)步驟b)至g),直到寫入了所有需要的數(shù)據(jù)為止。
27.根據(jù)權(quán)利要求25所述的方法,該方法還包括對在將數(shù)據(jù)寫入所述壓縮文件期間釋放的空閑CLU的列表進(jìn)行處理,在關(guān)閉所述文件前,在與所述文件有關(guān)的所有會話期間都處理所述列表。
28.根據(jù)權(quán)利要求27所述的方法,該方法還包括對所述原始壓縮區(qū)需要的CLU的數(shù)量No和所述經(jīng)更新的壓縮區(qū)需要的CLU的數(shù)量Nu進(jìn)行比較,并且進(jìn)行以下之一a)如果No=Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU;b)如果No>Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的前Nu個CLU,并關(guān)于釋放的CLU更新空閑CLU的列表;c)如果No<Nu<No+Nf,其中Nf是空閑CLU的列表中的CLU的數(shù)量,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU,并將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的其余CLU寫入包含在所述空閑CLU的列表中的CLU;d)如果No+Nf<Nu,則用與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU來重寫與所述原始壓縮區(qū)相對應(yīng)的所有CLU,將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的CLU寫入包含在空閑CLU的列表中的CLU,并將與所述經(jīng)更新的壓縮區(qū)相對應(yīng)的其余CLU連續(xù)寫入下一空閑存儲位置。
29.根據(jù)權(quán)利要求27所述的方法,該方法還包括a)在關(guān)閉所述文件前檢查空閑CLU的列表;b)如果所述列表非空,則限定包括在所述壓縮區(qū)中的CLU之中具有最高存儲位置指針的CLU(第一CLU);c)將壓縮數(shù)據(jù)從所述第一CLU移動到具有較低存儲位置指針的空閑CLU(第二CLU);d)將所述第二CLU分配給所屬壓縮區(qū)并將所述第一CLU分配給空閑CLU的列表;e)重復(fù)步驟b)至d),直到包括在壓縮區(qū)中的所有CLU的存儲位置指針都低于包括在空閑CLU的列表中的任一CLU的指針為止;f)更新所述區(qū)表。
30.根據(jù)權(quán)利要求1所述的方法,該方法還包括保持所述壓縮文件的去碎片化結(jié)構(gòu)。
31.根據(jù)權(quán)利要求23所述的方法,該方法還包括保持所述壓縮文件的去碎片化結(jié)構(gòu)。
32.根據(jù)權(quán)利要求25所述的方法,該方法還包括保持所述壓縮文件的去碎片化結(jié)構(gòu)。
33.根據(jù)權(quán)利要求1所述的方法,其中,所述文件訪問存儲器是網(wǎng)絡(luò)連接存儲器(NAS)。
34.根據(jù)權(quán)利要求23所述的方法,其中,所述文件訪問存儲器是網(wǎng)絡(luò)連接存儲器(NAS)。
35.根據(jù)權(quán)利要求25所述的方法,其中,所述文件訪問存儲器是網(wǎng)絡(luò)連接存儲器(NAS)。
36.根據(jù)權(quán)利要求1所述的方法,該方法還包括對包含在原始文件中的數(shù)據(jù)進(jìn)行加密。
37.一種用于對存儲用文件進(jìn)行壓縮的系統(tǒng),該系統(tǒng)包括a)壓縮子系統(tǒng),用于對原始文件進(jìn)行壓縮從而產(chǎn)生壓縮數(shù)據(jù),其中,所述原始文件的固定大小部分的數(shù)據(jù)(簇)被順序地處理成壓縮區(qū),所述壓縮區(qū)劃分為至少一個固定大小的壓縮邏輯單元(CLU);b)存儲子系統(tǒng),用于將所述壓縮數(shù)據(jù)存儲為壓縮文件,所述壓縮文件包含與所述原始文件的簇相對應(yīng)的所述壓縮區(qū)、以及包括唯一的文件描述符的頭;c)區(qū)表創(chuàng)建子系統(tǒng),用于創(chuàng)建包括壓縮區(qū)的至少一個記錄的區(qū)表,所述記錄保存與對應(yīng)于所述壓縮區(qū)的CLU有關(guān)的信息以及屬于所述CLU的存儲位置指針。
38.一種可由機(jī)器讀取的程序存儲裝置,該裝置與文件訪問存儲器一起使用,明確地包含了用于執(zhí)行創(chuàng)建存儲用壓縮文件的方法的步驟的、可由所述機(jī)器執(zhí)行的指令的程序,所述方法包括以下步驟a)對原始文件進(jìn)行壓縮從而產(chǎn)生壓縮數(shù)據(jù),其中,所述原始文件的至少一個固定大小部分的數(shù)據(jù)(簇)被順序地處理成對應(yīng)的壓縮區(qū),所述壓縮區(qū)劃分為至少一個固定大小的壓縮邏輯單元(CLU);b)將所述壓縮數(shù)據(jù)存儲為壓縮文件,所述壓縮文件包含與所述原始文件的所述簇相對應(yīng)的所述壓縮區(qū)、以及包括唯一的文件描述符的頭;c)創(chuàng)建包括所述壓縮區(qū)的記錄的區(qū)表,所述記錄至少保存與對應(yīng)于所述壓縮區(qū)的CLU有關(guān)的信息以及屬于所述CLU的存儲位置指針。
39.一種計算機(jī)程序產(chǎn)品,該產(chǎn)品與文件訪問存儲器一起使用,該產(chǎn)品包括計算機(jī)可用介質(zhì),所述計算機(jī)可用介質(zhì)具有實現(xiàn)在其上的用于創(chuàng)建存儲用壓縮文件的計算機(jī)可讀程序代碼,所述計算機(jī)程序產(chǎn)品包括;a)用于使計算機(jī)進(jìn)行以下處理的計算機(jī)可讀程序代碼對原始文件進(jìn)行壓縮從而產(chǎn)生壓縮數(shù)據(jù),其中,所述原始文件的至少一個固定大小部分的數(shù)據(jù)(簇)被順序地處理成對應(yīng)的壓縮區(qū),所述壓縮區(qū)劃分為至少一個固定大小的壓縮邏輯單元(CLU);b)用于使計算機(jī)進(jìn)行以下處理的計算機(jī)可讀程序代碼將所述壓縮數(shù)據(jù)存儲為壓縮文件,所述壓縮文件包含與所述原始文件的所述簇相對應(yīng)的所述壓縮區(qū)、以及包括唯一的文件描述符的頭;c)用于使計算機(jī)進(jìn)行以下處理的計算機(jī)可讀程序代碼創(chuàng)建包括壓縮區(qū)的記錄的區(qū)表,所述記錄保存與對應(yīng)于所述壓縮區(qū)的CLU有關(guān)的信息以及屬于所述CLU的存儲位置指針。
40.一種對存儲用文件進(jìn)行壓縮的方法,所述方法對壓縮數(shù)據(jù)進(jìn)行直接訪問,同時保持壓縮文件的去碎片化結(jié)構(gòu)。
41.一種將數(shù)據(jù)寫入被存儲為壓縮數(shù)據(jù)的文件的方法,該方法與文件訪問存儲器一起使用,其中,原始文件的壓縮數(shù)據(jù)被打包為一個或更多個壓縮單元,所述方法更新一個或更多個對應(yīng)的壓縮單元而無需恢復(fù)整個文件,同時保持所述壓縮單元的去碎片化結(jié)構(gòu)。
全文摘要
本發(fā)明公開了壓縮存儲用文件以及對壓縮的文件進(jìn)行操作的方法和系統(tǒng)。與文件訪問存儲器一起使用用于創(chuàng)建、讀取和寫入壓縮文件的方法和系統(tǒng)。原始文件的壓縮數(shù)據(jù)被打包為多個壓縮單元并被存儲為壓縮文件??梢宰x取和/或更新一個或更多個對應(yīng)的壓縮單元而無需恢復(fù)整個文件,同時保持該壓縮文件的去碎片化結(jié)構(gòu)。
文檔編號G06F3/06GK1973287SQ200580013258
公開日2007年5月30日 申請日期2005年4月21日 優(yōu)先權(quán)日2004年4月26日
發(fā)明者吉爾·舍韋爾, 諾赤·阿米特, 納達(dá)夫·克戴姆, 瓦科夫·科恩 申請人:斯多維茲有限公司