我們介紹過專門針對應(yīng)用在線主存儲(chǔ)設(shè)備的重復(fù)數(shù)據(jù)刪除(Data de-duplication,De-Dupe)技術(shù),在縮減存儲(chǔ)設(shè)備容量耗用這個(gè)領(lǐng)域,除了重復(fù)數(shù)據(jù)刪除技術(shù)外,即時(shí)壓縮技術(shù)(Real Time Compression)是另一個(gè)發(fā)展方向。
即時(shí)壓縮技術(shù)的應(yīng)用遠(yuǎn)早于重復(fù)數(shù)據(jù)刪除,迄今已有20年以上的發(fā)展歷史,在許多存儲(chǔ)領(lǐng)域都有普遍使用。
內(nèi)置于操作系統(tǒng)的即時(shí)壓縮技術(shù)
在文檔系統(tǒng)層級運(yùn)行、針對部份或整個(gè)磁盤區(qū)的即時(shí)壓縮技術(shù),已有很長的發(fā)展歷史。與針對個(gè)別文檔的文檔壓縮不同,磁盤壓縮可針對部份或整個(gè)磁盤區(qū)運(yùn)行壓縮與解壓縮,當(dāng)數(shù)據(jù)寫入硬盤時(shí),磁盤壓縮程序會(huì)先將其壓縮后再寫入硬盤;當(dāng)數(shù)據(jù)要從硬盤讀取出來時(shí),則磁盤壓縮程序會(huì)先進(jìn)行解壓縮將其還原。壓縮與解壓縮操作都是自動(dòng)即時(shí)的運(yùn)行,無需使用者操作。
在1990年代初期、PC仍處于文字命令列操作系統(tǒng)的時(shí)代,由于當(dāng)時(shí)的硬盤容量有限、價(jià)格又高,因此這類可即時(shí)壓縮磁盤機(jī)數(shù)據(jù)、減少磁盤空間耗用的產(chǎn)品曾有過廣泛應(yīng)用。
當(dāng)時(shí)較著名的產(chǎn)品有Stac公司的Stacker、IIT的XtraDrive、AddStor的SuperStor Pro、Vertisoft的DoubleDisk 、Salient的DiskDoubler等。有監(jiān)于市場上對這類產(chǎn)品的需求,Digital Research率先在該公司1991年9月發(fā)表的DR DOS 6.0操作系統(tǒng)中整合了Add的SuperStor,提供了內(nèi)置在操作系統(tǒng)中的磁盤壓縮指令,稍后當(dāng)Digital Research為Novell收購、于1992年推出的PalmDOS 1.0,也繼續(xù)提供SuperStor功能。
在DR DOS的刺激下,后來微軟也引進(jìn)了Vertisoft的DoubleDisk,在1993年推出的DOS 6.0中增加了稱為Double Space的磁盤壓縮功能,從DOS 6.22起,這個(gè)功能改為DriveSpace.
此后即時(shí)磁盤壓縮功能,便成為PC操作系統(tǒng)標(biāo)準(zhǔn)功能之一,微軟后來Windows 95/98/Me操作系統(tǒng)中,都仍繼續(xù)提供搭配FAT 16文檔系統(tǒng)的DriveSpace功能。后來搭配Windows NT一起推出的NTFS文檔系統(tǒng),也提供了基于LZNT1壓縮演算法的原生文檔系統(tǒng)壓縮功能,這個(gè)功能也一直保留到后來各版本的Windows中,可對指定數(shù)據(jù)夾或整個(gè)磁盤進(jìn)行即時(shí)的壓縮與解壓縮。
磁盤壓縮與解壓縮是耗用處理器資源的操作,在早期存儲(chǔ)裝置緩慢、處理器相對高速的時(shí)代,磁盤即時(shí)壓縮不僅可節(jié)省容量消耗,還有改善能效的效用。但隨著硬盤容量的提高,以及硬盤單位容量成本的不斷下降,從磁盤壓縮節(jié)省空間所獲得的效益逐漸遞減,反之,隨著操作系統(tǒng)進(jìn)入圖形介面時(shí)代,處理器負(fù)載相對提高許多,若再啟用磁盤壓縮功能,將有影響系統(tǒng)能效的疑慮,因此這個(gè)功能已不像以前那樣受到重視。
即時(shí)壓縮應(yīng)用的3種基本型態(tài):
1. 主機(jī)端:由主機(jī)運(yùn)行即時(shí)壓縮運(yùn)算
典型產(chǎn)品:操作系統(tǒng)內(nèi)置的磁盤壓縮功能、數(shù)據(jù)庫軟件內(nèi)置的即時(shí)壓縮功能
優(yōu)點(diǎn):內(nèi)置于操作系統(tǒng)或應(yīng)用軟件、無需另行建置
缺點(diǎn):需耗用主機(jī)運(yùn)算資源,某些情況下會(huì)拖慢主機(jī)
2. 專屬應(yīng)用服務(wù)器:由特定應(yīng)用服務(wù)器行即時(shí)壓縮運(yùn)算
典型產(chǎn)品:專用即時(shí)壓縮應(yīng)用服務(wù)器、備份服務(wù)器的壓縮功能
優(yōu)點(diǎn):不耗用主機(jī)能效,一臺(tái)應(yīng)用服務(wù)器可同時(shí)服務(wù)多臺(tái)主機(jī)
缺點(diǎn):需另行購買建置
3. 存儲(chǔ)設(shè)備端:由存儲(chǔ)設(shè)備運(yùn)行即時(shí)壓縮運(yùn)算
典型產(chǎn)品:內(nèi)置壓縮功能的磁帶機(jī)或VTL
優(yōu)點(diǎn):不影響前端能效、內(nèi)置功能無需另行購置
缺點(diǎn):某些情況下會(huì)影響存儲(chǔ)能效
內(nèi)置于應(yīng)用程序的即時(shí)壓縮
許多數(shù)據(jù)庫軟件也內(nèi)置了即時(shí)壓縮功能,可借以取得縮減存儲(chǔ)容量、改善緩沖快取使用效率、提高查詢能效等效益,又分為物理(Physical)數(shù)據(jù)庫壓縮、邏輯(Logical)數(shù)據(jù)庫壓縮兩種類型。
物理數(shù)據(jù)庫壓縮是通過數(shù)據(jù)庫軟件外部的機(jī)制(硬件或軟件程序)來運(yùn)行壓縮,包括利用硬件輔助壓縮,以及利用外部壓縮程序的區(qū)塊(Block)或分頁(Page)層級壓縮等;邏輯數(shù)據(jù)庫壓縮則由數(shù)據(jù)庫管理軟件自行運(yùn)行,包括數(shù)據(jù)表(Table)/區(qū)段(Segment)層級壓縮、列(Row)層級壓縮等。
以O(shè)racle為例,最早在Oracle 8i提供了索引(index)壓縮功能,Oracle 9i R2增加數(shù)據(jù)表壓縮、Oracle 10g新增LOB壓縮,接下來在Oracle 11g則有列層級壓縮。
與操作系統(tǒng)的文檔系統(tǒng)層級壓縮相同,數(shù)據(jù)庫壓縮通常在I/O密集型環(huán)境較能顯示出優(yōu)勢,若是處理器密集型環(huán)境,反而可能拖累整體能效。
應(yīng)用于備份領(lǐng)域的即時(shí)壓縮技術(shù)
備份是另一個(gè)經(jīng)常應(yīng)用即時(shí)壓縮技術(shù)的領(lǐng)域,當(dāng)前幾乎所有備份軟件都提供壓縮功能,可由備份服務(wù)器對備份數(shù)據(jù)進(jìn)行壓縮再寫入備份存儲(chǔ)媒體,還原時(shí)再反向操作、將數(shù)據(jù)讀取出來解壓縮后,再送回前端,在備份與還原過程中,自動(dòng)進(jìn)行即時(shí)壓縮與解壓縮操作。
幾乎所有磁帶機(jī)或虛擬磁帶柜,也內(nèi)置了壓縮功能,可將壓縮與解壓縮運(yùn)算負(fù)擔(dān)從備份服務(wù)器,轉(zhuǎn)移到存儲(chǔ)設(shè)備上。
針對網(wǎng)絡(luò)存儲(chǔ)設(shè)備的即時(shí)壓縮
壓縮/解壓縮是一種耗用處理器資源的操作,如果頻繁存取壓縮文檔,將會(huì)產(chǎn)生大量的壓縮與解壓縮操作,從而增加處理器的負(fù)擔(dān)。所以微軟便建議不要在共享數(shù)據(jù)夾、網(wǎng)絡(luò)磁盤機(jī)這種多人共用、存取特別頻繁的裝置上,啟用磁盤壓縮功能,以免處理器負(fù)擔(dān)過大反而影響能效。
因此文檔服務(wù)器或NAS這類通過網(wǎng)絡(luò)共享存取的存儲(chǔ)設(shè)備,也就被排除在磁盤即時(shí)壓縮的適用范圍外。
不過近年來隨著非結(jié)構(gòu)化數(shù)據(jù)的極速增長,對存儲(chǔ)容量的需求也直線上升,然而基于耗電量與機(jī)房空間的考量,又難以無限制地添購硬盤來擴(kuò)充存儲(chǔ)空間,因此縮減文檔耗用容量的技術(shù)也再次獲得重視。
為克服在網(wǎng)絡(luò)共享存儲(chǔ)設(shè)備上應(yīng)用即時(shí)壓縮功能所造成的能效問題,近來出現(xiàn)了一個(gè)變通方法,就是將壓縮/解壓縮運(yùn)算移出文檔服務(wù)器或NAS,改由外部的專用應(yīng)用服務(wù)器來運(yùn)行,如此便能兼顧利用壓縮減少存儲(chǔ)消耗、改善I/O能效,又不會(huì)增加文檔服務(wù)器或NAS的處理器負(fù)擔(dān)。
如IBM近來推出的即時(shí)壓縮應(yīng)用服務(wù)器,便是這種類型產(chǎn)品。這種應(yīng)用服務(wù)器部署在前端主機(jī)與后端文檔服務(wù)器或NAS之間,可對前端寫入后端的數(shù)據(jù)進(jìn)行壓縮,并對后端讀取到前端的數(shù)據(jù)解壓縮。通過這種架構(gòu),既可減少數(shù)據(jù)在后端存儲(chǔ)設(shè)備上占用的容量,又不會(huì)增加前端主機(jī)或后端存儲(chǔ)設(shè)備的負(fù)擔(dān)。
另一方面,在應(yīng)用服務(wù)與后端存儲(chǔ)設(shè)備間由于都是傳輸經(jīng)過壓縮的數(shù)據(jù),所以可以減輕網(wǎng)絡(luò)負(fù)擔(dān);而在應(yīng)用服務(wù)器與前端主機(jī)間,由于應(yīng)用服務(wù)器提供了額外的讀取用閃存,也有增加讀取能效的效果。
此外,一臺(tái)應(yīng)用服務(wù)器,即可同時(shí)為整個(gè)網(wǎng)絡(luò)中的多臺(tái)主機(jī)與存儲(chǔ)設(shè)備提供即時(shí)壓縮服務(wù),省去了在每臺(tái)設(shè)備上啟用壓縮功能的麻煩。不過副作用是用戶必須另外購買與建置這種應(yīng)用服務(wù)器,投入額外的初始建置成本。
即時(shí)壓縮的能效沖擊:I/O密集型vs.處理器密集型應(yīng)用
在I/O密集型(I/O bound)環(huán)境中,能效瓶頸落在存儲(chǔ)裝置或匯流排上,處理器資源相對充裕,負(fù)載有限,反而經(jīng)常必須等待緩慢的I/O讀寫操作。此時(shí)若啟用即時(shí)壓縮功能,便能充分利用多余的處理器能效,而且數(shù)據(jù)經(jīng)壓縮以后,存儲(chǔ)設(shè)備所需處理的數(shù)據(jù)量減少,也可減少I/O操作,從而改善I/O能效。
反之若是處理器密集型(CPU bound)環(huán)境,此時(shí)的能效落在處理器上,處理器的運(yùn)算負(fù)載接近100%滿載,I/O負(fù)擔(dān)相對較輕,此時(shí)若再啟用即時(shí)壓縮功能,將會(huì)給原本就接近滿載運(yùn)行的處理器帶來更多運(yùn)算負(fù)擔(dān),以致進(jìn)一步拖慢系統(tǒng)能效。