分布式存储系统的数据存储及数据管理方法、设备与流程

文档序号:11263691阅读:138来源:国知局
分布式存储系统的数据存储及数据管理方法、设备与流程

本发明涉及数据存储,更具体地,涉及一种分布式存储系统中的数据存储及数据管理方法、客户端及主控服务器。



背景技术:

云计算技术现在正逐渐普及,分布式存储是云计算要解决的最基本的问题之一。分布式存储系统将数据存储在物理上分散的多个存储节点上,对这些节点的资源进行统一管理与分配,并向用户提供文件访问接口,解决了本地存储系统在文件大小、文件数量、打开文件数等的限制问题。

现在典型的分布式存储系统都采用了三端模式来部署,如图1所示,通常包括主控服务器、数据服务器及客户端。主控服务器也称为元数据服务器、名字服务器、命名空间管理模块及管理服务器等,实际部署时可以采用冗余的工作方式。数据服务器也称为数据存储服务器、存储服务器、存储节点、块服务器、数据管理模块等。客户端也称为客户机,可以是各种应用服务器,也可以是终端用户。常用的分布式存储系统包括google文件系统(gfs:googlefilesystem)、淘宝文件系统(tfs:taobaofilesystem)、moosefs文件系统等。

以gfs为例,客户端(client)用于为分布式存储系统的用户提供各种接口;数据服务器(chunkserver)用于具体管理用户数据;主控服务器(master)用于管理元数据(metadata)。

gfs中,用户文件的所有元数据存储在master中,包括文件的名字空间和块(chunk)名字空间、从文件到块的映射以及块对应的数据服务器等等。为了提高访问元数据的吞吐量,所有的元数据都缓存在主控服务器的内存中。主控服务器占用内存的大小与文件数量成正比,主控服务器所在机器的物理内存大小决定了集群所能存储的文件数量。

文件被分成固定大小的块。每个文件在主控服务器只有一个可写块。数据服务器将块当作linux文件存储在本地磁盘。出于可靠性考虑,每一个块被复制到多个数据服务器上,用于存储某一可写块的副本的数据服务器可称为该可写块对应的数据服务器。默认情况下,在数据服务器上保存3个副本,每个副本存储在一个数据服务器上。客户端不会从主控服务器读、写文件数据。客户端只是询问主控服务器它应该和哪个数据服务器联系。客户端在一段时间内将这些信息缓存,在后续的操作中直接和数据服务器交互。

下面以gfs为例,对现有分布式存储系统典型的写流程进行描述。客户端接收到用户对某一文件(以下称为第一文件)写数据的请求后,执行以下处理:

步骤一,客户端向主控服务器请求第一文件的可写块信息;

步骤二,主控服务器将第一文件的一个可写块的信息及其对应的多个数据服务器的信息返回给客户端;

可写块的信息可以是该可写块的标识信息如块句柄(chunk-handle)等,数据服务器的信息可以是数据服务器的地址,也可是其他可用于获取地址的信息如名称、标识等。

客户端对第一文件进行的一次写操作过程如下:

步骤三,客户端向所述多个数据服务器发起对所述第一文件的写操作,并等待所述多个数据服务器返回写数据的结果;

步骤四,如果所述多个数据服务器都向客户端返回写数据成功,客户端即判定对第一文件的此次写操作成功,向用户返回写数据成功。

本发明的发明人经研究发现,现有方案存在写延时毛刺率高的问题。因为分布式存储系统在多个数据服务器中保存多个副本,一般是3个副本或者更多,所有数据服务器都写数据成功后,一次分布式写数据才成功。那么一次分布式写数据的延时取决于最慢的一个副本的写延时。对于关注延时的在线系统来说,3个副本总的延时分布比单副本要差很多。例如:单副本写延时小于20ms的比例是0.9;那么3个副本写延时小于20ms的比例是0.93=0.729,也就是要求3个副本中任何一个都要小于20ms,3个副本写延时才会 小于20ms。从写延时的毛刺率来说,3个副本中只要有一个出现毛刺,这次分布式写数据就是一个毛刺。因此,现有分布式存储系统中存在写入延时毛刺率高的问题。



