一种数据存储方法、装置及分布式存储系统与流程

文档序号:12270806阅读:201来源:国知局
一种数据存储方法、装置及分布式存储系统与流程

本发明实施例涉及数据存储技术领域,尤其涉及一种数据存储方法、装置及分布式存储系统。



背景技术:

弹性块存储服务是指以块设备方式提供给用户使用的存储服务,类似于用户使用的普通的磁盘。用户可以对一块块存储设备进行分区、创建删除文件系统等操作,另外当块设备需要扩大/缩小时,也可以扩大/缩小该设备的容量,实现弹性的扩容和缩容。

弹性块存储一般都是基于分布式存储系统构建的,分布式存储系统是将数据按照一定规则切分并打散存储在多台独立通用存储服务器上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要,而分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。存储集群的成千上万台服务器可以将数据充分冗余,从而可以显著提高数据的安全性。

在实现本发明实施例的过程中,发明人发现块存储的最大特点是对延迟非常敏感,用户的读写请求都需要在最快的时间内返回,否则虚拟磁盘的性能将严重影响运行于虚拟机上的各项业务。现有技术中,低延时目标主要是通过减少副本响应的方式提供的,在三副本的情况下,要求数据复制一个主副本和两个从副本,但是不要求收到所有的副本都写入成功回应之后才给用户返回成功,而是只要求收到主副本和其中任意一个从副本的写入成功回应之后即给用户返回成功。这样的好处是,仅需要写入两个副本即认为成功,可以避免最慢的一个副本成为性能的瓶颈。但引起的问题也是非常明显的,即可能存在最慢的一个从副本写入失败的情况,如果主副本和较快的从副本都丢失了,那么这份数据将完全丢失,即这种方案没有达到三副本的冗余程度,因为丢失两个副本即造成了数据的永久不可逆丢失。因此,在降低数据写入延时的情况下,如何保证数据的完整性是目前亟待解决的问题。



技术实现要素:

本发明实施例提供的数据存储方法,在降低数据写入延时的情况下,也可以保证数据的完整性,进而可以大大提高块存储的数据存储效率。

为此目的,本发明提供的数据存储方法,所述数据包括多个副本,所述方法包括:

进行数据写入操作;

获取预存的数据版本号,并更新所述数据版本号;

检查所述数据的各个副本的数据版本号是否一致;

若不一致,选择数据最完整的副本替换其他副本。

可选的,所述方法还包括:

在首次进行数据写入操作时,初始化数据版本号。

可选的,所述初始化数据版本号为0。

可选的,所述获取预存的数据版本号,并更新所述数据版本号,具有包括:

读取预存的数据版本号,将所述数据版本号进行加1操作。

可选的,所述多个副本包括一个主副本和多个从副本,所述进行数据写入操作,包括:

将多个副本同时进行写入操作;

在主副本和至少一个从副本写入成功时,展示写入成功信息。

另一方面,本发明还提供了一种数据存储装置,所述数据包括多个副本,所述装置包括:

数据写入单元,用于进行数据写入操作;

版本号更新单元,用于获取预存的数据版本号,并更新所述数据版本号;

版本号匹配单元,用于检查所述数据的各个副本的数据版本号是否一致;

副本拷贝单元,用于在所述各个副本的数据版本号不一致时,选择数据最完整的副本替换其他副本。

可选的,该装置还包括:

初始化单元,用于在首次进行数据写入操作时,初始化数据版本号。

可选的,所述初始化数据版本号为0。

可选的,所述版本号更新单元具有用于:读取预存的数据版本号,将所述数据版本号进行加1操作。

可选的,所述多个副本包括一个主副本和多个从副本,所述数据写入单元具体包括:

副本写入子单元,用于将多个副本同时进行写入操作;

返回成功子单元,用于在主副本和至少一个从副本写入成功时,展示写入成功信息。

另一方面,本发明实施例还提供了一种分布式存储系统,包括上述任意一种数据存储装置。

本发明实施例提供的数据存储方法、装置及分布式存储系统,通过在数据进行写入时,记录数据的版本号,并通过检查版本号可以发现写入失败的副本,进而可以将数据最全的副本拷贝到其他副本上,使各个副本的数据保持一致,从而可以实现数据的冗余,即使在进行写入操作时为了降低时延减少了副本的响应,也可以保证数据的完整性,通过该种方式进行数据写入,将降低数据写入的延时,提高块存储的性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的数据存储方法的流程示意图;

图2为本发明另一实施例提供的数据存储方法的流程示意图;

图3为本发明实施例提供的数据存储装置的框架示意图;

图4为本发明另一实施例提供的数据存储装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本发明实施例为了降低数据写入的延时,也是通过减少副本响应的方式,在三副本的情况下,要求复制一个主副本和两个从副本,但是不要求收到所有副本写入成功回应之后才给用户返回成功,而是只要求收到主副本和其中任意一个从副本的写入成功回应之后即给用户返回成功。从而仅需要写入两个副本即认为成功,可以避免最慢的一个副本成为性能的瓶颈。但是可能存在最慢的一个从副本写入失败的情况,如果主副本和较快的从副本都丢失了,那么这份数据将完全丢失,即这种方案没有达到三副本的冗余程度,因为丢失两个副本即造成了数据的永久不可逆丢失。为了解决这一问题,本发明实施例要求所有数据进行写入时,都必须记录数据的版本号。下面对本发明实施例提供的技术方案展开详细描述。

实施例1

如图1所示,本发明实施例提供了一种数据存储方法,所述数据包括多个副本,所述方法包括:

S1:进行数据写入操作;

具体的,本发明实施例可以以数据存储装置为执行主体,并且可以将数据的多个副本写入基于分布式存储系统构建的弹性块存储设备。其中,多个副本包括一个主副本和多个从副本,多个副本同时进行写入操作,在收到主副本和至少一个从副本写入成功回应后,就向用户返回写入成功信息,从而可以提高数据写入效率,避免写入最慢的副本成为提高数据写入效率的瓶颈。

S2:获取预存的数据版本号,并更新所述数据版本号;

具体的,在进行数据写入操作后,读取前一次数据写入时记录的数据版本号,并更新数据版本号。其中,版本号可以通过记录在各个副本的文件系统扩展属性(file system attribute)中,每次写入完成之后,读取此版本号,并进行更新,举例来说,每次更新都可以是将读取的版本号加上预设值。

S3:检查所述数据的各个副本的数据版本号是否一致;

需要说明的是,每次进行数据写入操作后,各个副本的数据版本号应该是一致的,如果有一个副本的数据版本号与其它副本的数据版本号不一致,则代表该副本中间有一次数据写入失败。具体的,在更新数据版本号之后,后台会启动一个版本检测线程,并按照预设的时间间隔,从各个副本的文件系统扩展属性中读出版本号,并定时核对各个副本的数据版本号是否是一致的,定时查看是否存在版本号遗漏等错误情况。

S4:若不一致,选择数据最完整的副本替换其他副本。

具体的,如果各个副本的数据版本号不一致,则表示有副本存在写入失败的情况,之后比较所有副本的数据,选择拥有最全数据的副本,将该副本内容拷贝到其他副本上去,通过这样的方式,可以实现数据的冗余,从而即使在进行写入操作时为了降低时延减少了副本的响应,也可以保证数据的完整性。

本发明实施例提供的数据存储方法,通过在数据进行写入时,记录数据的版本号,并通过检查版本号可以发现写入失败的副本,进而可以将数据最全的副本拷贝到其他副本上,使各个副本的数据保持一致,从而可以实现数据的冗余,即使在进行写入操作时为了降低时延减少了副本的响应,也可以保证数据的完整性,通过该种方式进行数据写入,将降低数据写入的延时,提高块存储的性能。

实施例2

如图2所示,本发明另一实施例提供的数据存储方法,包括:

S0:在首次进行数据写入操作时,初始化数据版本号。

其中,在第一次进行数据写入时,各个副本的初始化数据版本号为0,从而可以保证各个副本的初始版本号是一致的,便于后续更新数据版本号后,检查数据版本号是否一致。

S1:进行数据写入操作;

具体的,本发明实施例可以以数据存储装置为执行主体,并且可以将数据的多个副本写入基于分布式存储系统构建的弹性块存储设备。其中,多个副本包括一个主副本和多个从副本,多个副本同时进行写入操作,在收到主副本和至少一个从副本写入成功回应后,就向用户返回写入成功信息,从而可以提高数据写入效率,避免写入最慢的副本成为提高数据写入效率的瓶颈。

S2:获取预存的数据版本号,并更新所述数据版本号;

需要说明的是,在后续进行数据写入操作后,读取前一次数据写入时记录的数据版本号,并更新数据版本号。其中,数据版本号可以通过记录在各个副本的文件系统扩展属性(file system attribute)中,每次写入完成之后,读取此版本号,并进行更新,举例来说,每次更新都可以是将读取的版本号加上预设值。具体的,每次写入完成之后,从各个副本的文件系统扩展属性中读取数据版本号将其进行加1操作。需要解释的是,因为每个文件都可能存在修改的情况,随着修改的进行,在正常情况下,每个文件的版本号都可以是从1,2,3这样增长。以三个副本进行了四次修改为例,如果某一个副本遗漏了其中一次修改,那么就会存在版本号为(4,4,3),即第三个副本缺少一次修改的情况。

S3:检查所述数据的各个副本的数据版本号是否一致;

需要说明的是,每次进行数据写入操作后,各个副本的数据版本号应该是一致的,如果有一个副本的数据版本号与其它副本的数据版本号不一致,则代表该副本中间有一次数据写入失败。具体的,在更新数据版本号之后,后台会启动一个版本检测线程,并按照预设的时间间隔,从各个副本的文件系统扩展属性中读出版本号,并定时核对各个副本的数据版本号是否是一致的,定时查看是否存在版本号遗漏等错误情况。举例来说,各个副本的数据版本号为(4,4,3),即可以得到第三个副本与其它副本不一致,第三个副本存在一次写入失败情况。

S4:若不一致,选择数据最完整的副本替换其他副本。

具体的,如果各个副本的数据版本号不一致,则表示有副本存在写入失败的情况,之后比较所有副本的数据,选择拥有最全数据的副本,将该副本内容拷贝到其他副本上去,通过这样的方式,可以实现数据的冗余,从而即使在进行写入操作时为了降低时延减少了副本的响应,也可以保证数据的完整性。

本发明另一实施例提供的数据存储方法,通过在数据进行写入时,记录数据的版本号,并通过检查版本号可以发现写入失败的副本,进而可以将数据最全的副本拷贝到其他副本上,使各个副本的数据保持一致,从而可以实现数据的冗余,即使在进行写入操作时为了降低时延减少了副本的响应,也可以保证数据的完整性,通过该种方式进行数据写入,将降低数据写入的延时,提高块存储的性能。

另一方面,如图3所示,本发明实施例还提供了一种数据存储装置,该装置可以采用上述实施例所述的所述存储方法,所述数据包括多个副本,所述装置包括:依次连接的数据写入单元31、版本号更新单元32、版本号匹配单元33和副本拷贝单元34;

其中,数据写入单元31用于进行数据写入操作;

版本号更新单元32用于获取预存的数据版本号,并更新所述数据版本号;

版本号匹配单元33用于检查所述数据的各个副本的数据版本号是否一致;

副本拷贝单元34用于在所述各个副本的数据版本号不一致时,选择数据最完整的副本替换其他副本。

具体的,数据写入单元31进行数据写入操作;版本号更新单元32获取预存的数据版本号,并更新所述数据版本号;版本号匹配单元33检查所述数据的各个副本的数据版本号是否一致;副本拷贝单元34在所述各个副本的数据版本号不一致时,选择数据最完整的副本替换其他副本。

本发明实施例提供的数据存储装置,通过在数据进行写入时,记录数据的版本号,并通过检查版本号可以发现写入失败的副本,进而可以将数据最全的副本拷贝到其他副本上,使各个副本的数据保持一致,从而可以实现数据的冗余,即使在进行写入操作时为了降低时延减少了副本的响应,也可以保证数据的完整性,通过该种方式进行数据写入,将降低数据写入的延时,提高块存储的性能。

在上述实施例的基础上,可选的,该装置还包括:

初始化单元,用于在首次进行数据写入操作时,初始化数据版本号。

在上述实施例的基础上,可选的,所述初始化数据版本号为0。

在上述实施例的基础上,可选的,所述版本号更新单元32具有用于:读取预存的数据版本号,将所述数据版本号进行加1操作。

在上述实施例的基础上,可选的,所述多个副本包括一个主副本和多个从副本,所述数据写入单元31具体包括:

副本写入子单元,用于将多个副本同时进行写入操作;

返回成功子单元,用于在主副本和至少一个从副本写入成功时,展示写入成功信息。

对于与方法对应的数据存储装置实施例而言,由于其与方法实施例基本相似,达到的技术效果也与方法实施例起到的效果相同,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

再一方面,本发明实施例还提供了一种分布式存储系统,包括上述实施例所述的数据存储装置。

本发明实施例提供的分布式存储系统,通过在数据进行写入时,记录数据的版本号,并通过检查版本号可以发现写入失败的副本,进而可以将数据最全的副本拷贝到其他副本上,使各个副本的数据保持一致,从而可以实现数据的冗余,即使在进行写入操作时为了降低时延减少了副本的响应,也可以保证数据的完整性,通过该种方式进行数据写入,将降低数据写入的延时,提高块存储的性能。

还有一方面,如图4所示,本发明实施例还提供了一种数据存储装置,该装置包括处理器(processor)41、通信接口(Communications Interface)42、存储器(memory)43和总线44,其中,处理器41,通信接口42,存储器43通过总线44完成相互间的通信。通信接口32可以用于数据存储装置与外部设备之间的信息传输。处理器41可以调用存储器43中的逻辑指令,以执行如下方法:进行数据写入操作;获取预存的数据版本号,并更新所述数据版本号;检查所述数据的各个副本的数据版本号是否一致;若不一致,选择数据最完整的副本替换其他副本。

此外,上述的存储器43中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

上述实施例提供的数据存储装置,通过在数据进行写入时,记录数据的版本号,并通过检查版本号可以发现写入失败的副本,进而可以将数据最全的副本拷贝到其他副本上,使各个副本的数据保持一致,从而可以实现数据的冗余,即使在进行写入操作时为了降低时延减少了副本的响应,也可以保证数据的完整性,通过该种方式进行数据写入,将降低数据写入的延时,提高块存储的性能。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1