CN106708651B - 基于纠删码的部分写入方法及装置、存储介质、设备 - Google Patents
基于纠删码的部分写入方法及装置、存储介质、设备 Download PDFInfo
- Publication number
- CN106708651B CN106708651B CN201611022236.0A CN201611022236A CN106708651B CN 106708651 B CN106708651 B CN 106708651B CN 201611022236 A CN201611022236 A CN 201611022236A CN 106708651 B CN106708651 B CN 106708651B
- Authority
- CN
- China
- Prior art keywords
- data
- version information
- updating
- check
- updated
- 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.)
- Active
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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10009—Improvement or modification of read or write signals
- G11B20/10268—Improvement or modification of read or write signals bit detection or demodulation methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于纠删码的部分写入方法及装置,其中所述方法包括:确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理。
Description
技术领域
本发明涉及存储技术,尤其涉及一种基于纠删码的部分写入方法及装置。
背景技术
纠删码(EC,Erasure Coding)起源于通信传输领域,目前逐渐出现在大规模存储***中,特别是分布式存储***,用于实现数据的冗余保护。纠删码冗余保护技术解决了传统冗余保护技术不适于分布式生产存储***的问题。纠删码是一种用于数据修复的编码技术,原始数据通常被切分为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-1为本发明实施例所涉及的纠删码分布式存储***的网络架构示意图;
图1-2为本发明实施例一基于纠删码的部分写入方法的实现流程示意图;
图2为本发明实施例二基于纠删码的部分写入方法的实现流程示意图;
图3为本发明实施例三纠删码分布式存储***的组成结构示意图;
图4为本发明实施例计算设备的组成结构示意图。
具体实施方式
为了更好的理解本发明的各实施例,先介绍一下相关技术中的纠删码的编解码算法,纠删码的编解码算法包括以下步骤:
(1)根据m块原始数据和k块校验数据,生成编码系数矩阵A=[aij]m×k;
这里,在实际的操作过程中,除了根据m块原始数据和k块校验数据,还可以有其他的考量因素,生成编码系数矩阵A=[aij]m×k,其中编码系数矩阵的行数为m行,列数为k列;aij表示第i行第j列的元素,i为大于等于1小于等于m的整数,j为大于等于1小于等于k的整数;
(2)令原m块原始数据为di,其中i=1..m,第i个原始数据块中的第j个字节表示为dij,其中j=1..L;
(3)令原k块校验数据为pi,i=1..k,第i块校验数据中的第j个字节表示为pij,j=1..L;
(4)编码时的公式参见公式(1):
(p1jp2j…pkj)T<==A*(d1j d2j…dmj)T (1);
公式(1)中,j=1..L,其中<==表示赋值;
(5)解码时:将已知原始数据和必要校验数据带入步骤(4)中的等式,然后用求解线性方程组的算法解出未知原始数据。
上述所有计算过程中涉及的加、减、乘、除等运算均定义在伽罗华域GF(28),而不是实数域。需要说明的是,在实施的过程中,上述的纠删码的编解码算法还可以有其他的形式,本领域的技术人员当然可以采用其他的形式才实现,这里不做限定。
在分布式存储***中,为了提高数据可靠性,每个EC组中的(m+k)个数据块会存储到(m+k)个不同的服务器中,每一个服务器被称为一个节点,其中用于存储数据块(例如原始数据块)的服务器可以被称为数据节点,而用于存储校验数据块的服务器可以被称为校验节点。
下面介绍一下更新操作与更新的数据的差值之间的关系,将编码运算过程的公式(1):(p1jp2j…pkj)T<==A*(d1j d2j…dmj)T,(j=1..L)展开可得:
p1j=(a11a12..a1m)·(d1j d2j…dmj)=∑a1i·dij(i=1..m)
p2j=∑a2i·dij(i=1..m)
…
pkj=∑aki·dij(i=1..m)
若更新操作将(d1j d2j…dmj)中的第i个数据更新为dij’,那么:
p1j’=(a11a12..a1m)·(d1j d2j…dij’…dmj)
p1j’=∑a1i·dij–a1i·dij+a1i·dij’
p1j’=p1j–a1i·Δdij
p2j’=p2j–a2i·Δdij
…
pkj’=pkj–aki·Δdij
即Δpxj=axi·Δdij,x=1..k;
所以,校验块的更新可以只依赖被修改数据的变化量Δdij。上述的结论Δpxj=axi·Δdij可以简写为Δp=a·Δd,并记为公式(2)。
根据公式(2),相关技术中的更新操作或写入操作一般包括如下的步骤:
1)待更新的数据节点接收客户端发出的对数据块中数据d0的更新请求,所述更新请求用于将数据块中数据d0更新为d0’;其中,所述更新请求中携带有待更新的数据d0’。
2)所述待更新的数据节点从本地磁盘读取数据d0到内存中;
3)利用等式Δp=a·Δd在所述待更新的数据节点的内存中计算出所有k个校验节点需要的校验增量的更新数据块集合{ΔP1,ΔP2,...,ΔPk};
4)所述待更新的数据节点将所述更新后的数据d0’写入本地磁盘;
5)所述待更新的数据节点将k个校验增量更新数据块通过网络并行发送至k个校验节点上;
6)每个校验节点从本地磁盘读取原始的校验数据p,并利用接收到的临时数据块Δp以及等式p’=p+Δp计算出新的校验数据块p’;并将更新后的校验数据块p’写入本地磁盘上,并向所述待更新的数据节点发送更新完毕的信号;
7)所述待更新数据节点接收完所有冗余节点发送的更新完毕的信号后,向纠删码集群存储***或客户端发送更新完毕的信号。
从上述可以看出,当写入流程遇到错误而终止,***无法确认故障所在,无法正确重试写入操作,也无法正确执行数据修复操作。例如,若某次更新操作成功更新原始数据块,但由于故障原因未能更新全部校验数据块,那么在随后的修复过程中,***将无法确认原始数据块和校验数据块中哪些是新的哪些是旧的,也就无法进行数据修复工作。
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
实施例一
为了解决前述的技术问题,本发明实施例提供一种基于纠删码的部分写入方法,该方法应用于纠删码分布式存储***,如图1-1所示,该纠删码分布式存储***针对于一个EC组来说,至少包括一个客户端11、m个数据节点12和k个校验节点13,m和k均为大于1的自然数。在实施的过程中,客户端安装在电子设备上,数据节点和校验节点都可以利用服务器来实现,在实施的过程中,所述服务器和电子设备可以采用各种具有信息处理能力的计算设备来实现,例如电子设备可以为智能手机、笔记本电脑、台式计算机、个人数字助理、智能电视等,另外服务器还可以采用服务器集群来实现。
图1-2为本发明实施例一基于纠删码的部分写入方法的实现流程示意图,该方法包括:
步骤S101,数据节点确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;
步骤S102,数据节点响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;
这里,数据节点可以自身维护一个关于数据块的版本信息,因此,数据节点获取第二版本信息可以是从自身获取的。
步骤S103,根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理的过程;
其中,该步骤S103包括步骤S1031和步骤S1031,其中:
步骤S1031,数据节点判断所述第一版本信息与第二版本信息是否匹配,得到第一判断结果;
这里,判断第一版本信息与第二版本信息是否匹配可以包括:判断第一版本信息与第二版本信息是否相同,如果相同,则第一版本信息与第二版本信息匹配,如果不相同,则第一版本信息与第二版本信息不匹配。一般来说,第二版本信息是最新的版本信息,如果第二版本信息高于第一版本信息,则说明客户端在哪次忘记更新自身的版本信息了,如果第二版本信息低于第一版本信息,则说明在某一次数据节点没有更新完成而客户端却以为更新完成了,因而客户端更新了自身的版本信息,无论是第二版本信息高于或低于第一版本信息,只要二者不匹配,数据节点都会向存储***或者客户端发出报错信息(更新失败结果)。
步骤S1032,数据节点根据所述第一判断结果对所述待更新数据进行处理。
在本发明的其他实施例中,步骤S1032,所述根据所述第一判断结果对所述待更新数据进行处理,包括:
步骤S1321,如果所述第一判断结果表明所述第一版本信息与所述第二版本信息不匹配,发送第一更新响应,所述第一更新响应中携带有更新失败结果和原因值,所述原因值用于表明是由于第一版本信息错误所导致的更新失败;
这里,所述原因值可以是数值或者代码,仅仅用于表征由于第一版本信息错误所导致的更新失败。
步骤S1322,丢弃所述待更新数据。
步骤S1323,如果所述第一判断结果表明所述第一版本信息与所述第二版本信息匹配,根据待更新数据和所述数据块确定校验增量的更新数据块集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk},其中,ΔPg为第g个校验节点的校验增量,g大于等于1小于等于k,k为与一个所述纠删码相匹配的校验数据块的数量;
步骤S1324,将第g个校验节点的校验增量ΔPg携带于第二更新请求中,将所述第二更新请求发送给第g个校验节点,所述第二更新请求用于触发所述第g个校验节点根据所述校验增量ΔPg对自身存储的校验数据进行更新,并更新所述第g个校验节点自身存储的版本向量。
在本发明的其他实施例中,所述根据所述第一判断结果对所述待更新数据进行处理,包括:如果所述第一判断结果表明所述第一版本信息与所述第二版本信息匹配,利用所述待更新数据对所述数据块进行更新;对所述数据块更新完成后,对所述第二版本信息进行更新。
在本发明的其他实施例中,所述方法还包括:对所述数据块更新完成后,发送第一更新响应,所述第一更新响应中携带有更新成功结果,所述更新成功结果用于触发客户端更新所述第一版本信息。本实施例中,由于客户端是最后更新数据块的版本信息的,只要客户端未能成功的更新版本信息,那么则说明之前的更新操作或写操作并没有完全成功,因此,可以设置计时器,在规定的时间内如果未更新成功,则客户端可以重新发起更新请求。
本发明实施例中,数据节点对每个原始数据块维护一个自增版本信息(版本号),当有写入操作时,数据节点首先会判断接收到的数据的版本信息(第一版本信息)和自身存储的版本信息(第二版本信息)是否匹配,匹配时,数据节点才会对更新请求中的数据进行更新,否则就会向客户端返回更新失败结果,从而避免当写入流程遇到错误而终止,***无法确认故障所在进而无法正确重试写入操作以及无法正确执行数据修复操作的问题。
实施例二
基于前述的实施例,本发明实施例提供一种基于纠删码的部分写入方法,图2为本发明实施例二基于纠删码的部分写入方法的实现流程示意图,如图2所示,该方法包括:
步骤S201,客户端确定待更新数据和与所述待更新数据对应的数据块的标识信息;
这里,所述待更新数据的数据量小于一个纠删码组的数据量;
步骤S202,客户端根据所述数据块的标识信息确定对应的数据节点的标识信息;
步骤S203,客户端根据所述数据块的标识信息确定所述数据块的当前版本信息,将所述数据块的当前版本信息作为第一版本信息;
步骤S204,客户端将所述待更新数据和第一版本信息携带于第一更新请求中,根据数据节点的标识信息将所述第一更新请求发送给对应的数据节点;
这里,从客户端到原始数据块的第一更新请求携带该数据块的版本号,以备数据节点进行查验。
步骤S205,数据节点确定第一更新请求;
这里,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;
步骤S206,数据节点响应所述第一更新请求,获取第二版本信息;
这里,所述第二版本信息用于表明自身存储的所述数据块的版本信息;
步骤S207,数据节点判断所述第一版本信息与第二版本信息是否匹配,得到第一判断结果;
这里,如果所述第一判断结果表明所述第一版本信息与所述第二版本信息不匹配,数据节点发送第一更新响应并丢弃所述待更新数据,所述第一更新响应中携带有更新失败结果和原因值,所述原因值用于表明是由于第一版本信息错误所导致的更新失败。
步骤S208,如果所述第一判断结果表明所述第一版本信息与所述第二版本信息匹配,利用所述待更新数据对所述数据块进行更新;
步骤S209,对所述数据块更新完成后,对所述第二版本信息进行更新。
步骤S210,如果所述第一判断结果表明所述第一版本信息与所述第二版本信息匹配,数据节点根据待更新数据和所述数据块确定校验增量的更新数据块集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk};
这里,ΔPg为第g个校验节点的校验增量,g大于等于1小于等于k,k为与一个所述纠删码相匹配的校验数据块的数量;
步骤S211,数据节点将第g个校验节点的校验增量ΔPg携带于第二更新请求中,数据节点将所述第二更新请求发送给第g个校验节点;
这里,所述第二更新请求用于触发所述第g个校验节点根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述第g个校验节点自身存储的版本向量。
步骤S212,校验节点接收数据节点发送的第二更新请求;
这里,所述第二更新请求中携带有校验增量ΔPg,所述第二更新请求用于根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述自身存储的版本向量;
这里,所述第二更新请求中还可以携带有版本信息,此时校验节点与数据节点类似,校验节点也需要判断第二更新请求中携带的版本信息与自身维护的版本信息是否匹配,如果匹配则进行下面的更新流程(包括利用校验增量对校验数据的更新和对版本信息的更新);如果不匹配,则向数据节点返回第二更新响应,所述第二更新响应中携带有更新失败结果和原因值(此处与数据节点更新失败类似)。例如,所述第二更新请求中还携带有第三版本信息,所述第三版本信息用于表明数据块的当前版本信息。
本发明实施例的方法还包括:步骤S2121,响应所述第二更新请求,获取第四版本信息,所述第四版本信息用于表明自身存储的数据块的版本信息;步骤S2122,判断所述第三版本信息与第四版本信息是否匹配,得到第二判断结果;步骤S2123,根据所述第二判断结果对所述第二更新请求进行处理。所述获取第四版本信息包括:查询自身存储的版本向量,得到第四版本信息,所述版本向量是由m个数据块的当前版本信息所组成的向量,所述m为一个纠删码组中数据块的数目;如果第二判断结果表明匹配,则进入步骤S213,反之,则向数据节点返回第二更新响应,所述第二更新响应中携带有更新失败结果和原因值。
步骤S213,校验节点根据所述校验增量ΔPg和自身存储的校验数据Pg,确定更新后的校验数据Pg’,存储所述更新后的校验数据Pg’;
步骤S214,校验节点响应所述第二更新请求,更新自身存储的版本向量;
这里,所述版本向量是由m个数据块的版本信息所组成的向量,所述m为一个纠删码组中数据块的数目;
这里,所述第二更新请求中还携带有所述数据块的标识信息,所述第二更新请求中还携带有所述数据块的标识信息和所述数据块更新后的版本信息,所述更新自身存储的版本向量,包括:根据所述数据块的标识信息更新自身存储的版本向量中对应数据块的版本信息,或者,根据所述数据块的标识信息和所述数据块更新后的版本信息更新自身存储的版本向量。
步骤S215,校验节点更新所述版本向量和存储所述校验数据Pg’,向数据节点发送第二更新响应;
这里,所述第二更新响应中携带有更新所述校验增量ΔPg成功的结果。
步骤S216,数据节点接收第g个校验节点携带于第二更新响应;
这里,所述第二更新响应中携带有更新所述校验增量ΔPg是否成功的结果;
步骤S217,数据节点判断所有的k个校验节点是否全部更新对应的所述校验增量ΔPg成功;
步骤S218,如果所有的k个校验节点全部更新对应的所述校验增量ΔPg成功,且对所述数据块更新完成后,数据节点向客户端发送第一更新响应。
步骤S219,客户端接收所述数据节点发送的第一更新响应,所述第一更新响应中携带有更新结果;
步骤S220,客户端如果所述更新结果表明更新成功,对所述第一版本信息进行更新。
从以上可以看出,本发明实施例中的技术方案新增了版本信息,新增的版本信息具有以下特点:
1)数据节点对每个原始数据块维护一个自增版本信息(版本号),在实施的过程中,版本号可以采用整数来表示,例如版本号初始为0,每次写入自增1;当然版本号也可以不采用整数来表示,例如上一个版本号为1.1a版,下一个版本号为1.1b;另外,对数据块的版本信息持久化保存;
2)校验节点对自身存储的校验块维护所有m个原始数据块的版本号,即校验节点其实维护的是一个版本向量,所述版本向量是由m个数据块的版本信息所组成的向量,所述m为一个纠删码组中数据块的数目。在实施的过程中,版本号可以采用整数来表示,例如版本号初始为0,每次写入自增1;当然版本号也可以不采用整数来表示,例如上一个版本号为1.1a版,下一个版本号为1.1b;另外,对数据块的版本信息持久化保存。
3)客户端自身可以维护对数据块的版本信息,当然也可以从数据节点查询得知所有m个原始数据块的版本号。
本发明实施例中,数据节点在检查更新请求中的版本号后,按照现有方法计算Δp1,Δp2,…,Δpk,并分别发送到k个校验节点,同时告知校验节点自身的编号i(1≤i≤m)和该数据块的版本号;然后数据节点将新数据写入硬盘,并将自身版本号增加1。然后校验节点在检查更新请求中的版本号后,按照现有方法更新自身的校验数据p,并将自己维护的相关数据块(第i块)的版本号增加1,最后向原始数据块返回校验更新成功信号;接着,数据节点分别更新k个校验块成功后,向客户端返回更新成功信号;最后,客户端将自身维护的该数据块的版本号增加1。
在本发明的其他实施例中,对于某一个EC组中,只有在全部数据块(m个数据块)都更新完后,校验节点才会相应的修改校验块所携带关于某一数据块的版本信息,所以本实施例中在每个校验块上都对应一个由m个数据块版本信息组成的向量,每个校验块对应的版本向量都相同。例如,m为5,那么版本向量Q=[q1,q2,q3,q4,q5],其中q1表示一个EC组中第一个数据块的版本信息,q2表示与q1同一个EC组中第二个数据块的版本信息,q3表示与q1同一个EC组中第三个数据块的版本信息,q4表示与q1同一个EC组中第四个数据块的版本信息,q5表示与q1同一个EC组中第五个数据块的版本信息。假设需要部分写入,即只更新该EC组中的第二个数据块,则客户端向第二个数据块相应的数据节点发送第一更新请求,第一更新请求中携带有第二个数据块的版本信息,然后第二个数据块相应的数据节点执行步骤S205至步骤S210。进一步假设k=3,即假设有3个校验节点,当第二个数据块在相应的数据节点更新完毕后,第二个数据块相应的数据节点会向这3个校验节点都发送第二更新请求,第二更新请求中携带有第二个数据块的版本信息,然后3个校验节点中每一个校验节点执行步骤S212、步骤S2121、步骤S2122;如果这3个校验节点中的每一校验节点都判断第二更新请求中第二个数据块的版本信息与自身存储的第二个数据块的版本信息匹配的话,那么这3个校验节点都更新第二个数据块的校验数据,并且这3个校验节点都向第二个数据块对应的数据节点发送更新完成的第二更新响应;第二个数据块对应的数据节点确定3个校验节点全部更新成功后,还可以向3个校验节点发送更新版本向量的请求,然后,3个校验节点响应更新版本向量的请求,更新第二数据块的版本信息,即更新3个校验节点的向量。如果q1、q2、q3、q4、q5均为整数,那么3个校验节点中每一个校验节点更新后的版本向量Q=[q1,(q2+1),q3,q4,q5]。本实施例中提供的版本向量的更新方式实际上是一种被动的方式,即由第二个数据块相应的数据节点通知全部的校验节点更新版本向量(即更新第二个数据块的版本信息);而前述图2所示的实施例提供的方式,是一种校验节点主动的方式(参见步骤S214),步骤S214无需数据节点的通知即可自行更新版本向量。
需要说明的是,对不同数据块的更新操作可以并行执行,其中更新操作可以认为是写操作;对同一数据块的更新操作不能并行执行,但可以流水线方式执行,即后续更新操作不必等到前面的更新操作完成即可向服务器发出。当需要做数据恢复时,***需要暂停对该EC组的更新操作,然后根据各原始数据块的版本号和校验块的版本号向量,决定修复动作,版本号最大的块数据最新。
实施例三
基于前述的实施例,本发明实施例提供一种纠删码分布式存储***,该***包括客户端、数据节点和校验节点,其中客户端包括第一基于纠删码分的部分写入装置(简称第一装置),数据节点包括第二基于纠删码的部分写入装置(简称第二装置),而校验节点包括第三基于纠删码的部分写入装置(简称第三装置),其中所述第一装置所包括的各单元都可以通过电子设备中的处理器来实现,第二装置所包括的各单元以及各单元所包括的各模块都可以通过数据节点中的处理器来实现,第三装置所包括的各单元都可以通过校验节点中的处理器来实现。
在实现的过程中,处理器所实现的功能当然也可通过具体的逻辑电路实现;在具体实施例的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图3为本发明实施例三纠删码分布式存储***的组成结构示意图,如图3所示,该***30包括该***包括客户端、数据节点和校验节点,其中客户端包括第一装置41,数据节点包括第二装置51,而校验节点包括第三装置61,其中:
第一装置41包括第二确定单元42、第三确定单元43、第四确定单元44、携带单元45、第二接收单元46和第一更新单元47,第二装置51包括第一确定单元52、第一获取单元53、第一判断单元54、处理单元55、第一接收单元56、第二判断单元57和第一发送单元58,其中,所述处理单元55包括确定模块551、携带模块552、第二发送模553、第一更新模块554和第二更新模块555,其中:第三装置61包括第三接收单元62、第五确定单元63、第二更新单元64和第三发送单元65,其中:
所述第二确定单元42,用于确定待更新数据和与所述待更新数据对应的数据块的标识信息,所述待更新数据的数据量小于一个纠删码组的数据量;
所述第三确定单元43,用于根据所述数据块的标识信息确定对应的数据节点的标识信息;
所述第四确定单元44,用于根据所述数据块的标识信息确定所述数据块的当前版本信息,将所述数据块的当前版本信息作为第一版本信息;
所述携带单元45,用于将所述待更新数据和第一版本信息携带于第一更新请求中,根据数据节点的标识信息将所述第一更新请求发送给对应的数据节点;
所述第一确定单元52,用于确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;
所述第一获取单元53,用于响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;
所述第一判断单元54,用于判断所述第一版本信息与第二版本信息是否匹配,得到第一判断结果;
所述确定模块551,用于如果所述第一判断结果表明所述第一版本信息与所述第二版本信息匹配,根据待更新数据和所述数据块确定校验增量的更新数据块集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk},其中,ΔPg为第g个校验节点的校验增量,g大于等于1小于等于k,k为与一个所述纠删码相匹配的校验数据块的数量;
所述携带模块552,用于将第g个校验节点的校验增量ΔPg携带于第二更新请求中;
所述第二发送模块553,用于将所述第二更新请求发送给第g个校验节点,所述第二更新请求用于触发所述第g个校验节点根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述第g个校验节点自身存储的版本向量。
所述第一更新模块554,用于如果所述第一判断结果表明所述第一版本信息与所述第二版本信息匹配,利用所述待更新数据对所述数据块进行更新;
所述第二更新模块555,用于对所述数据块更新完成后,对所述第二版本信息进行更新。
所述第三接收单元62,用于接收数据节点发送的第二更新请求,所述第二更新请求中携带有校验增量ΔPg,所述第二更新请求用于根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述自身存储的版本向量;
所述第五确定单元63,用于根据所述校验增量ΔPg和自身存储的校验数据Pg,确定更新后的校验数据Pg’,存储所述更新后的校验数据Pg’;
所述第二更新单元64,用于响应所述第二更新请求,更新自身存储的版本向量,所述版本向量是由m个数据块的版本信息所组成的向量,所述m为一个纠删码组中数据块的数目;
这里,所述第二更新请求中还携带有所述数据块的标识信息,所述第二更新请求中还携带有所述数据块的标识信息和所述数据块更新后的版本信息,所述第二更新单元,用于根据所述数据块的标识信息更新自身存储的版本向量中对应数据块的版本信息,或者,根据所述数据块的标识信息和所述数据块更新后的版本信息更新自身存储的版本向量。
所述第三发送单元65,用于更新所述版本向量完成后和存储所述校验数据Pg’后,向数据节点发送第二更新响应,所述第二更新响应中携带有更新所述校验增量ΔPg成功的结果。
所述第一接收单元56,用于接收第g个校验节点携带于第二更新响应,所述第二更新响应中携带有更新所述校验增量ΔPg是否成功的结果;
所述第二判断单元57,用于判断所有的k个校验节点是否全部更新对应的所述校验增量ΔPg成功;如果所有的k个校验节点全部更新对应的所述校验增量ΔPg成功,且对所述数据块更新完成后,触发所述第一发送单元发送第一更新响应。
第一发送单元58,用于向第一装置发送第一更新响应,所述第一更新响应中携带有更新成功结果,所述更新成功结果用于触发客户端更新所述第一版本信息
所述第二接收单元46,用于接收所述数据节点发送的第一更新响应,所述第一更新响应中携带有更新结果;
所述第一更新单元47,用于如果所述更新结果表明更新成功,对所述第一版本信息进行更新。
在本发明的其他实施例中,所述处理单元包括第一发送模块和丢弃模块,其中
所述第一发送模块,用于如果所述第一判断结果表明所述第一版本信息与所述第二版本信息不匹配,发送第一更新响应,所述第一更新响应中携带有更新失败结果和原因值,所述原因值用于表明是由于第一版本信息错误所导致的更新失败;
所述丢弃模块,用于丢弃所述待更新数据。
这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解,为节约篇幅,因此不再赘述。
需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述的基于纠删码的部分写入方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
相应地,本发明实施例再提供一种一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时用于执行本发明实施例中基于纠删码的部分写入方法。
相应地,本发明实施例再提供一种计算设备,包括:存储器、处理器和用于存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时用于实现本发明实施例中的数据节点侧、校验节点侧或终端侧的基于纠删码的部分写入方法。
在实现的过程中,数据节点、校验节点或终端都可以通过计算设备来实现,图4为本发明实施例计算设备的组成结构示意图,如图4所示,该计算设备400可以包括:至少一个处理器401、至少一个通信总线402、用户接口403、至少一个外部通信接口404和存储器405。其中,通信总线502用于实现这些组件之间的连接通信。其中,用户接口403可以包括显示屏和键盘。外部通信接口404可选的可以包括标准的有线接口和无线接口。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种基于纠删码的部分写入方法,其特征在于,所述方法包括:
数据节点确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;
所述数据节点响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;
所述数据节点根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理;
所述数据节点对所述数据块更新完成后,发送第一更新响应,所述第一更新响应中携带有更新成功结果,所述更新成功结果用于触发客户端更新所述第一版本信息;
所述数据节点根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理,包括:
如果所述第一版本信息与所述第二版本信息匹配,所述数据节点根据待更新数据和所述数据块确定校验增量的更新数据块集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk},其中,ΔPg为第g个校验节点的校验增量,g大于等于1小于等于k,k为与一个所述纠删码相匹配的校验数据块的数量;
所述数据节点将第g个校验节点的校验增量ΔPg携带于第二更新请求中,将所述第二更新请求发送给第g个校验节点,所述第二更新请求用于触发所述第g个校验节点根据所述校验增量ΔPg对自身存储的校验数据进行更新,并更新所述第g个校验节点自身存储的版本向量。
2.根据权利要求1所述的方法,其特征在于,所述数据节点根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理,包括:
如果所述第一版本信息与所述第二版本信息不匹配,所述数据节点发送第一更新响应并丢弃所述待更新数据,所述第一更新响应中携带有更新失败结果和原因值,所述原因值用于表明是由于第一版本信息错误所导致的更新失败。
3.根据权利要求1所述的方法,其特征在于,
所述数据节点根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理,包括:
如果所述第一版本信息与所述第二版本信息匹配,所述数据节点利用所述待更新数据对所述数据块进行更新;
所述数据节点对所述数据块更新完成后,对所述第二版本信息进行更新。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述数据节点接收第g个校验节点发送的第二更新响应,所述第二更新响应中携带有更新所述校验增量ΔPg是否成功的结果;
如果所有的k个校验节点全部更新对应的所述校验增量ΔPg成功,且对所述数据块更新完成后,所述数据节点发送第一更新响应。
5.一种基于纠删码的部分写入方法,其特征在于,所述方法包括:
客户端确定待更新数据和与所述待更新数据对应的数据块的标识信息,所述待更新数据的数据量小于一个纠删码组的数据量;
所述客户端根据所述数据块的标识信息确定对应的数据节点的标识信息;
所述客户端根据所述数据块的标识信息确定所述数据块的当前版本信息,将所述数据块的当前版本信息作为第一版本信息;
所述客户端将所述待更新数据和第一版本信息携带于第一更新请求中,根据数据节点的标识信息将所述第一更新请求发送给对应的数据节点;
所述客户端接收所述数据节点发送的第一更新响应,所述第一更新响应中携带有更新结果;
如果所述更新结果表明更新成功,所述客户端对所述第一版本信息进行更新;
校验节点接收数据节点发送的第二更新请求,所述第二更新请求中携带有校验增量ΔPg,所述第二更新请求用于根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述自身存储的版本向量,所述版本向量是由m个数据块的版本信息所组成的向量,所述m为一个纠删码组中数据块的数目;
所述校验节点根据所述校验增量ΔPg和自身存储的校验数据Pg,确定更新后的校验数据Pg’,存储所述更新后的校验数据Pg’;
所述校验节点响应所述第二更新请求,更新自身存储的版本向量;
所述校验节点更新所述版本向量和存储所述校验数据Pg’,向数据节点发送第二更新响应,所述第二更新响应中携带有更新所述校验增量ΔPg成功的结果。
6.根据权利要求5所述的方法,其特征在于,所述第二更新请求中还携带有所述数据块的标识信息,所述第二更新请求中还携带有所述数据块的标识信息和所述数据块更新后的版本信息,所述更新自身存储的版本向量,包括:
所述校验节点根据所述数据块的标识信息更新自身存储的版本向量中对应数据块的版本信息,或者,
所述校验节点根据所述数据块的标识信息和所述数据块更新后的版本信息更新自身存储的版本向量。
7.根据权利要求5或6所述的方法,其特征在于,所述第二更新请求中还携带有第三版本信息,所述方法还包括:
所述校验节点响应所述第二更新请求,获取第四版本信息,所述第四版本信息用于表明自身存储的校验数据的版本信息;
所述校验节点根据所述第三版本信息与第四版本信息是否匹配的结果对所述第二更新请求进行处理。
8.一种基于纠删码的部分写入装置,其特征在于,所述装置包括第一确定单元、第一获取单元和处理单元,其中:
所述第一确定单元,用于确定第一更新请求,所述第一更新请求中携带有待更新数据和第一版本信息,其中所述第一版本信息用于表明客户端存储的被所述待更新数据进行更新的数据块的版本信息,所述待更新数据的数据量小于一个纠删码组的数据量;
所述第一获取单元,用于响应所述第一更新请求,获取第二版本信息,所述第二版本信息用于表明自身存储的所述数据块的版本信息;
所述处理单元,用于根据所述第一版本信息与第二版本信息之间的匹配结果,对所述待更新数据进行处理;以及对所述数据块更新完成后,发送第一更新响应,所述第一更新响应中携带有更新成功结果,所述更新成功结果用于触发客户端更新所述第一版本信息;
第一判断单元,用于判断所述第一版本信息与第二版本信息是否匹配,得到第一判断结果;
确定模块,用于如果所述第一判断结果表明所述第一版本信息与所述第二版本信息匹配,根据待更新数据和所述数据块确定校验增量的更新数据块集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk},其中,ΔPg为第g个校验节点的校验增量,g大于等于1小于等于k,k为与一个所述纠删码相匹配的校验数据块的数量;
携带模块,用于将第g个校验节点的校验增量ΔPg携带于第二更新请求中;
第二发送模块,用于将所述第二更新请求发送给第g个校验节点,所述第二更新请求用于触发所述第g个校验节点根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述第g个校验节点自身存储的版本向量。
9.一种基于纠删码的部分写入装置,其特征在于,所述装置包括第二确定单元、第三确定单元、第四确定单元、携带单元、第二接收单元和第一更新单元,其中:
所述第二确定单元,用于确定待更新数据和与所述待更新数据对应的数据块的标识信息,所述待更新数据的数据量小于一个纠删码组的数据量;
所述第三确定单元,用于根据所述数据块的标识信息确定对应的数据节点的标识信息;
所述第四确定单元,用于根据所述数据块的标识信息确定所述数据块的当前版本信息,将所述数据块的当前版本信息作为第一版本信息;
所述携带单元,用于将所述待更新数据和第一版本信息携带于第一更新请求中,根据数据节点的标识信息将所述第一更新请求发送给对应的数据节点;
所述第二接收单元,用于接收所述数据节点发送的第一更新响应,所述第一更新响应中携带有更新结果;
所述第一更新单元,用于如果所述更新结果表明更新成功,对所述第一版本信息进行更新;
所述装置包括第三接收单元、第五确定单元、第二更新单元和第三发送单元,其中:
所述第三接收单元,用于接收数据节点发送的第二更新请求,所述第二更新请求中携带有校验增量ΔPg,所述第二更新请求用于根据所述校验增量ΔPg对自身存储的校验数据进行更新并更新所述自身存储的版本向量;
所述第五确定单元,用于根据所述校验增量ΔPg和自身存储的校验数据Pg,确定更新后的校验数据Pg’,存储所述更新后的校验数据Pg’;
所述第二更新单元,用于响应所述第二更新请求,更新自身存储的版本向量,所述版本向量是由m个数据块的版本信息所组成的向量,所述m为一个纠删码组中数据块的数目;
所述第三发送单元,用于更新所述版本向量完成后和存储所述校验数据Pg’后,向数据节点发送第二更新响应,所述第二更新响应中携带有更新所述校验增量ΔPg成功的结果。
10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,其特征在于,所述计算机可执行指令被处理器执行时用于执行权利要求1至4任一项、或5至7任一项所述的基于纠删码的部分写入方法。
11.一种计算设备,包括:存储器、处理器和用于存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时用于实现权利要求1至4任一项、或5至7任一项基于纠删码的部分写入方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611022236.0A CN106708651B (zh) | 2016-11-16 | 2016-11-16 | 基于纠删码的部分写入方法及装置、存储介质、设备 |
US16/461,520 US11119849B2 (en) | 2016-11-16 | 2017-11-02 | Erasure code-based partial write-in |
PCT/CN2017/109154 WO2018090837A1 (zh) | 2016-11-16 | 2017-11-02 | 基于纠删码的部分写入方法及装置、存储介质、设备 |
CA3071925A CA3071925C (en) | 2016-11-16 | 2017-11-02 | Erasure code-based partial write-in method and apparatus, storage medium and equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611022236.0A CN106708651B (zh) | 2016-11-16 | 2016-11-16 | 基于纠删码的部分写入方法及装置、存储介质、设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708651A CN106708651A (zh) | 2017-05-24 |
CN106708651B true CN106708651B (zh) | 2020-09-11 |
Family
ID=58941056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611022236.0A Active CN106708651B (zh) | 2016-11-16 | 2016-11-16 | 基于纠删码的部分写入方法及装置、存储介质、设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11119849B2 (zh) |
CN (1) | CN106708651B (zh) |
CA (1) | CA3071925C (zh) |
WO (1) | WO2018090837A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708651B (zh) | 2016-11-16 | 2020-09-11 | 北京三快在线科技有限公司 | 基于纠删码的部分写入方法及装置、存储介质、设备 |
CN110874181B (zh) * | 2018-08-31 | 2021-12-17 | 杭州海康威视***技术有限公司 | 一种数据更新方法及更新装置 |
CN111176880B (zh) * | 2018-11-09 | 2021-08-13 | 杭州海康威视***技术有限公司 | 磁盘分配方法、装置和可读存储介质 |
CN109558086B (zh) * | 2018-12-03 | 2019-10-18 | 浪潮电子信息产业股份有限公司 | 一种数据读取方法、***及相关组件 |
CN110190926B (zh) * | 2019-04-26 | 2020-09-18 | 华中科技大学 | 基于网络计算的纠删码更新方法及*** |
CN112825052A (zh) * | 2019-11-20 | 2021-05-21 | 华为技术有限公司 | 确定条带一致性的方法及装置 |
CN111124740A (zh) * | 2019-12-11 | 2020-05-08 | 新华三大数据技术有限公司 | 一种数据读取方法、装置、存储设备及机器可读存储介质 |
CN111444042B (zh) * | 2020-03-24 | 2023-10-27 | 哈尔滨工程大学 | 一种基于纠删码的区块链数据存储方法 |
CN112162699B (zh) * | 2020-09-18 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种数据读写方法、装置、设备及计算机可读存储介质 |
CN112558875B (zh) * | 2020-12-14 | 2024-07-23 | 北京百度网讯科技有限公司 | 数据校验方法、装置、电子设备及存储介质 |
CN112737849B (zh) * | 2020-12-29 | 2023-02-03 | 青岛海尔科技有限公司 | 一种设备信息处理方法及装置 |
CN113157715B (zh) * | 2021-05-12 | 2022-06-07 | 厦门大学 | 纠删码数据中心机架协同更新方法 |
CN114594914B (zh) * | 2022-03-17 | 2024-04-02 | 阿里巴巴(中国)有限公司 | 用于分布式存储***的控制方法及*** |
CN114595092B (zh) * | 2022-04-28 | 2022-09-20 | 阿里云计算有限公司 | 分布式存储***、数据重构方法、设备及存储介质 |
CN114968668A (zh) * | 2022-06-17 | 2022-08-30 | 重庆紫光华山智安科技有限公司 | 数据处理方法、装置、数据接入端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681793A (zh) * | 2012-04-16 | 2012-09-19 | 华中科技大学 | 一种基于纠删码集群存储***的局部式数据更新方法 |
CN103558998A (zh) * | 2013-11-07 | 2014-02-05 | 华为技术有限公司 | 一种数据操作的方法和设备 |
CN103561057A (zh) * | 2013-10-15 | 2014-02-05 | 深圳清华大学研究院 | 基于分布式哈希表和纠删码的数据存储方法 |
CN104407808A (zh) * | 2014-10-31 | 2015-03-11 | 华为技术有限公司 | 写入数据的方法和装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7401192B2 (en) * | 2004-10-04 | 2008-07-15 | International Business Machines Corporation | Method of replicating a file using a base, delta, and reference file |
US8769035B2 (en) * | 2009-10-30 | 2014-07-01 | Cleversafe, Inc. | Distributed storage network for storing a data object based on storage requirements |
US8103904B2 (en) | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US20130198585A1 (en) | 2012-02-01 | 2013-08-01 | Xyratex Technology Limited | Method of, and apparatus for, improved data integrity |
WO2015167603A1 (en) * | 2014-04-29 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Maintaining files in a retained file system |
CN104158897B (zh) | 2014-08-25 | 2017-06-23 | 曙光信息产业股份有限公司 | 一种分布式文件***中文件布局的更新方法 |
WO2016100767A2 (en) * | 2014-12-19 | 2016-06-23 | Aalborg Universitet | Method for file updating and version control for linear erasure coded and network coded storage |
CN105095013B (zh) * | 2015-06-04 | 2017-11-21 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及*** |
CN109445687B (zh) * | 2015-09-30 | 2022-04-26 | 华为技术有限公司 | 一种数据存储方法以及协议服务器 |
GB201615748D0 (en) * | 2016-09-15 | 2016-11-02 | Gb Gas Holdings Ltd | System for importing data into a data repository |
CN106708651B (zh) * | 2016-11-16 | 2020-09-11 | 北京三快在线科技有限公司 | 基于纠删码的部分写入方法及装置、存储介质、设备 |
-
2016
- 2016-11-16 CN CN201611022236.0A patent/CN106708651B/zh active Active
-
2017
- 2017-11-02 CA CA3071925A patent/CA3071925C/en active Active
- 2017-11-02 US US16/461,520 patent/US11119849B2/en active Active
- 2017-11-02 WO PCT/CN2017/109154 patent/WO2018090837A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681793A (zh) * | 2012-04-16 | 2012-09-19 | 华中科技大学 | 一种基于纠删码集群存储***的局部式数据更新方法 |
CN103561057A (zh) * | 2013-10-15 | 2014-02-05 | 深圳清华大学研究院 | 基于分布式哈希表和纠删码的数据存储方法 |
CN103558998A (zh) * | 2013-11-07 | 2014-02-05 | 华为技术有限公司 | 一种数据操作的方法和设备 |
CN104407808A (zh) * | 2014-10-31 | 2015-03-11 | 华为技术有限公司 | 写入数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CA3071925C (en) | 2023-01-03 |
WO2018090837A1 (zh) | 2018-05-24 |
CN106708651A (zh) | 2017-05-24 |
US11119849B2 (en) | 2021-09-14 |
CA3071925A1 (en) | 2018-05-24 |
US20190347160A1 (en) | 2019-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106708651B (zh) | 基于纠删码的部分写入方法及装置、存储介质、设备 | |
CN109491968B (zh) | 一种文件处理方法、装置、设备及计算机可读存储介质 | |
US20210124574A1 (en) | Techniques for updating a file using a multi-version patch file | |
US20190258545A1 (en) | Multi-stage slice recovery in a dispersed storage network | |
US10387063B2 (en) | Securing encoding data slices using an integrity check value list | |
US10042704B2 (en) | Validating stored encoded data slice integrity in a dispersed storage network | |
RU2680350C2 (ru) | Способ и система распределенного хранения восстанавливаемых данных с обеспечением целостности и конфиденциальности информации | |
CN110413439B (zh) | 用于检测数据的不完整写入的方法、设备和计算机可读介质 | |
CN104598162A (zh) | 用于跨存储设备写入数据的方法和*** | |
EP3852275A1 (en) | Method, device and apparatus for storing data, computer readable storage medium | |
CN111124738B (zh) | 用于独立冗余磁盘阵列的数据管理方法、设备和计算机程序产品 | |
WO2014079282A1 (zh) | 存储和验证兑换码的方法和装置 | |
TW202001920A (zh) | 在資料儲存系統中用於改善資料回復之方法及裝置 | |
US20230306041A1 (en) | Asynchronous Data Replication in a Storage Network | |
JP2020046871A (ja) | メモリシステム | |
US11269540B2 (en) | Method, apparatus, and computer program product for managing application system | |
CN109144768B (zh) | 用于数据编码的***及其计算机实现方法 | |
RU2707940C1 (ru) | Способ многоуровневого контроля и обеспечения целостности данных | |
US10587691B2 (en) | Impatient writes | |
CN108572882B (zh) | 一种数据存储的方法及存储设备 | |
CN110896309A (zh) | Turbo乘积码的译码方法、装置、译码器及计算机存储介质 | |
CN115129509A (zh) | 一种数据传输方法、装置、介质 | |
CN114594900A (zh) | 存储管理的方法、设备和计算机程序产品 | |
CN113448919A (zh) | 用于建立和验证索引文件的方法、设备和计算机程序产品 | |
KR101865101B1 (ko) | 분산 저장 시스템에서 천공 심플렉스 부호 사용 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1237923 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |