天天看點

備份領軍産品DataDomain

1、概述... 1

2、開創磁盤備份的新模式... 2

3、重複資料删除... 4

4、破解磁盤瓶頸點... 4

5、全局資料消重檔案系統DDFS. 6

6、CPU-Centric存儲系統... 7

7、資料無損體系結構... 9

8、高效的遠端資料複制... 10

9,小結... 11

1, 概述

長期以來備份存儲領域被錄音帶媒體所統治,其主要原因有兩個方面。第一,錄音帶相對于磁盤媒體而言,具有很好的價格優勢;第二,備份存儲主要是順序寫操作,隻有在資料恢複的時候,才需要從錄音帶上讀取資料。這兩個特征就決定了錄音帶在資料備份領域的地位,特别是資料歸檔領域至今還存在着一席之地。

近10年磁盤容量發展迅速。還記得2000年初,我自己攢了人生中的第一台電腦,賽揚CPU,30GB 的邁拓IDE硬碟。在那個年代,30GB硬碟是大容量硬碟,花了将近1250元人民币。時至今日,4TB的硬碟即将成為主流,容量翻了近140多倍。得益于巨磁阻技術的發展,磁盤容量在近幾年一直高歌猛進;在未來充氦技術成熟之後,磁盤容量還會持續增長。磁盤容量的增長,機關存儲價格的下跌,導緻磁盤技術對資料備份領域産生了巨大的沖擊。在這次革命的引領中,DataDomain算是一個非常成功的革命者。

2009年DataDomain被EMC收購,至此DataDomain變成了EMC旗下的一員猛将。DataDomain是一種目的端資料去重的裝置,和Avamar之類的源端去重裝置結合起來,将可以打造令人滿意的磁盤備份系統。

備份領軍産品DataDomain

在此,本文對DataDomain的儲存設備進行分析,一窺其中的奧秘。

2, 開創磁盤備份的新模式

備份領軍産品DataDomain

從上圖中我們可以知道,在整個IT結構中,Primary Storage的資料通過備份伺服器進行資料備份,或者通過Archive伺服器進行資料歸檔操作。備份和歸檔的存儲媒體通常是錄音帶。DataDomain裝置的出現正好是替代了傳統錄音帶的位置,進而使得Primary Storage的資料直接或者通過備份服務軟體備份到DataDomain裝置。DataDomain裝置無論在性能還是在資料去重效率方面都是首屈一指的,可以說DataDomain開創了磁盤備份的新模式。

總的來說,DataDomain的成功源自于将磁盤存儲技術成功的應用于備份領域,并且成功的替換了體積龐大、性能低下的傳統帶庫技術,進而使得磁盤備份成為資料備份領域的主力軍。

備份領軍産品DataDomain

大家知道,傳統的帶庫體積龐大,需要采用機械手裝置加載錄音帶。由于錄音帶本身不具備随機讀寫能力,是以,在順序寫的情況下表現尚可,但是,一旦需要随機讀取時,就顯得非常力不從心。另外,錄音帶存儲管理非常麻煩,占用大量的空間。和錄音帶技術相比,磁盤存儲體積小,随機讀寫能力強,是以,在不考慮成本的情況下,磁盤是錄音帶的完美替代者。

當磁盤替代錄音帶之後,備份、歸檔都可以在磁盤上完成。在資料的整個生命周期内,都可以做到資料的磁盤存儲。這種好處是顯而易見的,可以大大降低系統體積,簡化系統管理。

備份領軍産品DataDomain

是以,當引入DataDomain裝置之後,所有應用的資料都可以通過備份伺服器備份至DataDomain的裝置,多台DataDomain裝置之間并且可以進行遠端資料複制,進而可以提高資料的容災水準。當資料需要進行長期儲存時,DataDomain裝置提供了Archive的功能,可以将備份資料封存起來,進行長期存放。

DataDomain在引入磁盤備份的時候,引入了一個非常重要的核心技術:重複資料删除。其實,在那個年代,Datadomain不是唯一一家針對備份領域從事磁盤備份的廠商,也不是唯一一家從事重複資料删除的備份廠商。但是,DataDomain如今是單機性能最佳,市場占有率最高的基于重複資料删除的磁盤備份廠商。這其中的原因是為什麼呢?在對比其他存儲廠商的設計之後,我們可以發現DataDomain的設計避免了當時客觀條件的限制,并且将其性能最大化,進而超越了其他廠商,進而獨霸天下。

3, 重複資料删除

