一种分布式块存储系统及其数据路由方法与流程

文档序号:16848856发布日期:2019-02-12 22:33阅读:225来源:国知局
一种分布式块存储系统及其数据路由方法与流程

本发明涉及计算机分布式块存储技术领域,尤其是涉及一种分布式块存储系统及其数据路由方法。



背景技术:

智能设备、社交媒体、物联网的迅猛发展,带来数据爆炸式增长;另一方面,日渐普及的大数据应用使得数据成为推动人类社会发展的重要资源。在此背景下,数据存储的需求正经历前所未有的高速增长。面对海量数据以及不间断的数据处理要求,传统网络存储架构在性能和容量上捉襟见肘;数据安全性、业务连续性面临挑战;单位容量成本过于高昂。分布式块存储系统采用可扩展的系统架构,利用多台存储服务器分担所有存储负荷,通过分布式算法定位存储数据,从而提高了存储系统的可靠性,可用性,并且易于扩展。

分布式块存储系统中,出于性能考虑,一般采用副本机制及强一致性原理保证存储系统可靠性及可用性。而传统的副本机制一般在块存储访问客户端通过存储网络首先将数据发送到数据第一副本所在的存储服务器,第一副本再将要写入的数据通过存储网络发送到第二副本乃至第三副本所在的存储节点写入,最终将写入结果返回给块存储访问客户端整个写入过程才完成。如此,每次数据写入请求均至少需要数据在存储网络上传输两次。这种数据写入方式使当前块存储服务无法达到传统网络存储的性能,无法满足核心业务数据随机访问的随机访问性能要求。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种分布式块存储系统及其数据路由方法。

本发明的目的可以通过以下技术方案来实现:

一种分布式块存储系统,包括通过存储网络分别连接的块存储访问客户端、存储服务器集群和元数据服务集群,其中,

所述块存储访问客户端用于接收上层应用读写请求,并将该上层应用读写请求转化为对不同副本的存储对象的并行读写请求;

所述存储服务器集群包括多个存储服务节点,用于存储数据,并响应所述并行读写请求;

所述元数据服务集群用于存储所述存储服务器集群的集群配置信息,并监视所述存储服务器集群的实时状态;

该分布式块存储系统采用分布式哈希算法进行数据分布,将存储卷的所有数据对象均匀分布到所有存储服务节点中。

进一步地,所述块存储访问客户端包括:

块设备接口单元,用于创建linux块设备,提供io访问接口;

存储链路传输单元,用于建立与所述存储服务节点的连接,传输所述并行读写请求,所述存储链路传输单元为多链路冗余传输单元;

io路由单元,用于采用分布式哈希算法,根据所述上层应用读写请求计算所有副本所在的目标存储服务节点。

进一步地,所述存储服务节点包括:

数据恢复单元,用于恢复副本数据;

集群状态代理,用于与所述元数据服务集群通信并建立心跳,获取集群状态更新;

数据读写单元,包括多个磁盘,用于实现数据存储。

进一步地,所述恢复副本数据的触发条件包括:

有存储服务节点离线或上线;或者存储服务节点中有磁盘异常或磁盘增加。

进一步地,所述数据恢复单元采用pull方式恢复副本数据,根据分布式哈希算法计算出分布在本地节点的数据对象列表,构建本地缺失的数据对象列表,并从其他节点读取副本数据恢复到本地节点。

本发明还提供一种应用于如所述的分布式块存储系统的数据路由方法,包括以下步骤:

1)块存储访问客户端接收上层应用读写请求,将该上层应用读写请求转化为对一个或多个存储对象的并行读写请求;

2)块存储访问客户端根据集群状态信息计算出存储对象所有副本所在的存储服务节点;

3)对应存储服务节点处理所述并行读写请求,并将处理结果返回块存储访问客户端。

进一步地,所述上层应用读写请求包含要访问的数据的块的偏移地址及数据块长度。

进一步地,所述集群状态信息通过以下方式之一获得或更新:

a)块存储访问客户端加载存储卷,生成块设备时,根据输入参数从存储服务器节点获取;

b)块存储访问客户端定时发送集群状态查询请求到任意在线的存储服务器节点获取更新;

c)块存储访问客户端根据收到的所述处理结果中包含的集群状态版本信息,发送请求给任意在线的存储服务节点获取更新。

进一步地,所述上层应用读写请求为写入请求时,块存储访问客户端通过存储网络将所述并行读写请求同时发送给所有副本所在的存储服务节点;

所述上层应用读写请求为读取请求时,块存储访问客户端通过存储网络将所述并行读写请求根据优先策略发送给其中一个副本所在的存储服务节点。

进一步地,所述上层应用读写请求为读取请求时,若块存储访问客户端与存储服务节点融合部署在同一服务器节点,并且其中一个副本在本地节点,则优先读本地节点副本数据。

与现有技术相比,本发明具有以如下有益效果:

1)本发明采用分布式哈希算法进行数据分布,将存储卷的所有数据对象均匀分布到所有存储服务节点中,有效避免了热点磁盘或热点存储服务节点的出现。

2)上层应用读写请求的数据只需要在存储网络中完成一次并行传输,无需经由主副本存储服务节点同步数据到第二第三副本,减少一层网络传输延时,从而降低io时延,提高性能。

3)通过在块存储访问客户端集成io路由单元,降低读写请求链路传输延时,提高分布式存储系统性能。

4)本发明存储系统可以降低一次数据在存储网络传输的时延,从而提高存储系统的性能。

5)存储服务器集群中所有节点数据恢复可以同时进行,提升恢复速度。