技术实现要素:

有鉴于此,本发明提供了以下方案。

一种分布式存储系统的数据存储方法,包括:

客户端从主控服务器获取第一文件的多个可写块的信息及所述多个可写块中每一可写块对应的多个数据服务器的信息;

所述客户端对第一文件进行一次写操作时,以并发方式对所述多个可写块发起写操作,向对应的数据服务器写数据;

如果所述客户端检测到所述多个可写块中任一可写块对应的所有数据服务器返回写数据成功,所述客户端即判定对所述第一文件的此次写操作成功。

一种分布式存储系统中的客户端,包括写数据模块,其特征在于,所述写数据模块包括:

信息获取单元,用于从主控服务器获取第一文件的多个可写块的信息及所述多个可写块中每一可写块对应的多个数据服务器的信息;

操作发起单元,用于在对第一文件进行一次写操作时,以并发方式对所述多个可写块发起写操作,向对应的数据服务器写数据:

操作判断单元,用于在所述操作发起单元以并发方式对所述多个可写块发起写操作后,如检测到所述多个可写块中任一可写块对应的所有数据服务器返回写数据成功,即判定对所述第一文件的此次写操作成功。

一种分布式存储系统的数据管理方法,包括:

主控服务器为第一文件分配多个可写块,为所述多个可写块中的每一可写块分配多个数据服务器;

所述主控服务器保存所述第一文件的可写块信息,所述可写块信息包括 为所述第一文件分配的多个可写块的信息,及为所述多个可写块中每一可写块分配的多个数据服务器的信息。

一种分布式存储系统中的主控服务器,包括:

分配模块,用于为第一文件分配多个可写块,为所述多个可写块中的每一可写块分配多个数据服务器;

元数据存储模块,用于保存所述第一文件的可写块信息,所述可写块信息包括所述多个可写块的信息,及所述多个可写块中每一可写块对应的多个数据服务器的信息。

上述方案允许单个文件同时有多个可写块,以并发方式对多个可写块发起写操作,只要有一个可写块的写操作成功即判定对文件的写操作成功,可以有效减少单文件写操作的毛刺率。

附图说明

图1是分布式存储系统的网络架构示意图;

图2是本发明实施例一数据存储方法的流程图;

图3是本发明实施例一客户端的模块图;

图4是本发明实施例二数据管理方法的流程图;

图5是本发明实施例二主控服务器的模块图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例一

本实施例提供一种分布式存储系统的数据存储方法,如图2所示,包括:

步骤110,客户端从主控服务器获取第一文件的多个可写块的信息及所述多个可写块中每一可写块对应的多个数据服务器的信息;

本实施例中,客户端在面向主控服务器的协议方面,对用于获取文件可写块信息的协议进行扩展,增加对一个文件有多个可写块的支持。客户端向主控服务器发送对第一文件可写块信息的查询请求(也即获取第一文件可写块信息的请求),获取第一文件的可写块信息。该查询请求也可以因为用户请求或定时或其他方式触发。客户端获取到文件的可写块信息后缓存在本地,如果宕机重启可以从主控服务器重新获取。

在一示例中,假定为第一文件配置的文件可写块数为3,客户端从主控服务器获取到第一文件3个可写块的块句柄,每1个块的块句柄对应3个数据服务器的地址,其中的每1个数据服务器用于保存该块的1个副本。

步骤120,所述客户端对第一文件进行一次写操作时,以并发方式对所述多个可写块发起写操作,向对应的数据服务器写数据;

本文中,以并发方式发起写操作意味着一个写操作未完成时即可开始下一个写操作,即多个写操作可以同时进行,但并不意味所有的写操作同时启动。本实施例的并发方式是依次对多个可写块发起写操作,在有效减少毛刺的同时可以减少写入量,避免某个可写块成为写入的热点。但本发明并不排除同时启动的并发方式。

本实施例中,客户端以并发方式向所述多个可写块发起写操作,包括:客户端对所述m个可写块依次发起写操作,对一个可写块发起写操作后,如果满足设定条件中的任一条件,不再继续发起写操作,否则在配置的时间间隔t到时,继续对下一个可写块发起写操作;其中,所述设定条件包括以下一种或多种条件:

条件一,在配置的时间间隔t内对所述第一文件的此次写操作已成功;

条件二,已对所述多个可写块中的c个可写块发起写操作,c为配置的可写块最大并发数,2≤c≤m,m为配置的文件可写块数量;

条件三,已对所述多个可写块中所有的可写块发起写操作。

其中条件二对可写块的最大并发数进行限制,以在毛刺率和写入量之间取得最佳的平衡。

本实施例中,对客户端与用户之间的接口协议进行扩展,时间间隔t和可写块最大并发数c可以通过客户端与用户之间的接口来配置,即客户端根据用户的配置指令配置。t小于定义为毛刺的写延时时间。文中,在对第一文件的写操作中用到的配置参数如文件可写块数量,均是适用于第一文件的配置参数。具体地,可以是针对第一文件而配置,相应配置指令中会指定第一文件或者包括第一文件的文件集合,而该配置参数将作为第一文件的属性信息保存;也可以针对所有文件统一配置,此时相应的配置指令无需指定文件。另外,上述c、m及下文中的n是用于表示可写块数量的参数,其必然是整数,文中不再一一说明。

步骤130,如果所述客户端检测到所述多个可写块中任一可写块对应的所有数据服务器返回写数据成功,所述客户端即判定对所述第一文件的此次写操作成功。

如果是应用户的请求而对第一文件进行写操作,客户端判定对所述第一文件的此次写操作成功后,会向用户返回写操作成功的提示。

本实施例中,客户端向数据服务器写数据的操作可采用与现有技术相同的方式,不需要对数据服务器进行改动。

本实施例中,对客户端和用户之间的接口进行扩展,以及客户端与主控服务器之间的接口进行扩展,使其支持用户通过客户端对文件可写块数量进行查询和配置,相应的,本实施例方法包括以下查询流程和配置流程:

查询流程包括:客户端根据用户指令,向主控服务器发送对第一文件或所有文件的文件可写块数量的查询请求;及,客户端接收主控服务器返回的查询结果。

配置流程包括:客户端根据用户指令,向主控服务器发送对第一文件或所有文件的文件可写块数量的配置请求,携带用户为第一文件或所有文件配 置的文件可写块数量;及,客户端接收主控服务器返回的配置结果。

本实施例还提供一种分布式存储系统中的客户端,包括写数据模块,如图3所示,所述写数据模块包括:

信息获取单元10,用于从主控服务器获取第一文件的多个可写块的信息及所述多个可写块中每一可写块对应的多个数据服务器的信息;

操作发起单元20,用于在对第一文件进行一次写操作时,以并发方式对所述多个可写块发起写操作,向对应的数据服务器写数据:

操作判断单元30,用于在所述操作发起单元以并发方式对所述多个可写块发起写操作后,如检测到所述多个可写块中任一可写块对应的所有数据服务器返回写数据成功,即判定对所述第一文件的此次写操作成功。

可选地,

所述操作发起单元以并发方式向所述多个可写块发起写操作,包括:对所述m个可写块依次发起写操作,对一个可写块发起写操作后,如收到所述操作判断单元的停止通知,不再继续发起写操作,否则在配置的时间间隔t到时,继续对下一个可写块发起写操作;

所述操作判断单元在所述操作发起单元对一个可写块发起写操作后,如判断设定条件中的任一条件得到满足,向所述操作发起单元发送停止通知;其中,所述设定条件包括以下一种或多种条件:

在配置的时间间隔t内对所述第一文件的此次写操作已成功;

已对所述多个可写块中的c个可写块发起写操作,c为配置的可写块最大并发数,2≤c≤m,m为配置的文件可写块数量;

