專利名稱:用于塊模式訪問存儲的數(shù)據(jù)壓縮的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算系統(tǒng),并且更具體地涉及通過塊存儲協(xié)議促進
(facilitate)對壓縮數(shù)據(jù)的壓縮和操作的方法和系統(tǒng)。
背景技術(shù):
在當今的商業(yè)環(huán)境中,所有類型的商業(yè)數(shù)據(jù)對商業(yè)成功變得越來越關(guān) 鍵。商業(yè)生成的數(shù)據(jù)的巨大增長以及復(fù)雜性推動對信息存儲的要求,定義 共享的方式,管理和保護信息資產(chǎn)。
一般地,沒有單一的科技或結(jié)構(gòu)能夠處理任何組織的所有需要。例如, 主要的存儲技術(shù)在EMC的白皮書,美國2003年3月的"Leveraging Networked storage for your business"中^皮描述,并且基本上可通過位置和 連接類型(計算機內(nèi)存儲、直接附加存儲(DAS)、 IP、通道網(wǎng)絡(luò)(channel network)等等)以及通過數(shù)據(jù)被訪問的方法來識別。認為有3種基本類型 的存儲結(jié)構(gòu)與數(shù)據(jù)訪問的方法有關(guān)塊訪問、文件訪問和對象訪問。
在塊模式訪問結(jié)構(gòu)中,在服務(wù)器/客戶機和存儲媒介之間的通信按照塊 出現(xiàn);信息直接從磁盤上逐塊取出。操作系統(tǒng)記錄每段信息在磁盤上的位 置,而存儲媒^i^一般不知道用來在設(shè)備上組織數(shù)據(jù)的文件系統(tǒng)。當需要讀 取或?qū)懭肽承〇|西時,知道每塊數(shù)據(jù)位于磁盤上的位置和如何將它們放置 在一起的處理器直接從磁盤訪問數(shù)據(jù)。塊模式訪問存儲技術(shù)的例子是DAS (直接附加存儲)、SAN(存儲區(qū)域網(wǎng)絡(luò))、通過IP的塊存儲(例如,F(xiàn)CIP、 iFIP、 iSCSI等等)、存儲器內(nèi)存儲等等。
文件訪問需要服務(wù)器或客戶機通過名稱而不是通過物理位置來請求 文件。因此,存儲々某介(外部存儲i殳備或在計算機內(nèi)部的存儲單元)通常 負責(zé)將文件映射回到數(shù)據(jù)塊以產(chǎn)生、保持和更新文件系統(tǒng),同時塊訪問在
"后臺"處理。文件訪問存儲技術(shù)的例子是NAS(使用NFS、 CIFS、 HTTP 等協(xié)議的網(wǎng)絡(luò)附加存儲)、MPFS (多路徑文件服務(wù))、計算機內(nèi)文件存儲 等等。文件訪問存儲可被實現(xiàn)例如用于通用文件、網(wǎng)絡(luò)應(yīng)用、工程應(yīng)用(例 如CAD、 CAM、軟件開發(fā)等等)、圖像和3D數(shù)據(jù)處理、多媒體流等等。
對象訪問還通過從應(yīng)用程序隱藏關(guān)于塊、文件和存儲拓樸的細節(jié)來簡 單化數(shù)據(jù)訪問。對象訪問出現(xiàn)在集成在內(nèi)容管理應(yīng)用程序中的API上。對 象訪問存儲技術(shù)的例子是CAS (內(nèi)容尋址存儲)。
存儲的更多有效的使用可以在數(shù)據(jù)被儲存以前通過數(shù)據(jù)壓縮實現(xiàn)。為 了分別減少存儲容量和傳輸時間,數(shù)據(jù)壓縮技術(shù)用來減少待儲存或待傳輸 的數(shù)據(jù)量。壓縮可以通過^f吏用不同的壓縮算法來實現(xiàn),例如,標準壓縮算 法,例如由J. Ziv和A.. Lempel在"A Universal Algorithm For Sequential Data Compression", 正EE Transactions on Information Theory , IT-23 , pp. 337-343(1997)中描述的算法。它對透明地執(zhí)行壓縮很重要,意味著數(shù)據(jù)可 無變化地用于已有的應(yīng)用程序。在任一情況下,都有必要提供相應(yīng)的解壓 縮技術(shù)來使原始數(shù)據(jù)能夠被重建并且能夠被應(yīng)用程序訪問。當對壓縮的數(shù) 據(jù)進行更新時,解壓縮和再壓縮全部塊或文件一般不是有效的,特別是當 對相對小部分的數(shù)據(jù)更新時。
對儲存的數(shù)據(jù)的存儲和訪問的最優(yōu)化的各種實現(xiàn)例如在下面的專利 公布中^皮公開
美國專利號5,761,536 (Franaszek)公開了一種系統(tǒng)和方法,其用于儲 存可變長度對象以使存儲器碎片減少,同時避免對于存儲器重新組織的需 要??勺冮L度對象的剩余部分可以被指定來在最佳配合或第一配合的基礎(chǔ) 上與來自另 一個可變長度對象的剩余部分共享固定大小的存儲塊(共享塊 的兩個這種剩佘部分被稱為室友(roommate ))。 一個剩余部分儲存在塊的 一端,而另一個剩余部分儲存在塊的另一端。要共享存儲塊的可變長度對 象選自同一個群組。因此在對象之間存在某種關(guān)聯(lián)。作為例子,這種關(guān)聯(lián) 可以是對象來自同一頁或者對象以跨越多個頁的某線性順序。關(guān)于群組的 可變長度對象的信息,例如對象是否有室友,被儲存在存儲器中。美國專利號5,813,011 (Yoshida等人)公開了一種用于儲存壓縮數(shù)據(jù) 的方法和裝置,其中壓縮文件由下列項組成攜帶顯示壓縮管理表的位置 的信息的首部;壓縮代碼;以及保存顯示每個原始記錄的壓縮代碼的存儲 位置的信息的壓縮管理表。
美國專利號5,813,017 (Morris等人)公開了 一種用于減少備份子系統(tǒng) 中的存儲要求并進一步減少傳輸帶寬上的負載的方法和裝置,其中基本文 件以分段壓縮的格式被保持在服務(wù)器上。當在客戶機上修改文件時,文件 被傳輸?shù)椒?wù)器并且利用差分函數(shù)與文件的分段壓縮的基本版本比較,但 不解壓整個基本文件。作為在壓縮的基本文件和文件的修改版本之間的差 異的增量文件被產(chǎn)生和儲存在作為備份子系統(tǒng)的一部分的存儲媒介上。
美國專利號6,092,071 (Bolan等人)公開了一種系統(tǒng),其用于基于系 統(tǒng)老化參數(shù)來控制數(shù)據(jù)的壓縮和解壓,以使壓縮數(shù)據(jù)成為在系統(tǒng)存儲層次 中具有明顯位置的系統(tǒng)管理的資源。處理器寄存器由高速緩沖存儲器支 持,高速緩沖存儲器由主存儲器支持,主存儲器由解壓縮的磁盤存儲器支 持,解壓縮的磁盤存儲器由壓縮的磁盤存儲器支持,然后壓縮的磁盤存儲 器由磁帶支持,等等。根據(jù)數(shù)據(jù)生命周期,基于系統(tǒng)老化參數(shù)或可選地在 要求時,數(shù)據(jù)從解壓縮的形式改變?yōu)閴嚎s的形式并在系統(tǒng)控制下通過存儲 器層次而轉(zhuǎn)移數(shù)據(jù)最初被產(chǎn)生和儲存;在系統(tǒng)控制下數(shù)據(jù)在稍后的時間 凈組縮;當數(shù)據(jù)被訪問時,它在要求時按片段被解壓縮;在某個稍后的時 間,數(shù)據(jù)在系統(tǒng)控制下再次被壓縮直到下一次訪問。大的數(shù)據(jù)對象是分段 的,并且壓縮被應(yīng)用于較不經(jīng)常使用的數(shù)據(jù)。
美國專利號6,115,787 (Obara等人)公開了一種磁盤存儲系統(tǒng),其中 要儲存在高速緩沖存儲器中的數(shù)據(jù)被分成多個數(shù)據(jù)塊,每個數(shù)據(jù)塊具有與 擁有數(shù)據(jù)的并且^皮壓縮的追蹤塊關(guān)聯(lián)的兩個高速緩沖塊,因而以容易讀取 的方式將多個壓縮記錄的存儲提供至磁盤存儲系統(tǒng)的高速緩沖存儲器中。 相應(yīng)的數(shù)據(jù)塊在壓縮后被儲存在一個或多個高速緩沖塊中。用于從數(shù)據(jù)塊 被記錄的地址取回每個高速緩沖塊的信息被儲存為對于高速緩沖存儲器 的檢索信息的一部分。當在記錄中的相應(yīng)數(shù)據(jù)塊被讀取時,基于數(shù)據(jù)塊的 被記錄的地址以及檢索信息來確定儲存壓縮數(shù)據(jù)塊的高速緩沖塊。
美國專利號6,349,375 (Faulkner等人)公開了 一種數(shù)據(jù)壓縮和解壓與 虛擬存儲器系統(tǒng)的組合。討論了許多計算機系統(tǒng),包括所謂的嵌入式系統(tǒng), 其中數(shù)據(jù)以壓縮格式被儲存在存儲設(shè)備中。響應(yīng)于中央處理單元(CPU) 對數(shù)據(jù)的請求,虛擬存儲器系統(tǒng)將首先確定所請求的數(shù)據(jù)是否出現(xiàn)在CPU 可訪問的主存儲器的部分中,主存儲器也恰巧是解壓縮的數(shù)據(jù)被儲存的地 方。如果請求的數(shù)據(jù)沒有出現(xiàn)在主存儲器的解壓縮部分中,而更確切地以 壓縮的格式出現(xiàn)在存儲設(shè)備中,則數(shù)據(jù)通過要求調(diào)頁(paging)操作被傳輸至 主存儲器的解壓縮部分。在要求調(diào)頁操作期間,壓縮數(shù)據(jù)將被解壓縮。同 樣,如果數(shù)據(jù)從主存儲器的解壓縮部分被調(diào)頁,并且該數(shù)據(jù)必須被保存, 則它也可以在存儲在用于壓縮數(shù)據(jù)的存儲設(shè)備以前被壓縮。
美國專利號6,532,121 (Rust等人)公開了一種將元數(shù)據(jù)(meta-data)儲 存在壓縮記錄中以允許更好的訪問和管理合并數(shù)據(jù)的壓縮系統(tǒng)。標記被添 加到壓縮流來表示各種事項。每個壓縮記錄具有表示壓縮數(shù)據(jù)的起始的標 記。這些標記具有嵌在其數(shù)據(jù)中的扇區(qū)號碼以及再定位塊號碼。第二個標 記用來表示空閑空間。當壓縮數(shù)據(jù)儲存在磁盤驅(qū)動器上時,空閑空間祐j呆 留,以便相同或修改的數(shù)據(jù)的未來壓縮有稍微擴展而不使數(shù)據(jù)寫到不同的 位置的能力。壓縮數(shù)據(jù)也可以縮短且剩余空間可以用這個空閑空間標記填 充。第三個類型的標記是格式化模式標記。壓縮算法一般非常緊密地壓縮 格式化模式。然而,期望主機將有用的數(shù)據(jù)寫入存儲設(shè)備。在格式化模式 的區(qū)域中將典型的數(shù)據(jù)供給壓縮器,但是標記被設(shè)置在這個數(shù)據(jù)的前面以 允許格式化模式被返回而不是典型的數(shù)據(jù)。
美國專利號6,584,520 ( Cowart等人)公開了 一種存儲和檢索壓縮文件 的方法。該方法包括動態(tài)地生成文件分配表來從壓縮磁盤只讀取存儲器中 取回壓縮文件。
美國專利號6,678,828 (Pham等人)公開了一種安全網(wǎng)絡(luò)文件訪問工 具,其支持在客戶計算機系統(tǒng)的文件系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)存儲器之間數(shù)據(jù)的安 全訪問和傳輸。設(shè)置在客戶計算機系統(tǒng)上并且由安全網(wǎng)絡(luò)文件訪問工具監(jiān) 控的代理程序確??蛻粲嬎銠C系統(tǒng)關(guān)于發(fā)布給網(wǎng)絡(luò)數(shù)據(jù)存儲器的文件系 統(tǒng)請求的確認。安全網(wǎng)絡(luò)文件訪問工具設(shè)置在客戶計算機系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)存儲器之間的網(wǎng)絡(luò)基礎(chǔ)設(shè)施中,以應(yīng)用有資格的訪問策略并且選擇性地通 過直到文件系統(tǒng)請求。安全網(wǎng)絡(luò)文件訪問工具維持密鑰存儲并且使密鑰與 相應(yīng)的文件系統(tǒng)文件關(guān)聯(lián)起來以加密和解密文件數(shù)據(jù),如通過安全網(wǎng)絡(luò)文 件訪問工具傳輸?shù)骄W(wǎng)絡(luò)數(shù)據(jù)存儲器并從網(wǎng)絡(luò)數(shù)據(jù)存儲器中讀取的。
美國專利申請?zhí)?004/030,813 (Benveniste等人)公開了 一種儲存信息 的方法和系統(tǒng),包括將主存儲器壓縮的信息儲存到存儲器壓縮磁盤上,其 中頁面#:分別地儲存和檢索,而沒有解壓縮主存儲器壓縮信息。
美國專利申請?zhí)?005/021,657 (Negishi等人)公開了 一種用于暫時保 存對NAS服務(wù)器的操作請求的前端服務(wù)器,該操作請求從預(yù)定的客戶機 發(fā)送,被插入網(wǎng)絡(luò)上的NAS服務(wù)器和客戶機之間。該前端服務(wù)器保存關(guān) 于儲存在NAS服務(wù)器中的數(shù)據(jù)文件中間的關(guān)聯(lián)的信息,基于該信息最優(yōu) 化從客戶機接收的操作請求,并且將操作請求傳送到NAS服務(wù)器。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的某些方面,為了供塊模式訪問存儲器使用,提供了用于 產(chǎn)生、讀取和寫壓縮數(shù)據(jù)的方法和系統(tǒng);所述方法和系統(tǒng)便于直接訪問壓 縮數(shù)據(jù)同時維持壓縮塊的去碎片化(de-fragmentation )。
根據(jù)本發(fā)明的某些方面,產(chǎn)生用于存儲在至少一個存儲邏輯單元中的 壓縮數(shù)據(jù)的所述方法包括
a) 關(guān)于至少一個存儲邏輯單元(LU)產(chǎn)生可由所述塊才莫式訪問協(xié)議 訪問并配置成虛擬地容納原始數(shù)據(jù)的相應(yīng)的虛擬邏輯單元(VLU), 其中所迷虛擬邏輯單元的大小對應(yīng)于正被壓縮的原始數(shù)據(jù)的估計 的大小,實質(zhì)上等于所述存儲邏輯單元的大??;
b) 將所述虛擬邏輯單元分割成一個或更多虛擬存儲部分(簇);
c) 壓縮容納在簇中的原始數(shù)據(jù)并且從而產(chǎn)生將要儲存在存儲邏輯單元
內(nèi)的相應(yīng)壓縮l殳(compressed section)中的壓縮數(shù)據(jù);
間的映射。
根據(jù)本發(fā)明的進一步的方面,壓縮段被分成至少一個固定大小的壓縮
邏輯單元(CLU),且存儲邏輯單元包括具有描述壓縮段的至少一個記錄 的段表,所述記錄至少保存關(guān)于對應(yīng)于壓縮段的CLU以及涉及所述CLU 的存儲位置指針的信息。
對于讀取如上壓縮和儲存的數(shù)據(jù),所述方法包括
a) 確定待讀取的第一簇;
b) 確定相應(yīng)的壓縮段的序號;
c) 促進恢復(fù)對應(yīng)于所述簇的數(shù)據(jù);
d) 如果待讀取的數(shù)據(jù)范圍超出恢復(fù)的相應(yīng)簇的大小,則對具有遞增 了 1的序號的壓縮段重復(fù)步驟b)和c),直到所有待讀取的數(shù)據(jù)被 恢復(fù)。
對于寫入如上壓縮和儲存的數(shù)據(jù),所述方法包括
a) 確定待更新的第一簇,從而組成原始簇;
b) 確定相應(yīng)的壓縮段的序號;
c) 促進恢復(fù)對應(yīng)于所述原始簇的數(shù)據(jù);
d) 計算更新數(shù)據(jù)在所述蔟中的偏移并且促進在給定數(shù)據(jù)范圍的更新;
e) 將所述更新的簇壓縮至更新的壓縮段中;
f) 促進用更新的壓縮段蓋寫所述原始的壓縮段;
g) 如果待寫入的數(shù)據(jù)范圍超出恢復(fù)的相應(yīng)簇的大小,則對具有遞增了 1的序號的壓縮段重復(fù)步驟b)至f),直到所有需要的數(shù)據(jù)被寫入。
根據(jù)本發(fā)明的進一步的方面,所述方法包括處理在寫入數(shù)據(jù)期間釋放 的空閑CLU的列表,所述列表被處理直到所述LU斷開。所述方法進一步 包括比較所述原始段所需的CLU的數(shù)量W。與更新的壓縮段所需的CLU的 數(shù)量W"并促進下列項之一
a)如果^。=^ ,則用對應(yīng)于更新的壓縮段的CLU蓋寫對應(yīng)于原始的 壓縮段的所有CLU;
b)如果iV^A^,則用對應(yīng)于更新的壓縮段的CLU蓋寫對應(yīng)于原始的 壓縮段的前Nu個CLU并且更新關(guān)于釋放的CLU的空閑CLU的列
表;
c )如果iV。<// <A^。+A^,則用對應(yīng)于更新的壓縮段蓋寫對應(yīng)于原始的壓 縮段的所有CLU并且將對應(yīng)于更新的壓縮段的其余CLU寫入包含 在空閑CLU的列表中的CLU,其中7V/是在所述列表中CLU的數(shù)
量;
d)如果N。+NfKNu,則用對應(yīng)于所述更新的壓縮段的CLU蓋寫對應(yīng)于 所述原始的壓縮段的所有CLU,將對應(yīng)于所述更新的壓縮段的所述 CLU寫入包含在空閑CLU的所述列表中的CLU,并且將對應(yīng)于所 述更新的壓縮段的其余CLU連續(xù)地寫入下一個空閑存儲位置。
根據(jù)本發(fā)明的進一步的方面,所述方法進一步包括
a) 在斷開所述存儲邏輯單元以前檢查空閑CLU的列表;
b) 如果所述列表不是空的,則在包括在壓縮段內(nèi)的CLU中限定具有 最高存儲位置指針的CLU (第一個CLU );
c) 促進將所述壓縮數(shù)據(jù)從所述第一個CLU移動到具有較低存儲位置 指針的空閑CLU (第二個CLU);
d) 將所述第二個CLU分配l^有關(guān)的壓縮段并且將所述第一個CLU 分配給空閑CLU的所述列表;
e) 重復(fù)步驟b) -d)直到包括在壓縮段內(nèi)的所有CLU的所述存儲位 置指針低于包括在空閑CLU的列表中的任一個CLU的指針;
f) 更新段表。
根據(jù)本發(fā)明的進一步的方面,所述系統(tǒng)包括
a )用于關(guān)于至少 一個存儲邏輯單元產(chǎn)生可由所述塊才莫式訪問協(xié)議訪問 并配置成虛擬地容納原始數(shù)據(jù)的相應(yīng)的虛擬邏輯單元的裝置,其中 所迷虛擬邏輯單元的大小對應(yīng)于正被壓縮的原始數(shù)據(jù)的估計的大
小,實質(zhì)上等于所述存儲邏輯單元的大?。?br>
b)用于將所述虛擬邏輯單元分割成一個或更多虛擬存儲部分(簇) 的裝置;
儲邏輯單元內(nèi)的相應(yīng)壓縮段中的壓縮數(shù)據(jù)的裝置;
d)用于促進儲存在壓縮段中的壓縮數(shù)據(jù)和其在虛擬邏輯單元的虛擬 容納之間的映射的裝置;
才艮據(jù)本發(fā)明的其他方面,所述系統(tǒng)可組成通信設(shè)備的一部分,所述通 信設(shè)備在存儲網(wǎng)絡(luò)中可操作并根據(jù)本發(fā)明配置為執(zhí)行對壓縮數(shù)據(jù)的壓縮 和操作。
根據(jù)本發(fā)明的其他方面,所述系統(tǒng)可組成存儲設(shè)備的一部分,所述存 儲設(shè)備可用至少 一個塊模式訪問協(xié)議操作并根據(jù)本發(fā)明配置為執(zhí)行壓縮 和操作。
根據(jù)本發(fā)明的其他方面,提供了在存儲網(wǎng)絡(luò)中可操作并根據(jù)本發(fā)明配 置為執(zhí)行對壓縮數(shù)據(jù)的壓縮和操作的通信設(shè)備。
根據(jù)本發(fā)明的其他方面,提供了可用至少一個塊模式訪問存儲協(xié)議操 作并根據(jù)本發(fā)明配置為執(zhí)行對壓縮數(shù)據(jù)的壓縮和操作的存儲設(shè)備。
本發(fā)明的某些方面的優(yōu)點是促進對壓縮數(shù)據(jù)的隨機訪問并實現(xiàn)對壓 縮數(shù)據(jù)的操作而不需要解壓縮全部的壓縮塊,實質(zhì)上沒有損壞儲存和檢索 能力并且使用者不需要知道壓縮/解壓操作以及壓縮數(shù)據(jù)的存儲位置。
應(yīng)理解,根據(jù)本發(fā)明的系統(tǒng)可以是適當編程的計算機。同樣地,本發(fā) 明設(shè)想由計算機可讀取的、用于執(zhí)行本發(fā)明的方法的計算機程序。本發(fā)明 進一步設(shè)想機器可讀取的存儲器,其可觸知地包括可由機器執(zhí)行的、用于 執(zhí)行本發(fā)明的方法的指令程序。
為了理解本發(fā)明并且觀察在實踐中它可被如何執(zhí)行,現(xiàn)在僅作為非限定性的例子參考附圖描述優(yōu)選的實施方式,其中
圖la)-lc)是如本領(lǐng)域中公知的典型的塊模式訪問存儲結(jié)構(gòu)的示意性 結(jié)構(gòu)圖。
圖2a)"2e)是根據(jù)本發(fā)明的某些實施方式的存儲結(jié)構(gòu)的示意性結(jié)構(gòu)圖。 圖3是才艮據(jù)本發(fā)明的某些實施方式的系統(tǒng)功能結(jié)構(gòu)的示意性結(jié)構(gòu)圖。 圖4是根據(jù)本發(fā)明的某些實施方式的虛擬邏輯單元和邏輯單元的示意圖。
圖5是根據(jù)本發(fā)明的某些實施方式的段表的示例性結(jié)構(gòu)。
圖6是根據(jù)本發(fā)明的某些實施方式的壓縮數(shù)據(jù)塊創(chuàng)建的操作的一般化 流程圖。
圖7是根據(jù)本發(fā)明的某些實施方式的對壓縮數(shù)據(jù)塊的讀取操作的一般 化流程圖。
圖8是根據(jù)本發(fā)明的某些實施方式的對壓縮數(shù)據(jù)塊的寫操作的一般化 流程圖。
圖9是示出根據(jù)本發(fā)明的某些實施方式的對壓縮段的寫操作的順序的 一般化流程圖。
圖10是根據(jù)本發(fā)明的某些實施方式在從存儲邏輯單元斷開期間CLU 管理的一般化流程圖。
圖lla-llc是根據(jù)本發(fā)明的某些實施方式的在CLU和指定的磁盤存儲 片段之間的關(guān)系的示意性圖示。
發(fā)明詳細描述
在下面的詳細描述中,為了提供對本發(fā)明的徹底理解,闡述了許多具 體細節(jié)。然而,本領(lǐng)域的技術(shù)人員應(yīng)理解,本發(fā)明可以在沒有這些具體細 節(jié)的情況下實踐。在其他的例子中,沒有詳細描述公知的方法、過程、部 件和電路,以便不使本發(fā)明難理解。在附圖和描述中,相同的參考數(shù)字表 示對不同的實施方式或配置共同的那些部件。 除非另外特別說明,正如從以下的討論中顯而易見的,應(yīng)認識到,在
整個說明書討論中,利用術(shù)語例如"處理"、"計算"(computing )、"計算" (calculating),"確定"等來指計算機或計算系統(tǒng)或處理器或類似的電子計 算設(shè)備的行為和/或過程,這些處理器或電子計算設(shè)備將表示為在計算系統(tǒng) 的寄存器和/或存儲器內(nèi)的物理的例如電子的量的數(shù)據(jù)操作和/或轉(zhuǎn)換為類 似地表示為在計算系統(tǒng)的存儲器、寄存器或其他這種信息存儲、傳輸或顯 示設(shè)備內(nèi)的物理量的其他數(shù)據(jù)。
本發(fā)明的實施方式可以使用術(shù)語,例如用于執(zhí)行這里的操作的處理 器、計算機、裝置、系統(tǒng)、子系統(tǒng)、模塊、單元、設(shè)備(單個或多個形式)。 這可以為期望的目的而特別構(gòu)建,或它可包括由儲存在計算機中的計算機 程序選擇性地激活或重新配置的通用計算機。這種計算機程序可以儲存在 計算機可讀取存儲媒介中,例如但不限于任何類型的磁盤,包括光盤、 CD-ROM、磁光盤、只讀取存儲器(ROM)、隨機存取存儲器(RAM)、 電可編程只讀取存儲器(EPROM)、電可擦除可編程只讀取存儲器 (EEPROM)、磁卡或光卡、或適合于儲存電子指令并且能夠耦合到計算 機系統(tǒng)總線的任何其他類型的媒介。
在此介紹的步驟/設(shè)備(或上面規(guī)定的相似術(shù)語)以及顯示器沒有固有 地與任何特定的計算機或其他裝置有關(guān),除非另外特別說明。各種通用系 統(tǒng)根據(jù)這里的教導(dǎo)可以與程序一起使用,或可證明對構(gòu)建更專門的裝置來 執(zhí)行期望的方法是方便的。對于多種這些系統(tǒng)的期望結(jié)構(gòu)將在下面的描述 中出現(xiàn)。另外,本發(fā)明的實施方式?jīng)]有參考任何特定的編程語言描述。應(yīng) 認識到,多種編程語言可以用來實現(xiàn)在此描述的發(fā)明的教導(dǎo)。
記住,注意力被引到圖la-lc,其示出如本領(lǐng)域中公知的典型的塊才莫式 訪問存儲結(jié)構(gòu)的結(jié)構(gòu)圖。
圖la示出典型的DAS (直接附加存儲)結(jié)構(gòu),其中存儲設(shè)備12通過 塊模式訪問存儲協(xié)議(例如,SCSI、光纖通道等)由連通性媒介直接連接 到計算機ll。這個直接連接提供了對數(shù)據(jù)的更快的訪問;然而,存儲器僅 僅可從服務(wù)器訪問。DAS包括例如內(nèi)部附加的局部磁盤驅(qū)動器或外部附加 的RAID (獨立磁盤的冗余陣列)或JBOD (僅僅是一批磁盤)。
圖lb示出使用塊模式訪問存儲協(xié)議提供對存儲子系統(tǒng)的訪問的存儲 局域網(wǎng)(SAN)的典型結(jié)構(gòu)。存儲子系統(tǒng)包括主計算機ll (一般具有主機 總線適配器(HBA))、用于按規(guī)定路線發(fā)送存儲業(yè)務(wù)(storage traffic)的 FC網(wǎng)絡(luò)(SAN) 13以及存儲設(shè)備12。存儲子系統(tǒng)對多個主機一般可同時 利用。存儲網(wǎng)絡(luò)包括便于數(shù)據(jù)傳輸?shù)囊粋€或更多通信設(shè)備15 (例如,交換 機、路由器、網(wǎng)橋等)。
圖lc示出基于iSCSI協(xié)議的存儲網(wǎng)絡(luò)的典型結(jié)構(gòu),該協(xié)議能夠使塊數(shù) 據(jù)在IP網(wǎng)絡(luò)14上在計算機11和存儲設(shè)備12之間傳輸而不需要專門網(wǎng)絡(luò) 基礎(chǔ)設(shè)施,例如光纖通道。IP網(wǎng)絡(luò)包括便于數(shù)據(jù)傳輸?shù)囊粋€或更多通信設(shè) 備15(例如,交換機、路由器、網(wǎng)橋等)。
參考圖2a-2e,其作為非限定性的例子示出根據(jù)本發(fā)明的某些實施方式 的存儲結(jié)構(gòu)的示意圖。圖2a示出圖la中所示出的DAS存儲結(jié)構(gòu)的本發(fā)明 的某些實施方式;圖2b示出圖lb所示出的SAN存儲結(jié)構(gòu)的本發(fā)明的某 些實施方式;圖2c示出圖lc所示出的iSCSI存儲結(jié)構(gòu)的本發(fā)明的某些實 施方式。壓縮系統(tǒng)20通過接口 21操作性地耦合到計算機11 (例如,直接 耦合到計算機或相應(yīng)的LAN,或間接地通過存儲網(wǎng)絡(luò)13,或間接地通過 IP網(wǎng)絡(luò)14等)并且通過接口 22操作性地耦合到存儲設(shè)備12。壓縮系統(tǒng) 20在計算機和存儲設(shè)備之間充當網(wǎng)橋。壓縮系統(tǒng)20可支持任何物理接口 (例如,以太網(wǎng)、光纖通道等)并且可配置成保存存儲設(shè)備特征,例如冗 余、鏡像、快照、失效轉(zhuǎn)移(failover)、回退、管理等等。壓縮系統(tǒng)可配 置為與已有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施無縫地集成。使用者不需要知道壓縮和解壓縮 操作以及壓縮數(shù)據(jù)的存儲位置。
壓縮系統(tǒng)配置成截獲在計算機和存儲設(shè)備之間的通信,并且得到和壓 縮相應(yīng)于與數(shù)據(jù)訪問相關(guān)的請求的數(shù)據(jù)塊。
在對要在存儲前被壓縮的數(shù)據(jù)塊進行"寫"操作期間,來自計算機的 數(shù)據(jù)塊由壓縮系統(tǒng)20截獲、被壓縮并移動到存儲設(shè)備12。包括不同類型 的數(shù)據(jù)(例如,文本、圖像、聲音等)的數(shù)據(jù)塊可由不同的壓縮算法壓縮。 "讀取"操作在相反的方向繼續(xù)進行;所需的數(shù)據(jù)塊由壓縮系統(tǒng)重新得到、 (根據(jù)所需的數(shù)據(jù)范圍部分地或全部地)被解壓縮并且發(fā)送到合適的API。壓縮系統(tǒng)20配置成在計算機和存儲設(shè)備之間以透明的方式傳輸所選 的與控制相關(guān)的請求(例如,格式化磁盤、磁盤去碎片、進行快照等), 同時干預(yù)與數(shù)據(jù)訪問有關(guān)的事務(wù)(transaction)(例如讀取、寫等)以及一些 與控制有關(guān)的事務(wù)(例如容量狀態(tài))。
在本發(fā)明的某些實施方式中,壓縮系統(tǒng)20也可配置成根據(jù)預(yù)先定義 的標準(例如,LUN號、大小、IP地址、數(shù)據(jù)類型等)只壓縮選擇的傳遞 的數(shù)據(jù)塊。
原始數(shù)據(jù)(或其相關(guān)部分)在寫到存儲設(shè)備12期間或以前由壓縮系 統(tǒng)20壓縮。類似地,壓縮數(shù)據(jù)(或其相關(guān)部分)在從存儲設(shè)備12中讀取 期間或之后由壓縮系統(tǒng)20壓縮。
如本領(lǐng)域中公知的,典型的存儲系統(tǒng)和網(wǎng)絡(luò)能夠識別存儲的分開的組 織。存儲磁盤或一組磁盤可在概念上以邏輯單元分開。邏輯單元(LU)可 直接相應(yīng)于巻驅(qū)動器(volumedrive)、相應(yīng)于主機應(yīng)用程序、存儲設(shè)備等, 并且組成物理存儲的邏輯表示。每個邏輯單元具有稱為邏輯單元號(LUN) 的地址,該邏輯單元號允許地址纟皮唯一地識別。使用者可確定LUN是否 是磁盤驅(qū)動器、磁盤驅(qū)動器的號碼、磁盤驅(qū)動器上的分區(qū)等等。
根椐本發(fā)明的某些實施方式,壓縮系統(tǒng)20配置成關(guān)于至少一個邏輯 單元(LU)產(chǎn)生具有大于LU尺寸的尺寸的相應(yīng)的虛擬邏輯單元(VLU)。 在LU和VLU的大小之間比率根據(jù)期望的壓縮比來定義;因此,VLU的 大小對應(yīng)于正被壓縮的原始數(shù)據(jù)的估計的大小,實質(zhì)上等于LU的大小。 (例如,在本發(fā)明的某些實施方式中,VLU和LU的大小之間的典型比率 被估計為對電子郵件是3,對文本格式化數(shù)據(jù)是8,等等。)當截獲在計算 機和存儲設(shè)備之間的通信時,壓縮系統(tǒng)將來自計算機的與數(shù)據(jù)訪問有關(guān)的 請求尋址到VLU而不是LU,并且VLU提供原始數(shù)據(jù)的虛擬容納。因此, 根據(jù)本發(fā)明的某些方面,計算機的操作系統(tǒng)(OS)將關(guān)聯(lián)VLU作為原始 數(shù)據(jù)存儲的虛擬表示,壓縮系統(tǒng)將相應(yīng)的數(shù)據(jù)壓縮至存儲設(shè)備的LU中, 并且促進在壓縮數(shù)據(jù)及其在VLU的虛擬表示之間的映射。下面參考圖3-9 將根據(jù)本發(fā)明的某些實施方式進一步描述對壓縮數(shù)據(jù)的操作。在VLU和 LU的大小之間的比率可根據(jù)某些標準(例如,根據(jù)在壓縮數(shù)據(jù)塊中的數(shù)
據(jù)的主要類型,根據(jù)對于所述數(shù)據(jù)可得到的最大壓縮比率,等等)預(yù)先確 定或在壓縮過程期間是可修改的。
圖2d示出當壓縮系統(tǒng)20與至少一個通信設(shè)備15結(jié)合時對本發(fā)明的 另一個實施方式的存儲網(wǎng)絡(luò)結(jié)構(gòu)。該結(jié)合可以按不同的方式提供。例如, 壓縮系統(tǒng)20可尤其結(jié)合在通信設(shè)備中,壓縮系統(tǒng)的功能可以在專門的板 上實現(xiàn),(全部地或部分地)分布在設(shè)備的其他模塊之間,等等。接口 21 和/或22可以實現(xiàn)為通信設(shè)備的外部、內(nèi)部或分布式接口,或根據(jù)本發(fā)明 以促進壓縮系統(tǒng)的功能的任何其他的方式。
圖2e作為非限定性的例子示出當壓縮系統(tǒng)20與至少一個存儲設(shè)備12 結(jié)合時本發(fā)明的另一個實施方式的存儲網(wǎng)絡(luò)結(jié)構(gòu)。該結(jié)合可以按不同的方 式提供。例如,壓縮系統(tǒng)20可以尤其結(jié)合在存儲i殳備中,壓縮系統(tǒng)的功 能可以在專門的板上實現(xiàn),(全部地或部分地)分布在設(shè)備的其他模塊之 間,等等。接口 21和/或22可以實現(xiàn)為存儲設(shè)備的內(nèi)部或分布式接口,或 根據(jù)本發(fā)明以促進壓縮系統(tǒng)的功能的任何其他的方式。
注意,本發(fā)明沒有被參考圖1和2描述的特定結(jié)構(gòu)限制。精通本領(lǐng)域 的技術(shù)人員應(yīng)容易認識到,本發(fā)明同樣適用于任何計算系統(tǒng)或包括塊存儲 協(xié)議(例如,SCSI、光纖通道、iSCSI等)的任何存儲網(wǎng)絡(luò)結(jié)構(gòu)。壓縮系 統(tǒng)20 (或其部分)的功能可以在配置為網(wǎng)橋(如圖2a-2c所示)或代理服 務(wù)器的單機服務(wù)器上實現(xiàn),分布在幾個平臺之間或結(jié)合在其他存儲網(wǎng)絡(luò)元 件(例如文件服務(wù)器、企業(yè)或網(wǎng)絡(luò)交換機、路由器、存儲設(shè)備等等)中(如 圖2d-2e所示)。該結(jié)合可以按不同的方式提供并且在軟件和/或固件和/或 硬件中實現(xiàn)。
圖3示出根據(jù)本發(fā)明的某些實施方式的壓縮系統(tǒng)20的示意性功能結(jié) 構(gòu)圖。
壓縮系統(tǒng)包括耦合到對話(session)管理器32的客戶機輸入/輸出(I/O ) 塊31 。 1/0塊得到與數(shù)據(jù)訪問有關(guān)的請求(例如,讀取、寫等等)并且將 其轉(zhuǎn)送給對話管理器。
對話由LUN容量請求(例如,SCSI LUN容量請求命令)開始并且由
從同一個對話中接收到的LUN斷開請求結(jié)束。對話管理器32將所有對話 的私有數(shù)據(jù)保存為例如源對話地址、對話計數(shù)器、對話狀態(tài)、緩沖器在使 用的所有情況等等。對話管理器將所有的請求傳輸?shù)今詈系綄υ捁芾砥鞯?調(diào)度程序33。調(diào)度程序33操作性地耦合到數(shù)據(jù)塊管理器34、緩沖管理器 35以及壓縮/解壓縮塊36。調(diào)度程序33根據(jù)本發(fā)明的某些實施方式向數(shù)據(jù) 塊管理器34請求與數(shù)據(jù)有關(guān)的事務(wù)(例如,讀取、寫等等)并且向壓縮/ 解壓縮塊36請求壓縮/解壓縮操作。 一般地,壓縮算法具有以在壓縮效率 和性能參數(shù)之間的4斤衷(trade-off)為特征的一些壓縮級別。壓縮塊36可選 擇最佳的壓縮級別并且將壓縮比率調(diào)節(jié)為目前由輸A/輸出塊31處理的插 口的數(shù)量(和/或CPU利用率)。關(guān)于所選的壓縮級別上的信息被保存在數(shù) 據(jù)的壓縮部分中。數(shù)據(jù)塊管理器34負責(zé)由數(shù)據(jù)塊共享的存儲器和順序。 壓縮/解壓縮塊36能夠讀取和解壓縮緩沖器以及壓縮和寫數(shù)據(jù)。壓縮塊也 配置成根據(jù)LU大小以及預(yù)期的壓縮比率(或預(yù)先確定的LU/VLU比)來 估計VLU大小,并且報告VLU大小以及空閑容量,作為對容量狀態(tài)請求 的答復(fù)。
緩沖管理器35管理存儲器緩沖資源并且負責(zé)將存儲緩沖器分配和釋 放到任何塊操作。壓縮系統(tǒng)進一 步包括耦合到對話管理器的完整性管理 器、緩沖管理器以及數(shù)據(jù)塊管理器。完整性管理器負責(zé)壓縮系統(tǒng)中的所有 處理的同步和一般控制,例如保持LUN的完整性,等等。它也負責(zé)將存 儲緩沖器通過存儲物理I/0接口 38迅速傳遞到(flash to)物理磁盤中,并 且在需要時從磁盤上讀取。
本領(lǐng)域技術(shù)人員應(yīng)容易認識到,本發(fā)明沒有被圖3的配置限制;等效 的和/或<務(wù)改的功能可按另 一方式,皮合并或分開。
圖4示出根據(jù)本發(fā)明的某些實施方式的原始和壓縮數(shù)據(jù)塊的示意圖。 虛擬邏輯單元(VLU) 41分割成具有實質(zhì)上相等的預(yù)定大小的虛擬存儲部 分43 (在下文中稱為虛擬存儲簇或簇)。這些虛擬存儲簇在對數(shù)據(jù)塊的輸 入/輸出事務(wù)(與數(shù)據(jù)訪問相關(guān)的請求)期間用作壓縮/解壓縮操作的極小 元素。虛擬存儲簇的大小是可配置的;較大的簇提供了較低的處理開銷以 及較高的壓縮比率,而較小的簇提供了更有效的訪問但較高的處理開銷。此外,簇的大小取決于可利用的存儲器以及所需的性能,因為每個I/0事
務(wù)的壓縮/解壓縮處理需要存儲器中的至少一個可利用的簇,同時性能限定
了許多同時的事務(wù)。簇的數(shù)量等于(VLU的大小除以簇的大小得到的)整 數(shù)并且如果有余數(shù)則加1。
可選地,在本發(fā)明的某些其他實施方式中,簇的大小可以根據(jù)例如取 決于數(shù)據(jù)的類型(例如,文本、圖^f象、聲音、組合等等)的預(yù)先確定的標 準、指定到LUN的應(yīng)用等而變化。
每個虛擬存儲簇43 (例如在圖4中所示的43A-43C)對應(yīng)于在邏輯單 元內(nèi)相應(yīng)的壓縮段46 (例如在圖4中所示的46A-46C),儲存由壓縮系統(tǒng) 20壓縮的相應(yīng)的數(shù)據(jù)。具有相同大小的簇可自然地導(dǎo)致具有不同大小的壓 縮段,取決于在每個簇中的數(shù)據(jù)的種類以及壓縮算法。如果可獲得的簇壓 縮的比率小于預(yù)先確定的值,那么LU的相應(yīng)的壓縮段可包括對應(yīng)于該簇 的未壓縮數(shù)據(jù)。例如,如杲在給定的簇中的原始數(shù)據(jù)被壓縮至不小于原始 簇大小的乂%(比如95%),那么由于可忽略的壓縮比率,相應(yīng)的段將容納 原始簇數(shù)據(jù)而不是壓縮數(shù)據(jù)。
在本發(fā)明的某些實施方式中,壓縮處理可包括適應(yīng)能力,其根據(jù)內(nèi)容 為每個數(shù)據(jù)塊提供最佳的壓縮算法(例如,最佳地適合于具有主要的聲音、 文本、圖像等數(shù)據(jù)的簇的不同的壓縮算法)。
根據(jù)本發(fā)明的某些實施方式,每個邏輯單元44包括首部45、 一些壓 縮段46、 IS^47以及空閑空間49。首部45包括包含邏輯單元號(LUN) 的唯一的描述符、虛擬邏輯單元(VLU)的大小以及表示儲存的數(shù)據(jù)的至 少一部分是否^皮壓縮系統(tǒng)20處理的標識(signature)。首部具有固定的長度 (例如,作為非限定性的例子,24字節(jié),包括用于標識的4字節(jié)、用于唯 一的描述符的16字節(jié)以及用于關(guān)于相應(yīng)的虛擬邏輯單元的大小的信息的4 字節(jié))。
在本發(fā)明的其他實施方式中(例如,在某些實施方式中,當壓縮/解壓 縮功能與存儲設(shè)備結(jié)合時),首部45或其任何部分以及其中的組合可組成 磁盤屬性的一部分。
在LU內(nèi)的壓縮段的數(shù)量等于虛擬存儲簇的數(shù)量。根據(jù)本發(fā)明的某些 實施方式,在壓縮段46中的數(shù)據(jù)被儲存在都具有相等的預(yù)定大小(例如, 如在圖4中所示的,壓縮邏輯單元48A0-48A2對應(yīng)于壓縮段46A,壓縮段 46A對應(yīng)于虛擬存儲簇43A)的壓縮邏輯單元(CLU) 48中。預(yù)先確定的 CLU大小是可配置的;較大的CLU提供了較低的開銷,而較小的CLU導(dǎo) 致較高的分辨率。此外,在本發(fā)明的某些實施方式中,CLU的大小可調(diào)節(jié) 至數(shù)據(jù)塊的最大和/或最佳大小。
在壓縮段內(nèi)的CLU的數(shù)量等于(壓縮段的大小除以CLU的大小得到 的)整數(shù)并且如果存在余數(shù)則加1。在壓縮段中的最后一個CLU可以是部 分充滿的(例如圖4中的48-A2、 48-C1 )。這種CLU可以按與充滿的CLU 相同的方式處理。CLU可以被認為是由在存儲器(物理存儲媒介)中的片 段的虛擬序列形成的壓縮的存儲的虛擬部分。下面參考圖11進一步描述在 CLU和指定的存儲片段之間的關(guān)系。
段表47包括所有壓縮段46的紀錄,并且指定在哪里找到對應(yīng)于每個 壓縮段的CLU。關(guān)于每個壓縮段的記錄(在下文中為段記錄)包括表示段 是否,皮壓縮、壓縮段的總大小、以及涉及包括在段內(nèi)的所有CLU的指針 的列表的標識??蛇x地,記錄可包括在相應(yīng)簇的壓縮期間使用的壓縮算法 以及蔟的大小(如果根據(jù)預(yù)先確定的標準是可變的)的表示。正如將參考 圖5進一步示出的,在本發(fā)明的某些實施方式中,段記錄的長度是相等的, 并且段表的大小與壓縮段的數(shù)量成比例,以及相應(yīng)地與虛擬存儲簇的數(shù)量 成比例。在本發(fā)明的某些實施方式中,當VLU/LU大小是預(yù)先確定的時, 整個^殳表具有預(yù)定的大小。
在本發(fā)明的其他實施方式中(例如在某些實施方式中,當壓縮/解壓縮 功能與存儲設(shè)備結(jié)合時,等等),段表47可組成磁盤屬性的一部分。
圖5作為非限定性的例子示出關(guān)于示例性數(shù)據(jù)塊50的段表中的示例 性記錄。
壓縮段的記錄51包括標識52、段53的大小以及一些條目54。段記 錄的每個條目54包括關(guān)于包括在壓縮段內(nèi)的相應(yīng)CLU的信息。段表包括 物理位置和邏輯CLU號之間的關(guān)系。
示例性原始數(shù)據(jù)塊50 (在進一步的實施例中也涉及)具有原始大小 3MB+413bit。為了實施例的目的,預(yù)定的簇大小是1M并且CLU大小是 60K。因此,數(shù)據(jù)塊將需要4個虛擬存儲簇(3個1MB的簇和1個部分充 滿的但^皮處理為完整簇的簇)。
所述示例性虛擬存儲簇對應(yīng)于具有相應(yīng)的大小例如301123、 432111、 120423和10342字節(jié)的壓縮段。因為60K的CLU長度意味著61440字節(jié), 0號段具有5個分配的CLU ([301123/61440]+1); 1號段具有8個分配的 CLU( [432111/61440]+1); 2號段具有2個分配的CLU( [120423/61440]+1) 以及3號段具有1個分配的CLU ([ 10342/61440]+1 )??傮w上,壓縮數(shù)據(jù) 塊將包括16個CLU (總大小為15*61440字節(jié)+10342字節(jié))。
如果示例性數(shù)據(jù)塊50第一次-陂儲存,那么CLU將具有物理位置的連 續(xù)分配,例力n,
-具有物理位置指針l、 2、 3、 4、 5的前5個CLU將被分配到0號
段;
-具有指針6、 7、 8、 9、 10、 11、 12、 13的接下來的8個CLU將被 分配到1號段;
-具有指針14、 15的接下來的2個CLU將被分配到2號段;
-具有指針16的接下來的1個CLU將^皮分配到3號段。
正如下面參考圖8-11進一步描述的,對應(yīng)于數(shù)據(jù)塊的CLU的分布可 以在更新(在目前的實施例中,更新對壓縮^:的大小沒有影響)后改變。 例如,
-具有指針l、 4、 5、 6、 9的CLU將被分配到0號段;
-具有指針2、 3、 7、 10、 11、 12、 15、 14的CLU將被分配到1號
段;
-具有指針8、 13的CLU將被分配到2號段; -具有指針16的CLU將被分配到3號段。
當數(shù)據(jù)塊被第一次儲存時,CLU的虛擬(邏輯)序列與對應(yīng)于CLU 的存儲媒介段的物理序列相同。在更新的數(shù)據(jù)塊中,CLU的虛擬(邏輯) 序列可以與對應(yīng)于CLU的磁盤片段的物理序列不同。例如在上面的實施 例中,第一個簇的第二個CLU最初位于2號物理片段,其中在更新后, 它位于4號物理片段。每個CLU被指定給存儲器中的片段,相應(yīng)的片段 被寫入首部45的長度加上被段序號乘的CLU的長度的偏移中。例如,在 上面的示例性數(shù)據(jù)塊中,當?shù)谝粋€簇的第二個CLU位于2號物理片段時, 它在存儲位置存儲器中被寫入首部的24字節(jié)加上2*61440字節(jié)的偏移中。 當在更新后該CLU位于4號物理片段時,它的偏移變?yōu)槭撞康?4字節(jié)加 上4*61440字節(jié)。
在本發(fā)明的某些實施方式中,在每個段記錄中的條目的數(shù)量是不變 的,并且對應(yīng)于可能需要用于儲存簇的CLU的最大數(shù)量。因此,每個段 記錄的大小是不變的,而不管包括在段內(nèi)的CLU的實際數(shù)量如何;未在 使用中的條目可能有特殊的標記。在段記錄中的條目的數(shù)量等于簇的大小 除以CLU的大小得到的整數(shù)加1。段表的大小等于被在VLU中的簇的數(shù) 量乘段記錄的大小。
在示出的簇的預(yù)定大小為1MB以及CLU的預(yù)定大小為60K的實施例 中,壓縮段的每個記錄具有17個條目(1MB/60K的整數(shù)加1 ),每個條目 具有4字節(jié)。相應(yīng)地,壓縮的0號段的示出的段記錄51具有包括關(guān)于相 應(yīng)CLU的物理位置的信息的5個條目以及12個空條目(例如,標記為-1 )。 段記錄的大小是72字節(jié)(用于關(guān)于壓縮段的大小和標識的信息的4字節(jié) 加上17個條目*4字節(jié))。段表的總大小是288字節(jié)(用于每個段記錄的4 個壓縮段*72字節(jié))。
圖6-11示出才艮據(jù)本發(fā)明的某些實施方式對壓縮數(shù)據(jù)執(zhí)行的輸A/輸出 操作。注意,根據(jù)本發(fā)明的某些實施方式,壓縮系統(tǒng)20也干預(yù)涉及可利 用的存儲器大小(原始數(shù)據(jù)的估計的存儲空間)、將VLU的大小保存在相 應(yīng)LU的首部中(或在參考圖4詳述的磁盤屬性中)并且在請求時提供所 述數(shù)據(jù)的命令。
參考圖6,其示出根據(jù)本發(fā)明的某些實施方式的壓縮數(shù)據(jù)塊建立的一 般化流程圖。當請求60是儲存數(shù)據(jù)塊時,壓縮系統(tǒng)20虛擬地建立虛擬邏 輯單元61,如參考圖2a-2c所述的,或參考當儲存以前的數(shù)據(jù)塊時建立的
VLU。在接下來的步驟62中,壓縮系統(tǒng)將原始數(shù)據(jù)的第一個固定大小的 部分(簇)處理為具有大小X的壓縮段。(壓縮可在任何適當?shù)纳虡I(yè)或?qū)?業(yè)算法的幫助下提供)。壓縮系統(tǒng)限定第一個CLU的第一個空閑存儲位置, 開始并且處理壓縮#史在該CLU以及隨后的CLU中的連續(xù)寫入63,用于儲 存在存儲設(shè)備中,并且準備在要記錄在段表中的過程期間被占據(jù)的CLU 的指針64。壓縮系統(tǒng)重復(fù)對下一個簇的處理65,直到全部數(shù)據(jù)塊的數(shù)據(jù) 以壓縮的形式^皮寫入并且段表纟皮建立66。
參考圖7,其示出根據(jù)本發(fā)明的某些實施方式的對壓縮數(shù)據(jù)塊進行讀 取操作的一般化流程圖。
讀取操作開始讀取識別VLU中的數(shù)據(jù)偏移以及待讀取的數(shù)據(jù)的范圍 Y的請求70。應(yīng)記得,如參考圖2a) -2c)所描述的,計算機的操作系統(tǒng) (OS)將使VLU關(guān)聯(lián)為原始數(shù)據(jù)存儲的虛擬表示,壓縮系統(tǒng)將相應(yīng)的數(shù)
的映射。
壓縮系統(tǒng)20將第一個待讀取的虛擬存儲簇(在下文中為起始簇)的 序號計算為(偏移除以簇的大小得到的)整數(shù)且如果存在余數(shù)則加1 (71 )。 待讀取的簇的號碼由(待讀取的數(shù)據(jù)范圍除以簇的大小得到的)整數(shù)加1 限定。因此,壓縮系統(tǒng)限定與待讀取的簇——對應(yīng)的壓縮段并且指向?qū)?yīng) 于待壓縮和讀取的壓縮段的CLU。
在本發(fā)明的某些實施方式中,所有待讀取的數(shù)據(jù)范圍可以是全部解壓 縮的??蛇x地,如圖7所示,解壓縮可以按步驟提供,并且對于讀取操作, 壓縮系統(tǒng)可以維持緩沖器實質(zhì)上等于簇的大小。第一個讀取請求包括對于 包括在起始簇的壓縮段內(nèi)的CLU的指針。對應(yīng)于起始簇的全部壓縮段被 讀取且沒有被壓縮系統(tǒng)壓縮至目標緩沖器(72)。在下一步驟中,壓縮系 統(tǒng)計算在簇內(nèi)所需的偏移(73),并且復(fù)制待傳遞到應(yīng)用程序的所需的數(shù) 據(jù)(74)。復(fù)制數(shù)據(jù)需要的長度如下計算
炎產(chǎn)=處小遂(炎孩志庫Y;(處W義V、-森移mod^^M:小)}
如果數(shù)據(jù)范圍Y超出簇的大小,則重復(fù)操作(75)。例如,參考示例性數(shù)據(jù)塊50,請求從偏移1MB+1340中讀取20字節(jié) 長度的數(shù)據(jù)。讀取將從第二個簇開始,因此,需要的數(shù)據(jù)包括在從第二個 壓縮段開始的壓縮數(shù)據(jù)塊內(nèi) 在段表中第二個壓縮段的記錄包括具有指針 2、 3、 7、 10、 11、 12、 15、 14的CLU。因此,這些CLU將浮皮讀取至在壓 縮系統(tǒng)20內(nèi)的臨時緩沖器中并且^^縮至1MB緩沖器(例如,在壓縮系 統(tǒng)中)。然后來自緩沖器偏移1340的20字節(jié)將被移到目標(使用者的) 緩沖器。復(fù)制數(shù)據(jù)所需的長度是20字節(jié)(等于在20字節(jié)和(1MB-1340 字節(jié))之間的最小值)。如果其它請求是從同樣的偏移讀取2MB長度的數(shù) 據(jù),那么操作將按類似于第三個和第四個壓縮段的方式重復(fù);并且從起始 簇復(fù)制的所需的數(shù)據(jù)長度是1MB-1340字節(jié)(等于在2MB和(1MB-1340 字節(jié))之間的最小值)。
參考圖8,其示出根據(jù)本發(fā)明的某些實施方式的對壓縮數(shù)據(jù)塊進行寫 操作的一般化流程圖。"寫"請求識別在VLU中的偏移以及待寫入的數(shù)據(jù) 的范圍Y(80)。壓縮系統(tǒng)20將第一個待更新(蓋寫)的虛擬存儲簇的序 號計算為(偏移除以簇的大小得到的)整數(shù)且如果存在余數(shù)則加l (81)。 要蓋寫的虛擬存儲簇的數(shù)量由(待寫入的數(shù)據(jù)的范圍除以簇的大小得到 的)整數(shù)并且如果存在余數(shù)則加1來限定。因此,壓縮系統(tǒng)限定要重寫的 壓縮段并且按類似于參考圖7所述的方式生成讀取請求。在對應(yīng)于起始簇 的全部壓縮段被讀取并且未被壓縮系統(tǒng)壓縮到緩沖器(82)之后,壓縮系 統(tǒng)計算在如參考圖7所述的簇內(nèi)的需要的偏移(83),并且更新(蓋寫) 所需的數(shù)據(jù)范圍(84)。然后,壓縮系統(tǒng)壓縮更新的簇(85),更新段表并 且請求將新的壓縮段寫入壓縮數(shù)據(jù)塊(86)。如果數(shù)據(jù)范圍Y超出簇的大 小,則對后續(xù)的簇重復(fù)操作(87)。當處理結(jié)束時,壓縮系統(tǒng)更新段表88。
如上所述,在本發(fā)明的某些實施方式中,所需的數(shù)據(jù)的存儲位置可以 被直接訪問,因此讀取/更新(及類似的)操作僅僅需要恢復(fù)包括所需的數(shù) 據(jù)范圍的虛擬簇而不是全部數(shù)據(jù)塊。
一般而言,由于在分配的存儲器中引起的未使用的空間,數(shù)據(jù)塊更新 可產(chǎn)生碎片。圖9和10示出4艮據(jù)本發(fā)明的某些實施方式的CLU管理的碎 片處理算法。圖9示出根據(jù)本發(fā)明的某些實施方式在對壓縮段(圖8中的步驟86)進行寫/更新操作期間CLU管理的算法。在寫更新的壓縮段以前, 壓縮系統(tǒng)比較更新和舊的壓縮段所需的CLU的數(shù)量(91 )。如果CLU的 數(shù)量沒有變化,那么壓縮系統(tǒng)20請求將更新的壓縮段連續(xù)地寫入對應(yīng)于 舊的壓縮段的所有CLU92。如果所需的CLU的新的數(shù)量少于舊的數(shù)量, 那么壓縮段將被連續(xù)地寫在對應(yīng)于舊的壓縮段的CLU的部分上。關(guān)于釋 放的CLU的信息在由壓縮系統(tǒng)20處理的空閑CLU的專門列表(隊列) 中被更新,直到LU被斷開。如果所需的CLU的新的數(shù)量多于舊的數(shù)量, 那么壓縮段將被連續(xù)地寫在對應(yīng)于舊的壓縮段的所有CLU上(94)并且 然后寫在從空閑CLU隊列中取得的CLU上(95)。如果仍然需要更多的 CLU,那么壓縮系統(tǒng)將限定分配到數(shù)據(jù)塊(#w)的最后一個CLU并且請 求連續(xù)地寫在從號碼(n+1 )開始的CLU上(96 );分配的CLU的列表將 因此被更新(97)。
圖IO示出在從存儲邏輯單元斷開的期間CLU管理的算法。
在從LU斷開(102)以前,壓縮系統(tǒng)檢查空閑CLU的列表是否是空 的(IOI)。如果列表仍然包括CLU,則壓縮系統(tǒng)20在使用中的CLU中限 定具有最高存儲位置指針的CLU。包含在所述CLU內(nèi)的壓縮數(shù)據(jù)被傳輸 到具有較低指針的空閑CLU并且空的CLU被添加到空閑CLU的列表
(103)。該處理過程重復(fù)直到在使用中的CLU的所有指針低于包括在空 閑CLU的列表中的任何一個CLU的指針(104 )。段表將因此被更新(105 )。 在整個重寫過程結(jié)束后或根據(jù)其他預(yù)先確定的標準,根據(jù)每個所述CLU 重寫,可能出現(xiàn)這種更新。在過程結(jié)束時,LU斷開并且空閑CLU被釋放
(106)。根據(jù)不同的算法可以提供空閑CLU對上述過程的選擇。例如, 在本發(fā)明的某些實施方式中,來自CLU的具有最高存儲位置指針的所述 壓縮數(shù)據(jù)可以被傳輸?shù)骄哂凶畹痛鎯ξ恢弥羔樀目臻eCLU。
參考圖lla-llc,其示出根據(jù)本發(fā)明的某些實施方式的在CLU和指定 的磁盤存儲分段之間的關(guān)系。圖lla示出當被創(chuàng)建為新的壓縮數(shù)據(jù)塊時在 圖5中所示的示例性數(shù)據(jù)塊50。 CLU的虛擬(邏輯)序列與對應(yīng)于CLU (在CLU內(nèi)的號碼說明對于相應(yīng)的磁盤存儲分段的指針)的磁盤分段的 物理序列是一樣的。圖llb示出在具有未改變大小的壓縮段的更新的壓縮
數(shù)據(jù)塊內(nèi)的CLU的新的分布,如在參考圖5所描述的在更新的示例性數(shù) 據(jù)塊中的。CLU的虛擬(邏輯)序列與對應(yīng)于CLU的磁盤分段的物理序 列不同,同時維持LU的去碎片化結(jié)構(gòu)。圖11示出在更新的示例性壓縮數(shù) 據(jù)塊50內(nèi)的CLU的去碎片的分布,其中第二個壓縮段的大小在從432111 更新到200100字節(jié)后變化了 。如果例如更新偏移是1MB+314字節(jié),那么 第一個壓縮段在更新期間是不受影響的。第二個壓縮段的新的大小需要分 配僅僅4個CLU ([200100/61440]+1 )。注意,如圖11B所示,在更新前, 第二個壓縮段容納了 8個CLU (第2、 3、 7、 10、 11、 12、 15和16號)。 如參考圖9所述的,壓縮系統(tǒng)20將更新的第二個壓縮段寫在來自壓縮段 的前4個CLU上(在本實施例中是2、 3、 7、 10),并且將具有指針ll、 12、 15和16的CLU發(fā)送到空閑CLU的列表。第三個和第四個壓縮段在 這個特定的更新期間也未受影響。如參考圖10所述的,壓縮系統(tǒng)20在從 LU斷開以前將檢查空閑CLU的列表是否是空的。通過這個實施例,列表 包括具有存儲位置指針11、 12、 15和16的CLU。如參考圖10所述的, 壓縮系統(tǒng)將來自具有指針13的CLU的壓縮數(shù)據(jù)重寫到具有指針11的 CLU;將來自具有指針16的CLU的壓縮數(shù)據(jù)重寫到具有指針12的CLU, 并且釋放具有指針13-16的CLU。因此,更新的數(shù)據(jù)塊具有12個分配的 沒有去碎片化的CLU。
另外的要求(例如,安全訪問、數(shù)據(jù)完整性等等)可導(dǎo)致在壓縮系統(tǒng) 和計算機之間的更復(fù)雜的通信。
還應(yīng)理解,本發(fā)明在其申請中沒有被限制為在此包括的描述中闡述的 或圖中示出的細節(jié)。本發(fā)明能夠具有其他的實施方式并且可以以各種方式 實踐和實現(xiàn)。因此,應(yīng)理解,在此所采用的措詞和術(shù)語是為了描述的目的 且不應(yīng)被視為限定性的。因此,本領(lǐng)域的技術(shù)人員應(yīng)認識到,本公開所基 于的概念可以容易地用作基礎(chǔ),以設(shè)計用于實現(xiàn)本發(fā)明的幾個目的的其他 結(jié)構(gòu)、方法、和系統(tǒng)。
本領(lǐng)域的技術(shù)人員應(yīng)容易認識到,各種修改和變化可以應(yīng)用于在上文 中描述的本發(fā)明的實施方式而不偏離在所附權(quán)利要求中以及由權(quán)利要求 M^定的本發(fā)明的范圍。
權(quán)利要求
1.為了用在塊模式訪問存儲協(xié)議上,一種產(chǎn)生用于存儲在至少一個存儲邏輯單元中的壓縮數(shù)據(jù)的方法,所述方法包括a)關(guān)于至少一個存儲邏輯單元產(chǎn)生可由所述塊模式訪問協(xié)議訪問并配置成虛擬地容納原始數(shù)據(jù)的相應(yīng)的虛擬邏輯單元,其中所述虛擬邏輯單元的大小對應(yīng)于正被壓縮的原始數(shù)據(jù)的估計的大小,實質(zhì)上等于所述存儲邏輯單元的大小;b)將所述虛擬邏輯單元分割成一個或更多虛擬存儲部分(簇);c)壓縮容納在至少一個簇中的所述原始數(shù)據(jù),并且從而生成要儲存在所述存儲邏輯單元內(nèi)的相應(yīng)壓縮段內(nèi)的壓縮數(shù)據(jù);d)促進儲存在所述壓縮段內(nèi)的所述壓縮數(shù)據(jù)和其在所述虛擬邏輯單元的虛擬容納之間的映射。
2. 如權(quán)利要求1所述的方法,其進一步包括將至少一個壓縮段分成 至少一個固定大小的壓縮邏輯單元(CLU),并且產(chǎn)生具有描述所述壓縮 段的至少一個記錄的段表,所述記錄至少保存關(guān)于對應(yīng)于所述壓縮段的 CLU以及涉及所述CLU的存儲位置指針的信息。
3. 如權(quán)利要求2所述的方法,其中所述存儲邏輯單元包括所述段表。
4. 如權(quán)利要求1所述的方法,其中所述簇具有預(yù)先確定的實質(zhì)上相 等的大小。
5. 如權(quán)利要求1所述的方法,其中簇的大小根據(jù)包括在所述簇中的 數(shù)據(jù)類型從預(yù)定大小的列表中選擇。
6. 如權(quán)利要求1所述的方法,其中選擇簇的大小以促進所需的壓縮 比率。
7. 如權(quán)利要求1所述的方法,其中所述存儲邏輯單元包括首部,所 述首部包括所述存儲邏輯單元的唯一 的描述符。
8. 如權(quán)利要求7所述的方法,其中所述首部保存涉及所述虛擬邏輯 單元的大小的信息。
9. 如權(quán)利要求2所迷的方法,其中描述所述壓縮段的所述記錄具有 相等的預(yù)先確定的大小。
10. 如權(quán)利要求l所述的方法,其中利用根據(jù)包括在所述簇內(nèi)的數(shù)據(jù) 類型而選擇的壓縮算法處理所述簇。
11. 如權(quán)利要求l所述的方法,其中只有當文件符合預(yù)先確定的標準 時才提供壓縮原始文件。
12. —種讀取根據(jù)權(quán)利要求l壓縮的數(shù)據(jù)的方法,所迷方法包括a) 確定待讀取的第一簇;b) 確定相應(yīng)的壓縮段;c) 促進恢復(fù)對應(yīng)于所述簇的數(shù)據(jù)。
13. —種讀取根據(jù)權(quán)利要求2壓縮的數(shù)椐的方法,所述方法包括a) 確定包括待讀取的數(shù)據(jù)的第一個壓縮段的序號;b) 通過參考所述段表確定對應(yīng)于所述壓縮段的CLU以及其存儲位置;c) 促進從所述壓縮段恢復(fù)所述數(shù)據(jù)。
14. 如權(quán)利要求13所述的方法,其進一步包括如果待讀取的數(shù)據(jù)范 圍超出所恢復(fù)的相應(yīng)簇的大小,則對具有遞增了 l的序號的壓縮段重復(fù)步 驟b)和c),直到所有待讀取的數(shù)據(jù)被恢復(fù)。
15. —種在給定的數(shù)據(jù)范圍將數(shù)據(jù)寫入根據(jù)權(quán)利要求1壓縮的數(shù)據(jù)的 方法,所迷方法包括a) 確定待更新的第一蔟,從而組成原始蔟;b) 確定相應(yīng)的壓縮^:;c) 促進恢復(fù)對應(yīng)于所述原始蔟的所述數(shù)據(jù);e) 將所述更新的簇壓縮至更新的壓縮段中;f) 促進用更新的壓縮段蓋寫所述原始的壓縮段。
16. —種在給定的數(shù)據(jù)范圍將數(shù)據(jù)寫入根據(jù)權(quán)利要求2壓縮的數(shù)據(jù)的方法,所述方法包括a) 確定包括待更新的數(shù)據(jù)的第一個壓縮段的序號,從而組成原始的壓縮段;b) 通過參考段表確定對應(yīng)于所述原始的壓縮段的CLU以及其存儲位置;c) 促進從所述原始的壓縮段恢復(fù)所述數(shù)據(jù);d) 計算在相應(yīng)的蔟內(nèi)的所述更新數(shù)據(jù)的偏移并且促進在所述給定的 數(shù)據(jù)范圍的更新;e) 將所述更新的簇壓縮至更新的壓縮段中;f) 促進用更新的壓縮段蓋寫所述原始的壓縮段;g) 更新所述段表。
17. 如權(quán)利要求16所迷的方法,其進一步包括如果待寫入的數(shù)據(jù)范圍超出所恢復(fù)的相應(yīng)簇的大小,則對具有遞增了l的序號的壓縮段重復(fù)步驟b)至f),直到所有所需的數(shù)據(jù)被寫入。
18. 如權(quán)利要求16所述的方法,其中所述存儲邏輯單元以去碎片的方式被維持。
19. 如權(quán)利要求16所述的方法,其進一步包括處理在寫入數(shù)據(jù)期間釋放的空閑CLU的列表,所迷列表被處理直到所述存儲邏輯單元斷開。
20. 如權(quán)利要求19所述的方法,其進一步包括比較所述原始段所需要的CLU的數(shù)量N0與所述更新的壓縮段所需要的數(shù)量N14并且促進下列項之一a)如果N0=Nu,則用對應(yīng)于所述更新的壓縮段的CLU蓋寫對應(yīng)于所述原始的壓縮段的所有CLU;b) 如果<formula>see original document page 5</formula>則用對應(yīng)于所述更新的壓縮段的CLU蓋寫對應(yīng)于所 述原始的壓縮段的前Nu個CLU,并且更新關(guān)于釋放的CLU的空閑CLU 的所述列表;c) 如果<formula>see original document page 5</formula>則用對應(yīng)于所述更新的壓縮段的CLU蓋寫對 應(yīng)于所述原始的壓縮段的所有CLU,并且將對應(yīng)于所述更新的壓縮段的其 余CLU寫入包含在空閑CLU的所述列表中的所述CLU,其中JV/是在所 述列表中CLU的數(shù)量;d) 如果<formula>see original document page 5</formula>OIu,則用對應(yīng)于所述更新的壓縮段的CLU蓋寫對應(yīng)于 所述原始的壓縮段的所有CLU,將對應(yīng)于所述更新的壓縮段的所述CLU 寫入包含在空閑CLU的所述列表中的所述CLU,并且將對應(yīng)于所述更新 的壓縮l殳的其余CLU連續(xù)地寫入下一個空閑存儲位置。
21. 如權(quán)利要求19所述的方法,其進一步包括a) 在斷開所述存儲邏輯單元以前檢查空閑CLU的所述列表;b) 如果所述列表不是空的,則在包括在所述壓縮段內(nèi)的CLU中限定 具有最高存儲位置指針的CLU (第一個CLU);c )促進將所述壓縮數(shù)據(jù)從所述第一個CLU移動到具有較低存儲位置 指針的空閑CLU (第二個CLU);d) 將所述笫二個CLU分配給有關(guān)的壓縮段并且將所述第一個CLU 分配給空閑CLU的所述列表;e) 重復(fù)步驟b) -d)直到包括在壓縮段內(nèi)的所有CLU的所述存儲位 置指針低于包括在空閑CLU的所述列表中的任一個CLU的指針;f) 更新所述段表。
22. 為了用在塊;f莫式訪問存儲協(xié)議上, 一種讀取在至少一個存儲邏輯 單元中儲存為壓縮數(shù)據(jù)的原始數(shù)據(jù)的方法,其中所述壓縮數(shù)據(jù)被壓縮到對 應(yīng)于神皮虛擬地容納在虛擬邏輯單元中的原始數(shù)據(jù)(蔟)的固定大小部分的 一個或更多壓縮^:,所述方法包括a)確定待讀取的第一簇;b) 確定相應(yīng)的壓縮段的序號;c) 促進恢復(fù)對應(yīng)于所述簇的所述數(shù)據(jù)。
23. 如權(quán)利要求22所述的方法,其中所述壓縮段被分成固定大小的壓縮邏輯單元(CLU),所述存儲邏輯單元包括保存關(guān)于對應(yīng)于所述壓縮段的CLU以及其存儲位置的信息的段表,并且待讀取的所述數(shù)據(jù)的所述存儲位置通過參考所述段表限定。
24. 如權(quán)利要求22所述的方法,其進一步包括如果待讀取的數(shù)據(jù)范圍超出所恢復(fù)的相應(yīng)蔟的大小,則對具有遞增了l的序號的接下來的壓縮段重復(fù)步驟b)和c),直到待讀取的所有數(shù)據(jù)被恢復(fù)。
25. 為了用在塊才莫式訪問存儲協(xié)議上, 一種在給定的范圍將數(shù)據(jù)寫入在至少一個存儲邏輯單元中儲存為壓縮數(shù)據(jù)的數(shù)據(jù)的方法,其中所述壓縮數(shù)據(jù)被壓縮坐在對應(yīng)于被虛擬地容納在虛擬邏輯單元中的原始數(shù)據(jù)(簇)的固定大小的部分的一個或更多壓縮段,所述方法包括a) 確定待更新的笫一簇,從而組成所述原始簇;b) 確定相應(yīng)的原始壓縮段的序號;c) 促進恢復(fù)對應(yīng)于所述原始簇的數(shù)據(jù);d) 計算在所述簇內(nèi)的更新數(shù)據(jù)的偏移并且促進在所述給定的數(shù)據(jù)范圍的更新;e) 將所述更新的簇壓縮至更新的壓縮段中;f) 促進用更新的壓縮段蓋寫所述原始的壓縮段。
26. 如權(quán)利要求25所述的方法,其中所述壓縮段被分成固定大小的壓縮邏輯單元(CLU),所述存儲邏輯單元包括保存關(guān)于對應(yīng)于所述壓縮段的CLU以及其存儲位置的信息的段表,待讀取的所述數(shù)據(jù)的所述存儲位置通過參考所述段表被限定,且所述段表在步驟f)之后被更新。
27. 如權(quán)利要求25所述的方法,其進一步包括如果待寫的數(shù)據(jù)范圍超出所恢復(fù)的相應(yīng)簇的大小,則對具有遞增了l的序號的接下來的壓縮段 重復(fù)步驟b)至f),直到所有需要的數(shù)據(jù)被寫入。
28. 如權(quán)利要求25所述的方法,其進一步包括處理在寫入數(shù)據(jù)期間 釋放的空閑CLU的列表,所述列表被處理直到所述存儲邏輯單元斷開。
29. 如權(quán)利要求28所述的方法,其進一步包括比較所述原始段所需 要的CLU的數(shù)量W。與所述更新的壓縮段所需要的數(shù)量JV ,并且促進下列 項之一a) 如果N。=Nu,則用對應(yīng)于所述更新的壓縮段的CLU蓋寫所有對應(yīng) 于所述原始的壓縮段的CLU;b) 如果No>Nu,則用對應(yīng)于所述更新的壓縮段的CLU蓋寫對應(yīng)于所 述原始的壓縮段的前Nu個CLU,并且更新關(guān)于釋放的CLU的空閑CLU 的所述列表;c) 如杲N0<Nu<N。+Nf,則用對應(yīng)于所述更新的壓縮段的CLU蓋寫所 有對應(yīng)于所述原始的壓縮萃殳的CLU,并且將對應(yīng)于所述更新的壓縮段的其 余CLU寫入包含在空閑CLU的所述列表中的所述CLU,其中7V/是在所 述列表中CLU的數(shù)量;d) 如果N。+Nf<Nu,則用對應(yīng)于所述更新的壓縮段的CLU蓋寫所有對 應(yīng)于所述原始的壓縮段的CLU,將對應(yīng)于所述更新的壓縮段的所述CLU 寫入包含在空閑CLU的所述列表中的所述CLU,并且將對應(yīng)于所述更新 的壓縮段的其余CLU連續(xù)地寫入下一個空閑存儲位置。
30. 如權(quán)利要求28所述的方法,其進一步包括a) 在斷開所述存儲邏輯單元以前檢查空閑CLU的所述列表;b) 如果所述列表不是空的,則在包括在所述壓縮段內(nèi)的CLU中限定 具有最高存儲位置指針的CLU (第一個CLU);c) 促進將所迷壓縮數(shù)據(jù)從所述第一個QLU移動到具有較低存儲位置 指針的空閑CLU (第二個CLU);d) 將所述第二個CLU分配給有關(guān)的壓縮段并且將所述第一個CLU 分配給空閑CLU的所述列表;e) 重復(fù)步驟b) -d)直到包括在壓縮段內(nèi)的所有CLU的所述存儲位置指針低于包括在空閑CLU的所述列表中的任一個CLU的指針; f)更新所述段表。
31. 如權(quán)利要求l、 22、 25中任一項所述的方法,其中所述塊模式訪 問存儲協(xié)議從包括SCSI、光纖通道、FCIP、 iFCP、 iSCSI的組中選擇。
32. —種在存儲網(wǎng)絡(luò)中可操作的、配置為執(zhí)行權(quán)利要求l、 22、 25中 任一項的所述方法步驟的通信設(shè)備。
33. —種可用至少一個塊模式訪問存儲協(xié)議操作的、且配置為執(zhí)行權(quán) 利要求l、 22、 25中任一項的所述方法步驟的存儲設(shè)備。
34. 為了用在塊模式訪問存儲協(xié)議上, 一種壓縮用于存儲在至少一個 存儲邏輯單元中的數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括a )用于關(guān)于至少 一個存儲邏輯單元產(chǎn)生可由所述塊模式訪問協(xié)議訪問 并配置成虛擬地容納原始數(shù)據(jù)的相應(yīng)的虛擬邏輯單元的裝置,其中所述虛 擬邏輯單元的大小對應(yīng)于正被壓縮的原始數(shù)據(jù)的估計的大小,實質(zhì)上等于 所述邏輯單元的大?。籦)用于將所述虛擬邏輯單元分割成一個或更多虛擬存儲部分(簇) 的裝置;c )用于壓縮容納在簇內(nèi)的所述原始數(shù)據(jù)并且從而產(chǎn)生要保存在所述存 儲邏輯單元內(nèi)的相應(yīng)壓縮段中的壓縮數(shù)據(jù)的裝置;d)用于促進儲存在所述壓縮段內(nèi)的所述壓縮數(shù)據(jù)和其在所述虛擬邏輯單元的虛擬容納之間的映射的裝置。
35. 如權(quán)利要求34所述的系統(tǒng),其組成在存儲網(wǎng)絡(luò)中可操作的通信 設(shè)備的一部分。
36. 如權(quán)利要求34所述的系統(tǒng),其組成可用至少一個塊模式訪問存 儲協(xié)議操作的存儲設(shè)備的 一部分。
37. 為了用在塊模式訪問存儲協(xié)議上, 一種由機器可讀的程序存儲設(shè) 備,所述程序存儲設(shè)備可觸知地包括由機器可執(zhí)行的指令程序,以執(zhí)行產(chǎn) 生用于存儲在至少一個存儲邏輯單元中的壓縮數(shù)據(jù)的方法步驟,所述方法包括a )關(guān)于至少 一個存儲邏輯單元產(chǎn)生可由所迷塊才莫式訪問協(xié)議訪問并配 置成虛擬地容納原始數(shù)據(jù)的相應(yīng)的虛擬邏輯單元,其中所述虛擬邏輯單元 的大小對應(yīng)于正被壓縮的估計的原始數(shù)據(jù)的大小,實質(zhì)上等于所述邏輯單 元的大小;b) 將所述虛擬邏輯單元分割成一個或更多虛擬存儲部分(簇);c) 壓縮容納在簇內(nèi)的所述原始數(shù)據(jù)并且從而產(chǎn)生要儲存在所述存儲邏 輯單元內(nèi)的相應(yīng)壓縮段內(nèi)的壓縮數(shù)據(jù);d) 促進儲存在所述壓縮段內(nèi)的所述壓縮數(shù)據(jù)和其在所述虛擬邏輯單 元的虛擬容納之間的映射。
38.為了用在塊模式訪問存儲協(xié)議上, 一種包括計算機可用媒介的計 算機程序產(chǎn)品,所述計算機可用媒介具有包含在其內(nèi)的產(chǎn)生用于存儲在至 少一個存儲邏輯單元中的壓縮數(shù)據(jù)的計算機可讀程序代碼,所述計算機程 序產(chǎn)品包括a) 用于使計算機關(guān)于至少一個存儲邏輯單元產(chǎn)生可由所述塊模式訪問 存儲協(xié)議訪問并且配置成虛擬地容納原始數(shù)據(jù)的相應(yīng)的虛擬邏輯單元的 計算機可讀程序代碼,其中所述虛擬邏輯單元的大小對應(yīng)于正被壓縮的估 計的原始數(shù)據(jù)的大小,實質(zhì)上等于所述存儲邏輯單元的大小;b) 用于使計算機將所述虛擬邏輯單元分割成一個或更多虛擬存儲部 分(簇)的計算機可讀程序代碼;c )用于使計算機壓縮容納在簇內(nèi)的所述原始數(shù)據(jù)并且從而產(chǎn)生要儲存在所述存儲邏輯單元內(nèi)的相應(yīng)壓縮^a中的壓縮數(shù)據(jù)的計算^^可讀程序代碼;d)用于使計算機促進儲存在所述壓縮段中的所述壓縮數(shù)據(jù)和其在所 述虛擬邏輯單元的虛擬容納之間映射的計算機可讀程序代碼。
全文摘要
一種用于產(chǎn)生、讀取和寫入壓縮數(shù)據(jù)以供塊模式訪問存儲器使用的方法和系統(tǒng)。壓縮數(shù)據(jù)被壓縮至多個壓縮單元中并且儲存在存儲邏輯單元(LU)中。一個或更多相應(yīng)的壓縮單元可以在不需要恢復(fù)整個存儲邏輯單元的情況下被讀取和/或更新,同時維持LU的去碎片結(jié)構(gòu)。
文檔編號H03M7/30GK101346883SQ200680049157
公開日2009年1月14日 申請日期2006年10月11日 優(yōu)先權(quán)日2005年10月26日
發(fā)明者喬納森·阿米特, 納達夫·克戴姆, 諾赤·阿米特 申請人:斯多維茲有限公司