Contents

1、概述... 

2、开创磁盘备份的新模式... 

3、重复数据删除... 

4、破解磁盘瓶颈点... 

5、全局数据消重文件系统DDFS

6CPU-Centric存储系统... 

7、数据无损体系结构... 

8、备份与归档一体化... 

9、高效的远程数据复制... 

 

4、破解磁盘瓶颈点

 

基于磁盘做重复数据删除是有挑战的,最大的挑战在于如何快速的进行重复数据查找。从原理上来讲,重复数据删除很简单,通常通过SHA1算法(一种HASH算法)得出每个数据块的fingerprintHASH值),然后查找系统中是否存在具有相同HASH值的数据块。如果存在,那么说明有重复数据;否则,表明不存在重复数据。采用HASH算法的时候,唯一需要注意的是如何避免HASH碰撞。有些设计会采用读数据校验的方法;有些设计会采用双重HASH的方式,降低碰撞概率。不同的设计会导致不同的吞吐量和延迟特征。从算法的角度来看,基于HASH算法的重复数据删除本身没有太多的问题,关键的问题在于如何提高查找效率。因为数据都在磁盘上,如何进行磁盘级的数据查找,这是一个严峻的挑战。

传统磁盘一个最大的问题在于随机读写能力差。而磁盘级的数据查找就需要磁盘具有很强的随机读写能力。很多厂商在解决这个问题的时候采用了“磁盘集群”的思路。一块磁盘的能力是有限的,多块磁盘聚合起来的随机访问能力就可以达到数据查找的要求。基于此,在DataDomain创业的年代,这是很多厂商选择的技术路线。用磁盘的聚合效应来达到重复数据删除所需要的性能要求。

DataDomain没有采用这种技术路线。而是采用了另一种高性能计算节点的技术路线。其典型的思想是采用NUMA计算架构,采用高性能处理器构成重复数据删除控制器。由于采用了NUMA架构,因此,整个控制器可以管理容量很大的内存空间,可以做到90%以上的fingerprint信息缓存在内存中。因此,磁盘级的重复数据查找转变成了内存查找。和其他设计相比,这是一个硬件架构的革新。采用这个架构,还有一个好处就是可以随着CPU处理能力的增强而不断提升重复数据删除的性能。所以,从下图可以看出,DataDomain的产品可以在很少disk的情况下可以达到更好的数据吞吐量。

 

wKiom1NznqrQKMzxAACJ8AoCPg8477.jpg

 

另外,在软件设计上,DataDomain提出了SISL Stream Informed Segment Layout)的设计思路,这也是一种面向数据备份领域的软件创新。正是因为这种创新,使得DataDomain具有更好的吞吐量。SISL的创新点在于DataDomain发现了不同的备份数据流之间具有很强的相关性,或者说是局部性。两次备份数据流之间也许存在相同的磁盘访问局部性。就是因为发现了这种局部性,数据在磁盘上的存放就应该和Stream相关,这样才可以最大可能的避免磁盘抖动引入的性能问题,可以将磁盘性能发挥到极致。

前面提到DataDomain将磁盘查找转换成了内存查找操作,因此,内存查找反而成了整个系统性能瓶颈点。为了缓解内存查找问题,软件设计过程中采用了CacheSummary Vector等技术手段,减少内存查找次数。较为详细的论文可以参考:《Avoiding the Disk Bottleneck in the Data Domain Deduplication File System

5、全局数据消重文件系统DDFS

 

完成DataDomain重复数据删除的核心模块是DDFS,该模块本质上是完成了块级重复数据。

 

wKioL1NznpmTfnRXAACCaN1rJDk296.jpg

 

一个文件可以表示成多个块的物理组合。重复数据删除的单元就是文件所管理的块。DDFS是一个文件系统,因此其具有完备的Name Space管理、文件管理。又因为其是一个重复数据删除的系统,因此,和其他文件系统相比多了一层重复数据删除。由于DataDomain系统定位备份领域,备份领域的IO Pattern以写为主,因此,Log Structured文件系统是一种非常适合的高效实现方式。通过上图可以看出,DDFS采用了Log写的方式,其引入的问题是需要进行脏块回收(GC),并且对读过程有一定的性能影响。

下图是DDFS的结构框图:

 

wKiom1Nznt3DibzhAACh446-8JU158.jpg

 

从上图可以看出,其主要分为如下几层:

1、导出协议层。整个设备可以采用NFSCIFS或者VTL的协议对外导出。其实,DataDomain比较高效的导出方式是DD-Boost,采用DD-Boost标准可以大大提升整体性能。在导出协议层需要考虑网络等因素引入的延迟问题。

2、File Service。该层主要进行文件的Namce Space管理,并且将输入数据传递给Content Store层进行处理。在这一层需要考虑snapshotcheckpoint等问题。

3、Content Store层。在该层进行数据流的切分,采用Anchor算法进行动态数据块分割,并且计算数据块的HASH值。这个被划分的数据块被称之为Segment

4、Segment Store层。该层最主要的任务就是查找输入Segmentfingerprint是否已经在系统中存在。这一层的工作就是重复数据删除。如果没有被删除的数据,那么需要继续写入下一层Container

5、Container Management层。这一层主要管理segment的存储。为了保证数据可靠性,所有数据都被写入RAID进行保存,为了避免RAID引入的写放大问题,Container这一层需要与RAID进行配合。并且为了实现端至端的数据完整性,DataDomain引入了具有专利保护的DIA机制。