CN114064346A - 一种纠删码数据一致性保障方法及系统 - Google Patents
一种纠删码数据一致性保障方法及系统 Download PDFInfo
- Publication number
- CN114064346A CN114064346A CN202111290147.5A CN202111290147A CN114064346A CN 114064346 A CN114064346 A CN 114064346A CN 202111290147 A CN202111290147 A CN 202111290147A CN 114064346 A CN114064346 A CN 114064346A
- Authority
- CN
- China
- Prior art keywords
- data
- seq
- log
- node
- writing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机存储技术领域,具体涉及一种纠删码数据一致性保障方法及系统,本发明在leader节点内存中保存seq值,并将物理节点上的磁盘划分为log区域和data区域;进入写数据时,由leader上获取最新的seq,若存在记录,则向上加1;若不存在记录,则进行数据恢复;写入完成后,向每个物理节点发起提交,将log中的数据写入到永久数据区,提交完成后更新已提交的seq,写入完成;读取数据时,若有小于校验码节点数离线,则读出有效节点数据并进行解码;若节点都在线,则直接读取数据返回。本发明能够根据写入的数据选择进行redo或者undo,从而保证数据的一致性,避免读取到错误的数据。
Description
技术领域
本发明涉及计算机存储技术领域,具体涉及一种纠删码数据一致性保障方法及系统。
背景技术
在存储系统中,硬盘在实际使用过程中年故障率一般在2%上下,这意味着100块硬盘中,平均每年会故障2块,硬盘故障率是非常高的,为了不因硬盘损坏而丢失,存储系统就需要使用数据冗余保护策略来保护数据的安全。多副本和纠删码是目前分布式存储系统中常用的两种数据冗余保护策略。
多副本就是把数据复制成多份并分别存储到不同地方以实现冗余备份,冗余度很高,但是带来了巨大的额外存储空间消耗,无形中提高了存储的成本,
纠删码(ErasureCoding,EC)是目前在存储系统中另一种广泛使用的数据保护机制。纠删码首先针对原始数据进行分片,然后基于分片编码生成备份数据,最后将原始数据和备份数据分别写入不同的存储介质。
纠删码技术主要是通过纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目的。其基本思想是将n块原始的数据元素通过一定的计算,得到m块冗余元素(校验块)。对于这n+m块的元素,当其中任意的m块元素出错(包括原始数据和冗余数据)时,均可以通过对应的重构算法恢复出原来的n块数据。生成校验的过程被称为编码(encoding),恢复丢失数据块的过程被称为解码(decoding)。磁盘利用率为n/(n+m)。基于纠删码的方法与多副本方法相比具有冗余度低、磁盘利用率高等优点。
纠删码系统中多个数据块之间有关联关系,更新数据的同时也要更新校验数据,这样才能保证在故障的情况下能够通过现有的数据恢复出正确的数据,由于纠删码分开多个块存放在不同的设备上,如果在更新过程中发生故障,一部分更新完成,一部分未更新,就会导致数据一致性问题,恢复出来的数据既不是新数据,也不是旧数据,如图1所示,D1,D2,D3,D4是数据块,P,Q是校验块,更新时D1 D2 D3更新失败,D4’P’Q’更新成功,这时整个条带上的数据已经不一致,有任何一个数据需要恢复时,恢复出来的数据就会变成错误的数据。因此本文提出一种纠删码数据一致性保障方法及系统。
发明内容
针对现有技术的不足,本发明公开了一种纠删码数据一致性保障方法及系统,用于解决上述问题。
本发明通过以下技术方案予以实现:
第一方面,本发明提供一种纠删码数据一致性保障方法,包括以下步骤:
S1系统初始化完成,在leader节点内存中保存seq值,并将物理节点上的磁盘划分为log区域和data区域;
S2进入写数据,由leader上获取最新的seq,若存在记录,则向上加1;若不存在记录,则进行数据恢复;
S3将需要写入的数据进行拆分及编码,并将数据和元数据及当前写入数据的seq写入到每个物理节点log;
S4写入完成,向每个物理节点发起提交,将log中的数据写入到永久数据区,提交完成后更新已提交的seq,写入完成;
S5读取数据时,若有小于校验码节点数离线,则读出有效节点数据并进行解码;若节点都在线,则直接读取数据返回。
更进一步的,所述方法中,在leader节点内存中保存一个纠删码条带整体的seq值,并在每个物理节点内存中保存一个已提交的seq值,将物理节点上的磁盘划分为log区域和data区域。
更进一步的,所述方法中,log区域用来记录当前写入的数据日志,data区域为永久性数据。
更进一步的,所述方法中,进行数据恢复时,如果所有节点都重启或者系统刚开始运行时leader上没有记录seq时,在每个节点上log中查找到最大相同的seq。
更进一步的,最大相同的seq中,如果节点log中的seq小于等于这个seq时进行重新提交,大于这个seq的log进行删除,并将这个seq记录到leader中。
更进一步的,所述方法中,进行数据恢复时,如果只有小于纠删码校验块数量的部分节点不在线,查找到所有节点记录已提交最大的seq。
更进一步的,已提交最大的seq中,大于seq的log是在请求阶段失败,则把log删除;小于等于seq的log重启提交,然后恢复出需要的数据,存放到新的位置。
更进一步的,所述方法中,写入完成后,向每个物理节点发起提交,将log中的数据写入到永久数据区,且提交时按seq有序提交,提交完成后更新已提交的seq。
更进一步的,所述方法在发生故障后,根据写入的数据选择进行redo或者undo,进而保证数据的一致性。
第二方面,本发明提供了一种纠删码数据一致性保障系统,包括处理器以及存储有执行指令的存储器,当所述处理器执行所述存储器存储的所述执行指令时,所述处理器执行第一方面所述的纠删码数据一致性保障方法。
本发明的有益效果为:
本发明能够解决纠删码系统中因故障引起的数据问题,在发生故障后,能够根据写入的数据选择进行redo或者undo,从而保证数据的一致性,避免读取到错误的数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明背景技术数据错误示意图;
图2是本发明实施例整体结构原理图;
图3是本发明实施例写入流程图;
图4是本发明实施例读取流程图;
图5是本发明实施例恢复流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提供一种纠删码数据一致性保障方法,包括以下步骤:
S1系统初始化完成,在leader节点内存中保存seq值,并将物理节点上的磁盘划分为log区域和data区域;
S2进入写数据,由leader上获取最新的seq,若存在记录,则向上加1;若不存在记录,则进行数据恢复;
S3将需要写入的数据进行拆分及编码,并将数据和元数据及当前写入数据的seq写入到每个物理节点log;
S4写入完成,向每个物理节点发起提交,将log中的数据写入到永久数据区,提交完成后更新已提交的seq,写入完成;
S5读取数据时,若有小于校验码节点数离线,则读出有效节点数据并进行解码;若节点都在线,则直接读取数据返回。
本实施例使用向上自增的内存变量seq,结合二阶段提交,作为undo和redo的判断依据,从而保证ec数据的一致性。
实施例2
在具体实施层面,本实施例基于分布式集群选举模型,提供一种纠删码数据一致性保障方法,其一个纠删码条带只有一个leader,并作为读写数据的唯一入口。
本实施例中,包含内存记录sequence值,以下简称为seq值,seq是向上自增的变量。
如图2所示,本实施例在leader节点内存中保存一个纠删码条带整体的seq值,在每个物理节点内存中保存一个已提交的seq值,将物理节点上的磁盘划分为log区域和data区域。log用来记录当前写入的数据日志,data区域为永久性数据。
如图3所示本实施例提供一种Leader上写入数据时的方法具体如下,包括三个阶段:
准备阶段,在写入之前先从leader上获取最新的seq,并向上加1,如果leader中没有记录seq则需要先恢复数据。
请求阶段,获取到新的seq后将需要写入的数据进行拆分及编码,将数据和元数据及当前写入数据的seq一起写入到每个物理节点log上。
提交阶段,写入完成后再向每个物理节点发起提交。提交是将log中的数据写入到永久数据区。提交时按seq有序提交,提交完成后更新已提交的seq.写入完成。
如图4所示,本实施例提供leader上读取数据的具体实施,从物理节点的永久数据区域读取,如果有小于校验码节点数离线,读出有效节点数据并进行解码,得到需要的数据。如果节点都在线直接读取数据返回。
实施例3
本实施例在实施例2的基础上,提供一种数据恢复方法,如图5所示,用于在恢复数据时使用,具体如下,包括两种情况:
本实施例第一种情况,如果所有节点都重启或者系统刚开始运行时leader上没有记录seq时,在每个节点上log中查找到最大相同的seq,如果节点log中的seq小于等于这个seq时进行重新提交(redo操作),大于这个seq的log进行删除(undo操作)。且将这个seq记录到leader中。
本实施例第二种情况,如果只有小于纠删码校验块数量的部分节点不在线,查找到所有节点记录已提交最大的seq,大于seq的log是在请求阶段失败,则把log删除(undo操作)。小于等于seq的log重启提交(redo操作),然后恢复出需要的数据,存放到新的位置。
本实施例中,由于存储系统不允许有超过校验块数量的节点不在线,超过后数据将不能读取。所以不考虑超过校验块数量节点不在线的情况。
实施例4
本实施例提供一种纠删码数据一致性保障系统,包括处理器以及存储有执行指令的存储器,当所述处理器执行所述存储器存储的所述执行指令时,所述处理器执行纠删码数据一致性保障方法。
综上所述,本发明能够解决纠删码系统中因故障引起的数据问题,在发生故障后,能够根据写入的数据选择进行redo或者undo,从而保证数据的一致性,避免读取到错误的数据。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种纠删码数据一致性保障方法,其特征在于,所述方法包括以下步骤:
S1系统初始化完成,在leader节点内存中保存seq值,并将物理节点上的磁盘划分为log区域和data区域;
S2进入写数据,由leader上获取最新的seq,若存在记录,则向上加1;若不存在记录,则进行数据恢复;
S3将需要写入的数据进行拆分及编码,并将数据和元数据及当前写入数据的seq写入到每个物理节点log;
S4写入完成,向每个物理节点发起提交,将log中的数据写入到永久数据区,提交完成后更新已提交的seq,写入完成;
S5读取数据时,若有小于校验码节点数离线,则读出有效节点数据并进行解码;若节点都在线,则直接读取数据返回。
2.根据权利要求1所述的一种纠删码数据一致性保障方法,其特征在于,所述方法中,在leader节点内存中保存一个纠删码条带整体的seq值,并在每个物理节点内存中保存一个已提交的seq值,将物理节点上的磁盘划分为log区域和data区域。
3.根据权利要求2所述的一种纠删码数据一致性保障方法,其特征在于,所述方法中,log区域用来记录当前写入的数据日志,data区域为永久性数据。
4.根据权利要求1所述的一种纠删码数据一致性保障方法,其特征在于,所述方法中,进行数据恢复时,如果所有节点都重启或者系统刚开始运行时leader上没有记录seq时,在每个节点上log中查找到最大相同的seq。
5.根据权利要求4所述的一种纠删码数据一致性保障方法,其特征在于,最大相同的seq中,如果节点log中的seq小于等于这个seq时进行重新提交,大于这个seq的log进行删除,并将这个seq记录到leader中。
6.根据权利要求1所述的一种纠删码数据一致性保障方法,其特征在于,所述方法中,进行数据恢复时,如果只有小于纠删码校验块数量的部分节点不在线,查找到所有节点记录已提交最大的seq。
7.根据权利要求6所述的一种纠删码数据一致性保障方法,其特征在于,已提交最大的seq中,大于seq的log是在请求阶段失败,则把log删除;小于等于seq的log重启提交,然后恢复出需要的数据,存放到新的位置。
8.根据权利要求1所述的一种纠删码数据一致性保障方法,其特征在于,所述方法中,写入完成后,向每个物理节点发起提交,将log中的数据写入到永久数据区,且提交时按seq有序提交,提交完成后更新已提交的seq。
9.根据权利要求1所述的一种纠删码数据一致性保障方法,其特征在于,所述方法在发生故障后,根据写入的数据选择进行redo或者undo,进而保证数据的一致性。
10.一种纠删码数据一致性保障系统,包括处理器以及存储有执行指令的存储器,当所述处理器执行所述存储器存储的所述执行指令时,所述处理器执行如权利要求1至9中任一所述的纠删码数据一致性保障方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111290147.5A CN114064346B (zh) | 2021-11-02 | 2021-11-02 | 一种纠删码数据一致性保障方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111290147.5A CN114064346B (zh) | 2021-11-02 | 2021-11-02 | 一种纠删码数据一致性保障方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114064346A true CN114064346A (zh) | 2022-02-18 |
CN114064346B CN114064346B (zh) | 2022-07-12 |
Family
ID=80236510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111290147.5A Active CN114064346B (zh) | 2021-11-02 | 2021-11-02 | 一种纠删码数据一致性保障方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064346B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115826881A (zh) * | 2023-02-14 | 2023-03-21 | 北京大道云行科技有限公司 | 数据一致性保障方法及系统、存储介质、电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100162044A1 (en) * | 2004-08-09 | 2010-06-24 | Siew Yong Sim-Tang | Method for erasure coding data across a plurality of data stores in a network |
US20100162076A1 (en) * | 2004-08-09 | 2010-06-24 | Siew Yong Sim-Tang | Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network |
CN105095013A (zh) * | 2015-06-04 | 2015-11-25 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
CN105930103A (zh) * | 2016-05-10 | 2016-09-07 | 南京大学 | 一种分布式存储ceph的纠删码覆盖写方法 |
CN106681848A (zh) * | 2016-12-13 | 2017-05-17 | 中国科学院计算技术研究所 | 一种纠删码raid的数据一致性保障方法及系统 |
CN111679939A (zh) * | 2020-06-16 | 2020-09-18 | 江苏超流信息技术有限公司 | 数据备份方法及系统 |
CN113515531A (zh) * | 2021-05-08 | 2021-10-19 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、客户端及存储介质 |
-
2021
- 2021-11-02 CN CN202111290147.5A patent/CN114064346B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100162044A1 (en) * | 2004-08-09 | 2010-06-24 | Siew Yong Sim-Tang | Method for erasure coding data across a plurality of data stores in a network |
US20100162076A1 (en) * | 2004-08-09 | 2010-06-24 | Siew Yong Sim-Tang | Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network |
CN105095013A (zh) * | 2015-06-04 | 2015-11-25 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
CN105930103A (zh) * | 2016-05-10 | 2016-09-07 | 南京大学 | 一种分布式存储ceph的纠删码覆盖写方法 |
CN106681848A (zh) * | 2016-12-13 | 2017-05-17 | 中国科学院计算技术研究所 | 一种纠删码raid的数据一致性保障方法及系统 |
CN111679939A (zh) * | 2020-06-16 | 2020-09-18 | 江苏超流信息技术有限公司 | 数据备份方法及系统 |
CN113515531A (zh) * | 2021-05-08 | 2021-10-19 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、客户端及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115826881A (zh) * | 2023-02-14 | 2023-03-21 | 北京大道云行科技有限公司 | 数据一致性保障方法及系统、存储介质、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114064346B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2959901B2 (ja) | 記憶装置の冗長アレイおよびオンライン再構成方法 | |
US5379417A (en) | System and method for ensuring write data integrity in a redundant array data storage system | |
US8086937B2 (en) | Method for erasure coding data across a plurality of data stores in a network | |
US7152184B2 (en) | Storage device, backup method and computer program code of this storage device | |
US5819109A (en) | System for storing pending parity update log entries, calculating new parity, updating the parity block, and removing each entry from the log when update is complete | |
CN110442535B (zh) | 提高分布式固态盘键值缓存系统可靠性的方法及系统 | |
CN114415976B (zh) | 一种分布式数据存储系统与方法 | |
US20090313617A1 (en) | Method for Updating Control Program of Physical Storage Device in Storage Virtualization System and Storage Virtualization Controller and System Thereof | |
CN110515541B (zh) | 分布式存储中纠删码非对齐数据更新方法 | |
CN108228382B (zh) | 一种针对evenodd码单盘故障的数据恢复方法 | |
JPH08263227A (ja) | ディスクアレイにおけるパリティデータの無矛盾性保持方法 | |
CN101609420A (zh) | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 | |
CN110427156B (zh) | 一种基于分片的mbr的并行读方法 | |
CN106681848B (zh) | 一种纠删码raid的数据一致性保障方法及系统 | |
US11314594B2 (en) | Method, device and computer program product for recovering data | |
CN114064346B (zh) | 一种纠删码数据一致性保障方法及系统 | |
CN112463434B (zh) | 一种基于纠删码的数据重构方法、装置、设备及存储介质 | |
CN114138192A (zh) | 存储节点在线升级方法、装置、系统及存储介质 | |
US7577804B2 (en) | Detecting data integrity | |
WO2018113322A1 (zh) | 数据读取方法及设备 | |
CN105183590A (zh) | 一种磁盘阵列的容错处理方法 | |
CN115599607B (zh) | 一种raid阵列的数据恢复方法及相关装置 | |
GB2343265A (en) | Data storage array rebuild | |
KR20030073982A (ko) | 레이드 서브 시스템에서 중복 데이터의 일관성 유지 방법 | |
JP6175771B2 (ja) | ディスクアレイ装置、バッドセクタ修復方法および修復プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A method and system for ensuring data consistency in erasure correction codes Effective date of registration: 20230906 Granted publication date: 20220712 Pledgee: Zhongguancun Branch of Bank of Beijing Co.,Ltd. Pledgor: BEIJING DADAO YUNXING TECHNOLOGY Co.,Ltd. Registration number: Y2023980055521 |