提到DataDomain就不能不提重複資料删除技術。在2006年左右一直有很多人在争議是否可以在磁盤級别很好的實作線上重複資料删除?實際上,在Primary Storage中,現在還不能很好的做到在磁盤系統中實作線上重複資料删除。其原因很簡單,就是線上重複資料删除需要很強的CPU能力,以及很強的随機IO讀寫能力,否則性能會很差。

在深入探索重複資料删除時,首先可以看一下塊級重複資料删除的原理。總體還是比較簡單的。首先将輸入資料進行自動分段,自動分段的目的在于實作變長資料塊,提高重複資料删除效率。得到分段塊之後,對這個資料塊計算一個HASH值,具體算法可以采用SHA1。這個HASH值可以被稱之為這個資料塊的Fingerprint(指紋)。當得到這個資料塊的指紋資訊之後,需要在目前系統内查找是否存在與其比對的指紋資訊,如果能夠找到比對的指紋,說明目前系統中已經存儲了輸入的資料塊,那麼可以直接丢棄該輸入資料塊,不進行存儲;反之,需要需要将輸入資料塊寫入存儲系統中,進行持久化儲存。從這個過程來看,重複資料删除主要分成兩大步驟:第一步是計算指紋資訊;第二步是查找指紋資訊。

仔細分析,上述重複資料删除其實還存在一定的漏洞。如果不同的資料存在相同的指紋資訊怎麼辦?雖然這是小機率事件,但是并不意味着不發生,從技術的角度出發,這是完全可能的。為了解決這個小機率事件問題,行業内通常有兩種解決方案,一種是再為資料塊計算一種HASH值或者校驗碼,當指紋資訊比對之後,還需要校驗資訊完全比對。從機率的角度來看,不同的資料塊具有相同的指紋資訊和校驗資訊是不可能的,通過這種方式可以有效避免HASH碰撞。另外一種方法是直接将資料讀出來進行比對,這種方法會産生很多的額外的IO請求,對系統的性能産生極大的影響。

DataDomain作為一種備份系統,具有很好的IO Pattern。基本上都是順序IO操作,并且在備份過程中基本上都是寫操作,即使有讀操作,其和寫操作也具有很強的IO局部性。對于這樣的IO Pattern,如果系統設計合理,那麼是可以做到線上重複資料删除的。

4, 破除磁盤瓶頸點

基于磁盤做重複資料删除是有挑戰的,最大的挑戰在于如何快速的進行重複資料查找。從原理上來講,重複資料删除很簡單,通常通過SHA1算法(一種HASH算法)得出每個資料塊的fingerprint(HASH值),然後查找系統中是否存在具有相同HASH值的資料塊。如果存在,那麼說明有重複資料;否則,表明不存在重複資料。采用HASH算法的時候,唯一需要注意的是如何避免HASH碰撞。有些設計會采用讀資料校驗的方法;有些設計會采用雙重HASH的方式,降低碰撞機率。不同的設計會導緻不同的吞吐量和延遲特征。從算法的角度來看,基于HASH算法的重複資料删除本身沒有太多的問題,關鍵的問題在于如何提高查找效率。因為資料都在磁盤上,如何進行磁盤級的資料查找,這是一個嚴峻的挑戰。

傳統磁盤一個最大的問題在于随機讀寫能力差。而磁盤級的資料查找就需要磁盤具有很強的随機讀寫能力。很多廠商在解決這個問題的時候采用了“磁盤叢集”的思路。一塊磁盤的能力是有限的,多塊磁盤聚合起來的随機通路能力就可以達到資料查找的要求。基于此,在DataDomain創業的年代,這是很多廠商選擇的技術路線。用磁盤的聚合效應來達到重複資料删除所需要的性能要求。

DataDomain沒有采用這種技術路線。而是采用了另一種高性能計算節點的技術路線。其典型的思想是采用NUMA計算架構,采用高性能處理器構成重複資料删除控制器。由于采用了NUMA架構,是以,整個控制器可以管理容量很大的記憶體空間,可以做到90%以上的fingerprint資訊緩存在記憶體中。是以,磁盤級的重複資料查找轉變成了記憶體查找。和其他設計相比,這是一個硬體架構的革新。采用這個架構,還有一個好處就是可以随着CPU處理能力的增強而不斷提升重複資料删除的性能。是以,從下圖可以看出,DataDomain的産品可以在很少disk的情況下可以達到更好的資料吞吐量。

備份領軍産品DataDomain

另外,在軟體設計上,DataDomain提出了SISL (Stream Informed Segment Layout)的設計思路,這也是一種面向資料備份領域的軟體創新。正是因為這種創新,使得DataDomain具有更好的吞吐量。SISL的創新點在于DataDomain發現了不同的備份資料流之間具有很強的相關性,或者說是局部性。兩次備份資料流之間也許存在相同的磁盤通路局部性。就是因為發現了這種局部性,資料在磁盤上的存放就應該和Stream相關,這樣才可以最大可能的避免磁盤抖動引入的性能問題,可以将磁盤性能發揮到極緻。

前面提到DataDomain将磁盤查找轉換成了記憶體查找操作,是以,記憶體查找反而成了整個系統性能瓶頸點。為了緩解記憶體查找問題,軟體設計過程中采用了Cache、Summary Vector等技術手段,減少記憶體查找次數。較為詳細的論文可以參考:《Avoiding the Disk Bottleneck in the Data Domain Deduplication File System》

5, 全局檔案消重檔案系統DDFS

完成DataDomain重複資料删除的核心子產品是DDFS,該子產品本質上是完成了塊級重複資料。

備份領軍産品DataDomain

一個檔案可以表示成多個塊的實體組合。重複資料删除的單元就是檔案所管理的塊。DDFS是一個檔案系統,是以其具有完備的Name Space管理、檔案管理。又因為其是一個重複資料删除的系統,是以,和其他檔案系統相比多了一層重複資料删除。由于DataDomain系統定位備份領域,備份領域的IO Pattern以寫為主,是以,Log Structured檔案系統是一種非常适合的高效實作方式。通過上圖可以看出,DDFS采用了Log寫的方式,其引入的問題是需要進行髒塊回收(GC),并且對讀過程有一定的性能影響。

下圖是DDFS的結構框圖:

備份領軍産品DataDomain

從上圖可以看出,其主要分為如下幾層:

1、導出協定層。整個裝置可以采用NFS、CIFS或者VTL的協定對外導出。其實,DataDomain比較高效的導出方式是DD-Boost,采用DD-Boost标準可以大大提升整體性能。在導出協定層需要考慮網絡等因素引入的延遲問題。

2、File Service。該層主要進行檔案的Namce Space管理,并且将輸入資料傳遞給Content Store層進行處理。在這一層需要考慮snapshot、checkpoint等問題。

3、Content Store層。在該層進行資料流的切分,采用Anchor算法進行動态資料塊分割,并且計算資料塊的HASH值。這個被劃分的資料塊被稱之為Segment。

4、Segment Store層。該層最主要的任務就是查找輸入Segment的fingerprint是否已經在系統中存在。這一層的工作就是重複資料删除。如果沒有被删除的資料,那麼需要繼續寫入下一層Container。

5、Container Management層。這一層主要管理segment的存儲。為了保證資料可靠性,所有資料都被寫入RAID進行儲存,為了避免RAID引入的寫放大問題,Container這一層需要與RAID進行配合。并且為了實作端至端的資料完整性,DataDomain引入了具有專利保護的DIA機制。

6, CPU-Centric存儲系統

各位同學從DataDomain創業時所處的環境來考慮一下,為什麼Datadomain能夠成功,為什麼DataDomain能夠将線上Dedupe的性能做的如此之高?我聆聽過DataDomain的創始人李凱的報告,其實在創業之初,市場上已經有重複資料删除的産品了,并且DataDomain的産品性能并不高。但是随着時間的推移,DataDomain的産品性能奇迹般的超越了其他廠商,這是為什麼呢?大家知道重複資料删除的一個最大問題在于磁盤的性能瓶頸。對于輸入資料需要計算指紋資訊,然後在整個系統中需要比對這個指紋資訊,這時就會涉及到磁盤的随機讀操作。一旦引入磁盤随機讀,那麼整體的IO性能就會大為下降。這個問題就是重複資料删除面臨的最大Challenge。為了解決這個問題,很多廠商走的技術路線是增強磁盤的随機讀性能,通過磁盤的并發讀能力來緩解這個問題。而DataDomain并沒有走這條技術路線,他走的是避免磁盤讀、磁盤查找這樣一個技術路線。試想,如果将所有的指紋資訊都裝載到記憶體中,在記憶體中完成查找操作不就可以解決上述問題了嗎?DataDomain就是這樣的一個思路。在那個年代,由于CPU性能有限,是以,在系統推出的時候,整體性能并沒有其他廠商的高。但是,當CPU性能慢慢提升的時候,DataDomain的整體性能就會水漲船高,終于有一天超越了并發磁盤的技術路線。從李凱在一個公共場合發表的演講稿中可以看出,DataDomain在2008年之後,整體Throughput呈現爆發式增長,并且公司收入也随着性能的提高跨越式增長。這些都得益于CPU等Platform的性能提高。

