CN103064635B - 分布式存储方法和分布式存储装置 - Google Patents

分布式存储方法和分布式存储装置 Download PDF

Info

Publication number
CN103064635B
CN103064635B CN201210554726.0A CN201210554726A CN103064635B CN 103064635 B CN103064635 B CN 103064635B CN 201210554726 A CN201210554726 A CN 201210554726A CN 103064635 B CN103064635 B CN 103064635B
Authority
CN
China
Prior art keywords
memory node
write
threshold value
reading
additional memory
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
Application number
CN201210554726.0A
Other languages
English (en)
Other versions
CN103064635A (zh
Inventor
方新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201210554726.0A priority Critical patent/CN103064635B/zh
Publication of CN103064635A publication Critical patent/CN103064635A/zh
Application granted granted Critical
Publication of CN103064635B publication Critical patent/CN103064635B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种分布式存储方法和分布式存储装置。该方法应用于具有多个存储节点的分布式存储系统,包括:设置附加存储节点;当接收到写入指令时进行如下写入操作:将数据和相应属性信息写入所述多个存储节点,并将属性信息写入附加存储节点,其中附加存储节点不存储该数据;当接收到读取指令时,进行如下读取操作:从所述多个存储节点读取数据和相应属性信息,并从附加存储节点读取属性信息;其中,当写入成功的存储节点的数量和写入成功的附加存储节点的数量之和超过写阈值时,视为写入操作成功,否则视为写入操作失败;以及当从存储节点和附加存储节点读取到的相同属性信息的数量超过读阈值时,视为读取操作成功,否则,视为读取操作失败。

Description

分布式存储方法和分布式存储装置
技术领域
本发明涉及一种分布式存储方法和分布式存储装置。
背景技术
随着计算机技术以及网络技术的高速发展,分布式存储系统得到了长足的发展。传统的分布式存储系统将数据和相应的属性信息分布式地存储到多个存储节点中。通常,分布式存储系统具有针对故障存储节点的理论上允许的最大数量,即在该理论上允许的最大数量以下的存储节点发生故障的情况下,该分布式存储系统理论上仍然能够利用未发生故障的节点进行正常存取。
另一方面,在传统的分布式存储系统中,为了确保数据读写的一致性,通常采用了一些判断规则。以下,将以W+R>N的判断规则为例来进行说明。当然,判断规则并不局限于此。
具体地,为了确保在传统的分布式存储系统中的数据读写一致性,例如可采用W+R>N的判断规则,其中:
W表示用于判断数据写成功的阈值(后文简称为写阈值),即在一次写入操作中,当针对至少W个存储节点的写入操作成功时,才认为本次写入操作成功,否则回滚操作;
R表示用于判断数据读成功的阈值(后文简称读阈值),即在一次读取操作中,当从至少R个存储节点获得相同属性(例如,版本)的数据时,才认为本次读取操作成功,否则拒绝操作;
N表示分布式存储系统中的存储节点的总数量。
采用W+R>N的判断规则能够确保从分布式存储系统读取的数据与最新版本的成功写入的数据一致。然而,在W+R>N的判断规则之下,W与R不能同时小于N/2,这使得,在分布式存储系统中发生故障的存储节点的数量处于存储节点总数的一半(N/2)至理论上允许的最大数量的范围内时,尽管如前所述理论上分布式存储系统仍然能够利用未发生故障的节点进行正常存取,但却因不能满足W+R>N的判断规则而无法进行数据读写。
发明内容
有鉴于此,本发明旨在提供一种分布式存储方法及装置,其能够确保即使在发生故障的存储节点的数量处于存储节点总数的一半(N/2)至理论上允许的最大数量的范围内时也能够进行正确可靠的数据读写。
为了实现上述目的,在第一方面,本发明提出了一种分布式存储方法,其应用于具有多个存储节点的分布式存储系统,所述分布式存储方法包括以下步骤:设置步骤,用于设置附加存储节点;写入操作步骤,用于当接收到写入指令时,进行如下写入操作:将数据和相应的属性信息写入所述多个存储节点,并且将所述属性信息写入所述附加存储节点,其中所述附加存储节点不存储所述数据;读取操作步骤,用于当接收到读取指令时,进行如下读取操作:从所述多个存储节点读取所述数据和相应的属性信息,并且从所述附加存储节点读取所述属性信息;其中,当写入成功的所述存储节点的数量和写入成功的所述附加存储节点的数量之和超过写阈值时,视为所述写入操作步骤所进行的写入操作成功,否则视为写入操作失败;以及当从所述存储节点和所述附加存储节点读取到的相同属性信息的数量超过读阈值时,视为所述读取操作步骤所进行的读取操作成功,否则,视为读取操作失败。
结合第一方面,在第一种可能的实施方式中,在所述写入操作失败的情况下,重新执行被视为失败的写入操作;以及在所述读取操作失败的情况下,重新执行与被视为失败的读取操作相对应的写入操作。
结合第一方面或第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述写阈值和所述读阈值之和大于所述存储节点和所述附加存储节点的数量之和。
结合第一方面或第一方面的第一种或第二种可能的实施方式,在第三种可能的实施方式中,在所述设置步骤中,根据期望允许的故障存储节点数量和所述多个存储节点的数量来设置所述附加存储节点的数量。
结合第一方面的第三种可能的实施方式,在第四种可能的实施方式中,在所述设置步骤中,根据如下关系式设置所述附加存储节点的数量:
x>2y-N
其中x表示所述附加存储节点的数量、y表示所述期望允许的故障存储节点数量,N表示所述多个存储节点的数量。
结合第一方面或第一方面的第一种至第四种可能的实施方式,在第五种可能的实施方式中,根据期望允许的故障存储节点数量、所述附加存储节点的数量和所述多个存储节点的数量来设置所述写阈值和所述读阈值。
结合第一方面的第五种可能的实施方式,在第六种可能的实施方式中,根据如下关系式设置所述读阈值和写阈值:
0<W≤N-y+x,
0<R≤N-y+x,
W+R>N+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
结合第一方面或第一方面的第一种至第六种可能的实施方式,在第七种可能的实施方式中,设置所述写阈值与所述读阈值相等。
结合第一方面的第七种可能的实施方式,在第八种可能的实施方式中,根据如下关系式设置所述写阈值和所述读阈值:
W=R=N-y+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
结合第一方面或第一方面的第一种至第八种可能的实施方式,在第九种可能的实施方式中,所述属性信息是所述数据的版本信息和时间戳信息其中之一。
在第二方面,本发明提出了一种分布式存储装置,其应用于具有多个存储节点的分布式存储系统,所述分布式存储装置包括:设置部件,用于设置附加存储节点;写入操作部件,用于当接收到写入指令时,进行如下写入操作:将数据和相应的属性信息写入所述多个存储节点,并且将所述属性信息写入所述附加存储节点,其中所述附加存储节点不存储所述数据;读取操作部件,用于当接收到读取指令时,进行如下读取操作:从所述多个存储节点读取所述数据和相应的属性信息,并且从所述附加存储节点读取所述属性信息;写入操作成功判断部件,用于当写入成功的所述存储节点的数量和写入成功的所述附加存储节点的数量之和超过写阈值时,视为所述写入操作部件所进行的写入操作成功,否则视为写入操作失败;以及读取操作成功判断部件,用于当从所述存储节点和所述附加存储节点读取到的相同属性信息的数量超过读阈值时,视为所述读取操作部件所进行的读取操作成功,否则,视为读取操作失败。
结合第二方面,在第一种可能的实施方式中,该装置还包括读写失败控制部件;在所述写入操作失败的情况下,所述读写失败控制部件指示所述写入操作部件重新执行被视为失败的写入操作;以及在所述读取操作失败的情况下,所述读写失败控制部件指示所述写入操作部件重新执行与被视为失败的读取操作相对应的写入操作。
结合第二方面或第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述写阈值和所述读阈值之和大于所述存储节点和所述附加存储节点的数量之和。
结合第二方面或第二方面的第一种或第二种可能的实施方式,在第三种可能的实施方式中,所述设置部件根据期望允许的故障存储节点数量和所述多个存储节点的数量来设置所述附加存储节点的数量。
结合第二方面的第三种可能的实施方式,在第四种可能的实施方式中,所述设置部件根据如下关系式设置所述附加存储节点的数量:
x>2y-N
其中x表示所述附加存储节点的数量、y表示所述期望允许的故障存储节点数量,N表示所述多个存储节点的数量。
结合第二方面或第二方面的第一种至第四种可能的实施方式,在第五种可能的实施方式中,所述设置部件根据期望允许的故障存储节点数量、所述附加存储节点的数量和所述多个存储节点的数量来设置所述写阈值和所述读阈值。
结合第二方面的第五种可能的实施方式,在第六种可能的实施方式中,所述设置部件根据如下关系式设置所述读阈值和写阈值:
0<W≤N-y+x,
0<R≤N-y+x,
W+R>N+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
结合第二方面或第二方面的第一种至第六种可能的实施方式,在第七种可能的实施方式中,所述设置部件设置所述写阈值与所述读阈值相等。
结合第二方面的第七种可能的实施方式,在第八种可能的实施方式中,所述设置部件根据如下关系式设置所述写阈值和所述读阈值:
W=R=N-y+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
结合第二方面或第二方面的第一种至第八种可能的实施方式,在第九种可能的实施方式中,所述属性信息是所述数据的版本信息和时间戳信息其中之一。
根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的说明书附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1示例性示出根据本发明第一实施例的分布式存储装置。
图2示例性示出用于第一实施例的分布式存储装置的分布式存储方法。
图3示例性示出根据本发明第一实施例的分布式存储装置的变形例。
图4示例性示出根据第二实施例的镜像保护模式下的数据读写过程。
图5示例性示出根据第三实施例的EC保护模式下的数据读写过程。
图6示例性示出了本发明的另一个实施例的一种分布式存储装置的结构框图。
具体实施方式
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有这些具体细节,本发明同样可以实施。在另外一些实例中,对于大家熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
第一实施例
图1示例性示出根据本发明第一实施例的分布式存储装置1。根据第一实施例的分布式存储装置1应用于具有多个存储节点的分布式存储系统。根据第一实施例的分布式存储装置1包括设置单元10、写入操作单元20、读取操作单元30、写入操作成功判断单元40和读取操作成功判断单元50。
具体地,设置单元10被配置为设置附加存储节点,其中该附加存储节点可以仅写入属性信息,而存储节点需要写入数据和相应的属性信息。
写入操作单元20被配置为当接收到写入指令时,进行如下写入操作:将数据和相应的属性信息写入所述多个存储节点内,并且将属性信息写入设置单元10所设置的附加存储节点内,其中所述附加存储节点不存储所述数据。需要说明的是,该写入指令可以来自外部用户,也可以是分布式存储系统自身所发出的。
读取操作单元30被配置为当接收到读取指令时,进行如下读取操作:从所述多个存储节点读取数据和相应的属性信息,并且从设置单元10所设置的附加存储节点读取属性信息。需要说明的是,该读取指令可以来自外部用户,也可以是分布式存储系统自身所发出的。
写入操作成功判断单元40被配置为当写入成功的存储节点的数量和写入成功的附加存储节点的数量之和超过写阈值时,视为写入操作成功,否则视为写入操作失败。
此外,读取操作成功判断单元50被配置为当从存储节点和附加存储节点读取到的相同属性信息的数量超过读阈值时,视为读取操作成功,否则,视为读取操作失败。
以下将说明用于上述分布式存储装置1的分布式存储方法。图2示例性示出用于第一实施例的分布式存储装置1的分布式存储方法。该分布式存储方法同样应用于具有多个存储节点的上述分布式存储系统100。
在步骤S100中,设置附加存储节点。
在步骤S200中,判断接收到写入指令还是读取指令。
在步骤S200中判断为接收到写入指令的情况下,在步骤S300中进行写入操作,具体地,将数据和相应的属性信息写入多个存储节点,并且将属性信息写入附加存储节点,其中所述附加存储节点不存储所述数据。在步骤S400中,进行写入操作成功判断,具体地,当在步骤S300中写入成功的存储节点的数量和写入成功的附加存储节点的数量之和超过写阈值时,视为写入操作成功,否则视为写入操作失败。
此外,在步骤S200中判断为接收到读取指令的情况下,在步骤S500中进行读取操作,具体地,从多个存储节点读取数据和相应的属性信息,并且从附加存储节点读取属性信息。此外,在步骤S600中,进行读取操作成功判断,具体地,当在步骤S500中从存储节点和附加存储节点读取到的相同属性信息的数量超过读阈值时,视为读取操作成功,否则,视为读取操作失败。
在根据第一实施例的分布式存储装置和方法中设置了用于存储属性信息的附加存储节点,并相应地定义了读写入操作成功的判断标准,因此能够确保即使在发生故障的存储节点的数量处于存储节点总数的一半(N/2)至理论上允许的最大数量的范围内时也能够进行正确可靠的数据读写。
图3示例性示出根据本发明第一实施例的分布式存储装置1的变形例。在图3所示的变形例中,在分布式存储装置1中,除了与图1相同的部件以外(以下将不再重复说明与图1相同的部件的说明),还包括读写失败控制部件60。该读写失败控制部件60进行如下操作:在所述写入操作失败的情况下,所述读写失败控制部件指示所述写入操作部件重新执行被视为失败的写入操作;以及在所述读取操作失败的情况下,所述读写失败控制部件指示所述写入操作部件重新执行与被视为失败的读取操作相对应的写入操作。
相应地,在分布式存储方法中,在写入操作失败或读取操作失败的情况下,还可以进行如下操作:在所述写入操作失败的情况下,重新执行被视为失败的写入操作;以及在所述读取操作失败的情况下,重新执行与被视为失败的读取操作相对应的写入操作。
在以上说明中,与被视为失败的读取操作相对应的写入操作是指写入该读取操作所读取的数据和相应属性信息的写入操作,可选地,在执行该相对应的写入操作之前,可从多个存储节点中删除所述读取操作要读取的数据和相应属性信息,从附加存储节点中删除所述读取操作要读取的属性信息,之后再重新将上述数据和相应的属性信息的写入存储节点,将属性信息写入附加存储节点。
在另一种可能的实施方式中,写阈值和读阈值之和可大于存储节点和附加存储节点的数量之和。
在另一种可能的实施方式中,可根据期望允许的故障存储节点数量y和所述多个存储节点的数量N来设置所述附加存储节点的数量x;所谓期望允许的故障存储节点数量y是指期望在系统中有y个节点发生故障时,系统仍能够可靠准确地读写数据,并且该期望允许的故障存储节点数量y不大于理论上允许的最大数量。例如,可根据如下关系式设置附加存储节点的数量:
x>2y-N
其中x表示附加存储节点的数量、y表示期望允许的故障存储节点数量,N表示多个存储节点的数量。
在另一种可能的实施方式中,可根据期望允许的故障存储节点数量y、附加存储节点的数量x和多个存储节点的数量N来设置写阈值和读阈值。例如,可根据如下关系式设置写阈值和读阈值:
0<W≤N-y+x,
0<R≤N-y+x,
W+R>N+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
可选地,也可将写阈值设置为等于读阈值;例如,可根据如下关系式设置写阈值和读阈值:
W=R=N-y+x
其中W表示写阈值、R表示读阈值、N表示多个存储节点的数量、y表示期望允许的故障存储节点数量、x表示附加存储节点的数量。
第二实施例
在以下的第二实施例和第三实施例中,将以具体的系统配置和装置配置为例说明数据读写的过程。
以下将以镜像保护模式为例,说明总共配置有N个存储节点和x个附加存储节点的分布式存储系统中的N-1个存储节点发生故障的情况下的数据读写过程。
镜像保护模式是应用于分布式存储系统的诸多保护模式的一种,在镜像保护模式下,将每次写入的数据及其属性信息复制为N份分别存储在N个存储节点中。在镜像保护模式下,分布式存储系统应当允许在N-1个(理论上允许的最大值)以下的存储节点发生故障的情况下仍能够进行数据读写。然而,在传统的分布式存储系统中,在N/2至N-1个存储节点发生故障的情况下,将由于不能满足用以确保数据读写一致性的W+R>N的判断规则而无法进行数据读写。例如,在数据采用2×的镜像保护模式下;一份数据选择了2个节点存储(即N=2);按照业界W+R>N的方法,只能采用W=1且R=2或者W=2且R=1;如果1个节点故障,数据读写操作会出现无法满足写阈值或者读阈值的情况,也就是数据无法读写。
本发明第二实施例旨在于在N×镜像保护模式下在N/2至N-1个节点发生故障仍可以正确可靠地进行数据读写。换句话说,在镜像保护模式下,如果即使在理论上允许的最大数量(N-1)的节点发生故障的情况下都可以正确可靠的进行数据读写,则意味着在其它情况下(例如,发生故障的节点的数量少于N-1的情况),显然也可以正确可靠地进行数据读写。
图4示例性示出根据第二实施例的镜像保护模式下的数据读写过程。在图4中,分布式存储系统100中具有的存储节点的数量N=3(存储节点1~3),并且分布式存储装置1中的设置单元10设置了2个附加存储节点(即,附加存储节点4和5)。这时,由于分布式存储系统100总共包含有5个节点,因此在满足判断规则W+R>5的前提下,例如,可设置W=3,R=3。
在4的时刻t0处,存储节点1~3均正常存储数据,且数据的版本信息均为版本A,附加存储节点4和5中存储的版本信息也为版本A。
在时刻t1处,存储节点1和2发生故障,此时在写入操作单元20接收到写入指令时,进行如下的写入操作:将版本B的数据写入存储节点3,并且将相应的属性信息“版本B”同时写入附加存储节点4和5。在W=3的情况下,写入操作成功判断单元40判断为写入成功。
在时刻t2处,在存储节点1和2恢复正常的情况下,由于同步的延迟性,这两个节点存储的仍是版本A的数据,此时在读取操作单元30接收到读取指令时,进行如下的读取操作:读取到存储节点1和2中存储有版本A,以及存储节点3以及附加存储节点4和5中存储有版本B。因此,在R=3的情况下,读取操作成功判断单元50判断为对存储节点3以及附加存储节点4和5读取成功,从而获得与版本B相对应的正确数据。
基于以上分析可知,在镜像保护模式下,确保了即使在理论上允许的最大数量的节点(N-1个节点)发生故障时也能够进行正确可靠的数据读写。尽管本实施例以N-1个节点发生故障为例,事实上,利用本实施例的装置在N/2~N-1,或者0~N-1个节点发生故障的情况下均可进行正确可靠的数据读写。
以上是以存储节点1和2发生故障为例;当然,在存储节点2和3发生故障或者甚至附加存储节点4和5发生故障(换句话说,任意两个节点发生故障)时,均可以实现上述效果。
此外,可根据期望允许的故障存储节点数量y和总存储节点数N来设置附加存储节点的数量x。可在满足x>2y-N的条件下设置附加存储节点的数量x。例如,在期望允许N/2以上个故障存储节点(y=N/2)的情况下,可设置x>0;在期望允许N-1个故障节点(y=N-1)的情况下,可设置x>N-2;在期望允许的故障存储节点的数量小于N/2的情况下,可以不设置附加存储节点。
以上以W=R=N-y+x(y=x=N-1)为例进行了说明。当然,在镜像保护模式下,在W与R的值不相等的情况下,也可以实现本发明。以下将对W和R的值不相同的情况进行简要说明;另外,鉴于W与R的值不相同时的数据读写过程与图4类似,因此不再辅以附图进行说明。
具体地,以N=3且x=2的分布式存储系统为例,在满足判断规则W+R>5的前提下,也可设置W=1,R=5。在这种情况下,在时刻t1处,存储节点1和2发生故障,此时在写入操作单元20接收到写入指令时,进行如下的写入操作:将数据和相应的属性信息“版本B”写入存储节点3,并且将相应的属性信息“版本B”同时写入附加存储节点4和5。在W=1的情况下,写入操作成功判断单元40判断为写入成功。
在时刻t2处,在存储节点1和2恢复正常的情况下,由于同步的延迟性,这两个节点存储的仍是版本A的数据,此时在读取操作单元30接收到读取指令时,进行如下的读取操作:读取到存储节点1和2中存储有版本A,以及存储节点3以及附加存储节点4和5中存储有版本B。因此,在R=5的情况下,读取操作成功判断单元50判断为读取失败。参考第一实施例中对于读取操作失败时所进行的操作可知,需要重新执行与被视为失败的读取操作相对应的写入操作,即在重新进行时刻t 1处的写入操作。
以此类推,循环地进行上述写入和操作读取操作,直到满足写入和读取成功的条件为止(即在所有5个节点均未发生故障的情况下进行了写入操作和读取操作为止),才判断为进行了可靠的数据读写。
由此可知,在W<R的情况下,系统可能需要经过多次读写循环以保证数据读写的可靠性。
当然,上述示例也可设置为W>R。可基于类似的方式实现本发明。事实上可以在满足W+R>N+x的判断规则下根据期望允许的故障存储节点数量y、附加存储节点的数量x和总存储节点数N来设置W和R的数值,例如,可在满足0<W≤N-y+x、0<R≤N-y+x且W+R>N+x的条件下选择W和R的值。在选择了满足这种条件下的各种W和R的值的情况下,以与上述选择W=R=N-y+x(y=x=N-1)的方式相类似的方式来进行数据读写;在这种情况下,尽管W和R的值可以选择为不相同,但仍能够实现与上述W=R=N-y+x(y=x=N-1)的情况相同的有益效果。
第三实施例
在本实施例,将以EC保护模式为例来说明数据读写的过程。
在EC保护模式下,分布式存储系统配置n+m=N个存储节点,并且将每次写入操作的数据分解为n份原始数据而存储在n个存储节点中,同时将通过适当的EC算法而得到的m份校验数据存储在剩余的m个存储节点中,其中满足m≤n。这样,分布式存储系统只要得到任意的n份数据,就可以通过常用的EC还原算法计算得到原始的数据。
理论上,在EC保护模式下,分布式存储系统允许在n=m且m个(即N/2个)存储节点发生故障的情况下仍能够进行数据读写。然而,在传统的分布式存储系统中,在N/2个存储节点发生故障的情况下,将由于不能满足W+R>N的数据读写一致性判断规则而无法进行数据读写。例如,在n=m的情况下,一般采用W=n+1,R=n的组合或者W=n,R=n+1的组合;在m个节点故障的条件下,数据会出现无法满足写条件或者读条件的情况,也就是数据无法读写。
以下将以配置有n+m个存储节点和y个附加存储节点的分布式存储系统100在n=m且m个节点发生故障的情况为例说明利用本实施例在EC保护模式下的数据读写过程。换句话说,在EC保护模式下,如果即使在n=m且理论上允许的最大数量的节点(m个节点)发生故障的情况下都可以正确可靠地进行数据读写,则意味着在其它情况下(例如,n>m或者发生故障的节点的数量少于m的情况),显然也可以正确可靠地进行数据读写。
图5示例性示出根据第三实施例的EC保护模式下的数据读写过程。在图5中,分布式存储系统100中具有的存储节点的数量为4(存储节点1~4,且n=m=2),并且分布式存储装置1中的设置单元10设置了1个附加存储节点(即,附加存储节点5)。这时,由于分布式存储系统100总共包含有5个节点,需要满足判断规则W+R>5,例如,可设W=3,R=3。
在图5的时刻t0处,存储节点1~4均正常存储数据,且数据的版本信息均为版本A,附加存储节点5中存储的版本信息也为版本A。
在时刻t1处,存储节点3和4发生故障,此时在写入操作单元20接收到写入指令时,进行如下的写入操作:将版本B的数据写入存储节点1和2,并且将版本B同时写入附加存储节点5。因此,在W=3的情况下,写入操作成功判断单元40判断为写入成功。
在时刻t2处,在存储节点3和4恢复正常的情况下,由于同步的延迟性,这两个节点存储的仍是版本A的数据,此时在读取操作单元30接收到读取指令时,进行如下的读取操作:读取到存储节点3和4中存储有版本A,以及读取到存储节点1和2以及附加存储节点5中存储有版本B。因此,在R=3的情况下,读取操作成功判断单元50判断针对存储节点1和2以及附加存储节点5的读取操作成功。
由此以上分析可知,在EC保护模式下,确保了在n=m且理论上允许的最大数量的节点(m个节点)发生故障时也能够进行正确可靠的数据读写。
以上是以存储节点3和4发生故障为例;当然,在存储节点1和2发生故障或者甚至存储节点1和附加存储节点5发生故障(换句话说,任意两个节点发生故障),均可以实现上述效果
以上是以在EC保护模式下配置4个存储节点和1个附加存储节点为例进行了说明。然而,所配置的存储节点的数量并不局限于4,也可以配置除4以外的其它数量的存储节点。
可根据期望允许的故障存储节点数量y和总存储节点数N来设置附加存储节点的数量x。可在满足x>2y-N的条件下设置附加存储节点的数量x。例如,在期望允许N/2个故障存储节点(y=N/2)时,可设置x>0,在期望允许的故障存储节点的数量小于N/2时,可以不设置附加存储节点。
以上以W=R=N-y+x(y=N/2,x=1)为例进行了说明。当然,在EC保护模式下,在W与R的值不相等的情况下,也可以实现本发明。以下将对W和R的值不相同的情况进行简要说明;另外,鉴于W与R的值不相同时的数据读写过程与图5类似,因此不再辅以附图进行说明。
具体地,在n=m=2且x=1的分布式存储系统中,在满足判断规则W+R>5的前提下,也可设置W=1,R=5。在这种情况下,在时刻t 1处,存储节点3和4发生故障,此时在写入操作单元20接收到写入指令时,进行如下的写入操作:将数据和属性信息“版本B”写入存储节点1和2,并且将“版本B”同时写入附加存储节点5。因此,在W=1的情况下,写入操作成功判断单元40判断为写入成功。
在时刻t2处,在存储节点3和4恢复正常的情况下,由于同步的延迟性,这两个节点存储的仍是版本A的数据,此时在读取操作单元30接收到读取指令时,进行如下的读取操作:读取到存储节点3和4中存储有版本A,以及读取到存储节点1和2以及附加存储节点5中存储有版本B。因此,在R=5的情况下,读取操作成功判断单元50判断读取操作失败。参考第一实施例中对于读取操作失败时所进行的操作可知,需要重新执行与被视为失败的读取操作相对应的写入操作,即重新进行时刻t 1处的写入操作。
以此类推,循环地进行上述写入和读取操作,直到满足读取成功的条件为止(即在所有5个节点均未发生故障的情况下进行了写入操作和读取操作为止),才判断为进行了可靠的数据读写。
由此可知,在W<R的情况下,可能需要经过多次读写循环以实现正确可靠的数据读写。
当然,上述示例也可设置为W>R。基于类似的方式实现本发明。事实上可以在满足W+R>N+x的前提下根据期望允许的故障存储节点数量y、附加存储节点的数量x和总存储节点数N来设置W和R的数值,例如,可在满足0<W≤N-y+x,0<R≤N-y+x且W+R>N+x的条件下选择W和R的值。在选择了满足这种条件下的各种W和R的值的情况下,以与上述选择W=R=N-y+x(y=N/2,x=1)的方式相类似的方式来进行数据读写;在这种情况下,尽管W和R的值可以选择为不相同,但仍能够实现与上述W=R=N-y+x(y=N/2,x=1)的情况相同的有益效果。
第四实施例
在以上第一实施例~第三实施例中,均以各节点所包括的属性信息是版本信息为例进行了说明。当然,该属性信息还可以是时间戳信息等的能够表示数据特有属性的属性信息。用户可以根据期望选择向分布式存储系统中的各节点写入适当的属性信息。
第五实施例
在以上第一实施例~第四实施例中,附加存储节点至少存储了属性信息;然而,所述附加存储节点可以仅存储属性信息,这样可以减少分布式存储系统的存储开销。
尽管上述各实施例以镜像保护模式或EC保护模式为例进行说明,事实上,根据本发明各实施例的方法与系统可应用于任何保护模式下。
图6示例性示出了本发明的另一个实施例的一种分布式存储装置的结构框图。所述分布式存储装置500可以是包含计算能力的主机服务器,或者是个人计算机PC,或者是可携带的便携式计算机或终端等等,本发明具体实施例并不对计算节点的具体实现做限定。所述分布式存储装置包括:
处理器(processor)510、通信接口(Communications Interface)520、存储器(memory array)530和总线540。
处理器510、通信接口520、以及存储器530通过总线540完成相互间的通信。
通信接口520用于与网元通信,比如虚拟机管理中心、共享存储等。
处理器510用于执行程序。
具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。
处理器510可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器530用于存放文件。存储器530可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器,存储器530也可以是包括多个存储节点的存储器阵列。
程序具体可用于执行以下步骤:
设置步骤,用于设置附加存储节点;
写入操作步骤,用于当接收到写入指令时,进行如下写入操作:将数据和相应的属性信息写入所述多个存储节点,并且将所述属性信息写入所述附加存储节点,其中所述附加存储节点不存储所述数据;
读取操作步骤,用于当接收到读取指令时,进行如下读取操作:从所述多个存储节点读取所述数据和相应的属性信息,并且从所述附加存储节点读取所述属性信息;
其中,当写入成功的所述存储节点的数量和写入成功的所述附加存储节点的数量之和超过写阈值时,视为所述写入操作步骤所进行的写入操作成功,否则视为写入操作失败;以及
当从所述存储节点和所述附加存储节点读取到的相同属性信息的数量超过读阈值时,视为所述读取操作步骤所进行的读取操作成功,否则,视为读取操作失败。
在上述程序所执行的处理中,在所述写入操作失败的情况下,重新执行被视为失败的写入操作;以及在所述读取操作失败的情况下,重新执行与被视为失败的读取操作相对应的写入操作。
上述程序所执行的处理中,所述写阈值和所述读阈值之和大于所述存储节点和所述附加存储节点的数量之和。
上述程序所执行的处理中,在所述设置步骤中,根据期望允许的故障存储节点数量和所述多个存储节点的数量来设置所述附加存储节点的数量。
上述程序所执行的处理中,在所述设置步骤中,根据如下关系式设置所述附加存储节点的数量:
x>2y-N
其中x表示所述附加存储节点的数量、y表示所述期望允许的故障存储节点数量,N表示所述多个存储节点的数量。
上述程序所执行的处理中,根据期望允许的故障存储节点数量、所述附加存储节点的数量和所述多个存储节点的数量来设置所述写阈值和所述读阈值。
上述程序所执行的处理中,根据如下关系式设置所述读阈值和写阈值:
0<W≤N-y+x,
0<R≤N-y+x,
W+R>N+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
上述程序所执行的处理中,在所述设置步骤中,设置所述写阈值与所述读阈值相等。
上述程序所执行的处理中,在所述设置步骤中,根据如下关系式设置所述写阈值和所述读阈值:
W=R=N-y+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
上述程序所执行的处理中,所述属性信息是所述数据的版本信息和时间戳信息其中之一。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (18)

1.一种分布式存储方法,其应用于具有多个存储节点的分布式存储系统,所述分布式存储方法包括以下步骤:
设置步骤,用于设置附加存储节点,其中,根据期望允许的故障存储节点数量和所述多个存储节点的数量来设置所述附加存储节点的数量;
写入操作步骤,用于当接收到写入指令时,进行如下写入操作:将数据和相应的属性信息写入所述多个存储节点,并且将所述属性信息写入所述附加存储节点,其中所述附加存储节点不存储所述数据;
读取操作步骤,用于当接收到读取指令时,进行如下读取操作:从所述多个存储节点读取所述数据和相应的属性信息,并且从所述附加存储节点读取所述属性信息;
其中,当写入成功的所述多个存储节点的数量和写入成功的所述附加存储节点的数量之和超过写阈值时,视为所述写入操作步骤所进行的写入操作成功,否则视为写入操作失败;以及
当从所述多个存储节点和所述附加存储节点读取到的相同属性信息的数量超过读阈值时,视为所述读取操作步骤所进行的读取操作成功,否则,视为读取操作失败。
2.根据权利要求1所述的分布式存储方法,其中,该方法还包括:
在所述写入操作失败的情况下,重新执行被视为失败的写入操作;以及
在所述读取操作失败的情况下,重新执行与被视为失败的读取操作相对应的写入操作。
3.根据权利要求1或2所述的分布式存储方法,其中,所述写阈值和所述读阈值之和大于所述多个存储节点和所述附加存储节点的数量之和。
4.根据权利要求1所述的分布式存储方法,其中,在所述设置步骤中,根据如下关系式设置所述附加存储节点的数量:
x>2y-N
其中x表示所述附加存储节点的数量、y表示所述期望允许的故障存储节点数量,N表示所述多个存储节点的数量。
5.根据权利要求1或2所述的分布式存储方法,其中,该方法还包括:根据期望允许的故障存储节点数量、所述附加存储节点的数量和所述多个存储节点的数量来设置所述写阈值和所述读阈值。
6.根据权利要求5所述的分布式存储方法,其中,根据如下关系式设置所述读阈值和写阈值:
0<W≤N-y+x,
0<R≤N-y+x,
W+R>N+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
7.根据权利要求1或2所述的分布式存储方法,其中,设置所述写阈值与所述读阈值相等。
8.根据权利要求7所述的分布式存储方法,其中,根据如下关系式设置所述写阈值和所述读阈值:
W=R=N-y+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
9.根据权利要求1或2所述的分布式存储方法,其中,所述属性信息是所述数据的版本信息和时间戳信息其中之一。
10.一种分布式存储装置,其应用于具有多个存储节点的分布式存储系统,所述分布式存储装置包括:
设置部件,用于设置附加存储节点,其中,根据期望允许的故障存储节点数量和所述多个存储节点的数量来设置所述附加存储节点的数量;
写入操作部件,用于当接收到写入指令时,进行如下写入操作:将数据和相应的属性信息写入所述多个存储节点,并且将所述属性信息写入所述附加存储节点,其中所述附加存储节点不存储所述数据;
读取操作部件,用于当接收到读取指令时,进行如下读取操作:从所述多个存储节点读取所述数据和相应的属性信息,并且从所述附加存储节点读取所述属性信息;
写入操作成功判断部件,用于当写入成功的所述多个存储节点的数量和写入成功的所述附加存储节点的数量之和超过写阈值时,视为所述写入操作部件所进行的写入操作成功,否则视为写入操作失败;以及
读取操作成功判断部件,用于当从所述多个存储节点和所述附加存储节点读取到的相同属性信息的数量超过读阈值时,视为所述读取操作部件所进行的读取操作成功,否则,视为读取操作失败。
11.根据权利要求10所述的分布式存储装置,其中,该装置还包括读写失败控制部件;
在所述写入操作失败的情况下,所述读写失败控制部件指示所述写入操作部件重新执行被视为失败的写入操作;以及
在所述读取操作失败的情况下,所述读写失败控制部件指示所述写入操作部件重新执行与被视为失败的读取操作相对应的写入操作。
12.根据权利要求10或11所述的分布式存储装置,其中,所述写阈值和所述读阈值之和大于所述多个存储节点和所述附加存储节点的数量之和。
13.根据权利要求10所述的分布式存储装置,其中,所述设置部件根据如下关系式设置所述附加存储节点的数量:
x>2y-N
其中x表示所述附加存储节点的数量、y表示所述期望允许的故障存储节点数量,N表示所述多个存储节点的数量。
14.根据权利要求10或11所述的分布式存储装置,其中,所述设置部件根据期望允许的故障存储节点数量、所述附加存储节点的数量和所述多个存储节点的数量来设置所述写阈值和所述读阈值。
15.根据权利要求14所述的分布式存储装置,其中,所述设置部件根据如下关系式设置所述读阈值和写阈值:
0<W≤N-y+x,
0<R≤N-y+x,
W+R>N+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示所述期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
16.根据权利要求10或11所述的分布式存储装置,其中,所述设置部件设置所述写阈值与所述读阈值相等。
17.根据权利要求16所述的分布式存储装置,其中,所述设置部件根据如下关系式设置所述写阈值和所述读阈值:
W=R=N-y+x
其中W表示所述写阈值、R表示所述读阈值、N表示所述多个存储节点的数量、y表示期望允许的故障存储节点数量、x表示所述附加存储节点的数量。
18.根据权利要求10或11所述的分布式存储装置,其中,所述属性信息是所述数据的版本信息和时间戳信息其中之一。
CN201210554726.0A 2012-12-19 2012-12-19 分布式存储方法和分布式存储装置 Active CN103064635B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210554726.0A CN103064635B (zh) 2012-12-19 2012-12-19 分布式存储方法和分布式存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210554726.0A CN103064635B (zh) 2012-12-19 2012-12-19 分布式存储方法和分布式存储装置

Publications (2)

Publication Number Publication Date
CN103064635A CN103064635A (zh) 2013-04-24
CN103064635B true CN103064635B (zh) 2016-08-24

Family

ID=48107279

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210554726.0A Active CN103064635B (zh) 2012-12-19 2012-12-19 分布式存储方法和分布式存储装置

Country Status (1)

Country Link
CN (1) CN103064635B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572649B (zh) 2013-10-11 2019-10-25 南京中兴新软件有限责任公司 分布式存储系统的数据的处理方法、装置及系统
EP3514693A1 (en) * 2013-10-29 2019-07-24 Huawei Technologies Co., Ltd. Transaction processing method and apparatus
CN104220982B (zh) * 2013-10-29 2017-03-29 华为技术有限公司 一种事务处理方法与装置
US9509773B2 (en) * 2014-09-10 2016-11-29 Futurewei Technologies, Inc. Array-based computations on a storage device
CN104954810B (zh) * 2015-07-14 2018-04-24 电子科技大学 用于保证分布式视频流存储系统数据连续性的切换方法
CN105468302B (zh) * 2015-11-23 2018-10-30 华为技术有限公司 一种处理数据的方法、装置及系统
CN112214466B (zh) * 2019-07-12 2024-05-14 海能达通信股份有限公司 分布式集群系统及数据写入方法、电子设备、存储装置
CN110647663B (zh) * 2019-09-09 2021-12-17 中国人民解放军国防科技大学 面向最短路径问题的图结点属性存储器实现方法和装置
CN111090835B (zh) * 2019-12-06 2022-04-19 支付宝(杭州)信息技术有限公司 一种文件衍生图的构建方法及装置
CN114115750B (zh) * 2022-01-24 2022-05-13 苏州浪潮智能科技有限公司 一种应用于全闪存存储的缓存方法和装置
CN116308153B (zh) * 2023-03-01 2024-03-29 北京图安世纪科技股份有限公司 一种基于数字孪生的全息路口管理系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101170416A (zh) * 2006-10-26 2008-04-30 阿里巴巴公司 网络数据存储系统及其数据访问方法
CN101609420A (zh) * 2009-07-17 2009-12-23 杭州华三通信技术有限公司 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器
CN101706802A (zh) * 2009-11-24 2010-05-12 成都市华为赛门铁克科技有限公司 一种数据写入、修改及恢复的方法、装置及服务器
CN102012933A (zh) * 2010-12-02 2011-04-13 清华大学 分布式文件系统及利用其存储数据和提供服务的方法
EP2387200A1 (en) * 2010-04-23 2011-11-16 ILT Productions AB Distributed data storage

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102279777B (zh) * 2011-08-18 2014-09-03 华为数字技术(成都)有限公司 数据冗余处理方法、装置和分布式存储系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101170416A (zh) * 2006-10-26 2008-04-30 阿里巴巴公司 网络数据存储系统及其数据访问方法
CN101609420A (zh) * 2009-07-17 2009-12-23 杭州华三通信技术有限公司 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器
CN101706802A (zh) * 2009-11-24 2010-05-12 成都市华为赛门铁克科技有限公司 一种数据写入、修改及恢复的方法、装置及服务器
EP2387200A1 (en) * 2010-04-23 2011-11-16 ILT Productions AB Distributed data storage
CN102012933A (zh) * 2010-12-02 2011-04-13 清华大学 分布式文件系统及利用其存储数据和提供服务的方法

Also Published As

Publication number Publication date
CN103064635A (zh) 2013-04-24

Similar Documents

Publication Publication Date Title
CN103064635B (zh) 分布式存储方法和分布式存储装置
Bergstra et al. Handbook of process algebra
CN101133397B (zh) 用于直连客户端服务器系统中的在线恢复的操作日志记录
CN107526531B (zh) 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备
Cassez The complexity of codiagnosability for discrete event and timed systems
US10592873B2 (en) Edit transactions for blockchains
CN101067835A (zh) 用于可信平台模块数据一致性的方法和数据处理系统
CN109582496A (zh) 一致性快照组的创建方法、装置及计算机可读存储介质
CN107733982A (zh) 一种数据同步方法、终端设备、云端服务器及系统
Venkatesan et al. Effect of codeword placement on the reliability of erasure coded data storage systems
Levitin et al. Reliability of non-coherent warm standby systems with reworking
CN103744751B (zh) 存储设备配置信息连续优化备份系统及其使用方法
Pelc Deterministic gathering with crash faults
Santana et al. Improving a state‐of‐the‐art heuristic for the minimum latency problem with data mining
Owen et al. Lurch: a Lightweight Alternative to Model Checking.
CN110737504A (zh) 一种深度学习模型训练容错方法、系统、终端及存储介质
WO2022126039A1 (en) Process mining for multi-instance processes
CN106020726B (zh) 写入元数据的方法、设备、以及存储装置
US11606442B2 (en) Subscription to edits of blockchain transaction
CN106708445A (zh) 链路选择方法及装置
CN105677249B (zh) 数据块的划分方法、装置及系统
CN104575605B (zh) 存储器装置及使用非易失性存储器对系统进行开机的方法
CN107256183A (zh) 分布式数据库的数据备份方法及计算机可读介质
CN104461382B (zh) 运行多个文件系统的文件服务器的内部写方法和服务器
JP2013033439A (ja) データベースの管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant