一种用于EC副本混合冗余存储的文件长度协商方法与流程

文档序号:37595167发布日期:2024-04-18 12:31阅读:5来源:国知局
一种用于EC副本混合冗余存储的文件长度协商方法与流程

本发明涉及云计算和存储领域,特别涉及一种用于ec副本混合冗余存储的文件长度协商方法。


背景技术:

1、ec存储方式是一种纠删码存储方式,它是一种跨节点的数据保护方法,可以将数据分组成多个unit,并生成额外的冗余unit进行存储,以便在部分数据丢失或损坏时能够通过冗余数据进行恢复,然而采用ec存储方式在每次写入数据时,均会导致对应的校验unit重新进行计算,造成cpu过多的开销,且当遇到节点宕机、磁盘数据丢失等情况时,无法确定已经写入系统的有效数据长度,在数据恢复时实现困难。


技术实现思路

1、本发明的目的在于提供一种用于ec副本混合冗余存储的文件长度协商方法,以解决上述背景技术中提出的问题。

2、为实现上述目的,本发明提供如下技术方案:一种用于ec副本混合冗余存储的文件长度协商方法,所述协商方法包括以下几个步骤;

3、第一步,设定前提条件,所述前提条件包括chunk数据写入方式、写入chunk数据时参数所携带的信息、chunk数据写入失败处理、数据写入成功条件和协商参与分片数设定;

4、第二步,将chunk数据分多次进行io写入,所述chunk数据写入包括数据切片写入和校验数据写入;

5、第三步,在写入完成后对ec的chunk进行seal操作,并协商其chunk长度,所述长度协商通过给定lc_len、prev_lc_len进行排序并遍历分片检查的方式,最终确定有效数据长度。

6、优选的,所述第一步中chunk数据写入方式为只能通过追加写的方式进行写入且当写入偏移错误时禁止写入并返回错误,所述写入chunk数据时参数所携带的信息包括目标逻辑长度、节点记录数据的逻辑长度和上一次io的逻辑长度。

7、优选的,所述第一步中chunk数据写入失败处理包括在chunk写入过程中当一次io失败后,则允许再写当前chunk,所述数据写入成功条件包括所有节点数据写入成功返回成功,当任意节点写入失败则写入操作失败。

8、优选的,所述第一步中协商参与分片数设定包括协商参与分片数大于等于ec策略中数据分片数量。

9、优选的,所述第二步中chunk数据分多次进行io写入的具体操作包括以下几个步骤;

10、a1,将原始数据划分成若干等长或不等长的chunk,并对每个chunk进行编码处理;

11、a2,选择一个编码后包含所有数据信息的存储节点,将该节点作为数据的写入节点,并进行首次写入;

12、a3,将编码后的chunk数据分别存储到或者写入其他存储节点上,以防止单点故障;

13、a4,进行数据的校验和计算;

14、a5,对每个存储节点周期性地进行检查,并在发现数据错误时进行修复或重新编码。

15、优选的,所述第三步中在写入完成后对ec的chunk进行seal操作,具体包括以下几个步骤:

16、b1,验证数据完整性,所述完整性验证方式包括计算校验和、哈希值;

17、b2,确定seal的方式,所述seal的方式包括标记为只读、写入保护标志、冻结数据和强制只读模式;

18、b3,更新元数据,所述元数据包括数据的位置、状态和属性,所述元数据更新后反映ec chunk的状态为已封存;

19、b4,数据的保护与备份,对已封存的ec chunk进行数据保护和备份。

20、优选的,所述第三步中chunk长度协商操作具体包括以下几个步骤;

21、c1,取当前所有分片的lc_len以及prev_lc_len,并从大到小进行排序;

22、c2,取出序列中第一个长度,遍历所有节点,判断节点当前数据是否满足该长度要求,当述所有节点数据均满足长度要求,则该长度为最终协商长度,当有节点数据不满足该长度要求则选取序列中下一个长度要求再次进行判断,若仍不满足,则进行重复操作直至所有节点数据均满足所选取长度要求;

