分布式存储系统凭借优秀的可扩展性、可用性、可靠性、易管理性、高性能和低成本等优势,在网络应用的构建中,获得了广泛的认可。分布式存储系统中存储了海量的数据,这些数据中存在着大量的冗余,将冗余数据删除技术应用到分布式存储系统当中,用来发现并去除数据中的冗余,可以有效的提高存储空间以及网络带宽的利用率。本文设计并实现了广域网环境下的分布式冗余删除存储系统AegeanStore,在冗余数据被上传到AegeanStore之前将其去除,达到提高存储资源和网络资源利用率的目的,并且进一步的降低存储系统的成本,在保持分布式系统固有的容灾特性同时,提高了存储系统的可扩展性和整体性能
本文提出一种在广域网环境下的采用冗余数据删除技术的分布式存储系统原型——AegeanStore。在AegeanStore中采用客户端相关的冗余数据删除技术。该技术通过客户端和服务器端的合作,不仅可提高存储设备的利用率,而且可减轻客户端和服务器之间的网络负载压力,从而进一步提高存储系统的可扩展性和整体性能并且进一步降低其成本。
1 冗余数据删除技术
冗余数据就是一个数据表中,这个表中的行包含了一些相同的值,这些值理论上来说应该是唯一的(这些值一般来说能确定一条记录)例如,像社会保险号,姓与名的集合。那么我们把这么含有相同信息的行中包含的数据叫做冗余数据,现在所有的数据库表中都有主键约束,主键中记录了一行记录中的唯一值,从数据库的角度来看,每一行都是唯一的,但是从我们用户角度看来,这些记录都是相同的记录,因为它们都包含相同的键值(First Name + Last Name),即使他们有不同的主键
冗余数据删除技术是将数据集中的冗余数据发现并去除的应用技术,可以分为两大类:相同数据删除和相似数据删除。
1.1 相同数据删除技术
相同数据删除技术首先将数据划分为数据块,然后使用具有抗碰撞特性[3]的哈希函数计算每一个数据块的哈希值作为该数据块的数字指纹,再通过比较数据块的数字指纹来发现相同的数据块。目前,最常用的相同数据删除技术是基于内容的划块(CDC)算法,其流程如图1所示。
CDC算法存在3个参数,一是目标可变数据块的预期大小S,二是滑动窗口的大小W,三是一个小于S的自然数M。当使用CDC算法处理一个文件时,从文件头开始以每次一字节的步长向后滑动窗口,使用哈希函数计算滑动窗口内部的哈希值H;将H mod S与M进行比较,如果不同,则滑动窗口;如果相同,则发现数据块边界,然后用具有抗碰撞特性的哈希函数计算该数据块的数字指纹;最后,将获得的数字指纹到索引中查找,如果存在则发现冗余数据块,否则说明该数据块是新的,需要存储到系统当中。
1.2 相似数据删除技术
相似数据删除技术分为两个阶段,相似数据检测和相似数据编码:
(1)相似数据检测,首先要定义数据的特征值,该特征值的特点是保证具有相同或相似的特征值的数据具有相同或相似的内容。在提取数据的特征值之后,通过特征值的比较获得相似的数据。常用的相似数据检测技术包括基于Shingle的检测技术。
(2)相似数据编码是在使用相似数据检测,获得具有相似性的数据集之后,在该数据集上采用的编码技术,用于减小该数据集所占用的存储空间。常用的相似数据编码技术包括基于Diff的相似编码技术等。
2 AegeanStore的体系结构
AegeanStore体系结构如图2所示。AegeanStore由客户端、应用服务、文件系统服务、索引服务和数据块服务5个部分组成。
当客户端需要将文件数据存储到应用服务时,首先调用本地冗余数据删除工具,运行数据块划分算法,将要上传的文件分成数据块,并计算每个数据块的数字指纹,然后将这些数字指纹发送给应用服务;客户端按照返回结果,只将未出现在数据块服务中的数据块上传;最后,当所有新数据块都存储到数据块服务中之后,文件服务将新数据块的信息更新到索引服务当中。下面将分别介绍5个部分的设计与实现。
2.1 客户端
客户端是为某个应用服务开发,运行在使用该应用服务的用户的网络终端上的程序。程序通过响应用户输入并且同该应用服务进行消息交换,使用户能够使用该应用服务提供的服务。AegeanStore的客户端除了完成传统网络应用的客户端的响应用户输入、网络消息交换、身份验证、数据传输等任务之外,还要在冗余数据删除技术中,完成重要的任务:因在获得需要上传文件的所有数据块的数字指纹后,通过应用服务提供的网络接口,查询这些文件块是否已经在AegeanStore中存在,然后将新的数据块上传到数据块服务部分,完成数据上传过程;同时,客户端需要管理已经存储在本地的数据块的数字指纹,用于下载时减少冗余数据传输。
2.2 应用服务
应用服务是以AegeanStore提供的存储服务、开发框架和功能组件为基础,构建而成的网络应用服务。AegeanStore作为网络应用开发的基础平台,为了方便应用服务的开发,提供了应用服务的开发框架,使得应用服务的开发可以忽略网络应用中网络端口监听、工作进程派生、负载均衡和调度等问题,专心解决应用服务的事务逻辑,使应用服务的开发工作更加方便快捷。除此之外,AegeanStore还为应用服务的开发者提供用户管理、网络消息交换等常用的功能组件,从而提高在AegeanStore上开发应用服务效率,降低应用服务的开发和运营成本。
2.3 分布式系统
分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。
分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。
分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个分布式处理系统的多台计算机上被同时执行。它与集中式的程序设计语言相比有三个特点:分布性、通信性和稳健性。
2.4 文件系统服务
文件系统服务为AegeanStore提供文件系统视图和文件管理接口。目前常用的提供公共存储服务的分布式存储系统当中,普遍使用的应用程序接口是Key/Value式的。虽然这种接口在开发应用服务时使用比较方便,但是与用户习惯的基于目录结构的文件系统式接口差异较大,导致大多数构建在Key/Value接口上的应用服务都要开发功能相似的文件系统视图。所以,AegeanStore为应用服务开发提供的接口是文件系统式的,以提高应用服务的开发效率,避免重复开发,并通过使用分布式B树、网络就近访问、代理访问等优化技术,提高存储系统的吞吐量。
2.5 索引服务
索引服务中存储了AegeanStore中所有数据块的数字指纹的索引,并提供网络查询索引接口,用来判断数字指纹所对应的数据块是否已经存在于AegeanStore当中。由于AegeanStore存储系统具有良好的可扩展性,其数据规模可以达到数百太字节甚至拍字节级,所以索引服务应该支持太字节级别的索引存储。
2.6 数据块服务
AegeanStore的数据块服务提供分布式的基于内容定位的存储系统[7],其提供的接口是Key/Value形式的。数据块服务由接口、一跳分布式哈希表(DHT)[8]和数据块存储节点3部分组成:当用户存储数据块时,以该数据块的数字指纹作为Key进行存储;首先到一跳分布式哈希表中,查找该数字指纹,因为数字指纹由数据块的内容决定,所以,如果该数字指纹已经存在于分布式哈希表当中,说明该数据块已经存在于数据块服务当中,无需再次存储;如果不存在,将数据块存入数据块存储节点,将数字指纹和所存储的位置信息存入一跳分布式哈希表作为索引。块存储服务从分布式哈希表中查找是否存在这个数字指纹,如果存在则根据在其中获得的数据块位置从存储节点读取相应数据块并返回给用户,否则返回空。
3 冗余删除技术的优化
将冗余数据删除技术应用于分布式存储系统将遇到两个问题。
(1)由于CDC算法开销过大,无法满足广域网环境中的分布式存储系统的客户端的异构性带来的计算性能瓶颈。
(2)由于分布式存储系统的高可扩展性,造成索引服务中数字指纹索引过大,从而带来的数字指纹索引查询的性能瓶颈。
3.1 CDC算法的优化
CDC算法中,无论在计算滑动窗口内的哈希值,还是获得数据块划分之后计算数据块的数字指纹都是计算密集型工作。在手机或上网本等运算能力较差的设备上,由于存在着性能瓶颈,制约了客户端相关的冗余数据删除技术的有效应用。
首先,在AegeanStore的客户端中,为了优化CDC算法的运行效率,在计算滑动窗口的哈希值时,采用了Rabin’s Fingerprinting哈希函数进行计算。因Rabin’s Fingerprinting哈希函数具有可迭代计算的特性,滑动窗口时,只需要通过将滑动前哈希值、滑入字节值和滑出字节值进行复杂度为O的计算,即可获得滑动后的窗口内部字节数组的哈希值。因为每个字节的数值最多有256种可能,可以通过预先的计算,将滑入和滑出字节相关的计算制成表格,之后,只需要通过查表和简单的位移操作和加减操作即可获得滑动后的哈希值,大大提高了CDC算法的运算效率。
3.2 索引服务的优化
AegeanStore的索引服务通过采用3种优化方法,改进索引服务的数字指纹查询效率,以提高冗余数据删除技术在分布式存储系统中的性能。
(1)基于文件的批量数字指纹查询
AegeanStore提出了基于文件的批量数字指纹查询协议,将相同文件的数据指纹列表,连同该文件的路径、大小等元数据信息,组织到同一个文件上传请求当中。并且,让索引服务一次可以处理很多个数字指纹的索引查询,增加了索引服务的吞吐量;更重要的是,使同一个文件的数据块的数字指纹之间所存在的局部性得以保持,为索引服务进行预取和缓存等进一步优化创造了条件。
(2)基于Bloom filter的快速新数据块过滤
Bloom filter[11]是一种高效的利用有限的内存空间,以一定错误肯定率为代价,用于快速的判断某一个元素是否在一个集合中的概率性数据结构。在AegeanStore的索引服务当中,使用一台性能较好、内存空间较大的服务器来运行快速新数据过滤模块。一个存于内存中的Bloom filter作为该模块的核心数据结构。如果为一定不存在,则将这个数字指纹标记为新数据块;将标记后的数字指纹列表,返回给请求节点;最后,当数据块被成功上传到数据块服务之后,将其对应的数字指纹加入到Bloom filter当中。
(3)基于文件局部性的缓存和预取
文件局部性是指出现在相同文件中的数据块,再次出现在相同文件中的概率会比较高。缓存和预取节点中的缓存的数据结构提供Key/Value式的接口,同样以数字指纹作为Key,以其局部性列表作为Value。当索引查找的数字指纹列表被分配到某个缓存和预取节点后,处理流程如下:对于每一个没有被标记为新的数字指纹,首先到缓存中查找该数字指纹,如果命中,说明该数据块已经存在于AegeanStore当中,将文件的数字指纹列表和缓存中局部性列表合并,并在结果中标记该块为存在;若未命中,则到DHT中进行查找,如果命中,将DHT中存储的局部性列表加入缓存当中,完成预取工作,之后的处理和缓存命中时相同;如果未命中,即该数据块不存在于AegeanStore当中,在快速过滤模块当中出现了错误的情况。
4 结束语
本文提出了广域网环境下的分布式存储系统原型AegeanStore。AegeanStore在提供互联网上的存储服务的同时,还为网络应用的开发提供了框架和通用的功能模块,以提高网络应用开发和运营的效率,并降低其成本。分布式存储系统中普遍存在的冗余数据,不仅浪费了存储系统的资源,而且造成了存储系统的性能损失。AegeanStore通过采用客户端相关的冗余数据删除技术,可提高对存储资源以及网络资源的利用率,降低运营成本,提高可扩展性以及整体性能,给公司带来丰厚的利润。
全部0条评论
快来发表一下你的评论吧 !