一種固態盤存儲系統的動態數據壓縮方法
【技術領域】
[0001]本發明涉及計算機存儲領域,尤其是涉及一種固態盤存儲系統的動態數據壓縮方法。
【背景技術】
[0002]作為一種主流的存儲介質,磁盤已經廣泛應用于個人電腦和企業級數據存儲等領域,但是其機械特性限制了其讀寫性能的快速提升,基于磁盤的存儲設備漸漸成為存儲系統的性能“墻”。目前,基于閃存的固態盤已成為磁盤的有力替代品,并且得到了學術界和工業界的廣泛關注。和磁盤相比,基于閃存的固態盤是一種半導體存儲介質,沒有機械部件,具有經久耐用、防震抗摔、無噪音、功耗低、工作溫度范圍大、隨機小讀性能高等優點;但是固態盤的容量價格比低,而且存在隨機小寫性能低、寫前必須擦除和介質擦除次數有限等缺點。
[0003]基于閃存的固態盤包含3種基本操作:讀、寫和擦除。讀和寫都以頁為單位進行操作;擦除以塊為單位進行操作。一個塊(塊大小通常是128?256KB) —般包含64個頁(頁大小通常是2?4KB)。擦除操作的處理時間比讀寫操作處理時間大若干個數量級。如果某個頁已經存儲有效數據就無法對該頁進行覆蓋寫操作,而是將原數據頁的數據置為無效,將新數據寫入到其他空閑頁中。隨著系統的運行,固態盤中的空閑塊越來越少,無效數據頁越來越多,因此需要擦除這些包含無效數據頁的非空閑塊以獲得新的空閑塊,該操作稱為“垃圾回收”。固態盤的垃圾回收過程是:首先選取待回收的塊,將該塊的有效數據頁復制到空閑塊中,更新地址映射信息,然后擦除待回收塊并將其加入空閑塊列表中。這個垃圾回收的過程會消耗較多的時間。而且,當固態盤中的某個芯片正在處理垃圾回收操作時無法同時處理來自用戶的讀寫請求,此時該芯片接收到的讀寫請求都將被掛起,直到垃圾回收操作完成才能被處理。因此,垃圾回收操作的效率直接影響了固態盤存儲系統的性能,這個問題已成為存儲研究的熱點之一。
[0004]數據壓縮技術是指縮減數據量,用比源數據少的數據位表示信息的過程。該技術按照一定算法或規則對源數據進行重新組織,減少冗余數據和所需要的存儲空間,提高數據的傳輸、存儲和處理效率。在數字信息化高速發展的今天,數據壓縮技術已經成為一項關鍵的通用技術。
[0005]不同的壓縮算法對同一種數據源有不同的壓縮比和壓縮速率,一般來說,壓縮比越高,消耗的系統資源(比如CPU、內存)越多、壓縮速率越慢;不同的數據源對于同一種壓縮算法也有不同的壓縮比和壓縮速率。
[0006]相比于傳統的機械磁盤,固態盤具有性能優勢,在商業應用中得到越來越廣泛的應用。為了滿足海量數據應用和各種層次的可靠性需求,基于固態盤的存儲系統也被越來越多廣泛的應用。但是,基于固態盤的存儲系統所固有的寫放大問題、有限的擦除次數、讀寫速度不對稱等特性對固態盤存儲系統的性能帶來的負面影響顯得越來越不容忽視。C.Li, P.Shilan, F.Douglis, H.Shim, and S.Smaldone.Nitro:A capacity-optimizedSSD cache for primary storage.Proceedings of 2014USENIX Annual TechnicalConference.Philadelphia, PA,USA,2014.
【發明內容】
[0007]本發明的目的是針對現有的固態盤存儲系統存在的上述不足,提供一種固態盤存儲系統的動態數據壓縮方法,用于在不影響存儲系統對外服務性能的前提下,提升固態盤存儲系統的空間利用率和可靠性。
[0008]本發明包括以下步驟:
[0009](I)請求類型判斷步驟,具體過程如下:
[0010]從上層獲得請求,判斷該請求是否是寫請求,若是,則轉步驟(2),否則轉步驟
(3);
[0011](2)數據的壓縮寫入步驟,具體過程如下:
[0012](2.1)負載監測模塊從系統提供的接口獲取系統當前的負載情況(即系統每秒處理的讀寫請求的個數);按照一定的權重比,運算得到一個衡量系統當前負載情況的數值,并將該數值保存在負載狀態變量中;轉過程(2.2);
[0013]在步驟(2)第(2.1)過程中,所述獲取當前系統資源的使用情況,主要包括系統的內存資源和CPU資源的使用率、網絡端口的延時情況等參數;
[0014](2.2)負載監測模塊判斷負載狀態變量的值是否高于系統設定的高閾值,若是,則轉過程(2.3),否則判斷負載狀態變量的值是否低于系統設定的低閾值,若是,則轉過程(2.4),否則轉過程(2.5);
[0015](2.3)數據壓縮模塊采用低壓縮率的壓縮算法對寫入數據進行壓縮,在壓縮位圖表中將壓縮標記值設置為低壓縮,轉過程(2.6);
[0016](2.4)數據壓縮模塊采用高壓縮率的壓縮算法對寫入數據進行壓縮,在壓縮位圖表中將壓縮標記值設置為高壓縮,轉過程(2.6);
[0017](2.5)數據壓縮模塊采用中壓縮率的壓縮算法對寫入數據進行壓縮,在壓縮位圖表中將壓縮標記值設置為中壓縮,轉過程(2.6);
[0018](2.6)數據壓縮模塊將壓縮后的數據寫入固態盤設備,寫請求完成,轉步驟(I);
[0019](3)數據的解壓縮讀取步驟,具體過程如下:
[0020](3.1)數據解壓縮模塊從固態盤設備讀取數據,從壓縮位圖表讀取讀請求地址對應的壓縮標記值,判斷壓縮標記值是否為高壓縮,若是,則轉過程(3.2),否則判斷壓縮標記值是否為低壓縮,若是,則轉過程(3.3),否則轉過程(3.4);
[0021](3.2)采用高壓縮率的解壓縮算法對讀取的數據進行解壓縮,轉過程(3.5);
[0022](3.3)采用低壓縮率的解壓縮算法對讀取的數據進行解壓縮,轉過程(3.5);
[0023](3.4)采用中壓縮率的解壓縮算法對讀取的數據進行解壓縮,轉過程(3.5);
[0024](3.5)返回解壓縮后的數據,讀請求完成,轉步驟⑴。
[0025]本發明的固態盤陣列上設置負載監測模塊、數據壓縮模塊和數據解壓縮模塊,包括請求類型判斷步驟、數據的壓縮寫入步驟和數據的解壓縮讀取步驟。
[0026]在本發明中,動態數據壓縮方法通過實時監測系統的負載變化和資源使用率,根據系統當前的負載情況動態地選擇合適的壓縮算法對數據進行壓縮,在不影響系統對外服務質量的前提下,獲得最大的數據壓縮比,從而提高固態盤存儲系統的性能和可靠性。
[0027]本發明根據系統當前的負載情況動態地選擇不同壓縮率的數據壓縮算法,充分利用系統資源,在不影響系統對外服務質量的前提下,盡可能最大化地壓縮寫入的數據,減少數據對固態盤存儲系統的寫入操作,從而緩解固態盤讀寫性能不對稱的問題,同時提升固態盤的空間利用率和可靠性。
【附圖說明】
[0028]圖1為本發明的示意圖;
[0029]圖2為本發明數據的壓縮寫入步驟的示意圖;
[0030]圖3為本發明數據的解壓縮讀取步驟的示意圖。
【具體實施方式】
[0031]以下實施例將結合附圖對本發明作進一步說明。
[0032]本發明實施例包括以下步驟:
[0033](I)請求類型判斷步驟,具體過程如下:
[0034]從上層獲得請求,判斷該請求是否是寫請求,若是,則轉步驟(2),否則轉步驟
(3);
[0035](2)數據的壓縮