重復數(shù)據(jù)刪除(De-duplication),簡稱“去重”,是主流的存儲技術之一,通過對比校驗技術刪除存儲設備上重復的數(shù)據(jù),只保留其中一份,從而消除冗余數(shù)據(jù),優(yōu)化存儲設備的物理空間,從而滿足日益增長的數(shù)據(jù)存儲需求。 經(jīng)過近些年的發(fā)展,重復數(shù)據(jù)刪除技術已經(jīng)很成熟,本文整理了部分知識,有助于大家進一步了解重復數(shù)據(jù)刪除。 雖然存儲介質的價格已經(jīng)非常廉價,但若能在有限的存儲介質上實現(xiàn)更高的存儲效率,何樂而不為呢?此外,重復數(shù)據(jù)刪除技術最大的一個收益點是能降低備份大數(shù)據(jù)量時對各資源的消耗和依賴。巨量數(shù)據(jù)的備份不論對生產(chǎn)系統(tǒng)還是備份系統(tǒng)都是一個不小的沖擊,況且隨著系統(tǒng)的發(fā)展,備份系統(tǒng)越來越大,備份的數(shù)據(jù)越來越多,備份的計劃與安排越來越受制于備份數(shù)據(jù)量的規(guī)模。重復數(shù)據(jù)刪除技術提供了一個物美價廉的解決方案,更提高了整個系統(tǒng)的效率。 也許在很多不太關注重復數(shù)據(jù)刪除技術的工程師心中,重復數(shù)據(jù)還是那個效率低、成本高的空殼子,但實際上重復數(shù)據(jù)刪除技術早已發(fā)展到了一個新的高度。借個人實施經(jīng)歷中一個真實的案例,看看現(xiàn)如今的重復數(shù)據(jù)刪除技術的性能:一臺Windows虛擬機存儲著490 GB(有效數(shù)據(jù))非結構化文件(文件主要為word/Excel/PPT/PDF等),日變化量大約15 GB/DAY,虛擬機的配置為2 * 2.8 GHz CPU,8 GB內存,千兆網(wǎng)卡。部署了一套源端、在線、基于CPU-內存的重復數(shù)據(jù)刪除備份(重復數(shù)據(jù)刪除設備并非物理機而是虛擬機),所有配置均采用默認配置、不作定制優(yōu)化。首次備份耗時35 min,消重效率87%,消重時CPU消耗上漲5%,內存占用小于200MB,網(wǎng)絡負載約3 MB/S左右。第二次備份耗時19min,消重效率98%,CPU、內存消耗與首次備份差不多,但網(wǎng)絡負載明顯下降,偶爾占用1~2MB/S。(@Li Fei 某保險公司 系統(tǒng)架構師) 二、主流的幾種重復數(shù)據(jù)刪除技術 重復數(shù)據(jù)刪除已經(jīng)不是一個新的話題了,如今各個廠商的存儲或備份產(chǎn)品都有這項功能。不過,當我們在說重刪時,我們是在說同一個重刪嗎?關于重刪,其實還有很多細微的差別,今天小編就來講一講。 所謂重復數(shù)據(jù)刪除,顧名思義,就是要把一些具有重復性的數(shù)據(jù)刪除掉。重刪是一個過程,其基本方法是通過算法,把一個文件切割成不同的小塊,這些切割后小數(shù)據(jù)文件切片有很多是相同的,在真正在保存的時候,我們只要保存不同的數(shù)據(jù)塊的一份,這是任何一個重復數(shù)據(jù)刪除算法的根基。 不過,在這根基之上卻有很多種重刪。 首先最簡單的是文件級重刪,這實際上可以不認為是一個重復數(shù)據(jù)刪除,它只是一個重復數(shù)據(jù)忽略,因為它只會在文件級別進行掃描,比如文件的特性、文件的修改時間,保證每次只備份同一個文件。如果說這個文件做了一些小的修改,整個文件還是需要備份的,所以它的力度是非常低的。 接下來是塊級重刪,也就是之前講的先要通過一個算法,把文件進行切割,切割成一個一個小的塊,然后每個塊進行比對。比對過后,只有不同的塊才會被分走,這樣可以保證重復數(shù)據(jù)會在子文件級進行相應的刪除,從而提高每個文件相同的比率。然后被切割的這個文件,我們再附上一組指針表。這個指針圖表上列出文件是由哪些小的塊組成的,保證我們在還原的時候,通過這個基因圖和相應的數(shù)據(jù)塊,可以恢復任何的文件。 那么怎么樣可以提高我們的重復數(shù)據(jù)刪除率呢?就是這個塊的大小,塊切得越小,相應的重復數(shù)據(jù)就越多。比如我們切一個西瓜,西瓜上有很多西瓜子,把西瓜切得越小塊,沒有西瓜子的塊就會越多。對重刪來說這就是算法,而算法主要分兩類: 定長重刪。數(shù)據(jù)按照固定長度進行分塊,之后進行重刪。例如一個文件大小為128M,按照128K來切,切完就是一千份的子文件,然后對這一千份進行對比,把重復數(shù)據(jù)去掉就是定長重刪。 變長重刪。數(shù)據(jù)被劃分成不同大小的塊進行重刪,一般來說變長重刪可以獲得更好的重刪效果,因為對企業(yè)來說數(shù)據(jù)是不斷更新的。比如定長重刪下數(shù)據(jù)被切割形成一系列字母組合,由于數(shù)據(jù)變化插入了一個字母,因此整個數(shù)據(jù)的順序就改變了,再按照128K切的話,對于備份軟件來說所有行都是一個全新的數(shù)據(jù)塊,所以要重新做備份。而變長重刪可以保證其余的數(shù)據(jù)塊不變,只在新增字母的塊增加一個大小上限就可以了,因此變長重刪效率更高。 按照重刪處理的位置,這里也可以分為兩類: 源端重刪。在備份的時候,在備份端上agent就有重復數(shù)據(jù)刪除的算法和功能,它可以在備份以前進行相應的切割和對比,只把一些新變化的數(shù)據(jù)傳送到備份服務器上,這樣可以大大降低備份數(shù)據(jù)量,在網(wǎng)絡傳輸過程中的數(shù)據(jù)量也降低,這樣可以降低整個備份網(wǎng)絡的帶寬要求,對企業(yè)來說也可以減少日常運維成本。 目標端重刪。直接將數(shù)據(jù)傳輸?shù)较鄳拇艓гO備、磁帶庫或者是虛擬帶庫上,在目標端進行重復數(shù)據(jù)刪除的算法、對比,然后把一些相應新的數(shù)據(jù)塊元素和指針表也保留下來。 還有按照數(shù)據(jù)的重刪執(zhí)行的時間進行分類: 在線重刪。備份的時候先做重復數(shù)據(jù)刪除,在數(shù)據(jù)存儲到硬盤之前,重復數(shù)據(jù)已經(jīng)被去除掉了。 后重刪。指的是在寫到存儲設備的同時不進行重刪處理,先把原始數(shù)據(jù)寫到硬盤上,隨后啟動后臺進程對這些原始數(shù)據(jù)進行重刪處理。與在線重刪相比較,后重刪需要更高的硬盤性能,需要更多的硬盤數(shù)量,并且在線重刪可以大大降低數(shù)據(jù)的備份量和網(wǎng)絡帶寬的需求,因此效率更高。 三、如何進行相關技術的選擇? 1,在線?離線? 在線消重,顧名思義是在備份時就進行消重,落盤到備份存儲介質的數(shù)據(jù)都是經(jīng)過消重處理的數(shù)據(jù)。離線消重,是指數(shù)據(jù)備份到備份存儲后再進行消重。 如果在線消重要保持一個高效性能,這就消耗備份系統(tǒng)以及宿主機一部分資源。在線消重技術發(fā)展初期,硬件與軟件的契合度并不高,導致在線消重備份時需要消耗相當一部分宿主機資源、拉低備份性能。同時重復數(shù)據(jù)刪除技術雛形期,主要以類HASH鏈表式的消重手段為主,鏈表式消重技術對主機計算資源與后端存儲、備份介質都有一定要求,且HASH鏈表越長消重越慢。因此,重復數(shù)據(jù)刪除技術在初期并不被人看好。 2,源端消重?目標端消重? 源端消重,是指備份軟件在客戶端上獲取到備份數(shù)據(jù)時就開始消重過程,在備份系統(tǒng)內傳輸?shù)臄?shù)據(jù)均是消重后的數(shù)據(jù)。源端消重技術由于需要在備份時進行消重,因而需要占用宿主機一部分資源來執(zhí)行消重。 目標端消重,是指備份軟件已經(jīng)備份到備份存儲,在數(shù)據(jù)緩存到備份存儲里或已存儲到備份存儲上再進行消重過程。目標端消重技術已在重復數(shù)據(jù)刪除的發(fā)展歷程上輝煌過一段時間,因為此技術不會消耗源端資源同時也不會降低備份性能,目標端消重性能完全依賴備份存儲自身資源和效率。 3,基于類HASH鏈表式消重?基于CPU-內存式消重? 類HASH鏈表式消重是重復數(shù)據(jù)刪除技術發(fā)展史上的一大核心技術,即使在今天也占有一定市場。HASH鏈表式消重,實現(xiàn)方式是將數(shù)據(jù)切片,然后計算出每塊數(shù)據(jù)片的HASH值之類能唯一標記該數(shù)據(jù)片的索引值,若在消重的唯一索引鏈表上命中,則消重。若沒有命中則更新索引鏈表,將數(shù)據(jù)片經(jīng)過處理后存儲在備份介質上。熟悉了鏈表式消重的過程,可以很清楚的知道這種技術的弊端就是當索引表非常長后,消重效率會越來越低。 基于CPU-內存式消重技術。在發(fā)展初期,CPU的性能和內存的大小處處受限,這種技術的發(fā)展左右碰壁。但經(jīng)過摩爾定律的驅使,現(xiàn)在的CPU和內存已經(jīng)取得卓越的性能,基于CPU-內存式消重技術取得了相當不錯的成績。與類HASH鏈表式消重不同的是,該技術在消重前會將唯一索引鏈表直接加載進內存,消重時會直接將備份數(shù)據(jù)加載到內存,切片,計算每個數(shù)據(jù)片索引值,然后完成索引值對比、更新,最后處理數(shù)據(jù)、存儲。幾乎整個重復數(shù)據(jù)刪除過程都在CPU和內存中完成,現(xiàn)在CPU和內存的處理效率遠比數(shù)據(jù)在磁盤上流動的效率高。經(jīng)過長時間的發(fā)展,基于CPU-內存的消重算法已經(jīng)臻于完善,對CPU和內存的利用效率完全滿足商業(yè)標準?,F(xiàn)在此種技術已經(jīng)升級,不僅僅可以基于LAN進行消重備份,而且能支持基于SAN的消重備份了。不得不說,基于CPU-內存式消重技術早已不是當年“吳下阿蒙”。 4,定長消重?可變長消重? 影響重復數(shù)據(jù)刪除效率的核心因素之一便是消重切片過程中的切片精度。顯而易見,若是切片精度越高,那么數(shù)據(jù)片重復命中率越高,消重效率越好。若對于不同長度的數(shù)據(jù)片能夠動態(tài)調整切片精度,適應每份備份數(shù)據(jù)的情況,那么消重效率更加高效?,F(xiàn)在定長消重的精度范圍主流水平約在6K或8K(min)、16K(max)左右,可變長消重的精度范圍現(xiàn)已突破到4K(min)、16K(max)。(@Li Fei 某保險公司 系統(tǒng)架構師) 但是個人比較喜歡源端去重,現(xiàn)在目標端去重要么硬件廠商已經(jīng)做了(各種虛擬帶庫),要么只支持磁盤類型的,對磁帶設備兼容不好。 源端去重相比會消耗額外的資源,但現(xiàn)在基本都性能過剩,并且去重后的數(shù)據(jù)量減少適應的場景更多,比如遠端復制。(@王巧雷 系統(tǒng)工程師) 能用源端盡量用源端,搭配OST設備和萬兆網(wǎng),扁平化傳統(tǒng)備份架構,實現(xiàn)去SAN化和驅動器化。(@sam_8286 系統(tǒng)工程師) 我來潑一盆冷水,這是一項看上去很美的技術,但是開啟重復數(shù)據(jù)刪除功能會占用大量CPU資源,影響整體存儲的IO性能,現(xiàn)今磁盤容量快速增長,價格快速下降,重復數(shù)據(jù)刪除帶來的存儲空間利用率的優(yōu)勢很快就被抵消掉了。所以只有極少量的場景需要重復數(shù)據(jù)刪除功能,一般情況還是別折騰了~~(@yhsih 某煙草公司 系統(tǒng)運維工程師) 不論是目標端重刪還是源端重刪,主要根據(jù)你的應用來選擇,比如說海量數(shù)據(jù)的備份,你就可以選擇源端重刪,可以節(jié)省帶寬,縮短備份窗口;如果你使用歸檔可以用目標端重刪;如果您還要關注性能可以用目標端離線重刪,如果對性能要求不高,可以采用目標端在線重刪。(@Laozhao) 四、重刪功能在全閃存陣列中有何意義? 重刪功能主要是解決閃存SSD壽命較短的問題。閃存SSD的數(shù)據(jù)寫入和更新是電子式擦除方式,必然帶來數(shù)據(jù)塊的頻繁擦除動作,而數(shù)據(jù)塊的擦除是有次數(shù)限制的,所以壽命自然不長,壽命到了,數(shù)據(jù)塊也就無法使用了,無法使用的數(shù)據(jù)塊達到一定程度時,整個SSD盤也就壽命到期了,需要更換。 而重刪功能,可以在數(shù)據(jù)寫入或者擦除數(shù)據(jù)塊時,在閃存的軟件層,就判斷了是否要寫入該數(shù)據(jù)。如果寫入的數(shù)據(jù)是重復的,就不再寫入,這樣自然降低了數(shù)據(jù)塊的擦除頻率,提升了SSD盤的壽命,另外也大大提升了閃存陣列的利用率,虛擬容量也提升了好幾倍。 當然類似的提升SSD壽命的方式還有數(shù)據(jù)壓縮功能。這里不再贅述。(@鄧毓 某農(nóng)信 系統(tǒng)工程師) 要看全閃存要支持的業(yè)務類型是什么。如果上層業(yè)務系統(tǒng)是類似虛擬機,VDI等環(huán)境,會產(chǎn)生很多重復的虛擬機資源,那么重刪是很有用的。 如果支持是像數(shù)據(jù)庫類型或文件系統(tǒng)類型的業(yè)務,重刪用處不大,反而需要壓縮功能。(@ZhuJun2014 存儲工程師)
|
|