EMC产品分析介绍(三):备份领域的引领者DataDomain (2)

Contents

1、概述...

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

3、重复数据删除...

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

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

6、CPU-Centric存储系统...

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

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

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

4、破解磁盘瓶颈点

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

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

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

另外,在软件设计上,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,该模块本质上是完成了块级重复数据。

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

下图是DDFS的结构框图:

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

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机制。

EMC产品分析介绍(三):备份领域的引领者DataDomain (2)

时间: 2024-08-01 15:40:04

EMC产品分析介绍(三):备份领域的引领者DataDomain (2)的相关文章

EMC产品分析介绍(三):备份领域的引领者DataDomain (1)

Contents 1.概述... 2.开创磁盘备份的新模式... 3.重复数据删除... 4.破解磁盘瓶颈点... 5.全局数据消重文件系统DDFS. 6.CPU-Centric存储系统... 7.数据无损体系结构... 8.备份与归档一体化... 9.高效的远程数据复制... 1.概述 长期以来备份存储领域被磁带所统治,其主要原因有两个方面.第一,磁带相对于磁盘介质而言,具有很好的价格优势:第二,备份存储主要是顺序写操作,只有在数据恢复的时候,才需要从磁带上读取数据.这两个特征就决定了磁带在数

国内外三个领域巨头告诉你Redis怎么用

随着数据体积的激增,MySQL+memcache已经满足不了大型互联网类应用的需求,许多机构也纷纷选择Redis作为其架构上的补充.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践. 新浪微博:史上最大的Redis集群 Tape is Dead,Disk is Tape,Flash is Disk,RAM Locality is King. — Jim Gray Redis不是比较成熟的memcache或者Mysql的替代品,是

Lucene.Net 2.3.1开发介绍 —— 三、索引(五)

原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(五) 话接上篇,继续来说权重对排序的影响.从上面的4个测试,只能说是有个直观的理解了.“哦,是!调整权重是能影响排序了,但是好像没办法来分析到底怎么调啊!”.似乎是这样,现在需要把问题放大,加大索引的内容.到博客园新闻区,用zzk找了4篇内容包含“测试”的文章.代码变成 2.1.5 代码2.1.5  1using System;  2using System.Collections.Generic;  3using Lucene.N

linux程序分析工具介绍(三)——sar

本文要介绍的sar,是linux下用来分析系统本身运行情况的非常有用的工具.我们知道,程序在操作系统上要运行,要关注的点不外乎内存,CPU和IO(包括磁盘IO和网络IO).我们的应用程序在操作系统中运行前,我们需要了解系统当前的内存,cpu和IO的使用状况,还需要明白我们的应用程序运行时自身所需要的内存,cpu和IO资源的情况.只有操作系统剩余的内存,cpu和IO资源能够满足应用程序所需要的,才能保证应用程序在操作系统中正常的运行.sar就是用来帮助我们了解操作系统当前内存,cpu和IO等资源的

Lucene.Net 2.3.1开发介绍 —— 三、索引(四)

原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(四) 4.索引对搜索排序的影响 搜索的时候,同一个搜索关键字和同一份索引,决定了一个结果,不但决定了结果的集合,也确定了结果的顺序.那个这个结果是怎么得出来的?这个顺序又是怎么排的呢?这两个问题不是本节讨论的重点,但是这两个问题却关系到本节要讨论的,索引对结果的影响问题.在不使用字段排序的情况下,Lucene.Net默认是按文档的得分来排序的,这个公式看着很复杂,感觉像是大学时高数书上的那些个公式,其实说清楚了也简单. 关于文档排序

Lucene.Net 2.3.1开发介绍 —— 三、索引(七)

原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(七) 5.IndexWriter 索引这部分最后讲的是IndexWriter.如果说前面提到的都是数据的结构,那么IndexWriter就是业务的封装.无论述Document,Field还是看不见的Segment,Term都是对数据存储逻辑的抽象,IndexWriter包装了操作的过程. 当然,这里不会讨论IndexWriter的每个细节,这里主要介绍IndexWriter的常用法和实际使用中遇到的部署问题. 5.1 IndexWr

Lucene.Net 2.3.1开发介绍 —— 三、索引(六)

原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(六) 2.2 Field的Boost 如果说Document的Boost是一条线,那么Field的Boost则是一个点.怎么理解这个点呢?设置Document的Boost会影响所有字段.在搜索的过程中,一般至少会搜索两个Field,比如同时搜索标题和内容.而Document的Boost将同时影响标题和内容的搜索得分,但是设置Field的Boost则不会有那么大的影响,Field的Boost只会影响一个点.那这个点有什么用呢? 现在来

领域驱动设计系列:三种领域逻辑组织模式的本质

企业应用架构模式中明确提出了三种领域逻辑组织模式:事务脚本.领域模型和表模块.不少人看的云里雾里的,不少人说的似懂非懂的,主要原因是没有从项目的级别的分析和设计经验,只有单个项目模块的开发经验的人很难理解到位. 1.事务脚本: 事务脚本的理解其实最简单,但是很多人说不清,觉得比领域模型还难理解,也对应不到代码.但这只是幻觉,怎么可能最简单的领域逻辑模式都不懂,反而对最复杂的领域模型模式懂了呢. 我们看企业应用架构模式中强调的一句话"使用过程来组织领域逻辑",其实事务脚本就是从过程的角度

红黑树详细介绍三

根据之前红黑树的原理和<算法导论>上面的伪代码,我用代码将增加和调整的代码实现了一下,如有不对请大家指正.代码可以结合前两篇文章看. 红黑树的详细介绍一 红黑树详细介绍二 /* * ===================================================================================== * * Filename: rbtree->h * * Description: red black tree * * Version: