一种基于网络编码的低冗余云存储系统及其实现方法

文档序号:7773707阅读:647来源:国知局
一种基于网络编码的低冗余云存储系统及其实现方法
【专利摘要】本发明公开了一种基于网络编码的低冗余云存储系统及其实现方法。系统包括多台互联的运行着GNU/Linux操作系统的普通计算机。各计算机节点在配置好相关运行参数且启动应用程序后,即可组成一个基于网络编码的云存储系统。该系统通过利用网络编码技术,能够以较小的冗余存储开销获得更大的容错等级,支持存储节点的动态加入和离开,同时保证系统中所存储的文件的稳定性与持久性。该系统能作为数据中心接入互联网,为外部应用提供存储服务。实现方法主要包括文件的网络编码算法、解码算法,文件块在系统中的传输与存储,以及部分文件块失效时系统的自动修复功能等等。其已在Debian操作系统上实现,可扩展至其他的GNU/Linux平台。
【专利说明】—种基于网络编码的低冗余云存储系统及其实现方法
[0001]
【技术领域】
[0002]本发明分布式文件存储系统,具体是使用多台运行在GNU/Linux操作系统的普通计算机和一组Linux应用程序。用户在启动系统程序后,即可将这些计算机组成一个基于网络编码的云存储系统。该系统能够以较小的冗余存储开销获得更大的容错等级,它支持存储节点的动态加入和离开,同时保证系统中所存储的文件的稳定性与持久性。同时,该系统能够作为数据中心接入互联网,为外部应用提供存储服务。
【背景技术】
[0003]随着信息技术的发展,各类应用系统的数据都在呈指数级增长。一方面,随着物联网应用的不断发展和演进,物联网环境的数据规模呈现放射性增长;另一方面,随着以社交网络、电子商务等为代表的新兴行业的兴起与深入发展,越来越多的互联网公司产生并积累了巨量的数据。云计算技术通过有效集成网络上各种可用资源,并建立共享与复用机制,为海量信息存储提供了支撑平台,在一定程度上满足了各类应用系统发展的需求,并大大降低了企业运行成本。但云计算环境中资源节点的动态性及网络拓扑的动态性也对数据可靠存储带来挑战。如何建立可靠的数据容错存储机制,并有效降低容错存储的信息冗余度,已成为影响云存储技术发展的一个主要技术瓶颈。

【发明内容】

[0004]本发明所要解决 的技术问题是提供一种基于网络编码的低冗余云存储系统及其实现方法,该系统能够以较小的冗余存储开销获得更大的容错等级,它支持存储节点的动态加入和离开,同时保证系统中所存储的文件的稳定性与持久性。该系统能够利用系统内部各个机器的网络拓扑结构,选取合适的机器参与解码、文件修复等以数据传输为基本操作的运算。
[0005]为实现上述目的,本发明所述的一种基于网络编码的低冗余云存储系统,该系统包括若干台运行着GNU/Linux操作系统的普通计算机,其中一台作为名字节点,其余为数据节点,此外,还包括以下三个模块:
基于网络编码的文件块存储模块:用来对存储文件块进行切分与网络编码,以保证系统的容错性以及存储开销的低冗余性;
并行化网络编码策略模块:系统存储节点并行地对原始文件切片进行网络编码,以获得更高的系统吞吐率;
网络拓扑感知的失效修复策略模块:在系统中某些节点失效的情况下为了保证存储文件的可靠性,需要启动修复进程已恢复存储文件的容错等级。
[0006]本发明还提供了该基于网络编码的低冗余云存储系统的实现方法,包括以下步骤: 1)基于网络编码的文件块存储,其具体步骤包括:
11)客户端申请文件存储时,在申请函数中附以文件长度和网络编码策略提交给名字节点;名字节点收到申请后通过计算返回客户端一个长整型的blockSize作为客户端进行文件切片的大小,同时生成一个网络编码矩阵维护在索引空间;
12)客户端建立一个以存储文件为基础的数据流,根据blockSize的大小,将数据流切分为几个原始文件块,每个文件块有唯一的ID作为标识;
13)客户端通过与名字节点交互,为每一个原始文件块获得存储数据节点,并将其通过网络链的形式依次发往各个数据节点;
14)数据节点在接收到相应数据块之后通过读取头部信息,对获到得的数据块网络编码并以网络编码文件块的形式进行存储;
15)文件读取过程中能够读取系统的索引空间,寻找相应的网络编码文件块的位置,获得这些网络编码文件块之后能够利用索引空间中保存的网络编码矩阵进行解码,以获得原文件;
2)并行化网络编码策略,其具体步骤包括:
21)各个数据节点以客户/服务器模式等待客户端的原始文件块写入操作;
22)每个数据节点在接收到原始文件块之后读取文件块头部信息,并维护一个映射表,决定该文件块所要执行的操作,包括网络编码或者暂存,其中:
221)如果是某一个网络编码文件块的组成部分,并且该网络编码文件块信息不在映射表中,则数据节点直接缓存该文件块,转步骤23);
222)如果是某一个网络编码文件块的组成部分,并且该网络编码文件块信息存在于映射表中,则数据节点将该文件块与缓存的文件块进行网络编码并继续缓存或者写磁盘存储;如果数据节点得到了网络编码文件块所需的全部原始文件块并网络编码完毕,则将这个网络编码文件块存储,否则,数据节点继续缓存并等待;
23)数据节点在一个网络编码文件块完成之后进行更新映射表操作,然后将这个索引信息写在一个列表中,等待周期性的上报,写入索引空间;
24)名字节点在收到周期性的上报信息之后,进行一系列的检查操作,确认之后将这一索引信息写入索引空间并维护;
25)在以上的过程中,客户端通过网络链形式与各个数据节点同时进行通信,各个数据节点也并行的进行网络编码计算;
3)网络拓扑感知的失效修复策略,其具体步骤包括:
31)网络拓扑结构的维护:系统维护自身的网络拓扑结构,在新的节点加入以及失效节点离开的情况下能够及时的更新该拓扑结构;
32)存储文件的完整性扫描:首先,系统的索引空间维护了每个存储文件与所在数据节点的映射表。并且系统保持与各个数据节点定时的通信以确认该数据节点的存活性,在节点失效的情况下标记存储在该节点的文件为失效节点并放入相应修复队列中;其中:
321)对于损毁严重的文件,系统中所存在的有效文件块数小于其修复能力的阈值,名字节点将这一文件标记为corrupt状态,表明文件不可被修复,结束;
322)对于有效文件块数大于阈值的文件,系统节点按照一定的量度,按照文件损毁程度放入优先队列中,使得系统能够根据文件的损毁程度来确定各个文件的紧迫度; 33)名字节点运行一个修复线程,持续的读取队列头部,在队列非空的情况下:
331)名字节点读取网络拓扑结构,对于该修复文件,选取合适的新节点来存储修复文件块,并选取距离最近的足够个数的数据节点参与修复工作,并向这些节点发送修复命令;
332)参与修复的读取自己的命令队列,并发送自己存储的该文件的文件块到选取的新节点,新节点接收并解码之后存储,然后更新索引空间。
[0007]本发明采用网络编码技术,实现了一个基于网络编码的低冗余云存储系统,通过将存储文件块之间进行一定的网络编码,能够以较小的冗余存储开销获得更大的容错等级,保证存储文件的持久性与可用性。并且在部分节点失效的状态下,能够对损坏的文件进行基于网络拓扑结构的修复,使得修复过程的网络开销尽可能的降低。上述的基于网络编码的云存储系统,可以为多种外部应用提供存储服务。
【专利附图】