已对所述多个可写块中所有的可写块发起写操作。

可选地,

所述客户端还包括:用户接口模块,用于根据用户的配置指令,对所述第一文件或所有文件配置所述时间间隔t和/或可写块最大并发数c,t小于定义为毛刺的写延时时间。

可选地,

所述客户端还包括主控服务器接口模块,所述主控服务器接口模块包括以下单元中的至少一个:

可写块数量查询单元,用于根据用户指令,向所述主控服务器发送对所述第一文件或所有文件的文件可写块数量的查询请求,并接收所述主控服务器返回的查询结果;

可写块数量配置单元,用于根据用户指令,向所述主控服务器发送对所述第一文件或所有文件的文件可写块数量的配置请求,并接收所述主控服务器返回的配置结果,其中,所述配置请求携带用户为所述第一文件或所有文件配置的文件可写块数量。

实施例二

本实施例涉及一种分布式存储系统的数据管理方法,如图4所示,包括:

步骤210,主控服务器为第一文件分配多个可写块,为所述多个可写块中的每一可写块分配多个数据服务器;

本实施例中,主控服务器为所述多个可写块中的一可写块分配数据服务器时,优先从未分配给所述多个可写块中任一可写块的数据服务器中,选择多个不同的数据服务器分配给该可写块。为多个可写块分配的数据服务器不同,可以保持各个可写块操作的相对独立性,有效地减少毛刺,避免一个数据服务器故障而导致对多个可写块的写操作失败。如果系统中可写的数据服务器数量太少,无法满足不重复的要求的时候,也允许分配动作成功。

为每一可写块分配的数据服务器的数量,根据配置的副本数来确定。

步骤220,所述主控服务器保存所述第一文件的可写块信息,所述可写块信息包括为所述第一文件分配的多个可写块的信息,及为所述多个可写块中每一可写块分配的多个数据服务器的信息。

本实施例中,主控服务器将所述文件可写块数量和为所述第一文件分配的多个可写块的信息保存在非易失性存储器中以持久化保存,宕机重启后不 会丢失。主控服务器可以同时将这些信息保存在缓存中。本实施例中,主控服务器将所述多个可写块中每一可写块对应的数据服务器的信息保存在易失性存储器如缓存中,以提高访问速度,宕机重启后可以根据记录的元数据信息恢复出来。

本实施例中,主控服务器通过与客户端之间的接口接收客户端对第一文件可写块信息的查询请求并进行响应,在相应的服务和协议方面,增加对一个文件有多个可写块的支持。具体包括:

主控服务器接收到客户端对第一文件可写块信息的查询请求后,判断已为第一文件分配的可写块的数量n是否达到配置的文件可写块数量m,n≥0,m≥2,n≤m:

如是,向客户端返回查询结果,携带保存的第一文件的可写块信息;

如否,再为第一文件分配m-n个可写块,为m-n个可写块中的每一可写块分配多个数据服务器,更新保存的第一文件的可写块信息,向客户端返回查询结果,在查询结果中携带更新后的第一文件的可写块信息。

在一可写块写满之后,该可写块不再是可写块。主控服务器可以根据客户端的通知对文件的可写块信息进行更新,将已写满的块从保存的可写块中删除,并修改已分配的可写块的数量。主控服务器可以在第一文件的一可写块可满或因其他原因不可用之后,即为第一文件分配一个新的可写块,也可以在收到客户端的查询请求后,为第一文件分配新的可写块,使第一文件当前的可写块数量达到配置的文件可写块数量。

本实施例中,主控服务器通过与客户端之间的接口接收客户端对文件可写块数量的查询和配置请求并进行响应,具体地:

对查询请求的处理流程包括:主控服务器接收到客户端对第一文件或所有文件的文件可写块数量的查询请求,查找保存的文件可写块数量;及,主控服务器将查找到的文件可写块数量携带在查询结果中返回给客户端。