備份領軍産品DataDomain

可以這麼說,DataDomain是一個通過CPU性能來換取存儲性能的一個解決方案。DataDomain的很多技術瓶頸點都在于CPU,而不在于RAID/Disk方面的性能瓶頸,這點和其他廠商的存儲産品是完全不同的。當然,DataDomain可以采用CPU換存儲的技術路線也得益于存儲領域特殊的IO Pattern。在備份領域都是大讀大寫,并且在備份的時候都是順序寫。如果将這種思路應用到Primary Storage領域,那麼這種情況将會有所變化,将會有新的問題出現。是以,DataDomain一直定位于備份/資料保護市場。

剛才講到DataDomain的系統通過将所有的Fingerprint資訊緩存在記憶體中,然後通過CPU在記憶體中查找重複資料,避免在磁盤上進行資料搜尋。當一個系統的存儲容量很大的時候,那麼需要巨大的記憶體容量,是以DataDomain的系統一定是一個支援大記憶體的NUMA系統,并且一定是一種采用定制硬體的方式出現。

備份領軍産品DataDomain

采用這種方式之後,記憶體容量大小就決定了存儲容量。如果需要支援更大的存儲容量,那麼需要更大的記憶體支援,是以一種型号的機器,會有一個存儲容量上限。從李凱演講稿中可以看出,從2008年之後,DataDomain的單機系統可以支援48TB容量,之後幾年容量增長很快,這都得益于NUMA架構記憶體容量的增長。

備份領軍産品DataDomain

什麼是創新?DataDomain的這種架構在那個年代就是一種創新,其避開了傳統思路,通過不斷增強的CPU性能來提升整體的Dedup性能,使得系統性能可以緊随Intel的研發步伐不斷前進。

7, 資料無損體系結構

在DataDomain的産品中有一個非常值得一提的技術是DIA,這一點在DataDomain的銷售中一定是要提的一個特性。什麼是DIA,其實就是端至端的一種資料保護體制。備份系統基本上是資料的最後一站,對于存儲于備份系統中的冷資料而言,歸檔系統是他的最後栖息之地。DataDomain是備份歸檔一體化的系統。是以,資料存儲可靠性就顯得尤為關鍵和重要。

磁盤屬于一種易損部件,其是一種機械裝置。通常來講磁盤的使用壽命是5年,在這樣一中并不可靠的媒體上如何建構可靠存儲系統呢?這是DataDomain需要考慮的問題。為了達到這樣的一個目的,無論是檔案系統還是磁盤陣列RAID都做了很多獨到的設計。例如,如果DataDomain的RAID6發生3塊盤故障的情況,那麼其磁盤上的資料還可以在offline的情況下進行恢複,這是很多其他RAID所做不到的。

在有了RAID保護下的磁盤,也許還會存在HBA問題、磁盤的Silent corruption 、驅動軟體等問題,如何解決上述這些問題呢?DataDomain引入了端至端的資料保護技術,但是并沒有采用T10的标準,而是一套自己的資料校驗機制。通過這種機制,存入磁盤的資料保證是有效、可靠的。當然對于Silent Corruption的問題,還需要其他機制的支援,例如Scrub。

8, 高效遠端資料複制

DataDomain的産品支援遠端資料複制的功能。對于一個存儲系統而言,這個功能屬于标配,沒有遠端資料複制的功能,那麼客戶就會無法保證其資料的可靠性。DataDomain的遠端資料複制功能比較強大,可以支援廣域網内的資料複制,多個節點上的資料可以直接複制到遠端的同一個裝置上。并且可以支援一個客戶級别(Mtree)的資料複制、一個dedupe域級别的遠端資料複制和系統級别的資料複制。遠端資料複制的結構如下圖所示:

備份領軍産品DataDomain

9, 小結

無論是從性能還是從市場占用率來講,DataDomain都是備份産品中的佼佼者。但是,時光如梭,DataDomain面臨的市場格局也慢慢發生了變化,例如雲備份的興起,以虛拟化技術為主導的資料中心的興起,大資料的熱潮。Datadomain面臨着更多的壓力,Scale-out等架構上新的需求會對DataDomain形成新的挑戰。