我們介紹過專門針對應用在線主存儲設備的重復數據刪除(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中,可對指定數據夾或整個磁盤進行即時的壓縮與解壓縮。
磁盤壓縮與解壓縮是耗用處理器資源的操作,在早期存儲裝置緩慢、處理器相對高速的時代,磁盤即時壓縮不僅可節省容量消耗,還有改善能效的效用。但隨著硬盤容量的提高,以及硬盤單位容量成本的不斷下降,從磁盤壓縮節省空間所獲得的效益逐漸遞減,反之,隨著操作系統進入圖形介面時代,處理器負載相對提高許多,若再啟用磁盤壓縮功能,將有影響系統能效的疑慮,因此這個功能已不像以前那樣受到重視。
即時壓縮應用的3種基本型態:
1. 主機端:由主機運行即時壓縮運算
典型產品:操作系統內置的磁盤壓縮功能、數據庫軟件內置的即時壓縮功能
優點:內置于操作系統或應用軟件、無需另行建置
缺點:需耗用主機運算資源,某些情況下會拖慢主機
2. 專屬應用服務器:由特定應用服務器行即時壓縮運算
典型產品:專用即時壓縮應用服務器、備份服務器的壓縮功能
優點:不耗用主機能效,一臺應用服務器可同時服務多臺主機
缺點:需另行購買建置
3. 存儲設備端:由存儲設備運行即時壓縮運算
典型產品:內置壓縮功能的磁帶機或VTL
優點:不影響前端能效、內置功能無需另行購置
缺點:某些情況下會影響存儲能效
內置于應用程序的即時壓縮
許多數據庫軟件也內置了即時壓縮功能,可借以取得縮減存儲容量、改善緩沖快取使用效率、提高查詢能效等效益,又分為物理(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之間,可對前端寫入后端的數據進行壓縮,并對后端讀取到前端的數據解壓縮。通過這種架構,既可減少數據在后端存儲設備上占用的容量,又不會增加前端主機或后端存儲設備的負擔。
另一方面,在應用服務與后端存儲設備間由于都是傳輸經過壓縮的數據,所以可以減輕網絡負擔;而在應用服務器與前端主機間,由于應用服務器提供了額外的讀取用閃存,也有增加讀取能效的效果。
此外,一臺應用服務器,即可同時為整個網絡中的多臺主機與存儲設備提供即時壓縮服務,省去了在每臺設備上啟用壓縮功能的麻煩。不過副作用是用戶必須另外購買與建置這種應用服務器,投入額外的初始建置成本。
即時壓縮的能效沖擊:I/O密集型vs.處理器密集型應用
在I/O密集型(I/O bound)環境中,能效瓶頸落在存儲裝置或匯流排上,處理器資源相對充裕,負載有限,反而經常必須等待緩慢的I/O讀寫操作。此時若啟用即時壓縮功能,便能充分利用多余的處理器能效,而且數據經壓縮以后,存儲設備所需處理的數據量減少,也可減少I/O操作,從而改善I/O能效。
反之若是處理器密集型(CPU bound)環境,此時的能效落在處理器上,處理器的運算負載接近100%滿載,I/O負擔相對較輕,此時若再啟用即時壓縮功能,將會給原本就接近滿載運行的處理器帶來更多運算負擔,以致進一步拖慢系統能效。