現(xiàn)在有兩個不同內(nèi)容的Word文檔(其顯示的文字不同 ),他們之間有沒有重合地方呢?或者說,這兩個不同的文檔之間有沒有通用的內(nèi)容呢?答案是肯定的。如不同的文檔之間,可能具有相同的訪問權(quán)限。假設(shè),每個 文檔需要利用0.5K的容量來保存這些信息或者屬性(如只讀或者隱藏等等)。那么10000個文件,需要占用多少容量呢?上百萬個文件呢?顯然,這些通用 的信息會造成比較大的浪費。為了節(jié)約存儲的成本,此時重復(fù)刪除技術(shù)就派上用場了。
重復(fù)數(shù)據(jù)刪除技術(shù)是一個減少或者消除冗余文件、字節(jié)、或者 數(shù)據(jù)塊的一個過程。簡單的說,就是確保只有獨一無二的數(shù)據(jù)被保存到存儲設(shè)備中。重復(fù)的內(nèi)容都被壓縮了。從而來降低存儲成本(如硬盤或者維護的成本等等)。 在存儲設(shè)備中(如用于文件服務(wù)器的存儲設(shè)備),往往數(shù)據(jù)會有比較高的通用性。用戶之間、服務(wù)器之間、同一種類型的文件之間相當(dāng)一部分內(nèi)容都是通用的。重復(fù) 數(shù)據(jù)刪除技術(shù)按自然邊界江數(shù)據(jù)拆分為非常細(xì)粒度的子塊單元,會采用指針代替相同的子塊單元,從而達到顯著降低存儲空間的目的。這個原理跟數(shù)據(jù)庫中的關(guān)系表 有點類似。不過重復(fù)數(shù)據(jù)刪除技術(shù)的工作原理要比其復(fù)雜的多。還好這并不是存儲管理員必須要掌握的內(nèi)容。我們只需要知道,重復(fù)數(shù)據(jù)刪除技術(shù)有哪幾種類型、各 自有什么特點、如何根據(jù)企業(yè)的實際情況來選擇適用的存儲技術(shù)等等。
根據(jù)啟動重復(fù)數(shù)據(jù)刪除技術(shù)的時機來區(qū)分,可以將重復(fù)數(shù)據(jù)刪除技術(shù)分為聯(lián)機重復(fù)數(shù)據(jù)刪除技術(shù)和后期處理重復(fù)數(shù)據(jù)刪除技術(shù)。作為存儲管理員,可以不精通重復(fù)刪除技術(shù)背后的工作原理,但是對于這兩種技術(shù)的特點必須了解。
一、 后期處理重復(fù)數(shù)據(jù)刪除技術(shù)的優(yōu)缺點分析。
假設(shè)現(xiàn)在往存儲設(shè)備中存儲數(shù)據(jù),那么存儲系統(tǒng)是什么時候判斷是否有重復(fù)的子塊呢?是存儲之間判斷,還是存儲作業(yè)完成之后判斷呢?這就是重復(fù)數(shù)據(jù)刪除流程啟動的時機。如果是在存儲作業(yè)完成之后再進行判斷的話,那么就是后期重復(fù)數(shù)據(jù)刪除技術(shù)。
這 里筆者以一個備份的案例來談這種技術(shù)的優(yōu)缺點?,F(xiàn)在有一個Oracle數(shù)據(jù)庫,需要定期向存儲設(shè)備中備份數(shù)據(jù)。當(dāng)數(shù)據(jù)庫服務(wù)器開始向備份設(shè)備傳輸備份數(shù)據(jù) 流時,系統(tǒng)是將整個備份數(shù)據(jù)量作為一個整體來傳遞。然后啟動單獨的進程開始讀取已寫入磁盤的數(shù)據(jù)塊,開始判斷是否有重復(fù)的子塊,并進行后續(xù)的相關(guān)動作。如 下圖所示,可以形象的說明這種方式的特點。
從上圖中可以知道,數(shù)據(jù)存儲與重復(fù)數(shù)據(jù)刪出流程是兩個獨立的進程。一個進程負(fù)責(zé)數(shù)據(jù)的存儲,另外 一個進程來檢查是否有重復(fù)的數(shù)據(jù)塊以及后續(xù)的處理。簡單的說,就是一邊往存儲設(shè)備中存儲數(shù)據(jù)、一邊進行判斷。如果讀入的數(shù)據(jù)塊和已存儲的數(shù)據(jù)塊重復(fù)了,則 會使用指針來替代這個數(shù)據(jù)塊并刪除重復(fù)的數(shù)據(jù)塊(或者說可以被后續(xù)的數(shù)據(jù)所覆蓋)。如果沒有重復(fù)的話,則不會對這個暑假塊進行任何操作(因為這個數(shù)據(jù)塊實 際上已經(jīng)保存在硬盤上)。
這種處理方式主要的缺陷是對于I/O的要求比較高。其先將數(shù)據(jù)保存在存儲設(shè)備上。然后再由一個獨立的進程從硬盤中 讀取數(shù)據(jù)來判斷是否有重復(fù)的現(xiàn)象。如果有的話,還需要將其刪除。從這個流程中就可以看出,有多個I/O的過程。所以對硬盤的I/O提出了比較高的要求。其 優(yōu)勢是在存儲數(shù)據(jù)的時候,不需要先在內(nèi)存中進行緩存、再判斷。為此可以節(jié)省內(nèi)存的開銷,提高數(shù)據(jù)存儲的效率。
二、 聯(lián)機重復(fù)數(shù)據(jù)刪除技術(shù)的優(yōu)缺點分析。
采用聯(lián)機重復(fù)刪除技術(shù)的方式時,其主要的特點就是數(shù) 據(jù)存儲、重復(fù)數(shù)據(jù)刪除進程有一個前后的過程,而不是并列。筆者也以數(shù)據(jù)庫備份為例來說明這種方式的特點。當(dāng)備份數(shù)據(jù)流到達存儲設(shè)備時,數(shù)據(jù)并不會直接保存 在硬盤中,而是先駐留在內(nèi)存中。然后重復(fù)數(shù)據(jù)刪除技術(shù)進程會對這個數(shù)據(jù)進行重復(fù)性的判斷。如果與硬盤中已有的內(nèi)容重復(fù)的,則不會將這個數(shù)據(jù)保存在硬盤中, 而是利用指針來代替。相反,如果硬盤中沒有已知的重復(fù)數(shù)據(jù)則將數(shù)據(jù)保存在硬盤中。其主要的過程就如下圖所示。
使用聯(lián)機重復(fù)數(shù)據(jù)刪除技術(shù)主要 的優(yōu)勢是可以降低硬盤的I/O開銷。在后期處理重復(fù)數(shù)據(jù)刪除技術(shù)這種方式中,需要先對所有備份數(shù)據(jù)進行寫操作。然后重復(fù)數(shù)據(jù)刪除進程需要將寫入的數(shù)據(jù)再次 讀取出來,以判斷是否有重復(fù)的子塊。如果有重復(fù)子塊的話,就需要進行刪除的操作。光從這個數(shù)據(jù)流來看,就用了三次的I/O操作。這還不包括更新哈希表的I /O操作。所以采用后期處理重復(fù)數(shù)據(jù)的刪除技術(shù),其I/O的開銷是非常龐大的。
而采用聯(lián)機重復(fù)數(shù)據(jù)刪除技術(shù),就不存在這個問題。因為其數(shù)據(jù)一開始就是在內(nèi)存中,不保存在硬盤上。只有確認(rèn)存儲設(shè)備中沒有重復(fù)的子塊時,才會將數(shù)據(jù)保存在硬盤上。為此其基本上只有一個I/O操作。也就是說,其大部分的工作都是在內(nèi)存中完成的,就沒有涉及到硬盤的I/O。
不 過采用聯(lián)機重復(fù)刪除技術(shù),其對于內(nèi)存的要求會比較高,需要利用額外的內(nèi)存在保存這些備份數(shù)據(jù)。另外,從存儲的時間上來看,由于其采用的是一前一后的方式, 為此從整體的存儲時間來看(假設(shè)不考慮I/O沖突),要比后期重復(fù)數(shù)據(jù)處理要長。在實際工作中,如果存儲設(shè)備的I/O不理想,后期處理方式則會造成I/O 比較嚴(yán)重的沖突,此時后期處理方式的作業(yè)時間反而要比聯(lián)機處理方式要長。
三、 如何選擇適用自己企業(yè)的處理方式。
可見,兩種處理方式各有各的特點。后期處理重復(fù)數(shù)據(jù)刪 除技術(shù)主要耗費的是硬盤的I/O資源,而聯(lián)機重復(fù)數(shù)據(jù)刪除技術(shù)其主要占用的是存儲服務(wù)器的內(nèi)存。即后期重復(fù)數(shù)據(jù)刪除技術(shù)會將整個處理過程分解為兩個相對獨 立的進程,從而縮短整個作業(yè)的時間。但是其是以增加至少三倍以上的I/O操作來達到這個目的的。采用聯(lián)機重復(fù)數(shù)據(jù)刪除技術(shù),整個處理過程中所需要的I/O 操作比較少。但是中間數(shù)據(jù)存儲有一個等待的過程,為此會導(dǎo)致備份時間作業(yè)的延長。
了解了這些差異之后,要做出一個合理的判斷難度應(yīng)該不是很 大。如果存儲服務(wù)器的硬盤性能比較好、但是內(nèi)存比較小的話,顯然比較適合采用后期處理重復(fù)數(shù)據(jù)刪除技術(shù)。如果在后續(xù)的維護中,發(fā)現(xiàn)磁盤的I/O沖突比較嚴(yán) 重,已經(jīng)影響到了數(shù)據(jù)存儲的效率,此時則比較適合采用聯(lián)機重復(fù)刪除技術(shù)。一般來說,對于備份作業(yè)并發(fā)數(shù)量比較多的企業(yè),如當(dāng)用戶關(guān)機時會將每臺客戶端上的 特定文件夾中有更新的文件在服務(wù)器上進行備份。當(dāng)員工下班時,會觸發(fā)大量的備份作業(yè)。此時如果采用聯(lián)機重復(fù)刪除技術(shù)的話,用戶可能會有一個比較長的等待時 間。不過如果采用后期處理刪除技術(shù)的話,可以先將數(shù)據(jù)在服務(wù)器上進行備份。用戶可以在比較短的時間內(nèi)完成備份作業(yè)并實現(xiàn)關(guān)機的過程。然后存儲服務(wù)器就可以 慢慢的判斷是否有重復(fù)的子塊,并進行后續(xù)的處理。
可見針對不同的情形,會有不同的選擇。主要還是需要根據(jù)企業(yè)的實際情況來進行判斷。作為存儲管理員,需要牢牢的掌握這兩種處理方式的差異。雖然最終都可以實現(xiàn)相同的結(jié)果,但是對于其性能會有很大的影響。