iThome

我們在第513期的技術專題〈線上儲存環境的重複資料刪除技術〉中,介紹了專門針對應用在線上主儲存設備的重複資料刪除(Data de-duplication,De-Dupe)技術,在縮減儲存設備容量耗用這個領域,除了重複資料刪除技術外,即時壓縮技術(Real Time Compression)是另一個發展方向。

即時壓縮技術的應用遠早於重複資料刪除,迄今已有20年以上的發展歷史,在許多儲存領域都有普遍使用。

內建於作業系統的即時壓縮技術

在檔案系統層級運作、針對部份或整個磁碟區的即時壓縮技術,已有很長的發展歷史。與針對個別檔案的檔案壓縮不同,磁碟壓縮可針對部份或整個磁碟區執行壓縮與解壓縮,當資料寫入硬碟時,磁碟壓縮程式會先將其壓縮後再寫入硬碟;當資料要從硬碟讀取出來時,則磁碟壓縮程式會先進行解壓縮將其還原。壓縮與解壓縮作業都是在背景自動即時的執行,無需使用者介入。

在1990年代初期、PC仍處於文字命令列作業系統的時代,由於當時的硬碟容量有限、價格又高,因此這類可即時壓縮磁碟機資料、減少磁碟空間耗用的產品曾有過廣泛應用。

當時較著名的產品有Stac公司的Stacker、IIT的XtraDrive、AddStor的SuperStor Pro、Vertisoft的DoubleDisk 、Salient的DiskDoubler等。有鑑於市場上對這類產品的需求,Digital Research率先在該公司1991年9月發表的DR DOS 6.0作業系統中整合了Add的SuperStor,提供了內建在作業系統中的磁碟壓縮指令,稍後當Digital Research為Novell收購、於1992年推出的PalmDOS 1.0,亦繼續提供SuperStor功能。

在DR DOS的刺激下,後來微軟也引進了Vertisoft的DoubleDisk,在1993年推出的DOS 6.0中增加了稱為Double Space的磁碟壓縮功能,從DOS 6.22起,這個功能改為DriveSpace。

此後即時磁碟壓縮功能,便成為PC作業系統標準功能之一,微軟後來Windows 95/98/Me作業系統中,都仍繼續提供搭配FAT 16檔案系統的DriveSpace功能。後來搭配Windows NT一起推出的NTFS檔案系統,亦提供了基於LZNT1壓縮演算法的原生檔案系統壓縮功能,這個功能也一直保留到後來各版本的Windows中,可對指定資料夾或整個磁碟進行即時的壓縮與解壓縮。

磁碟壓縮與解壓縮是耗用處理器資源的作業,在早期儲存裝置緩慢、處理器相對高速的時代,磁碟即時壓縮不僅可節省容量消耗,還有改善效能的效用。但隨著硬碟容量的提高,以及硬碟單位容量成本的不斷下降,從磁碟壓縮節省空間所獲得的效益逐漸遞減,反之,隨著作業系統進入圖形介面時代,處理器負載相對提高許多,若再啟用磁碟壓縮功能,將有影響系統效能的疑慮,因此這個功能已不像以前那樣受到重視。

內建於應用程式的即時壓縮

許多資料庫軟體也內建了即時壓縮功能,可藉以取得縮減儲存容量、改善緩衝快取使用效率、提高查詢效能等效益,又分為物理(Physical)資料庫壓縮、邏輯(Logical)資料庫壓縮兩種類型。

物理資料庫壓縮是透過資料庫軟體外部的機制(硬體或軟體程式)來執行壓縮,包括利用硬體輔助壓縮,以及利用外部壓縮程式的區塊(Block)或分頁(Page)層級壓縮等;邏輯資料庫壓縮則由資料庫管理軟體自行執行,包括資料表(Table)/區段(Segment)層級壓縮、列(Row)層級壓縮等。