23、c3,若所有长度均无法满足,则最终协商长度输出为0。

24、优选的,所述c1中排序操作的操作包括以下几个步骤;

25、d1,获取所有分片的lc_len和prev_lc_len;

26、d2,创建数据结构,使用适当的数据结构来存储每个分片的lc_len和prev_lc_len值;

27、d3,按照从大到小的顺序选取排序算法进行排序;

28、d4,获取排序结果。

29、优选的,所述c2中遍历所有节点的操作,包括以下几个步骤;

30、e1,获取排序后的序列结构;

31、e2,确定遍历形式,所述遍历形式包括线性遍历、递归遍历和广度优先遍历;

32、e3,执行遍历操作;

33、e4,设定终止条件,所述终止条件包括所有节点数据均满足选取长度要求;

34、e5,释放资源,所述释放资源包括关闭文件句柄和回收内存。

35、优选的,所述c2中节点当前数据是否满足该长度要求是指该节点是否拥有该长度下本节点应该拥有的所有数据。

36、本发明的技术效果和优点:

37、本发明通过利用了每次io所携带的逻辑长度信息,通过lc_len标识io的目标逻辑长度,并通过协商的方式确定最终chunk长度,通过每次io所携带的信息即可完成一致性协商,有效的避免了数据的丢失和使用传统一致性协议造成的开销,技术简单可靠。



技术特征:

1.一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述协商方法包括以下几个步骤;

2.根据权利要求1所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述第一步中chunk数据写入方式为只能通过追加写的方式进行写入且当写入偏移错误时禁止写入并返回错误,所述写入chunk数据时参数所携带的信息包括目标逻辑长度、节点记录数据的逻辑长度和上一次io的逻辑长度。

3.根据权利要求1所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述第一步中chunk数据写入失败处理包括在chunk写入过程中当一次io失败后,则允许再写当前chunk,所述数据写入成功条件包括所有节点数据写入成功返回成功,当任意节点写入失败则写入操作失败。

4.根据权利要求1所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述第一步中协商参与分片数设定包括协商参与分片数大于等于ec策略中数据分片数量。

5.根据权利要求1所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述第二步中chunk数据分多次进行io写入的具体操作包括以下几个步骤;

6.根据权利要求1所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述第三步中在写入完成后对ec的chunk进行seal操作,具体包括以下几个步骤:

7.根据权利要求1所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述第三步中chunk长度协商操作具体包括以下几个步骤;

8.根据权利要求7所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述c1中排序操作的操作包括以下几个步骤;

9.根据权利要求8所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述c2中遍历所有节点的操作,包括以下几个步骤;

10.根据权利要求7所述的一种用于ec副本混合冗余存储的文件长度协商方法,其特征在于,所述c2中节点当前数据是否满足该长度要求是指该节点是否拥有该长度下本节点应该拥有的所有数据。


技术总结
本发明公开了一种用于EC副本混合冗余存储的文件长度协商方法,第一步,设定前提条件,所述前提条件包括chunk数据写入方式、写入chunk数据时参数所携带的信息、chunk数据写入失败处理、数据写入成功条件和协商参与分片数设定,第二步,将chunk数据分多次进行IO写入,所述chunk数据写入包括数据切片写入和校验数据写入,第三步,在写入完成后对EC的chunk进行seal操作,并协商其chunk长度,本发明通过利用了每次IO所携带的逻辑长度信息,通过lc_len标识IO的目标逻辑长度,并通过协商的方式确定最终chunk长度,通过每次IO所携带的信息即可完成一致性协商,有效的避免了数据的丢失和使用传统一致性协议造成的开销,技术简单可靠。

技术研发人员:陈阳,白杨,代怀刚,王达林
受保护的技术使用者:天翼云科技有限公司
技术研发日:
技术公布日:2024/4/17
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1