重復(fù)數(shù)據(jù)刪除是一種目前主流且非常熱門的存儲(chǔ)技術(shù),可對(duì)存儲(chǔ)容量進(jìn)行有效優(yōu)化。它通過(guò)刪除數(shù)據(jù)集中重復(fù)的數(shù)據(jù),只保留其中一份,從而消除冗余數(shù)據(jù)。
一、重復(fù)數(shù)據(jù)刪除的原理
每一個(gè)數(shù)據(jù)塊通過(guò)散列算法(例如MD5 或者SHA-1)為每一個(gè)數(shù)據(jù)產(chǎn)生一個(gè)特定的散列值。將這個(gè)散列值與現(xiàn)有的散列值索引相比較,如果它已經(jīng)存在于索引中,那么這個(gè)數(shù)據(jù)就是重復(fù)的,不需要進(jìn)行存儲(chǔ)。否則,這個(gè)新的散列值將被添加到索引中,這個(gè)新的數(shù)據(jù)也因此被存儲(chǔ)。
要使重復(fù)刪除平臺(tái)處理更精確,就需要更大的索引。例如,基于文件的重復(fù)刪除只需要一個(gè)百萬(wàn)大小或千萬(wàn)大小的單一散列值索引。相比之下基于塊的重復(fù)刪除會(huì)涉及到更多的單一數(shù)據(jù)塊,這個(gè)數(shù)字通常會(huì)達(dá)到十億級(jí)。這樣精確的重復(fù)刪除需要更強(qiáng)的處理能力以便可以為其提供更大的索引。除非硬件的設(shè)計(jì)與對(duì)索引的要求相適應(yīng),否則隨索引的不斷擴(kuò)展,平臺(tái)的性能將隨之下降。
一般而言,散列算法很少會(huì)將兩個(gè)不同的數(shù)據(jù)塊產(chǎn)生出相同的值。當(dāng)這樣的“散列碰撞”發(fā)生時(shí),系統(tǒng)就不會(huì)存儲(chǔ)新的數(shù)據(jù),因?yàn)橄到y(tǒng)看到同一個(gè)散列值已經(jīng)存在。這被稱為“false positive”(誤報(bào)),會(huì)導(dǎo)致數(shù)據(jù)丟失。一些廠商結(jié)合不同的散列算法,以降低散列碰撞的可能性。另一些廠商還會(huì)檢查元數(shù)據(jù)來(lái)確認(rèn)數(shù)據(jù),從而避免散列碰撞。
二、in-band(帶內(nèi))重復(fù)刪除和out-of-band(帶外)重復(fù)刪除的對(duì)比
目前重復(fù)數(shù)據(jù)刪除有兩種技術(shù)架構(gòu),即在線處理(in-line)和后處理(Post-Processing)。也有叫源端消重技術(shù)和目標(biāo)端消重技術(shù)。In-line是指數(shù)據(jù)保存到二級(jí)存儲(chǔ)系統(tǒng)前進(jìn)行重復(fù)數(shù)據(jù)刪除。這樣降低了對(duì)存儲(chǔ)性能和容量的需求,但是卻增加了一個(gè)需要管理的設(shè)備,有可能影響備份的性能;而Post-process 是指在數(shù)據(jù)備份處理之后才進(jìn)行重復(fù)數(shù)據(jù)刪除。它需要暫時(shí)存儲(chǔ)全部數(shù)據(jù),因而需要更大的存儲(chǔ)空間,所以雖然對(duì)備份性能影響較小,但減少備份介質(zhì)數(shù)量的效果并不明顯。In-band 處理效率較高,但處理速度會(huì)稍慢一些,因?yàn)轭~外的處理需要更多的存儲(chǔ)時(shí)間,從而導(dǎo)致備份窗口占用更久的時(shí)間。Out-of-band 處理不會(huì)影響系統(tǒng)的性能,但它需要略多一些的磁盤空間。
In-band 的優(yōu)點(diǎn)在于它只對(duì)數(shù)據(jù)執(zhí)行一次處理。而缺點(diǎn)是,它會(huì)減慢寫入備份的速度,影響備份窗口,具體情況視實(shí)施而定。在線(inline)陣營(yíng)認(rèn)為,雖然它們可能會(huì)在某種程度上減慢備份速度,但它們執(zhí)行完成后,就完成工作了。但是out-of-band 仍然還有重要的工作未完成,即存儲(chǔ)數(shù)據(jù)。In-band能夠減少需要傳輸?shù)膫浞輸?shù)據(jù)量,從而簡(jiǎn)化了傳統(tǒng)的遠(yuǎn)端備份問(wèn)題。對(duì)移動(dòng)辦公的用戶、遠(yuǎn)程的服務(wù)器和工作站,能高效地通過(guò)現(xiàn)有廣域網(wǎng)(WAN)把數(shù)據(jù)傳輸給數(shù)據(jù)中心。
Out-of-band 處理的方式為,寫入原始數(shù)據(jù),讀取,并確認(rèn)其是否為冗余數(shù)據(jù),若是,則用一個(gè)或多個(gè)指針進(jìn)行代替。其優(yōu)點(diǎn)是,out-of-band 能夠提供并行處理(多處理器)能力解決問(wèn)題,而in-band 只能為每個(gè)備份流提供一種處理能力。其缺點(diǎn)是,需要對(duì)數(shù)據(jù)進(jìn)行多次讀寫,而多次的讀寫會(huì)導(dǎo)致磁盤空間的占用。另外,由于out-of-band 系統(tǒng)在完成重復(fù)數(shù)據(jù)刪除之前,必須有足夠的磁盤空間來(lái)存儲(chǔ)最新的備份集,所以,out-of-band 處理方式需要比in-band 處理方式需要多一些磁盤空間。Out-of-band 陣營(yíng)反駁說(shuō),減慢原始備份速度是不能接受的,但是他們能夠?yàn)榈诙斓膫浞菁皶r(shí)完成重復(fù)數(shù)據(jù)刪除。
正因?yàn)镮n-band、Out-of-band各有優(yōu)勢(shì),現(xiàn)在很多軟件備份產(chǎn)品具有源端和目標(biāo)端的重復(fù)數(shù)據(jù)刪除功能,例如,CommVault的Simpana、EMC的NetWorker,IBM的Tivoli(TSM)管理系統(tǒng)和賽門鐵克的NetBackup,都會(huì)在他們的軟件中提供源和目標(biāo)端重復(fù)數(shù)據(jù)刪除功能。源端重復(fù)數(shù)據(jù)刪除主要是適用于小數(shù)據(jù)集以及遠(yuǎn)程數(shù)據(jù),而目標(biāo)端重復(fù)數(shù)據(jù)刪除主要是用于對(duì)大量的數(shù)據(jù)集合備份的情況下,這時(shí)備份客戶端和備份服務(wù)器之間不受帶寬限制。
雖然重復(fù)數(shù)據(jù)刪除是一項(xiàng)對(duì)吞吐量很高的技術(shù),大多數(shù)用戶表示他們?cè)谶@方面的體驗(yàn)并不明顯。在選擇重復(fù)數(shù)據(jù)刪除產(chǎn)品的時(shí)候,我們建議用戶首先考慮切身需求,這就包括了估算的數(shù)據(jù)增長(zhǎng)速度、預(yù)算以及所需要的特性。相對(duì)而言,備份軟件、虛擬帶庫(kù)的兼容性、可靠性、可操作性等更加重要。最后,要對(duì)重復(fù)刪除產(chǎn)品進(jìn)行足夠數(shù)據(jù)量的輸入的檢測(cè),以檢驗(yàn)其是否滿足你每天的備份數(shù)據(jù)量。如果你所購(gòu)買的產(chǎn)品無(wú)法在第二天晚上備份任務(wù)開(kāi)始之前,及時(shí)完成重復(fù)數(shù)據(jù)刪除工作,那你肯定要有麻煩了