6)块存储访问客户端与存储服务节点之间的连接支持多链路冗余,避免因块存储访问客户端与存储服务节点连接链路故障导致的io中端,同时也能够聚合多链路带宽,提高卷读写请求吞吐量性能。

7)各存储服务节点设备有集群状态代理,可实现与元数据服务器集群的通信,及时获取集群状态更新。

附图说明

图1为本发明分布式块存储系统的结构示意图;

图2为本发明的块存储访问客户端初始化流程示意图;

图3为本发明分布式块存储系统采用的分布式哈希数据分布算法原理示意图;

图4为本发明的写请求处理方式流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

如图1所示,本发明提供一种分布式块存储系统,包括通过存储网络4分别连接的块存储访问客户端(bac)1、存储服务器集群2和元数据服务集群(mdscluster)3,其中,块存储访问客户端1用于接收上层应用读写请求,并将该上层应用读写请求转化为对不同副本的存储对象的并行读写请求;存储服务器集群2包括多个存储服务节点(ios),用于存储数据,并响应并行读写请求;元数据服务集群3用于存储所述存储服务器集群的集群配置信息,并监视存储服务器集群的实时状态。该分布式块存储系统采用分布式哈希(dht)算法进行数据分布,将存储卷的所有数据对象均匀分布到所有存储服务节点中。

块存储访问客户端1包括块设备接口单元、存储链路传输单元和io路由单元,块设备接口单元用于创建linux块设备,提供io访问接口;存储链路传输单元用于建立与存储服务节点的连接,传输并行读写请求,存储链路传输单元为多链路冗余传输单元;io路由单元用于根据上层应用读写请求计算所有副本所在的目标存储服务节点,具体是采用分布式哈希算法计算出卷第一副本乃至第n副本所在的存储服务节点。

图2为块存储访问客户端初始化流程示意图。在图2中,接口层发起卷挂载请求,块存储访问客户端根据输入的卷uuid参数以及存储服务节点信息,通过控制链路发送卷查询请求到存储服务节点,并通过返回的卷详细信息构建卷块设备参数,如块设备大小、类型、是否支持discard等;如果卷查询请求成功,继续发送集群状态查询请求到存储服务节点,通过返回的存储服务器集群信息初始化io路由单元,并且建立io链路连接,如果块存储访问客户端与存储服务节点存在多链路,建立冗余io链路,完成块设备创建,可以正常进行读写。

图3为本发明分布式块存储系统采用的分布式哈希数据分布算法原理示意图。当块存储访问客户端接收到上层应用的读写请求,将请求转换为对集群内部存储对象的读写请求;io路由单元根据对应的存储对象id计算出哈希值,并在数据分布哈希环中查到第一副本所在的存储节点ios1,并由此顺时针查找第二副本所在的存储节点ios2;如果存储节点ios2与存储节点ios1位于同一个存储域,则继续顺时针查找,直到找到不在同一个存储域的存储节点。

存储服务节点包括数据恢复单元21、集群状态代理22和数据读写单元23,数据恢复单元21用于恢复副本数据;集群状态代理22用于与元数据服务集群通信并建立心跳,获取集群状态更新;数据读写单元23包括多个磁盘,用于实现数据存储。

数据恢复单元21中,恢复副本数据的触发条件包括:有存储服务节点离线或上线;或者存储服务节点中有磁盘异常或磁盘增加等。数据恢复单元21采用pull方式恢复副本数据,根据分布式哈希算法计算出分布在本地节点的数据对象列表,构建本地缺失的数据对象列表,并从其他节点读取副本数据恢复到本地节点。

应用于上述分布式块存储系统的数据路由方法,包括以下步骤:

1)块存储访问客户端接收上层应用读写请求,将该上层应用读写请求转化为对一个或多个存储对象的并行读写请求,所述上层应用读写请求包含要访问的数据的块的偏移地址及数据块长度;

2)块存储访问客户端通过内置的io路由单元根据集群状态信息计算出存储对象所有副本所在的存储服务节点,具体地,

上层应用读写请求为写入请求时,块存储访问客户端通过存储网络将并行读写请求同时发送给所有副本所在的存储服务节点;

上层应用读写请求为读取请求时,块存储访问客户端通过存储网络将并行读写请求根据优先策略发送给其中一个副本所在的存储服务节;

3)对应存储服务节点处理并行读写请求,并将处理结果返回块存储访问客户端;

4)块存储访问客户端收到所有副本存储服务器节点的处理结果进行综合处理,所有副本均写入成功则返回上层应用成功;根据存储服务器节点返回值不同,读写请求可能需要按照步骤2)进行重试,或者返回上层应用读写失败。

集群状态信息通过以下方式之一获得或更新:

a)块存储访问客户端加载存储卷,生成块设备时,根据输入参数从存储服务器节点获取;

b)块存储访问客户端定时发送集群状态查询请求到任意在线的存储服务器节点获取更新;

c)块存储访问客户端根据收到的处理结果中包含的集群状态版本信息,发送请求给任意在线的存储服务节点获取更新。

上述步骤2)中,上层应用读写请求为读取请求时,若块存储访问客户端与存储服务节点融合部署在同一服务器节点,并且其中一个副本在本地节点,则优先读本地节点副本数据。

图3为本发明的写请求处理方式流程示意图,具体为:①块存储访问客户端接收上层应用请求;②io路由单元计算出写请求所有副本的存储节点信息后,块存储访问客户端对所有副本存储节点单独构建一个写请求,并将写请求同时发送到所在副本的存储节点;③存储服务节点返回结果,只有所有副本写请求都返回成功后,写请求才返回应用写成功。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

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