一種自適應數據壓縮和解壓縮的方法和系統及存儲裝置製造方法
2023-07-16 02:58:36 1
一種自適應數據壓縮和解壓縮的方法和系統及存儲裝置製造方法
【專利摘要】一種自適應數據壓縮和解壓縮的方法和系統及存儲裝置,該方法的步驟為:(1)壓縮:根據存儲系統設定的壓縮率目標、存儲控制器的負載情況為需要壓縮的數據段自適應選擇對應的數據壓縮算法、參數進行數據壓縮;(2)解壓縮:獲取需要解壓縮數據段的壓縮算法、參數,並使用與所獲得的壓縮算法、參數對應的解壓縮算法為相應的數據段解壓縮。該系統為用來實施上述方法的系統。該存儲裝置包括存儲控制器和存儲介質,所述存儲控制器包括上述自適應數據壓縮和解壓縮系統。本發明能夠根據存儲系統預設壓縮率、存儲控制器負載情況,自適應選擇對應壓縮算法和壓縮參數,既能滿足存儲系統的壓縮率要求又能減少存儲控制器負載,從而大大提高存儲系統性能。
【專利說明】一種自適應數據壓縮和解壓縮的方法和系統及存儲裝置
【技術領域】
[0001]本發明主要涉及到數據存儲領域,特指一種存儲系統的自適應數據壓縮和解壓縮方法和系統及存儲裝置。
【背景技術】
[0002]隨著數據量的爆發式增長,存儲系統中存儲的數據量越來越多,根據IDC的統計,2012年全球數據總量達到上萬億GB,超過95%的數據為非結構化數據;在許多以數據為核心的計算中心裡,每天新產生的數據量已經達到100GB甚至1TB。與此同時,新型存儲介質及其技術,如快閃記憶體(flash memory)、相變存儲(phase change memory)等,也在不斷發展。現有的很多計算機系統均利用數據壓縮技術對存儲數據進行壓縮,有效地降低系統的存儲成本,並能潛在減少對存儲介質的寫操作,提高存儲介質的壽命和系統的訪問性能。
[0003]從壓縮技術的層次區分,數據壓縮技術的應用主要分為兩種:基於傳輸的數據壓縮和基於存儲的數據壓縮。
[0004]基於傳輸的數據壓縮技術主要是發送端在進行數據傳輸之前,將數據分段並進行壓縮,接收端收到數據之後,進行解壓縮,並傳遞給用戶。由於解壓縮後的數據不要求被存儲在永久介質中,在傳輸結束之後,數據的壓縮元數據即可丟棄。由於基於傳輸的壓縮技術不考慮數據在永久存儲介質中的索引,因此,難以應用於存儲系統中。
[0005]基於存儲的數據壓縮技術通常實現在存儲系統內。傳統的基於存儲的數據壓縮技術方法為存儲系統在接收到寫入的數據流時,將該數據流分割為多個數據段,然後對每個數據段進行壓縮,最終數據以數據壓縮段的形式存儲在存儲設備或者存儲介質中。基於存儲的數據壓縮技術改變了存儲數據段的大小,用戶讀取數據的地址也因此被改變,為了建立原始數據到壓縮後數據的地址映射,基於存儲的數據壓縮技術為數據壓縮段建立元數據索引結構。當一段數據被讀取時,存儲系統通常先訪問該元數據索引結構,將數據的地址映射到壓縮數據的地址。
[0006]儘管已有的一些存儲系統具有一定程度的壓縮能力,但是這些已有技術通常存在以下問題:傳統的基於存儲的數據壓縮技術通常只能在存儲系統運行過程中固定地使用一種壓縮算法、參數,無法做到在線變更其壓縮算法、參數;然而壓縮算法的壓縮率(本文中所提到的壓縮率均為數據壓縮後的物理大小與壓縮前的物理大小的比值)和存儲控制器負載需求成反比關係,即在降低壓縮率的同時會很大程度提高存儲控制器的負載,這樣講造成傳統的基於存儲的數據壓縮技術無法兼顧提高壓縮率和減輕存儲控制器負載兩個指標。當採用壓縮率高的壓縮算法時,不斷的數據壓縮工作會讓存儲系統負載超荷,當採用低壓縮率的壓縮算法時,閒置的系統負載能力又無法提高數據的壓縮率。
【發明內容】
[0007]本發明要解決的技術問題就在於:針對現有技術存在的技術問題,本發明提供一種能夠根據存儲系統預設壓縮率、存儲控制器負載情況,自適應選擇對應壓縮算法和壓縮參數,既能滿足存儲系統的壓縮率要求又能減少存儲控制器負載,從而提高存儲系統性能的自適應數據壓縮和解壓縮方法和系統及存儲裝置。
[0008]為了解決上述技術問題,本發明採用以下技術方案:
一種自適應數據壓縮和解壓縮的方法,其步驟為:
(1)壓縮:根據存儲系統設定的壓縮率目標、存儲控制器的負載情況為需要壓縮的數據段自適應選擇對應的數據壓縮算法、參數進行數據壓縮;將壓縮後的數據段和壓縮算法、參數一併寫入存儲設備或者存儲介質中;
(2)解壓縮:獲取需要解壓縮數據段的壓縮算法、參數,並使用與所獲得的壓縮算法、參數對應的解壓縮算法為相應的數據段解壓縮。
[0009]作為本發明的進一步改進:
所述步驟(I)中進行壓縮的具體流程為:
(1.1)存儲控制器為每個已存儲數據段或已存儲數據壓縮段與每個卷或文件的邏輯數據段之間建立映射關係,為所有映射關係建立索引結構,並將該索引結構寫入存儲設備或存儲介質中;
(1.2)存儲控制器接收主機端的寫入數據流,將該寫入數據流分成一個或者多個寫入數據段;所述存儲控制器根據存儲系統設定的壓縮率目標、存儲控制器當前的負載情況為每一個寫入數據段自適應選擇對應的壓縮算法、參數進行數據壓縮,產生壓縮數據段;
(1.3)將所述壓縮數據段寫入存儲設備或存儲介質,並更新所述索引結構,將該索引結構的更新部分寫入存儲設備或存儲介質中。
[0010]所述步驟(1.1)的索引結構中每一個所述數據段或者所述數據壓縮段與一個索引段一一映射;每一個所述索引段表示為:版本、邏輯起始地址、邏輯長度、物理起始地址、物理長度和壓縮類型;其中,所述邏輯起始地址表示所述數據段或者所述數據壓縮段在邏輯卷或文件中的邏輯起始地址,所述邏輯長度則表示該數據段或者數據壓縮段非壓縮狀態下的原始數據的長度;所述物理地址表示所述數據段或者數據壓縮段存儲在存儲設備或者存儲介質上的物理起始地址,所述物理長度表示該數據段或者數據壓縮段在存儲設備或者存儲介質上所佔據的長度大小;所述壓縮類型表示將一個數據段壓縮成為一個所述數據壓縮段時,使用的壓縮算法以及參數;所述版本是記錄所述索引段寫入的版本號,該版本號在每次所述索弓I段被更新時依次遞增。
[0011 ] 所述索引結構採用平衡樹索引結構或者哈希表索引結構。
[0012]所述步驟(1.2)中,將寫入數據流分成一個或者多個寫入數據段的分段方法採用固定劃分方法,即從所述寫入的數據流的開始位置,以固定大小將所述寫入的數據流分割為具有固定大小的所述寫入數據段,如果所述寫入數據流小於該固定大小,則整個所述寫入的數據流作為一個所述數據段。
[0013]所述步驟(1.2)中為每一個寫入數據段自適應選擇對應的具體壓縮算法、參數進行數據壓縮的方法具體包括以下方法(1.2.1)?(1.2.3)中的一個或多個:
(1.2.1)根據壓縮率目標自適應選擇對應的具體壓縮算法、參數進行數據壓縮:存儲控制器從默認壓縮算法、參數開始,逐個使用每個存儲控制器中可選的壓縮算法、參數對所述寫入數據段進行數據壓縮,直到使用其中一種壓縮算法、參數獲得的壓縮數據段的壓縮率小於壓縮率目標,則將該壓縮算法、參數設置為默認壓縮算法、參數,該壓縮數據段為步驟(1.2)結果;如果在存儲控制器中的全部壓縮算法、參數中,都不存在一種壓縮算法、參數滿足壓縮率目標要求,則選取其中壓縮率最低的壓縮算法、參數為默認壓縮算法、參數,使用該壓縮算法、參數產生的壓縮數據段為步驟(1.2)結果;
(1.2.2)根據存儲控制器負載狀況自適應選擇對應的具體壓縮算法、參數進行數據壓縮:將所有存儲控制器中可選的壓縮算法、參數按照存儲控制器負載需求分組,根據當前存儲控制器負載情況從對應組別中隨機選取一個壓縮算法、參數對所述寫入數據段進行壓縮,產生的數據壓縮段為步驟(1.2)結果;
(1.2.3)根據壓縮率目標和存儲控制器負載狀況自適應選擇對應的具體壓縮算法、參數進行數據壓縮:所有存儲控制器中可選的壓縮算法、參數按照存儲控制器負載需求分組,根據當前存儲控制器負載情況從對應組別中逐個選取每個組內可選的壓縮算法、參數對所述寫入數據段進行數據壓縮,直到使用其中一種壓縮算法、參數獲得的壓縮數據段的壓縮率小於壓縮率目標,該壓縮數據段為步驟(1.2)結果;如果在該組別內的全部壓縮算法、參數中,都不存在一種壓縮算法、參數滿足壓縮率目標要求,則選取其中壓縮率最低的壓縮算法、參數,使用該壓縮算法、參數產生的壓縮數據段為步驟(1.2)結果。
[0014]所述步驟(2)中進行解壓縮的具體流程為:
(2.1)接收所述主機端的讀請求;
(2.2)查詢存儲控制器中的索引結構,獲得所述讀請求對應的索引段;
(2.3)檢查所述索引段中的壓縮類型,如果壓縮類型表示該數據未經過壓縮,則進入步驟(2.4),否則,進入步驟(2.5);
(2.4)讀取所述索引段中的物理起始地址和物理長度表示的存儲設備或存儲介質上的數據,並將該數據返回給所述主機端,結束解壓縮操作;
(2.5)讀取所述索引段中的物理起始地址和物理長度表示的存儲設備或存儲介質上的數據,並根據所述索引段中的壓縮類型表示的壓縮算法、參數,用該壓縮算法、參數對應的解壓縮方法將該數據解壓縮,返回給所述主機端,結束解壓縮操作。
[0015]在對存儲設備或者存儲介質寫數據時均採用順序寫方法。
[0016]本發明進一步提供一種用來實施上述自適應數據壓縮和解壓縮方法的系統,包括:
壓縮單元,用來根據存儲系統設定的壓縮率目標、存儲控制器的負載情況為需要壓縮的數據段自適應選擇對應的數據壓縮算法、參數進行數據壓縮;將壓縮後的數據段和壓縮算法、參數一併寫入存儲設備或者存儲介質中;
解壓縮單元,用來獲取需要解壓縮數據段的壓縮算法、參數,並使用與所獲得的壓縮算法、參數對應的解壓縮算法為相應的數據段解壓縮。
[0017]本發明進一步提供一種存儲裝置,包括存儲控制器和存儲介質,所述存儲控制器包括上述自適應數據壓縮和解壓縮系統。
[0018]與現有技術相比,本發明的優點在於:
1.本發明提供的自適應數據壓縮和解壓縮方法能夠根據存儲系統預設壓縮率、存儲控制器負載情況,自適應選擇對應壓縮算法和壓縮參數,既能滿足存儲系統的壓縮率要求又能減少存儲控制器負載,從而極大優化了存儲系統性能。
[0019]2.本發明提出的自適應數據壓縮和解壓縮的方法對存儲設備或者存儲介質寫數據時均採用順序寫方法,減少了對存儲設備或者存儲介質的隨機寫操作,提高了存儲系統的讀寫訪問性能及使用壽命。
[0020]3.本發明提出的自適應數據壓縮和解壓縮的方法利用當前CPU的多核和多線程特點,實現並發數據壓縮操作,提高了存儲系統系能。
【專利附圖】
【附圖說明】
[0021]圖1為一種使用了採用本發明方法後的存儲系統的原理示意圖。
[0022]圖2為本發明進行自適應數據壓縮方法的流程示意圖。
[0023]圖3為本發明在具體實施例中所採用的一種索引結構的原理示意圖。
[0024]圖4為本發明在具體實施例中存儲設備上的空間管理示意圖。
[0025]圖5為採用本發明的方法後進行讀操作時的流程示意圖。
【具體實施方式】
[0026]以下將結合說明書附圖和具體實施例對本發明做進一步詳細說明。
[0027]本發明的自適應數據壓縮和解壓縮的方法,其步驟為:
(1)壓縮:根據存儲系統設定的壓縮率目標、存儲控制器的負載情況為需要壓縮的數據段自適應選擇對應的數據壓縮算法、參數進行數據壓縮;將壓縮後的數據段和壓縮算法、參數一併寫入存儲設備或者存儲介質中;
(2)解壓縮:獲取需要解壓縮數據段的壓縮算法、參數,並使用與所獲得的壓縮算法、參數對應的解壓縮算法為相應的數據段解壓縮。
[0028]如圖1所示,為本發明在一個具體應用實例中實施後的存儲系統結構原理示意圖,以下將以該實例描述本發明的具體實現原理。其中,主機端101是發送讀寫操作的源主機。存儲系統102使用了本發明的自適應數據壓縮和解壓縮方法,該存儲系統包括存儲控制器群104、存儲設備或存儲介質群105。其中,存儲控制器群104中可以包括I個或多個存儲控制器,存儲設備或者存儲介質群105可以包括例如硬碟、磁帶驅動器、半導體存儲器等單個存儲設備或存儲介質,也可以包括冗餘陣列系統(例如獨立磁碟冗餘陣列RAID)等多個存儲設備組成的裝置或者網絡附屬連接存儲系統等網絡存儲裝置。主機端101與存儲系統102之間通過網絡103連接,網絡103可以為區域網、廣域網、無線網絡、IB網絡、光纖網絡和乙太網絡或者實現網絡通信的其他任何網絡。通過網絡103相互連接之後,主機端101與存儲系統102之間互發消息,完成數據讀寫的操作。
[0029]如圖2所示,為本發明的自適應數據壓縮和解壓縮方法的流程示意圖。
[0030]自適應數據壓縮過程包括如下步驟:
2.1存儲控制器為每個已存儲數據段或已存儲數據壓縮段與每個卷或文件的邏輯數據段之間建立映射關係,為所有映射關係建立索引結構,並將該索引結構寫入存儲設備或存儲介質中;
2.2存儲控制器接收主機端101的寫入數據流,將該寫入數據流分成一個或者多個寫入數據段,該存儲控制器根據存儲系統設定的壓縮率目標、當前的負載情況,為每一個寫入數據段自適應選擇對應的壓縮算法、參數進行數據壓縮,產生壓縮數據段;
2.3將壓縮數據段寫入存儲設備或存儲介質,更新索引結構,將該索引結構的更新部分寫入存儲設備或存儲介質中。
[0031]如圖3所示,為一種應用實例中的索引結構,以此為例,自適應數據壓縮的過程具體包括以下幾個步驟:
2.1)存儲系統初始化步驟:
首先,存儲控制器為每個已存儲數據段或已存儲數據壓縮段與每個卷或文件的邏輯數據段之間建立映射關係。如圖3所示,存儲控制器為邏輯卷201中的第一邏輯數據段204、第二邏輯數據段205、第三邏輯數據段206、第四邏輯數據段207分別和存儲設備208中的第一數據壓縮段210、第二數據壓縮段211、第三數據壓縮段212、第四數據段213建立映射關係。其中,存儲在存儲設備208中的數據壓縮段和數據段大小為該存儲設備最小訪問單元209的整數倍。
[0032]然後,為上述所有映射關係建立索引結構。在索引結構中,每一個數據段或者數據壓縮段與一個索引段一一映射。每一個索引段表示為〈版本、邏輯起始地址、邏輯長度、物理起始地址、物理長度和壓縮類型〉,其中,邏輯起始地址表示數據段或者數據壓縮段在邏輯卷或文件中的邏輯起始地址,邏輯長度則表示該數據段或者數據壓縮段非壓縮狀態下的原始數據的長度;物理地址表示數據段或者數據壓縮段存儲在存儲設備或者存儲介質上的物理起始地址,物理長度表示該數據段或者數據壓縮段在存儲設備或者存儲介質上所佔據的長度大小;壓縮類型表示將一個數據段壓縮成為一個數據壓縮段時,使用的壓縮算法以及參數;版本是記錄索引段寫入的版本號,該版本號在每次索引段被更新時依次遞增。
[0033]上述索引結構可以根據實際需要採用平衡樹索引結構或者哈希表索引結構。如為平衡樹索引結構,則以已存儲數據段在卷或文件中的邏輯起始地址為鍵值,葉子節點中包含多個索引段。如為哈希表索引結構,則每個索引對中,鍵值為已存儲數據段在卷或文件中的邏輯起始地址,值為索引段。
[0034]如圖4所示,為本實施例中所採用的索引結構的示意圖。在本實施例中,索引結構採用的是平衡樹索引結構,每一個卷或文件都有一個平衡樹索引結構,用於查詢該卷或文件的一個已存儲的邏輯數據段在存儲設備上的物理地址。本實例的平衡樹是一個B+樹結構。
[0035]關鍵字301為數據段的邏輯起始地址。地址指針302與關鍵字301對應,保存了一個關鍵字對應的子節點的物理位置。根節點303、中間節點304存儲了多個關鍵字和地址指針。該B+樹的葉節點中保存著多個索引段,如葉節點305包括索引段306等。在本實施例中,每個索引段表示為〈版本、邏輯起始地址、邏輯長度、物理起始地址、物理長度和壓縮類型〉,一個索引段標示了存儲設備上一段連續的物理地址範圍,而且還表示了卷或者文件上的一段連續的邏輯地址範圍,因此,索引段描述了一段連續的邏輯地址範圍和一段連續的物理地址範圍之間的映射關係。
[0036]最後,將上述索引結構寫入存儲設備中。如圖3所示,索引結構記錄了所有卷或文件的邏輯數據段和所有已存儲數據段或者已存儲數據壓縮段的映射關係。
[0037]在本實例中,將索引結構寫入存儲設備,採用順序寫的方式,以充分開發存儲設備的順序寫訪問性能。
[0038]在本發明提供的數據自適應數據壓縮和解壓縮方法中,數據壓縮過程的步驟2.1)為存儲系統初始化步驟,在使用本發明提供的數據自適應數據壓縮和解壓縮方法的存儲系統中,只需要執行一遍該步驟,即可使該存儲系統具備使用本發明提供的數據自適應數據壓縮和解壓縮的前提條件。當該存儲系統的存儲設備更換時,該步驟需要重新執行一次。
[0039]2.2)產生壓縮數據段:
首先,存儲控制器接收主機端101的寫入數據流,將該寫入數據流分成一個或者多個寫入數據段。
[0040]將該寫入數據流分成一個或者多個寫入數據段的分段方法可採用固定劃分方法,即從寫入的數據流的開始位置,以固定大小(如64KB)將寫入的數據流分割為具有固定大小的寫入數據段;如果寫入數據流小於該固定大小,則整個寫入的數據流作為一個數據段。在分段方法中,劃分的寫入數據段的大小下限為存儲設備或存儲介質的存儲單元大小。比如,對於快閃記憶體介質來說,存儲單元大小的下限為一個快閃記憶體頁大小(通常為4KB-256KB)。
[0041]如圖3所示,寫入數據流217被存儲控制器分為第一寫入數據段214、第二寫入數據段215、第三寫入數據段216,每個寫入數據段大小為5個存儲設備208的存儲單元大小,如數據塊203所示。寫入數據段流在分出第一寫入數據段214和第二寫入數據段215後,其大小小於5個存儲單元大小,則其剩餘部分直接作為第三寫入數據段216。
[0042]然後,該存儲控制器根據存儲系統設定的壓縮率目標、當前的負載情況,為每一個寫入數據段自適應選擇對應的壓縮算法、參數進行數據壓縮,產生壓縮數據段。其中,為每一個寫入數據段自適應選擇對應的具體壓縮算法、參數進行數據壓縮的方法具體包括以下方法中的一個或幾個:
1、根據壓縮率目標自適應選擇對應的具體壓縮算法、參數進行數據壓縮:存儲控制器從默認壓縮算法、參數開始,逐個使用每個存儲控制器中可選的壓縮算法、參數對所述寫入數據段進行數據壓縮,直到使用其中一種壓縮算法、參數獲得的壓縮數據段的壓縮率小於壓縮率目標,則將該壓縮算法、參數設置為默認壓縮算法、參數,該壓縮數據段為步驟2.2結果;如果在存儲控制器中的全部壓縮算法、參數中,都不存在一種壓縮算法、參數滿足壓縮率目標要求,則選取其中壓縮率最小的壓縮算法、參數為默認壓縮算法、參數,使用該壓縮算法、參數產生的壓縮數據段為步驟2.2)結果;
2、根據存儲控制器負載狀況自適應選擇對應的具體壓縮算法、參數進行數據壓縮:將所有存儲控制器中可選的壓縮算法、參數按照存儲控制器負載需求分組,根據當前存儲控制器負載情況從對應組別中隨機選取一個壓縮算法、參數對所述寫入數據段進行壓縮,產生的數據壓縮段為步驟2.2)結果;
3、根據壓縮率目標和存儲控制器負載狀況自適應選擇對應的具體壓縮算法、參數進行數據壓縮:所有存儲控制器中可選的壓縮算法、參數按照存儲控制器負載需求分組,根據當前存儲控制器負載情況從對應組別中逐個選取每個組內可選的壓縮算法、參數對所述寫入數據段進行數據壓縮,直到使用其中一種壓縮算法、參數獲得的壓縮數據段的壓縮率小於壓縮率目標,該壓縮數據段為步驟2.2)結果;如果在該組別內的全部壓縮算法、參數中,都不存在一種壓縮算法、參數滿足壓縮率目標要求,則選取其中壓縮率最低的壓縮算法、參數,使用該壓縮算法、參數產生的壓縮數據段為步驟2.2)結果。
[0043]上述具體壓縮算法包括任意可減小所述數據段大小的壓縮算法,如LZ算法、用於Pkzip和gzip的DEFLATE、PNG壓縮算法、LZW、LZR等任何針對特定或通用數據類型設計的壓縮算法。對同一種壓縮算法選用不同的壓縮參數也視為不同的所述具體壓縮算法。比如,gzip能夠通過調整壓縮參數產生gzip-Ι和gzip-9 (其中gzip-Ι通常比gzip-9的壓縮速率更快,但壓縮率卻相對較低)兩種不同的所述具體壓縮算法。
[0044]在本實例中,採用根據壓縮率目標和存儲控制器負載狀況自適應選擇對應的具體壓縮算法、參數進行數據壓縮,設定的壓縮目標為50%。如圖3所示,存儲控制器根據當前負載情況和壓縮目標,在已按負載需求分好的壓縮算法組別中,選取了 gzip壓縮算法並根據參數選擇了具體的壓縮算法gzip-9,將第一寫入數據段214、第二寫入數據段215、第三寫入數據段216壓縮成為第一數據壓縮段221、第二數據壓縮段222、第三數據壓縮段223,其中第一數據壓縮段221的壓縮率為20%,第二數據壓縮段222的壓縮率為40%,達到了壓縮率目標,直接成為本步驟所要求的數據壓縮段。
[0045]而第三數據壓縮段223壓縮率為100%,並沒有滿足要求,於是存儲控制器更換壓縮算法繼續對第三寫入數據段216進行壓縮。最終,在所述壓縮算法組別中,所有壓縮算法、參數對第三數據段216壓縮的結果均是壓縮率為100%,則採取壓縮率最小的gzip-9為壓縮算法、參數對其進行壓縮,第三數據壓縮段223為本步驟所要求的數據壓縮段。
[0046]2.3)寫入壓縮數據段並更新索引結構:
將壓縮數據段寫入存儲設備或存儲介質,更新索引結構,將該索引結構的更新部分寫入存儲設備或存儲介質中。
[0047]如圖3所示,就是將第一數據壓縮段221、第二數據壓縮段222、第三數據壓縮段223寫入存儲設備208中,更新索引結構,向索引結構中插入新的索引段。
[0048]如圖5所示,為上述實例中自適應數據壓縮過程的具體流程,包括如下步驟:
3.1接收所述主機端101的讀請求;
3.2查詢存儲控制器中的索引結構,獲得讀請求對應的索引段;
3.3檢查索引段中的壓縮類型,如果壓縮類型表示該數據未經過壓縮,則進入步驟
3.4,否則,進入步驟3.5 ;
3.4讀取索引段中的物理起始地址和物理長度表示的存儲設備或存儲介質上的數據,並將該數據返回給主機端101,結束解壓縮操作;
3.5讀取索引段中的物理起始地址和物理長度表示的存儲設備或存儲介質上的數據,並根據索引段中的壓縮類型表示的壓縮算法、參數,用該壓縮算法、參數對應的解壓縮方法將該數據解壓縮,返回給主機端101,結束解壓縮操作。
[0049]本實例中,自適應數據壓縮和解壓縮的方法利用了當前CPU的多核和多線程特點,實現並發數據壓縮操作,多個數據段被分給到多個不同的CPU計算線程,由不同的計算線程並發地執行數據壓縮操作。
[0050]本實例中,自適應數據壓縮和解壓縮的方法中對存儲設備或者存儲介質寫數據時均採用順序寫方法。
[0051]本發明進一步提供一種用來實施上述自適應數據壓縮和解壓縮方法的系統,它包括:
壓縮單元,用來根據存儲系統設定的壓縮率目標、存儲控制器的負載情況為需要壓縮的數據段自適應選擇對應的數據壓縮算法、參數進行數據壓縮;將壓縮後的數據段和壓縮算法、參數一併寫入存儲設備或者存儲介質中。
[0052]解壓縮單元,用來獲取需要解壓縮數據段的壓縮算法、參數,並使用與所獲得的壓縮算法、參數對應的解壓縮算法為相應的數據段解壓縮。
[0053]本發明進一步提供一種存儲裝置,包括存儲控制器和存儲介質,所述存儲控制器包括上述自適應數據壓縮和解壓縮系統。
[0054]以上僅是本發明的優選實施方式,本發明的保護範圍並不僅局限於上述實施例,凡屬於本發明思路下的技術方案均屬於本發明的保護範圍。應當指出,對於本【技術領域】的普通技術人員來說,在不脫離本發明原理前提下的若干改進和潤飾,應視為本發明的保護範圍。
【權利要求】
1.一種自適應數據壓縮和解壓縮的方法,其特徵在於,其步驟為: (1)壓縮:根據存儲系統設定的壓縮率目標、存儲控制器的負載情況為需要壓縮的數據段自適應選擇對應的數據壓縮算法、參數進行數據壓縮;將壓縮後的數據段和壓縮算法、參數一併寫入存儲設備或者存儲介質中; (2)解壓縮:獲取需要解壓縮數據段的壓縮算法、參數,並使用與所獲得的壓縮算法、參數對應的解壓縮算法為相應的數據段解壓縮。
2.根據權利要求1所述自適應數據壓縮和解壓縮的方法,其特徵在於,所述步驟(1)中進行壓縮的具體流程為: (1.1)存儲控制器為每個已存儲數據段或已存儲數據壓縮段與每個卷或文件的邏輯數據段之間建立映射關係,為所有映射關係建立索引結構,並將該索引結構寫入存儲設備或存儲介質中; (1.2)存儲控制器接收主機端的寫入數據流,將該寫入數據流分成一個或者多個寫入數據段;所述存儲控制器根據存儲系統設定的壓縮率目標、存儲控制器當前的負載情況為每一個寫入數據段自適應選擇對應的壓縮算法、參數進行數據壓縮,產生壓縮數據段; (1.3)將所述壓縮數據段寫入存儲設備或存儲介質,並更新所述索引結構,將該索引結構的更新部分寫入存儲設備或存儲介質中。
3.根據權利要求2所述自適應數據壓縮和解壓縮的方法,其特徵在於,所述步驟(1.1)的索引結構中每一個所述數據段或者所述數據壓縮段與一個索引段一一映射;每一個所述索引段表示為:版本、邏輯 起始地址、邏輯長度、物理起始地址、物理長度和壓縮類型;其中,所述邏輯起始地址表示所述數據段或者所述數據壓縮段在邏輯卷或文件中的邏輯起始地址,所述邏輯長度則表示該數據段或者數據壓縮段非壓縮狀態下的原始數據的長度;所述物理地址表示所述數據段或者數據壓縮段存儲在存儲設備或者存儲介質上的物理起始地址,所述物理長度表示該數據段或者數據壓縮段在存儲設備或者存儲介質上所佔據的長度大小;所述壓縮類型表示將一個數據段壓縮成為一個所述數據壓縮段時,使用的壓縮算法以及參數;所述版本是記錄所述索引段寫入的版本號,該版本號在每次所述索引段被更新時依次遞增。
4.根據權利要求3所述自適應數據壓縮和解壓縮的方法,其特徵在於,所述索引結構採用平衡樹索引結構或者哈希表索引結構。
5.根據權利要求2所述自適應數據壓縮和解壓縮的方法,其特徵在於,所述步驟(1.2)中,將寫入數據流分成一個或者多個寫入數據段的分段方法採用固定劃分方法,即從所述寫入的數據流的開始位置,以固定大小將所述寫入的數據流分割為具有固定大小的所述寫入數據段,如果所述寫入數據流小於該固定大小,則整個所述寫入的數據流作為一個所述數據段。
6.根據權利要求2所述自適應數據壓縮和解壓縮的方法,其特徵在於,所述步驟(1.2)中為每一個寫入數據段自適應選擇對應的具體壓縮算法、參數進行數據壓縮的方法具體包括以下方法(1.2.1)~(1.2.3)中的一個或多個: (1.2.1)根據壓縮率目標自適應選擇對應的具體壓縮算法、參數進行數據壓縮:存儲控制器從默認壓縮算法、參數開始,逐個使用每個存儲控制器中可選的壓縮算法、參數對所述寫入數據段進行數據壓縮,直到使用其中一種壓縮算法、參數獲得的壓縮數據段的壓縮率小於壓縮率目標,則將該壓縮算法、參數設置為默認壓縮算法、參數,該壓縮數據段為步驟(1.2)結果;如果在存儲控制器中的全部壓縮算法、參數中,都不存在一種壓縮算法、參數滿足壓縮率目標要求,則選取其中壓縮率最低的壓縮算法、參數為默認壓縮算法、參數,使用該壓縮算法、參數產生的壓縮數據段為步驟(1.2)結果; (1.2.2)根據存儲控制器負載狀況自適應選擇對應的具體壓縮算法、參數進行數據壓縮:將所有存儲控制器中可選的壓縮算法、參數按照存儲控制器負載需求分組,根據當前存儲控制器負載情況從對應組別中隨機選取一個壓縮算法、參數對所述寫入數據段進行壓縮,產生的數據壓縮段為步驟(1.2)結果; (1.2.3)根據壓縮率目標和存儲控制器負載狀況自適應選擇對應的具體壓縮算法、參數進行數據壓縮:所有存儲控制器中可選的壓縮算法、參數按照存儲控制器負載需求分組,根據當前存儲控制器負載情況從對應組別中逐個選取每個組內可選的壓縮算法、參數對所述寫入數據段進行數據壓縮,直到使用其中一種壓縮算法、參數獲得的壓縮數據段的壓縮率小於壓縮率目標,該壓縮數據段為步驟(1.2)結果;如果在該組別內的全部壓縮算法、參數中,都不存在一種壓縮算法、參數滿足壓縮率目標要求,則選取其中壓縮率最低的壓縮算法、參數,使用該壓縮算法、參數產生的壓縮數據段為步驟(1.2)結果。
7.根據權利要求3~6中任意一項所述自適應數據壓縮和解壓縮的方法,其特徵在於,所述步驟(2)中進行解壓縮的具體流程為: (2.1)接收所述主機端的讀請求; (2.2)查詢存儲控制器中的索引結構,獲得所述讀請求對應的索引段; (2.3)檢查所述索引段中的壓縮類型,如果壓縮類型表示該數據未經過壓縮,則進入步驟(2.4),否則,進入步驟(2.5); (2.4)讀取所述索引段中的物理起始地址和物理長度表示的存儲設備或存儲介質上的數據,並將該數據返回給所述主機端,結束解壓縮操作; (2.5)讀取所述索引段中的物理起始地址和物理長度表示的存儲設備或存儲介質上的數據,並根據所述索引段中的壓縮類型表示的壓縮算法、參數,用該壓縮算法、參數對應的解壓縮方法將該數據解壓縮,返回給所述主機端,結束解壓縮操作。
8.根據權利要求3~6中任意一項所述自適應數據壓縮和解壓縮的方法,其特徵在於,在對存儲設備或者存儲介質寫數據時均採用順序寫方法。
9.一種用來實施上述自適應數據壓縮和解壓縮方法的系統,其特徵在於,包括: 壓縮單元,用來根據存儲系統設定的壓縮率目標、存儲控制器的負載情況為需要壓縮的數據段自適應選擇對應的數據壓縮算法、參數進行數據壓縮;將壓縮後的數據段和壓縮算法、參數一併寫入存儲設備或者存儲介質中; 解壓縮單元,用來獲取需要解壓縮數據段的壓縮算法、參數,並使用與所獲得的壓縮算法、參數對應的解壓縮算法為相應的數據段解壓縮。
10.一種存儲裝置,包括存儲控制器和存儲介質,其特徵在於,所述存儲控制器包括權利要求9所述的自適應數據壓縮和解壓縮系統。
【文檔編號】H03M7/38GK103516369SQ201310246176
【公開日】2014年1月15日 申請日期:2013年6月20日 優先權日:2013年6月20日
【發明者】易樂天, 錢凱, 趙朕毅 申請人:易樂天, 錢凱, 趙朕毅