分布式文件系统的数据更新方法和装置与流程

文档序号:12157880阅读:298来源:国知局
分布式文件系统的数据更新方法和装置与流程

本申请涉及计算机技术领域,尤其涉及一种分布式文件系统的数据更新方法和装置。



背景技术:

随着Internet的不断发展,互联网上的数据成爆发性增长。成本也越来越高。很多分布文件系统通过Erasure Code(纠删码)算法对数据编码来达到降低成本的目的。在分布式文件系统中应用Erasure Code更新算法存在很多问题,无法在生产环境中应用,但业务实现在又离不开文件的更新操作,所以如何解决Erasure Code更新算法所带来的问题也越来越迫。

假设Erasure Code编码的参数为:数据节点为M,校验点为N,则现有技术算法的缺点有:

(1)性能低;

a读写磁盘次数多:磁盘读M-1份数据,向磁盘写M+N份数据;

b网络数据传输量大:从网络接收M-1份数据,向网络发送M-1+N份数据;

(2)计算资源浪费严重,CPU需要计算M份数据;

(3)更新过程中部分失败时数据不可恢复;例如,计算完成后,往磁盘上写数据时,如果有失败就会出现此类问题。

综上所述,在分布文件系统中应用Erasure Code更新算法进行数据更新导致代价高、性能低、一致性难以保证等问题,因此有必要提出改进的技术手段解决上述问题。



技术实现要素:

本申请的主要目的在于提供一种分布式文件系统的数据更新方法和装置,以克服现有技术中存在的分布文件系统进行数据更新导致代价高、性能低、一致性难以保证等问题。

根据本申请实施例提出一种分布式文件系统的数据更新方法,所述分布式文件系统包括多个数据节点以及至少一个校验节点,所述方法包括:获取更新数据,将所述更新数据写入当前数据节点的尾部,并在所述数据节点中更新对应的索引信息;将所述更新数据写入所述校验节点的尾部,并在所述校验节点中更新对应的索引信息。

其中,所述在所述数据节点中更新对应的索引信息,包括:更新所述数据节点的存储空间被占用的结束位置;查找到与所述更新数据相对应的原数据的索引,将该索引修改为所述更新数据的索引。

其中,还包括:将所述更新数据、与所述更新数据相对应的原数据的标识信息、当前数据节点的标识信息发送至所述校验节点,其中,所述数据节点的标识信息包括:磁盘标识、IP地址、端口信息。

其中,所述在所述校验节点中更新对应的索引信息,包括:更新所述校验节点中被占用存储空间的结束位置。

其中,还包括:根据所述数据节点的标识信息查询出与该数据节点相对应的索引信息;根据与所述更新数据相对应的原数据的标识信息,在所述数据节点的索引信息中查找到原数据的索引,将该索引修改为所述更新数据的索引。

根据本申请实施例还提出一种分布式文件系统的数据更新装置,所述分布式文件系统包括多个数据节点以及至少一个校验节点,所述装置包括:

获取模块,用于获取更新数据;数据节点更新模块,用于将所述更新数据写入当前数据节点的尾部,并在所述数据节点中更新对应的索引信息;校验节点更新模块,用于将所述更新数据写入所述校验节点的尾部,并在所述校验节点中更新对应的索引信息。

其中,所述数据节点更新模块还用于,更新所述数据节点的存储空间被占用的结束位置;查找到与所述更新数据相对应的原数据的索引,将该索引修改为所述更新数据的索引。

其中,还包括:数据发送模块,用于将所述更新数据、与所述更新数据相对应的原数据的标识信息、当前数据节点的标识信息发送至所述校验节点,其中,所述数据节点的标识信息包括:磁盘标识、IP地址、端口信息。

其中,所述校验节点更新模块还用于,更新所述校验节点中被占用存储空间的结束位置。

其中,所述校验节点更新模块还用于,根据所述数据节点的标识信息查询出与该数据节点相对应的索引信息;根据与所述更新数据相对应的原数据的标识信息,在所述数据节点的索引信息中查找到原数据的索引,将该索引修改为所述更新数据的索引。

根据本申请的上述技术方案,通过将更新数据写入数据节点以及校验节点的尾部,以磁盘空间解决了应用Erasure Code更新算法进行数据更新存在的缺陷,在分布式文件系统的数据更新过程中有效实现了高性能、不占用计算资源、以及数据一致的效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的分布式文件系统的架构图;

图2是根据本申请实施例的数据节点的存储管理的示意图;

图3是根据本申请实施例的校验节点的存储管理的示意图;

图4是根据本申请实施例的分布式文件系统的数据更新方法的流程图;

图5是根据本申请实施例的数据更新的示意图;

图6是根据本申请一个实施例的分布式文件系统的数据更新装置的结构 框图;

图7是根据本申请另一实施例的分布式文件系统的数据更新装置的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

根据本申请实施例提供一种分布式文件系统的数据更新方法。

本申请是建立在分布式文件系统之上,参考图1,分布式文件系统由至少一个主控节点(或称为控制节点)、至少一个客户端和多个存储节点组成,上述三种类型的装置之间通过网络相互通信。每个节点都是一台独立的物理机,主控节点主要用于定位存储节点,每个存储节点负责管理一块磁盘。

其中,存储节点包括存储原始数据存储节点和存储校验数据存储节点两种类型:

存储原始数据存储节点,简称为数据节点,用于存储原始数据。原始数据按照预定大小(例如1M)切分成不同的数据小块,每个小块相对于当前数据节点都有一个唯一的编号(ID)。

数据节点的功能主要包括:(1)接收并转发来自主控节点、其他数据节点和/或客户端的网络数据;(2)管理磁盘上的数据以及索引信息。

在实际应用中,数据节点的索引信息具体包括:磁盘ID、编码起始位置和编码结束位置、被占用存储空间的结束位置(依次递增)、所有数据块的索引。参考图2,每个数据块21都对应一个索引22,数据块的索引包括:数据块标识(ID)、数据块开始位置、数据块结束位置。在本申请的一个实施例中,通过数据块的索引信息可以快速定位数据文件(数据块)在数据节点中的位置。

参考图3,存储校验数据存储节点,简称为校验节点,存储通过Erasure Code算法生成的校验数据31以及更新文件所产生的更新数据32,其中,将更新数据写入校验节点的尾部。

校验节点与数据节点不仅存储的数据类型不一样,而且存储的索引信息的类型也不一样。如图3所示,校验节点通常会在索引数据最开始位置33记录校验节点的编码起始位置、结束位置、存储空间被占用的结束位置(依次递增),接着在开始位置33之后的位置44存储其他所有数据节点的索引信息。如图3所示,校验节点中分别记录每个数据节点的磁盘标识、IP地址、端口信息(磁盘信息)、以及该数据节点的数据块对应的校验数据块的索引。其中,校验数据块的索引可以包括:校验数据块标识(ID)、校验数据块开始位置、校验数据块结束位置。在实际应用中,通过校验数据块的索引可以快速定位校验数据块在校验节点中的位置。

参考图4,图4示出根据本申请一个实施例的分布式文件系统的数据更新方法的流程图。

步骤S402,获取更新数据,将所述更新数据写入当前数据节点的尾部,并在所述数据节点中更新对应的索引信息;

将更新数据写入数据节点的尾部后,数据节点的存储空间发生变化,因此需要对数据节点的被占用存储空间的结束位置进行更新;并且,数据更新后,还需要更新原数据的索引指向的位置,具体地:将所述更新数据的开始位置更新为N、结束位置更新为N加更新数据长度、存储空间被占用的结束位置更新为N加更新数据长度;其中,N为更新前存储空间被占用的结束位置。

然后,将所述更新数据、与所述更新数据相对应的原数据的标识信息、当前数据节点的标识信息发送至所述校验节点,其中,所述数据节点的标识信息包括:磁盘标识、IP地址、端口信息。

步骤S404,将所述更新数据写入所述校验节点的尾部,并在所述校验节点中更新对应的索引信息。

校验节点接收到更新数据后,将数据追加到自己的尾部,接着需要更新校验节点的索引信息,具体地:根据所述数据节点的标识信息查询出与该数据节点相对应的索引信息;根据与所述更新数据相对应的原数据的标识信息,在所述数据节点的索引信息中查找到原数据的索引,将该索引修改为所述更新数据的索引。

首先将存储空间被占用的结束位置更新为N加新数据长度;然后根据所述数据节点的标识信息查询出与该数据节点相关的索引信息,将所述更新数据的开始位置更新为N、结束位置更新为N加更新数据长度。

下面结合图5详细描述分布式文件系统的数据更新的实例。

在本申请的一个实施例中,所述分布式文件系统可以是TFS(Taobao File System,淘宝文件系统),TFS系统以数据块(Block)为单位管理数据文件的存储,每个数据块有一个全局唯一的标识信息(ID)。当存储小文件时,可以将多个小文件存储在同一个数据块中,同时TFS系统支持对文件的更新操作。TFS系统在存储文件时,建立根据该文件的索引信息。,索引信息不进行Erasure Code编码,直接复制到校验块所在的数据节点(校验节点)中。