对配置请求的处理流程包括:主控服务器接收到客户端对第一文件或所有文件的文件可写块数量的配置请求,配置请求中携带用户为第一文件或所 有文件配置的文件可写块数量;及,主控服务器将保存的所述文件可写块数量更新为配置请求中配置的所述文件可写块数量,向客户端返回配置结果以指示配置是否成功。

本实施例还提供了一种分布式存储系统中的主控服务器,如图5所示,包括:

分配模块50,用于为第一文件分配多个可写块,为所述多个可写块中的每一可写块分配多个数据服务器;

元数据存储模块60,用于保存所述第一文件的可写块信息,所述可写块信息包括所述多个可写块的信息,及所述多个可写块中每一可写块对应的多个数据服务器的信息。

可选地,

所述主控服务还包括客户端接口模块,所述客户端接口模块包括可写块信息查询单元:

所述可写块信息查询单元用于在接收到客户端对所述第一文件可写块信息的查询请求后,通知所述分配模块;

所述分配模块在收到所述可写块信息查询单元的通知后,判断已为所述第一文件分配的可写块的数量n是否达到配置的文件可写块数量m,n≥0,m≥2,n≤m:如是,通知所述客户端接口模块;如否,再为所述第一文件分配m-n个可写块,为所述m-n个可写块中的每一可写块分配多个数据服务器,并更新所述元数据存储模块中所述第一文件的可写块信息,然后通知所述可写块信息查询单元;

所述可写块信息查询单元还用于在收到所述分配模块的通知后,到所述元数据存储模块查找所述第一文件的可写块信息,将查找到的所述第一文件的可写块信息携带在查询结果中返回给所述客户端。

可选地,

所述分配模块为所述多个可写块中的每一可写块分配多个数据服务器,包括:为所述多个可写块中的一可写块分配数据服务器时,优先从未分配给 所述多个可写块中任一可写块的数据服务器中,选择多个不同的数据服务器分配给该可写块。

可选地,

所述元数据存储模块还用于保存配置的文件可写块数量;

所述客户端接口模块还包括可写块数量查询单元和/或可写块数量配置单元,其中:

所述可写块数量查询单元,用于接收所述客户端对所述第一文件或所有文件的文件可写块数量的查询请求,从所述元数据存储模块读取所述文件可写块数量,携带在查询结果中返回给所述客户端;

所述可写块数量配置单元,用于接收所述客户端对所述第一文件或所有文件的文件可写块数量的配置请求,将所述元数据存储模块保存的所述文件可写块数量更新为所述配置请求中用户配置的所述文件可写块数量,然后向客户端返回配置结果以指示配置是否成功。

可选地,

所述元数据存储模块将所述文件可写块数量和为所述第一文件分配的多个可写块的信息保存在非易失性存储器中,将所述多个可写块中每一可写块对应的多个数据服务器的信息保存在易失性存储器中。

上述实施例中,单个文件可以有多个可写块,针对文件的一次写操作,客户端以并发方式向多个chunk发起写操作,只要有一个chunk的写操作成功,即判定对文件的此次写操作成功。同时,通过配置可写块的最大并发数c和时间间隔t,可以在性能和资源之间做权衡,因为并发度高,发送间隔短可以降低毛刺率,但会多耗费网络和磁盘的资源。

下面再通过几个应用中的示例对本发明进行说明。

示例一

本示例从系统的角度对示例性的数据写入流程、配置流程等进行描述。 其中,数据写入流程包括:

第一步,客户端(client)启动,用户对第一文件的写数据参数进行如下配置:配置可写块(chunk)的最大并发数c;及配置向多个chunk发起写操作的时间间隔t;

chunk的最大并发数c大于等于2,且小于等于第一文件的文件可写块数量m。

第二步,client向主控服务器(master)发送获取第一文件可写块信息的请求;

第三步,master收到请求后在内存中找到第一文件已有的chunk的信息和配置的文件可写块数量m;

第四步,master将第一文件的可写块信息返回client:

本步中,第一文件的可写块信息包括m个chunk的信息及每个chunk对应的数据服务器(chunkserver)信息。如果第一文件已有的chunk的数量为m,则直接将第一文件的可写块信息返回client;如果已有的chunk的数量小于m,则再为第一文件分配chunk,新分配的chunk数量加已有的chunk的数量等于m。然后再将第一文件的可写块信息返回client。

第五步,client收到第一文件的可写块信息缓存在本地;

client可以将第一文件的m个chunk进行编号,以按序号依次发起对该m个chunk的写操作。

第六步,client收到用户的写入请求,以并发方式依次发起对所述m个chunk的写操作;

本步中,client先选取一个chunk,向该chunk发起写操作,将写数据请求发往该chunk对应的所有chunkserver,同时client后台检查逻辑启动,在预设的时间间隔t之后,对以下条件是否满足进行判断:

条件一,该chunk对应的所有chunkserver均返回写数据成功;

条件二,已发起写操作的chunk数达到chunk的最大并发数c;

如果满足以上条件中的任一条件,则不再发起写操作,否则继续向下一 个chunk发起写操作并执行同样的判断,直到以上任一条件得到满足。如果是满足条件一,即有一个chunk的写操作成功时,转入以下第七步;如果是满足条件二,转入第八步。

第七步,client判定对第一文件的此次写操作成功,向用户返回写操作成功的提示;

如果此次写操作成功之前,数据已经被写到了多个chunk上,在client判定此次写操作成功后,会陆续收到其它chunk的写数据结果,不管成功还是失败,均不影响此次写操作成功,这些写数据结果都对用户透明。

第八步,client可以等待设定的时长,如果仍没有一个chunk的写操作成功,向用户返回相应的提示。

当client发现某一chunk已经写满的时候,可以执行上述步骤二即向master发送获取第一文件可写块信息的请求。

本示例中,对文件可写块数量的查询和配置流程如下:

第一步,用户调用client接口,获取当前配置的文件可写块数量;

第二步,client向master发起查询请求,查询当前配置的文件可写块数量;

第三步,master收到client请求后,找到保存的文件可写块数量m’,将m’返回client;

第四步,cilent将查询到的m’返回给用户;

第五步,用户比较当前值m’和目标值m,如果两者相等,则无需修改,结束;如果不相等,则调用client接口,转入第六步以将文件可写块数量配置为m;

用户可以根据写入吞吐的要求,确定文件可写块数量的目标值m。

第六步,client向master发起配置请求,携带的文件可写块数量为m;

第七步,master收到配置请求后,将保存的文件可写块数量更新为m,向client返回改动成功

第八步,client向用户返回改动成功。

示例二

本示例用一个实际的例子来描述减小毛刺率的效果。

本示例定义写延时超过100ms时是毛刺,为了简化计算,假定可写块最大并发数c为2,向多个可写块发起写操作的时间间隔t为50ms。按照现有技术的方案即只对一个可写块进行操作时,一个典型的写延时分布如下:

写延时超过50ms的比例:0.01;

写延时超过100ms的比例:0.001。

本示例的优化中可以有两个并发的写操作,我们表示为a和b:a先发出,b在a发出50ms后发出。a和b写到了两个不同可写块对应的数据服务器上,这两个chunk对应的数据服务器各不相同。在多数情况下,a和b可以被看做是两个独立的事件。由于超过50ms的比例只有0.01,所以b请求的增加对写延时分布的影响可以忽略,a和b的写延时分布都与上面表格相同。

在实施本示例的优化之后,同样以写延时超过100ms作为毛刺计算毛刺的比例。在优化后的写操作中,写延时超过100ms需要同时满足如下两个条件:a操作的延时超过100ms,及b操作的延时超过50ms,因为b是在a之后50ms发出的。所以就有了一个简单的概率计算:0.01*0.001=0.00001。也就是说优化后写延时毛刺率降低了100倍。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器, 或者网络设备等)执行本发明各个实施例所述的方法。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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