基于纠删码的部分写入方法及装置、存储介质、设备制造方法及图纸

技术编号:15437071 阅读:55 留言:0更新日期:2017-05-25 19:16
本发明专利技术公开了一种基于纠删码的部分写入方法及装置,其中所述方法包括:确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理。

Partial write method and device based on erasure code, storage medium and equipment

The invention discloses an erasure code method and device based on the written part, wherein said method comprises: determining a first update request, update data and the first version of the first to carry the information update request, wherein the first version information for that client stored by the data to be updated for version information update the data blocks to be updated, the data is less than a set amount of data erasure codes; in response to the first request to update the information access version second, version second of the information used to indicate the version information stored data block; according to the matching result between the first version information with the second version of the information, the data to be updated.

【技术实现步骤摘要】
基于纠删码的部分写入方法及装置、存储介质、设备
本专利技术涉及存储技术,尤其涉及一种基于纠删码的部分写入方法及装置。
技术介绍
纠删码(EC,ErasureCoding)起源于通信传输领域,目前逐渐出现在大规模存储系统中,特别是分布式存储系统,用于实现数据的冗余保护。纠删码冗余保护技术解决了传统冗余保护技术不适于分布式生产存储系统的问题。纠删码是一种用于数据修复的编码技术,原始数据通常被切分为L字节大小的数据块,L为固定值,得到n块原始数据;并使用每m块原始数据通过编码计算,得到k块L字节大小校验数据(即基于m块原始数据冗余计算获得k块校验数据,校验数据又称为冗余数据),并将m块原始数据(m个数据块)和k块校验数据(k个校验块)一并存储,其中m块原始数据和k块校验数据称为一个EC组;若(m+k)个数据块当中有任意有最多k块数据出错、损坏或丢失,分布式存储系统都可以通过解码计算恢复全部原始数据(m块原始数据)。其中,m小于等于n。写入操作或更新操作是存储系统的常用操作,写入操作的编码计算过程通常可以放在客户端完成,当然也可以放在某个节点(数据节点)上完成。写入操作包括全部写入和部分写入,其中部分写入(PartialWrite),若一个写操作的写入长度不是L*m的整数倍,则该写操作称为部分写入。假设L=4KB(千字节),m=8,若一次写操作长度不为32KB的整数倍,则为部分写入,因为这种写操作需要部分更新目标EC组,即新数据不足以填充某个EC组。需要说明的是,部分写入的操作实际上是一种更新操作。现有的进行部分写入时,当写入流程遇到错误而终止,存储系统无法确认故障所在,无法正确重试写入操作,也无法正确执行数据修复操作。例如,若某次更新操作成功更新原始数据块,但由于故障原因未能更新全部校验数据块,那么在随后的修复过程中,存储系统将无法确认原始数据块和校验数据块中哪些是新的哪些是旧的,也就无法进行数据修复工作。由此可见,现有技术中在进行写入时,完全没有考虑容错方面的问题。
技术实现思路
有鉴于此,本专利技术实施例为解决现有技术中存在的至少一个问题而提供一种基于纠删码的部分写入方法及装置,当写入流程遇到错误而终止,能够确认故障所在进而正确重试写入操作和正确执行数据修复操作。本专利技术实施例的技术方案是这样实现的:第一方面,本专利技术实施例提供一种基于纠删码的部分写入方法,所述方法包括:确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理。第二方面,本专利技术实施例提供一种基于纠删码的部分写入方法,所述方法包括:确定待更新数据和与所述待更新数据对应的数据块的标识信息,所述待更新数据的数据量小于一个纠删码组的数据量;根据所述数据块的标识信息确定对应的数据节点的标识信息;根据所述数据块的标识信息确定所述数据块的当前版本信息,将所述数据块的当前版本信息作为第一版本信息;将所述待更新数据和第一版本信息携带于第一更新请求中,根据数据节点的标识信息将所述第一更新请求发送给对应的数据节点;接收所述数据节点发送的第一更新响应,所述第一更新响应中携带有更新结果;如果所述更新结果表明更新成功,对所述第一版本信息进行更新。第三方面,本专利技术实施例提供一种基于纠删码的部分写入方法,所述方法包括:接收数据节点发送的第二更新请求,所述第二更新请求中携带有校验增量ΔPg,所述第二更新请求用于根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述自身存储的版本向量,所述版本向量是由m个数据块的版本信息所组成的向量,所述m为一个纠删码组中数据块的数目;根据所述校验增量ΔPg和自身存储的校验数据Pg,确定更新后的校验数据Pg’,存储所述更新后的校验数据Pg’;响应所述第二更新请求,更新自身存储的版本向量;更新所述版本向量和存储所述校验数据Pg’,向数据节点发送第二更新响应,所述第二更新响应中携带有更新所述校验增量ΔPg成功的结果。第四方面,本专利技术实施例提供一种基于纠删码的部分写入装置,所述装置包括第一确定单元、第一获取单元和处理单元,其中:所述第一确定单元,用于确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;所述第一获取单元,用于响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;所述处理单元,用于根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理。第五方面,本专利技术实施例提供一种基于纠删码的部分写入装置,所述装置包括第二确定单元、第三确定单元、第四确定单元、携带单元、第二接收单元和第一更新单元,其中:所述第二确定单元,用于确定待更新数据和与所述待更新数据对应的数据块的标识信息,所述待更新数据的数据量小于一个纠删码组的数据量;所述第三确定单元,用于根据所述数据块的标识信息确定对应的数据节点的标识信息;所述第四确定单元,用于根据所述数据块的标识信息确定所述数据块的当前版本信息,将所述数据块的当前版本信息作为第一版本信息;所述携带单元,用于将所述待更新数据和第一版本信息携带于第一更新请求中,根据数据节点的标识信息将所述第一更新请求发送给对应的数据节点;所述第二接收单元,用于接收所述数据节点发送的第一更新响应,所述第一更新响应中携带有更新结果;所述第一更新单元,用于如果所述更新结果表明更新成功,对所述第一版本信息进行更新。第六方面,本专利技术实施例提供一种基于纠删码的部分写入装置,所述装置包括第三接收单元、第五确定单元、第二更新单元和第三发送单元,其中:所述第三接收单元,用于接收数据节点发送的第二更新请求,所述第二更新请求中携带有校验增量ΔPg,所述第二更新请求用于根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述自身存储的版本向量;所述第五确定单元,用于根据所述校验增量ΔPg和自身存储的校验数据Pg,确定更新后的校验数据Pg’,存储所述更新后的校验数据Pg’;所述第二更新单元,用于响应所述第二更新请求,更新自身存储的版本向量,所述版本向量是由m个数据块的版本信息所组成的向量,所述m为一个纠删码组中数据块的数目;所述第三发送单元,用于更新所述版本向量完成后和存储所述校验数据Pg’后,向数据节点发送第二更新响应,所述第二更新响应中携带有更新所述校验增量ΔPg成功的结果。第七方面,本专利技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时用于执行上述的基于纠删码的部分写入方法。第八方面,本专利技术实施例提供一种计算设备,包括:存储器、处理器和用于存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时用于实现上述的基于纠删码的部分写入方法。本专利技术实施例提本文档来自技高网
...
基于纠删码的部分写入方法及装置、存储介质、设备

【技术保护点】
一种基于纠删码的部分写入方法,其特征在于,所述方法包括:确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理。

【技术特征摘要】
1.一种基于纠删码的部分写入方法,其特征在于,所述方法包括:确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理。2.根据权利要求1所述的方法,其特征在于,所述根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理,包括:如果所述第一版本信息与所述第二版本信息不匹配,发送第一更新响应并丢弃所述待更新数据,所述第一更新响应中携带有更新失败结果和原因值,所述原因值用于表明是由于第一版本信息错误所导致的更新失败。3.根据权利要求1所述的方法,其特征在于,所述根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理,包括:如果所述第一版本信息与所述第二版本信息匹配,根据待更新数据和所述数据块确定校验增量的更新数据块集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk},其中,ΔPg为第g个校验节点的校验增量,g大于等于1小于等于k,k为与一个所述纠删码相匹配的校验数据块的数量;将第g个校验节点的校验增量ΔPg携带于第二更新请求中,将所述第二更新请求发送给第g个校验节点,所述第二更新请求用于触发所述第g个校验节点根据所述校验增量ΔPg对自身存储的校验数据进行更新,并更新所述第g个校验节点自身存储的版本向量。4.根据权利要求1所述的方法,其特征在于,所述根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理,包括:如果所述第一版本信息与所述第二版本信息匹配,利用所述待更新数据对所述数据块进行更新;对所述数据块更新完成后,对所述第二版本信息进行更新。5.根据权利要求1或4所述的方法,其特征在于,所述方法还包括:对所述数据块更新完成后,发送第一更新响应,所述第一更新响应中携带有更新成功结果,所述更新成功结果用于触发客户端更新所述第一版本信息。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:接收第g个校验节点发送的第二更新响应,所述第二更新响应中携带有更新所述校验增量ΔPg是否成功的结果;如果所有的k个校验节点全部更新对应的所述校验增量ΔPg成功,且对所述数据块更新完成后,发送第一更新响应。7.一种基于纠删码的部分写入方法,其特征在于,所述方法包括:确定待更新数据和与所述待更新数据对应的数据块的标识信息,所述待更新数据的数据量小于一个纠删码组的数据量;根据所述数据块的标识信息确定对应的数据节点的标识信息;根据所述数据块的标识信息确定所述数据块的当前版本信息,将所述数据块的当前版本信息作为第一版本信息;将所述待更新数据和第一版本信息携带于第一更新请求中,根据数据节点的标识信息将所述第一更新请求发送给对应的数据节点;接收所述数据节点发送的第一更新响应,所述第一更新响应中携带有更新结果;如果所述更新结果表明更新成功,对所述第一版本信息进行更新。8.一种基于纠删码的部分写入方法,其特征在于,所述方法包括:接收数据节点发送的第二更新请求,所述第二更新请求中携带有校验增量ΔPg,所述第二更新请求用于根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述自身存储的版本向量,所述版本向量是由m个数据块的版本信息所组成的向量,所述m为一个纠删码组中数据块的数目;根据所述校验增量ΔPg和自身存储的校验数据Pg,确定更新后的校验数据Pg’,存储所述更新后的校验数据Pg’;响应所述第二更新请求,更新自身存储的版本向量;更新所述版本向量和存储所述校验数据Pg’,向数据节点发送第二更...

【专利技术属性】
技术研发人员:李慧霸张志明
申请(专利权)人:北京三快在线科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1