在编码过程中只对每个数据块的真实数据进行Erasure Code编码,不对每个数据块的索引信息编码。每个数据块的索引信息会复制到每个校验块(校验节点),并存储到校验块的索引文件中。

为了简单说明更新数据流程,设置分布式文件系统包括3个数据节点和1个校验节点(为简明图5中仅示出2个数据节点),编码开始位置为0、结束位置为M,存储空间被占用的结束位置为N。假设对数据节点1,编号为2的数据块进行更新,预先获取更新数据(新数据),参考图5,对数据节点1的2号数据块(即原数据)的更新流程如下:

(1)数据节点1将新数据追加到自己的尾部,更新2号数据块相关的索引信息。在数据节点1中,2号数据块的索引即为索引2,在更新之前,索引2指向数据块2(即图中虚线段所示);更新之后,需要将索引2指向更新数据,也就是索引2的开始位置更新为N、结束位置更新为N+新数据长度(即图中实线段所示),存储空间被占用的结束位置更新为N+新数据长度;

(2)数据节点1通过网络将新数据、原数据的标识信息、以及数据节点1的相关信息(磁盘ID、IP地址、端口号PORT)发送给校验节点1;

(3)在校验节点1中,在更新之前,索引2指向数据块2(即图中虚线段所示);更新之后,校验节点1接收到新数据后,首先将新数据追加到自己的尾部,同时更新存储空间被占用的结束位置为N+新数据长度;通过磁盘ID、IP地址、端口号查询出与数据节点1相关的索引信息,更新数据块2的索引信息,索引2指向更新数据(即图中实线段所示)。

根据本申请的实施例能够实现以下的技术效果:

(1)高性能;

读写磁盘的次数只占原有方案的(2/(M-1+M+N)=2/(3-1+3+1)=2/6=33.33%;

网络传量只占原有方案的(2/(M-1+M+N)=2/(3-1+3+1)=2/6=33.33%;

(2)不占用计算资源,只需要在磁盘末尾追加数据即可;

(3)更新过程中部分失败时会出现用户看到的数据一致的情况。

根据本申请实施例还提供一种分布式文件系统的数据更新装置,所述分布式文件系统包括多个数据节点以及至少一个校验节点。

图6是根据本申请一个实施例的分布式文件系统的数据更新装置的结构框图,如图6所示,所述装置包括:

获取模块610,用于获取更新数据;

数据节点更新模块620,用于将所述更新数据写入当前数据节点的尾部,并在所述数据节点中更新对应的索引信息;

进一步地,所述数据节点更新模块620更新所述数据节点的存储空间被占用的结束位置;查找到与所述更新数据相对应的原数据的索引,将该索引修改为所述更新数据的索引。具体来说,将所述更新数据的开始位置更新为N、结束位置更新为N加更新数据长度、存储空间被占用的结束位置更新为N加更新数据长度;其中,N为更新前被占用存储空间的结束位置。

校验节点更新模块630,用于将所述更新数据写入所述校验节点的尾部,并在所述校验节点中更新对应的索引信息。

进一步地,所述校验节点更新模块630更新所述校验节点中被占用存储空间的结束位置;根据所述数据节点的标识信息查询出与该数据节点相对应的索引信息;根据与所述更新数据相对应的原数据的标识信息,在所述数据节点的索引信息中查找到原数据的索引,将该索引修改为所述更新数据的索引。具体来说,将存储空间被占用的结束位置更新为N加新数据长度;根据所述数据节点的标识信息查询出与该数据节点相关的索引信息;将所述更新数据的开始位置更新为N、结束位置更新为N加更新数据长度。

参考图7,图7是根据本申请另一实施例的分布式文件系统的数据更新装置的结构框图,所述装置包括有:获取模块710、数据节点更新模块720、校验节点更新模块730、数据发送模块740。

其中,获取模块710、数据节点更新模块720、校验节点更新模块730分别与图6所示的获取模块610、数据节点更新模块620、校验节点更新模块630类似,不再赘述。

如图7所示,数据发送模块740,用于将所述更新数据、与所述更新数据相对应的原数据的标识信息、当前数据节点的标识信息发送至所述校验节点,其中,所述数据节点的标识信息包括:磁盘标识、IP地址、端口信息。

本发明的方法的操作步骤与装置的结构特征对应,可以相互参照,不再一一赘述。

综上所述,根据本申请的上述技术方案,通过将更新数据写入数据节点以及校验节点的尾部,以磁盘空间解决了应用Erasure Code更新算法进行数据更新存在的缺陷,在分布式文件系统的数据更新过程中有效实现了高性能、不占用计算资源、以及数据一致的效果。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含 有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1