【附图说明】
[0008]图1系统场景结构图,
图2系统运行状态图,
图3读文件流程,
图4写文件流程,
图5修复流程场景状态图,
图6修复流程图。
【具体实施方式】
[0009]本发明提供了一种基于网络编码技术的低冗余云存储系统及其构造方法。下面结合附图进行详细说明。
[0010]图1是系统的场景图,是由多台运行着GNU/Linux操作系统的普通计算机组成的网络系统。每个计算机上都装有相同的本发明所设计的Linux应用程序。当名字节点启动后,该节点通过启动命令可以启动其他数据节点,这样就可以组成一个云存储系统。该系统基于网络编码技术,支持系统各个节点在多个网段运行,能够接入互联网,为多种外部应用提供存储需求。
[0011]系统的运行状态图如图2所示。系统中各个节点各司其职,名字节点作为系统的核心节点,维护着该系统所存储文件的索引空间,能够通过索引找到各个文件存储的数据节点以及网络编码时所用到的网络编码矩阵。同时,名字节点还维护着整个系统各个数据节点的拓扑结构。任何配置了本发明所设计的应用程序的计算机都可以作为客户端发起数据存储和数据读取请求。系统中多个数据节点作为系统存储资源实体,存储有该系统所存储的文件的各个文件块,这些文件块分布在各个数据节点上,并通过名字节点索引。各个节点通过(RPC)远程方法调用保持通讯,并传达相应的操作命令。
[0012]读文件流程如下:
当客户端通过名字节点申请读文件时,其操作流程如图3所示。客户端首先打开一个写入本地磁盘的数据流,然后通过RPC远程调用名字节点,获得各个文件块所在的数据节点位置,然后链接各个数据节点,并发送读文件命令,数据节点收到该命令后通过数据流的形式将文件块发送到客户端,客户端再通过解码操作获得原始文件。
[0013]图4展示了文件写流程。客户端通过写操作申请远程调用名字节点,使得名字节点建立相应的索引,并维护,返回给客户端blockSize作为切片大小,然后客户端建立写入流,将原始文件块发往各个数据节点,各个数据节点收到各文件块后进行网络编码操作,并将网络编码后的文件块写入本地磁盘,并上报名字节点更新索引。
[0014]图5展示了系统的修复场景状态图,根据系统的网络拓扑结构,选取合适的节点参与修复,并在合适的位置进行网络网络编码操作,能够有效的提高网络的利用率,减小数据中心中的网络拥塞。
[0015]图6展示了修复流程图,各个数据标号含义如下:①监视线程发现数据块丢失,通知名字节点启动修复;②为修复数据块分配新节点;③在新节点修复任务队列中添加任务;④新节点心跳;⑤修复命令;?、⑦、⑧读数据块;@、⑩、?初始化blockSender进程;?、?、?发送数据块;?网络编码数据块;?上报新数据块信息;?更新索引空间。
【权利要求】
1.一种基于网络编码的低冗余云存储系统,该系统包括若干台运行着GNU/Linux操作系统的普通计算机,其中一台作为名字节点,其余为数据节点,此外,其特征在于,还包括以下三个模块: 基于网络编码的文件块存储模块:用来对存储文件块进行切分与网络编码,以保证系统的容错性以及存储开销的低冗余性; 并行化网络编码策略模块:系统存储节点并行地对原始文件切片进行网络编码,以获得更高的系统吞吐率; 网络拓扑感知的失效修复策略模块:在系统中某些节点失效的情况下为了保证存储文件的可靠性,需要启动修复进程已恢复存储文件的容错等级。
2.根据权利要求1所述基于网络编码的低冗余云存储系统的实现方法,其特征在于,包括以下步骤: 1)基于网络编码的文件块存储,其具体步骤包括: 11)客户端申请文件存储时,在申请函数中附以文件长度和网络编码策略提交给名字节点;名字节点收到申请后通过计算返回客户端一个长整型的blockSize作为客户端进行文件切片的大小,同时生成一个网络编码矩阵维护在索引空间; 12)客户端建立一个以存储文件为基础的数据流,根据blockSize的大小,将数据流切分为几个原始文件块,每个文件块有唯一的ID作为标识; 13)客户端通过与名字节点交互,为每一个原始文件块获得存储数据节点,并将其通过网络链的形式依次发往各个数据节点; 14)数据节点在接收到相应数据块之后通过读取头部信息,对获到得的数据块网络编码并以网络编码文件块的形式进行存储; 15)文件读取过程中能够读取系统的索引空间,寻找相应的网络编码文件块的位置,获得这些网络编码文件块之后能够利用索引空间中保存的网络编码矩阵进行解码,以获得原文件; 2)并行化网络编码策略,其具体步骤包括: 21)各个数据节点以客户/服务器模式等待客户端的原始文件块写入操作; 22)每个数据节点在接收到原始文件块之后读取文件块头部信息,并维护一个映射表,决定该文件块所要执行的操作,包括网络编码或者暂存,其中: 221)如果是某一个网络编码文件块的组成部分,并且该网络编码文件块信息不在映射表中,则数据节点直接缓存该文件块,转步骤23); 222)如果是某一个网络编码文件块的组成部分,并且该网络编码文件块信息存在于映射表中,则数据节点将该文件块与缓存的文件块进行网络编码并继续缓存或者写磁盘存储;如果数据节点得到了网络编码文件块所需的全部原始文件块并网络编码完毕,则将这个网络编码文件块存储,否则,数据节点继续缓存并等待; 23)数据节点在一个网络编码文件块完成之后进行更新映射表操作,然后将这个索引信息写在一个列表中,等待周期性的上报,写入索引空间; 24)名字节点在收到周期性的上报信息之后,进行一系列的检查操作,确认之后将这一索引信息写入索引空间并维护; 25)在以上的过程中,客户端通过网络链形式与各个数据节点同时进行通信,各个数据节点也并行的进行网络编码计算; 3) 网络拓扑感知的失效修复策略,其具体步骤包括: 31)网络拓扑结构的维护:系统维护自身的网络拓扑结构,在新的节点加入以及失效节点离开的情况下能够及时的更新该拓扑结构; 32)存储文件的完整性扫描:首先,系统的索引空间维护了每个存储文件与所在数据节点的映射表;并且系统保持与各个数据节点定时的通信以确认该数据节点的存活性,在节点失效的情况下标记存储在该节点的文件为失效节点并放入相应修复队列中;其中: 321)对于损毁严重的文件,系统中所存在的有效文件块数小于其修复能力的阈值,名字节点将这一文件标记为corrupt状态,表明文件不可被修复,结束; 322)对于有效文件块数大于阈值的文件,系统节点按照一定的量度,按照文件损毁程度放入优先队列中,使得系统能够根据文件的损毁程度来确定各个文件的紧迫度; 33)名字节点运行一个修复线程,持续的读取队列头部,在队列非空的情况下: 331)名字节点读取网络拓扑结构,对于该修复文件,选取合适的新节点来存储修复文件块,并选取距离最近的足够个数的数据节点参与修复工作,并向这些节点发送修复命令; 332)参与修复的读取自己的命令队列,并发送自己存储的该文件的文件块到选取的新节点,新节点接收并解码之后存储,然后更新索引空间。
【文档编号】H04L29/08GK103533055SQ201310483828
【公开日】2014年1月22日 申请日期:2013年10月16日 优先权日:2013年10月16日
【发明者】陈运海, 叶保留, 陆桑璐 申请人:南京大学镇江高新技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1