除非您最近像鴕鳥一樣把頭埋在沙子里,否則您或許會發(fā)覺重復數(shù)據(jù)刪除是個非常熱門的話題。似乎您有所耳聞的每個存儲供應商(還有很多您不知道的公司)都在兜售重復數(shù)據(jù)刪除技術,用于降低磁盤到磁盤備份的成本。
您或許也曾懷疑重復數(shù)據(jù)刪除技術是否安全?在從已刪除重復數(shù)據(jù)的備份還原數(shù)據(jù)時,您是否真的可以取回自己的數(shù)據(jù)?
評估重復數(shù)據(jù)刪除技術的相對安全性可分為兩個基本部分:
? 識別并消除重復數(shù)據(jù)所用的算法
? 基礎軟硬件的可靠性
本文中,我將根據(jù)這兩條標準評估重復數(shù)據(jù)刪除技術。此外,我還將講解 NetApp 為增強其重復數(shù)據(jù)刪除技術的可靠性所作的選擇。大多數(shù)其他供應商提供的重復數(shù)據(jù)刪除僅用于備份,而我們卻支持用于主存儲和二級存儲的重復數(shù)據(jù)刪除,因此我們格外注重數(shù)據(jù)安全性。
識別重復數(shù)據(jù)
大多數(shù)現(xiàn)有重復數(shù)據(jù)刪除產(chǎn)品都是在塊級操作,即用新塊比較上次存儲的塊,以判斷是否存儲過相同的塊。如果上次存儲過相同的塊,則指針將指向這個存儲的塊,“新”塊將被丟棄。
那么如何判斷兩個塊是否完全相同?最常用的方法是計算每個塊的指紋,即每個數(shù)據(jù)塊中包含的哈希值。如果兩個塊有相同的指紋,則通常認為它們是相同的。
但是,兩個不同的數(shù)據(jù)塊也可能具有相同的指紋或哈希值,這種可能性雖然很低,但卻是存在的。我們稱之為“哈希沖突”,這將導致唯一的數(shù)據(jù)塊被意外刪除。
正如我們所預料,降低哈希沖突的可能性必需有更為復雜的算法,這通常會耗費更多的 CPU 資源來計算哈希值,并會得出較大的輸出值。顯然,可靠性與速度之間存在某個平衡點。此外,哈希值越長,指紋存儲所需的空間也越大。
在評估重復數(shù)據(jù)刪除技術時,您必需清楚供應商識別重復數(shù)據(jù)的方式,以及所選算法帶來哈希沖突的風險。很多供應商辨稱磁盤故障、磁盤驅(qū)動器或磁帶錯誤造成數(shù)據(jù)塊損壞的概率要比哈希沖突的概率高。我不知道這是否只是令人寬慰的想法,但我相信絕大部分人都希望將風險降至最低。
由于 NetApp 支持主存儲和備份存儲的重復數(shù)據(jù)刪除,因此我們需要采取一種更為積極的方法來防范哈希沖突。與大多數(shù)其他公司一樣,我們也采用指紋算法,但只用于識別潛在的重復數(shù)據(jù)。發(fā)生哈希沖突時,我們會首先對兩個塊進行逐個字節(jié)的比較,核查它們是否完全相同,然后才會決定是否廢棄任何塊。NetApp 的技術總監(jiān) Blake Lewis 在上一篇文章中曾詳細闡述 NetApp 如何識別重復數(shù)據(jù)塊。
基礎軟硬件的可靠性
重復數(shù)據(jù)刪除技術的可靠性程度取決于基礎軟硬件有多可靠。事實上,盡管這一點可能不會即刻體現(xiàn),但是對于實施重復數(shù)據(jù)刪除,可靠性確實變得更為關鍵。
例如,假設您按照比較標準的備份日程進行每晚的增量備份和每周的完整備份, 現(xiàn)在假設您在月初創(chuàng)建了一個文件,之后沒有做過任何修改, 按照傳統(tǒng)的備份方式,每周的完整備份都會產(chǎn)生一個副本,因此在月底這個文件將會有四個副本。如果您需要將文件還原至該點,則即使備份介質(zhì)不可靠,您也可以至少恢復四個副本中的一個。