一、什么是重復數據刪除
備份設備中總是充斥著大量的冗余數據。為了解決這個問題,節省更多空間,“重復刪除”技術便順理成章地成了人們關注的焦點。采用“重復刪除”技術可以將存儲的數據縮減為原來的1/20,從而讓出更多的備份空間,不僅可以使磁盤上的備份數據保存更長的時間,而且還可以節約離線存儲時所需的大量的帶寬。
就在幾年前,D2D備份似乎還好得令人難以置信。受價格低廉的 ATA(以及稍后的SATA)硬盤的影響,很多人會選擇用D2D取代虛擬磁帶庫或做備份到磁盤的工作,使備份速度變得更快,不必再擔心在磁帶驅動器和磁帶庫上產生的機械故障,并且使文件恢復變得更加輕松。
但是今天,我們的磁盤備份設備的容量已經趨于飽和,在數據中心已經沒有足夠的空間來備份PT級的數據,在這種情況下,當我們希望將備份數據保存一個月時,卻只能保存兩到三天。問題是在我們的備份設備中有太多的重復數據。現在終于有了解決這個問題的辦法,善于抓住機會賺錢的廠商們聲稱他們的新一代“刪除重復數據”產品可以按20:1,甚至300:1的比例縮減我們需要存儲的數據量。果真如此嗎?讓我們仔細看看。
重復數據刪除技術支持在已有的磁盤設備上存儲更多的備份數據。因此采用“重復數據刪除”技術可以增加您保存備份數據的時間,減少數據中心的消耗,降低成本。如果您刪除重復數據后再通過WAN發送,那么您就能夠節省大量的帶寬,并且可以取代磁帶實現網上離線備份。重復數據刪除技術唯一的缺點是備份速度變慢。
源起
當您的備份程序在網絡中多次從同一目錄下備份相同的文件,或者從多個地址處備份相同的文件時,重復的數據在臨時區域進行備份。大部分網絡上的重復數據量令人吃驚,這些數據從56個用戶保存在他們本地目錄下的假日聚會的PDF格式邀請函,到每個服務器的系統驅動器上3GB Windows文件,真是包羅萬象,應有盡有。
解決臨時區域內文件重復的方案是增量備份。盡管我們很喜歡這樣做,尤其是喜歡選擇Tivoli Storage Manager 采用的永久增量備份的方法,但當我們考慮到RAID災難恢復時,我們想到的是重復數據刪除,而不是增量備份。增量備份主要是避免重復。
重復數據刪除最基本的形式是出現在CAS(內容尋址存儲)設備中的單一實例存儲(single-i tance store),例如,EMC的 Centera。當每個文件存儲到CAS系統上時,CAS系統會為存儲的文件內容生成一個散列(hash);如果系統中已經存在具有相同散列(hash)的文件,系統就會再創建一個表示副本的指針指向已存在的文件,而不是保存另一個副本。
微軟Windows Storage Server的最新版本,Windows服務器的OEM NAS(網絡附加存儲)版本,采用了與刪除重復文件略微不同的方法。當寫入數據時,W 不識別重復文件,而是運行一個后臺程序SIS (單一實例存儲) Groveler,該程序通過部分文件散列函數(采用二進制比較法)識別重復文件,將重復文件移到公用存儲區,原始位置上的文件用連接到公用存儲區文件的鏈接代替。
盡管文件級SIS能夠節省一些空間,但是如果我們不只消除重復文件而且還消除了文件內存儲的重復數據,那事情可就變得讓人有興趣了。想想Outlook的 . T文件。例如一個典型的Outlook用戶可以擁有300-MB或更大的. T文件,文件上保存著他過去所有的電子郵件;每天他都會收到一個或更多新的郵件,就因為那天他的. T文件改變了,你的備份程序就把這個. T文件包括在增量備份里了,即使這個300MB的文件只有25 KB 的改變。
重復數據刪除產品能夠識別這個25 KB的新數據,并且剔除其余沒有改變的舊的數據,只保存25 KB的新數據,從而節省大量磁盤空間。再進一步設想一下,550KB的附件在20個用戶的 . T文件內,如果它們能夠被消除,您就可以縮減大量的數據。象下述這樣的一組解決方案是Data Domain倡導的采用“重復數據刪除”技術進行備份的目標。即這些采用“重復刪除”技術的設備管理 VTL (虛擬磁帶庫) 或 NAS等備份設備,它們從這些備份應用設備(VTL或NAS設備等)中獲取數據,透明地執行“重復刪除”處理。
二、重復數據刪除的五個階段
數據收集
在數據收集階段,軟件通過比較進入的備份數據和先前的備份縮小需要進行分析數據的范圍,使用“內容已知”數據庫辨別它們之間可能的重復和相似數據。例如,如果名為同一個客戶端中的 “ ootdocumentsabc.txt”文件在備份中存在兩次,軟件自動決定采取何種動作。如果進入的數據是已存在數據的修改版本,該數據就進入下一階段(數據識別、數據比較)的處理流程以確定數據發生的具體變化;如果進入的數據和已存在數據完全相同,那么進入下一階段對數據副本進行校驗。另外的數據收集操作包括:標志保存在不同位置(例如,不同的客戶端、目錄等)的相同對象副本。軟件還為數據收集階段發現的冗余數據對創建一工作列表,該表格用于數據識別和比較階段進行進一步分析。
數據識別/數據比較
在數據識別/數據比較階段,軟件以字節為單位分析數據收集階段標志出的相似數據對象。如果數據收集階段創建的工作表表明需要進行數據識別,那么軟件就會用 delta 差分算法確定備份組中的哪些數據是唯一的、哪些數據是重復的。
該算法可以有效地以字節為單位映射發生變化的數據,并且對數據對象內的偏移或者位置改變不敏感,所以,即使相關的對象之間發生明顯的結構改變,該算法仍可以定位冗余的數據。
如果數據收集階段從元數據級別認定備份組中的數據和前一個備份相同,那么在數據識別階段將以字節為單位對數據進行比較。在該步驟中,軟件調用數據比較器識別出數據發生變化的文件。
數據重組
數據識別/數據比較的結果被傳遞給數據重組過程,在該過程中數據被重新組裝,放入臨時的“保留磁帶”中,新數據被保存,前一階段被標出的重復數據被已存數據的指針替代。對備份軟件而言,保留磁帶和真正的磁帶完全相同,只是存儲在新磁帶中的數據要遠少于真正的磁帶上存儲的數據。從備份軟件看來,數據是連續的并且也沒有刪除副本,軟件可以根據嵌入在文件系統中的指針讀取重復數據的唯一一份副本。該過程的最終結果是產生一份經過重復數據刪除的備份組視圖。#p#分頁標題#e#
可選的完整性檢查
在實際刪除所有的重復數據前,軟件執行一次可選的檢查,以保證數據100%的完整性。在本階段中,軟件通過將“保留磁帶”(代表經過重復數據刪除的數據)和原始數據進行比較驗證其結構和整個數據內容。
空間回收
在空間回收階段,軟件從文件系統中刪除冗余的數據,釋放先前被占用的磁盤空間以備他用。保留磁帶和原始的、沒有經過重復數據刪除的磁帶交換位置(比如條碼、槽位以及屬性等),然后軟件智能的釋放重復的區塊并將它們放回空閑空間池。經過這樣的處理以后,所有其他需要存儲空間的數據處理過程都可以重用先前被重復數據占用的空間。
三、重復數據刪除技術的四大優勢
重復數據刪除技術也就是所謂的容量優化保護技術。它能給客戶的計算機系統,尤其是備份系統帶來哪些好處呢?
目前,重復數據刪除技術主要應用于數據備份,也有公司宣稱將把該技術應用在主存儲中,但那畢竟不是主流。重復數據刪除技術可以提供更大的備份容量,實現更長時間的數據保留,還能實現備份數據的持續驗證,提高數據恢復服務水平,方便實現數據容災等。
更大的備份容量
備份數據中包含太多的冗余部分,在數據全備份中更是如此。盡管增量備份只是備份那些有變化的文件,但增量備份中通常也會包含冗余的數據塊。
重復數據刪除技術的原理是只保存惟一一份備份數據的數據段。當數據寫入到備份設備時,數據會被分成可變長度的數據段。重復數據刪除設備會實時將該數據段與已經存儲的各數據段進行比較。這種方式可以保證每個惟一的數據段只保留一份。因為重復數據刪除設備可以在文件內或文件間,甚至數據塊內發現重復的文件和數據段,所以實際所需的存儲空間也就比所要保存的數據量低一個數據量級。容量優化效率高低的關鍵在于算法。容量優化技術依據的原理并不是新出現的,而是在學術圈里存在幾十年了。
數據能得到持續驗證
目前,市場上采用重復數據刪除技術的產品的區別在于,實施重復數據刪除的地點和文件被分割的片段大小不同,但更重要的是數據寫入備份設備時是如何完成完整性和一致性檢查的。在主存儲系統中,邏輯一致性檢查總會伴隨著風險。如果軟件缺陷導致寫入錯誤的數據,就可能破壞數據塊指針、位圖。通常情況下,比較理想的解決辦法是在卸載文件系統后運行文件系統檢查程序(比如Fsck)。如果文件系統中保存的是備份數據,那么直到進行恢復前,錯誤是很難被發現的,等到真需要恢復時,可能已經沒有足夠的時間來糾錯了。
備份數據是備份工作中最有價值的部分。備份數據不會被經常訪問,而一旦需要訪問備份數據時,往往意味著發生了人為或系統的故障,需要進行數據恢復。要檢查文件系統在恢復操作時的一致性,需要等到下一次系統重啟或者讓系統下線,這會增加不必要的風險。因此,優秀的重復數據刪除設備應具有端到端的驗證過程。
更高的數據恢復服務水平
備份數據恢復服務水平是指數據備份到備份設備中,能否準確、快速、可靠地進行數據恢復。
Oracle數據庫通常裝載著企業最需要保護的業務數據。企業經常采用全備份或增量備份來保護Oracle數據庫。全備份方式的備份和恢復執行起來比較快,這是因為增量備份經常要對整個數據庫進行掃描,以便發現改變的數據塊,而且增量備份方式在恢復的時候還需要一個全備份和多個增量備份,這也影響了恢復速度。
既然如此,為什么很多企業還要采用增量備份的方式呢?這是因為全備份比增量備份需要更多的備份時間和備份空間。具有重復數據刪除功能的備份設備可以很好地解決上述問題。
對于以Oracle為代表的數據庫的備份來說,備份時間是由遍歷數據塊的時間(尤其是增量備份)和數據傳輸時間組成的。對增量備份來說,數據塊的遍歷是對數據庫進行掃描,以便發現改變的數據塊,這需要較長的時間。由于備份設備的性能進一步提高,數據庫全備份和增量備份所需的時間已經相差無幾。
以磁盤為介質的備份設備具有高性能和在線重復數據刪除功能,因此對Oracle數據庫進行多個全備份時,只使用了很少的存儲空間。企業每天進行全備份和數據塊級的增量備份所占用的存儲空間基本相同。與普通的備份設備相比,使用重復數據刪除技術的備份設備做全備份時,可節省95%的磁盤消耗。
對關鍵數據進行備份時,采用重復數據刪除技術的備份設備可用全備份來替代增量備份,從而提高數據恢復服務水平。
方便實現備份數據的容災
以數據復制技術為主流的容災技術都十分關注數據的實時復制,而備份數據的容災卻無人關注。由于重復數據刪除技術對備份數據有很好的容量優化能力,每天做全備份只需少量的磁盤增量,而通過WAN或LAN遠程傳輸的正是進行容量優化后的數據,因此可以大大節省網絡帶寬。
現在,很多企業把備份數據的在線復制當成異地磁帶存儲的替代解決方案。采用復制解決方案,數據經由LAN或WAN,從本地的主磁盤被拷貝到遠程的磁盤存儲上。為加強保護,企業還可以提高數據同步的頻率,或者將遠程站點配置成完全的災難恢復站點,一旦主站點出現需要停機一段時間的情況,可以在遠程站點啟動業務操作。
客戶在選擇具有重復數據刪除功能的產品時,應該從容量優化的算法、持續數據驗證、數據服務水平、方便高效的容災等方面進行考察。
四、重復數據刪除技術弱點
重復數據刪除是目前存儲行業最熱門的技術之一,用戶和廠商們都很看好這種技術。有的廠商在開發硬件,有的廠商在開發軟件,還有的廠商同時開發相關的軟件和硬件。
跟以前一樣,我不打算對比不同廠商的產品或者技術,我只想談談你在考慮購買重復數據刪除軟件或硬件時必須向廠商咨詢的一個重要問題,即數據損壞的問題。你可能會想,重復數據刪除與數據損壞有什么關系呢,不用著急,我馬上就給你解釋。 但是必須說明的是,我是從通用硬件和軟件的角度來寫這篇文章的。有些廠商的產品也許可以或者不可以接近我在文中談到的全部或者部分問題。 選購哪家廠商的產品以及向廠商咨詢什么問題的決定權在你自己手中,筆者不承擔任何責任。#p#分頁標題#e#
有些人也許讀過我曾經寫過的一篇關于我自己經歷過的數據損壞的文章。 我稍微對比了一下正確的數據和損壞后的數據,數據的ASCII碼發生了很大變化。實際上,大部分字節都損壞了。
本文討論的是數據不定期損壞的問題,并非一定會發生,即使是發生數據損壞事故的概率遠低于廉價SATA的高端企業光纖信道驅動器也不能例外。 另外,發生問題的部件不一定是驅動器或者控制器,也可能是內存、CPU或者別的什么部件。歸結為一點就是,數字世界中的數字資料肯定有可能會損壞。 雖然發生數據損壞事故的情況跟使用的操作系統、硬件和軟件都有關系,即使是運行在基于MVS多重虛擬存儲系統的IBM大型機上也可能發生數據損壞事故,只是概率要比系統低很多。
瑞士一家實驗室去年發表了一篇關于數據損壞的論文,其中有些內容值得一讀。
你可能會想,這些跟重復數據刪除有什么關系。問題是,如果重復數據刪除的硬件或者軟件損壞了,你可能會失去所有的數據。 如果你打算刪除重復的數據,你就必須保證你擁有的那些數據是完好的。
例如,加入數據在被讀出時損壞,而存儲在磁盤上的數據仍是好的,那么在進行數據對比時會怎么樣? 如果再次讀取,可能就能夠得到正確的數據。但是如果數據被寫入磁盤時的日期出錯,你是否還能讀取那些文件呢? 讓我們一步一步分析這兩個例子,看看到底發生了什么事。
實例1:受損數據讀取
如果從磁盤讀取數據,而且那些數據由于某種原因損壞了,然后開始將受損的數據應用于新數據,你可能會遇到一個大問題。當你再次從磁盤讀取數據,進行重復數據刪除的操作時,它可能就不同了。
如果將讀取的數據與新數據進行對比,內存中的數據將是壞的,所以你找到的所有一樣的數據在下次被讀取時都將變成其他的數據。因此,基本上從受損數據中讀取的任何數據都將被錯誤的對比,因而變得無法讀取。
如果那些數據由于某種原因被重新讀取,而且讀取的是正確的數據的話,那么后續數據都將是正確的。除此之外,就會發生無法恢復的調試,你將丟失大量的數據。 令人擔心的是,一部分數據是好的,一部分數據是壞的,要想區分開來,非要進行非常細致的檢查工作。
實例2:受損數據重復數據
但是,如果數據從一開始就出錯,在磁盤上就已經受損了怎么辦? 這個問題與第一個實例很相似,只是第一個實例中的數據是好的,后來才讀取了壞的數據,令所有數據都受損了。在這個實例中,重復數據是在內存中創建的,是好的,但是磁盤上的數據是壞的。 也就是說,你用一個好的重復數據建立了數據,但是一旦從磁盤讀取數據,數據就變成壞的了。好的一面是,一旦從磁盤重新讀取數據到內存,數據就一樣了,所以這個問題不是很嚴重。 但是在利用內存中的原始數據創建數據時,你不能進行恢復已經刪除的重復數據。當你下個月恢復刪除的重復數據時,你會獲得錯誤的數據,除非從磁盤讀取正確的數據才行。 再次強調一點,這是個調試問題,可能無法解決。
你需要向廠商咨詢些什么
我自己遇到過數據受損的事故,我也看到其他人遇到過同樣的問題,你遲早也會遇到。 我也非常相信新的T10 Data Integrity Field標準,這個標準會從主機向磁盤進行8字節的檢驗,讓磁盤來驗證數據,估計很多廠商都將在今年晚些時候提供基于這種標準的產品。我個人很喜歡這個標準,因為有些部分已經應用于硬件的數據通道中,它是由為你提供SCSI協議的同一個廠商提供的。
文件系統可以進行數據檢驗,但是如果文件系統在進行檢驗時修正了數據,你可能會遇到兩個問題:
文件系統在檢驗之前必須將數據讀回到服務器。當數據被寫回設備之前,它們是沒有被檢驗過的。
服務器CPU必須計算出檢驗數字,并且在文件被讀回時進行驗證。這對服務器有很大影響。 包括增加內存帶寬的要求以及利用CPU高速緩存,要求將應用程序重新從內存載入以及檢驗數字計算所需的內存帶寬。
如果你運行的應用程序使用了大量服務器資源,這就會構成一個嚴重的問題了。
有些產品有著自己的文件系統和檢驗數字,可以解決我對數據損壞的部分擔憂,但是并非所有的廠商都提供了具有這些功能的產品。這只是你應關注的重復數據刪除中的一部分問題。 在選購產品時,你還必須考慮其他許多因素,但是這應該是你優先考慮的因素。你在提出這個問題的時候,廠商們也許會說這是你自己的問題,你的系統應該象T10DIF那樣。 這種回答是錯誤的。在你提出問題之前,廠商們必須考慮到你的硬件和軟件,如果它們把問題丟給你,你就不用考慮購買它們的產品了。
在某些環境中,重復數據刪除是一種很重要的工具,但是凡事都有兩面性,你應該認真規劃和執行它。