一种分布式数据存储系统的修复方法
【技术领域】
[0001]本发明涉及分布式数据存储系统中数据修复的技术领域,特别是一种分布式数据存储系统修复方法。
【背景技术】
[0002]随着互联网的普及与发展,数据在人类生活中起着越来越重要的作用,人们对数据的可靠性和安全性有了更高的要求。英特尔创始人之一戈登.摩尔(GordonMoore)提出来了摩尔定律,其内容为:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。在1998年图灵奖获得者Jim Gray发表了著名的存储界的“摩尔定律”:每18个月全球新增信息量等于有史以来全部信息量的总和。数据海量化成为趋势,为了便于存储大规模数据,分布式存储系统就应运而生。
[0003]分布式数据存储系统提供了两种可靠性:可用性(availability)和持久性(durabi I ity)。可用性是指故障节点中的数据能够通过当前其他可利用的节点来进行重建修复;而持久性是指,数据并不会因为系统中的某个或者某些节点故障(如节点下线、自然灾害、磁盘损坏等)而丢失原有的数据。也就是说,尽管系统中的数据,目前由于某些节点故障而不能现在修复,但是在将来的某一时刻,还是能够修复的。这两者之间的区别是,可用性强调的是节点当前数据是否可用,而持久性强调的是将来系统的数据能够长久保存。
[0004]目前比较著名的分布式文件系统有Google公司的GFS (Google File System开源的 HDFS(Hadoop Distr ibuted file System)、Lustre、MooseFs 以及清华大学自主研发的CarrierFs等。其中GFS管理着Google公司百万服务器上的海量数据,基于GFS的分布式数据库BigTable支撑着Google搜索、地图、社交网络等服务。HDFS为Hadoop底层分布式文件系统,由于Hadoop能够部署在通用平台上,相比较于传统的集中式存储,它具有更高具有可扩展性(Scalable)、低成本(Economical)、高效性(Efficient)与可靠性(Reliable)等优点,使其在分布式计算领域得到了广泛的。但是,分布式系统的单个节点的可用性不高,在系统中会不断出现节点因为磁盘损坏、节点下线、自然灾害等因素而失效。因此为了保证数据的持久性,在节点失效后,就一定要加入新节点代替失效节点,以此来维护整个系统的数据可靠性。由于分布式系统的存储的信息都是海量数据,要实现此功能无疑是个巨大挑战。
[0005]目前,分布式数据存储的修复技术有基于副本的修复、基于编码的修复和基于路由器加速的修复。
[0006]1.基于副本的数据修复:存储节点中存储的是源文件的副本数据,修复时newNode从任一 provider中获取数据,也可从多provider并行下载以降低传输时间。
[0007]当某个副本丢失或损坏后,系统需要再建立一个新的副本,为此系统选择一个存储节点作为newNode,newNode从至少一个存储节点中接受数据,向newNode提供数据的节点称为provider。如图1中所示,在网络中,源文件被保存为3个副本保存于3个存储节点上,当其中一个丢失后,newNode将剩下的两个作为provider并从2个provider并行地接受数据,直到整个副本被下载到newNode。从而一个新的副本产生于newNode之上。
[0008]该技术的缺点在于:节点需存储大量数据,每个存储节点均需存储一个文件副本,存储冗余度大,造成大量存储资源浪费。修复时间长,需传输整个文件,同时占用大量网络带宽资源。
[0009]2.基于编码的数据修复(纠删码):源文件在被存储到存储节点前进行编码。整个文件被分为k块,编码后可得到η个编码块,η个编码块中的任意k块即可恢复源文件。每个存储节点中分别存储一个编码块。修复时,newNode至少需从k个provider下载编码块,由newNode对收到的编码块重新编码得到一个新的编码块。
[0010]如图2,源文件被划分为3块,并被编码为4个编码块(不同编码块大小相同)。系统中4个存储节点分别保存一个编码块。当第4个编码块丢失后,系统选择一个节点作为newNode, newNode从剩余的3个存储节点(即provider)中接收数据。newNode接收3个编码块后,通过该3个编码块恢复出源文件,再重新编码得到一个新的编码块并保存。
[0011]现在正在使用以纠删码(ErasureCode)为基础的存储系统有RobuStore (UCSD,2007),它专为大型数据对象和海量数据设计,使用LT (Luby Transform)编码,采用猜测访问机制,属于中心化的架构,具有低时延、高传输率的特点。欧洲核子研究中心使用低密度奇偶校验码技术(Low Density Parity Check,LDPC),将整份原件分割成许多小块,每小块经过纠删码编码后分散存储到所有存储节点,属于分布式的架构。
[0012]但是纠删码在修复损坏的数据节点时存在一个问题:修复Ml大小的数据块需要通过网络连接从k个不同的节点上总共下载kXMl大小的数据块,这样修复带宽是昂贵的。
[0013]3.基于路由器加速的数据修复方法:如图3,newNode向provider发送T消息,T中含有目的地址。路由器SR将其记录,SR将T转发出去,provider收到T消息后,回复一个ak消息(包含provider自身ip)。ak经过SR时,将所有ip保存,newNode的到所有provider的ip后向所有的provider发送re_ak消息。provider接收到re_ak消息后发送数据,SR接收缓存K个编码块后,一起发送到newNode,由newNode对收到的编码块重新编码得到一个新的编码块。
[0014]在2002年,Weatherspoon和Kubiatowiez定量地比较了分别基于网络编码和副本这两种存储系统,经分析得出:在数据容度相同情况下,与网络编码相比,副本消耗存储量更大。基于路由器加速的修复算法虽然提高了修复效率,但由于所有的修复管理还是由管理节点负责,管理节点的负载较大,对路由器的性能和功能上有一定要求。
[0015]分布式数据存储系统的特点是分布式存储与集中管理,所以所有的数据修复过程都要由管理节点进行管理调度,这大大的增加了管理节点的负担,以及遏制了整个系统的修复能力,因此我们希望能够将管理节点从修复数据的负担中释放出来,将修复的工作分配给各个节点,管理节点不需要过多的关心修复问题,以提高整个系统综合的修复能力和整体工作效率。
【发明内容】
[0016]有鉴于此,本发明的目的是提供一种分布式数据存储系统的修复方法,在现有的修复算法的基础上为简化管理、提高修复能力,依靠管理节点来检测出损坏的存储节点,并基于现有的纠删码或完全副本冗余算法来修复,不同节点上的修复进程可同时并发进行修复,以提高修复能力,同时减轻管理服务器的负载。
[0017]本发明采用以下方案实现:一种分布式数据存储系统的修复方法,具体包括以下步骤:
[0018]步骤S1:提供一管理节点与复数个存储节点;所述管理节点用以查找所述存储节点中是否有数据损坏;所述存储节点中包括用以修复损坏数据块的存储节点集S与用以存储修复数据所需的纠删码数据的存储节点集A ;
[0019]步骤S2:所述管理节点监测查找所述分布式数据存储系统中的损坏数据块,当所述管理节点查找到损坏数据块时,采用LeDiR算法在用以修复损坏数据块的存储节点集S中为所述损坏数据块选取最优存储节点,并授权所述