以Oracle為例,最早在Oracle 8i提供了索引(index)壓縮功能,Oracle 9i R2增加資料表壓縮、Oracle 10g新增LOB壓縮,接下來在Oracle 11g則有列層級壓縮。

與作業系統的檔案系統層級壓縮相同,資料庫壓縮通常在I/O密集型環境較能顯示出優勢,若是處理器密集型環境,反而可能拖累整體效能。

應用於備份領域的即時壓縮技術

備份是另一個經常應用即時壓縮技術的領域,當前幾乎所有備份軟體都提供壓縮功能,可由備份伺服器對備份資料進行壓縮再寫入備份儲存媒體,還原時再反向操作、將資料讀取出來解壓縮後,再送回前端,在備份與還原過程中,於背景自動進行即時壓縮與解壓縮作業。

幾乎所有磁帶機或虛擬磁帶櫃,也內建了壓縮功能,可將壓縮與解壓縮運算負擔從備份伺服器,轉移到儲存設備上。

針對網路儲存設備的即時壓縮

壓縮/解壓縮是一種耗用處理器資源的作業,如果頻繁存取壓縮檔案,將會產生大量的壓縮與解壓縮作業,從而增加處理器的負擔。所以微軟便建議不要在共享資料夾、網路磁碟機這種多人共用、存取特別頻繁的裝置上,啟用磁碟壓縮功能,以免處理器負擔過大反而影響效能。

因此檔案伺服器或NAS這類透過網路共享存取的儲存設備,也就被排除在磁碟即時壓縮的適用範圍外。

不過近年來隨著非結構化資料的極速增長,對儲存容量的需求也直線上升,然而基於耗電量與機房空間的考量,又難以無限制地添購硬碟來擴充儲存空間,因此縮減檔案耗用容量的技術也再次獲得重視。

為克服在網路共享儲存設備上應用即時壓縮功能所造成的效能問題,近來出現了一個變通方法,就是將壓縮/解壓縮運算移出檔案伺服器或NAS,改由外部的專用應用伺服器來執行,如此便能兼顧利用壓縮減少儲存消耗、改善I/O效能,又不會增加檔案伺服器或NAS的處理器負擔。

如IBM近來推出的即時壓縮應用伺服器,便是這種類型產品。這種應用伺服器部署在前端主機與後端檔案伺服器或NAS之間,可對前端寫入後端的資料進行壓縮,並對後端讀取到前端的資料解壓縮。透過這種架構,既可減少資料在後端儲存設備上占用的容量,又不會增加前端主機或後端儲存設備的負擔。

另一方面,在應用伺服與後端儲存設備間由於都是傳輸經過壓縮的資料,所以可以減輕網路負擔;而在應用伺服器與前端主機間,由於應用伺服器提供了額外的讀取用快取記憶體,也有增加讀取效能的效果。

此外,一臺應用伺服器,即可同時為整個網路中的多臺主機與儲存設備提供即時壓縮服務,省去了在每臺設備上啟用壓縮功能的麻煩。不過副作用是用戶必須另外購買與建置這種應用伺服器,投入額外的初始建置成本。

 

即時壓縮應用的3種基本型態

 

即時壓縮的效能衝擊:I/O密集型vs.處理器密集型應用

在I/O密集型(I/O bound)環境中,效能瓶頸落在儲存裝置或匯流排上,處理器資源相對充裕,負載有限,反而經常必須等待緩慢的I/O讀寫作業。此時若啟用即時壓縮功能,便能充分利用多餘的處理器效能,而且資料經壓縮以後,儲存設備所需處理的資料量減少,也可減少I/O動作,從而改善I/O效能。

反之若是處理器密集型(CPU bound)環境,此時的效能落在處理器上,處理器的運算負載接近100%滿載,I/O負擔相對較輕,此時若再啟用即時壓縮功能,將會給原本就接近滿載運行的處理器帶來更多運算負擔,以致進一步拖慢系統效能。

 


Advertisement

更多 iThome相關內容