分布式存储系统及其数据读写方法

文档序号:9489112阅读:518来源:国知局
分布式存储系统及其数据读写方法
【技术领域】
[0001]本申请涉及计算机存储技术领域,尤其涉及分布式存储系统及其数据读写方法。
【背景技术】
[0002]随着移动设备、社交网络、物联网等多种应用的蓬勃发展,人类社会产生的数据呈爆炸式增长。传统的磁盘阵列在容量、性能和带宽方面越来越难以满足以海量数据为基础的数据密集型应用的存储要求。因此,采取scale-out架构、容量和性能可随节点数线性增加的分布式集群存储系统应运而生,能提供更高的每秒读写(10)操作的次数(10PS,Input/Output Operat1ns Per Second)性能的固态硬盘也逐渐取代传统磁盘成为10密集型应用的首选。在此背景下,固态硬盘昂贵的价格、先擦除后写入的应用特点,都要求在存储系统中尽可能压缩数据的实际存储空间、降低写入次数,以便进一步提高使用分布式闪存系统的性价比。
[0003]重复数据删除是数据缩减技术中的一种,通常用于基于磁盘的备份系统,旨在减少存储系统中实际使用的存储容量。目前重复数据删除的工作方式通常是在某个时间周期内,在后台运行重复数据删除程序,查找不同文件中不同位置的重复数据块,把重复的数据块用指示符取代,以减少对存储容量的占用。高度冗余的数据集(例如备份数据)从重复数据删除技术的获益极大;另外重复数据删除技术可以允许用户的不同站点之间进行高效、经济的备份数据复制。但是,对于分布式集群存储系统而言,现有的单设备内的重复数据删除技术无法达到全局重复数据删除的目标,数据缩减比达不到最佳效果;另外,后台处理的重复数据删除方式无法减少数据写入的操作,对于使用固态硬盘的存储系统而言,就达不到减少擦写次数、延长固态硬盘寿命的目标。

【发明内容】

[0004]本申请提供了一种应用于分布式存储系统及其数据读写方法,无需进行实际的重复数据删除操作,即可达到全局重复数据删除的目标,并且可以减少数据写入的操作。
[0005]本申请实施例提供了一种分布式存储系统,包括:所述分布式存储系统包括一个代理模块、一个元数据服务模块以及多个存储服务模块,每个存储服务模块管理至少一个存储节点;
[0006]所述代理模块用于接收来自应用系统的写请求,按分块参数计算所要写入的数据的哈希值,得到块标识,向元数据服务模块发送携带所述块标识的写请求;接收元数据服务模块返回的节点信息,根据所述节点信息,把写入请求路由到相应的存储节点;以及将来自元数据服务模块或存储服务模块的写入成功消息返回应用系统;
[0007]所述元数据服务模块用于维护全局的一级映射表,一级映射表包含了全局逻辑地址和存储节点、块标识的映射关系;接收来自代理模块的携带块标识的写请求,查找一级映射表,如果已存在相应块标识的映射记录,刷新一级映射表,增加一条写入起始地址和相应块标识的映射记录,通过代理模块向应用系统返回写入成功消息;若不存在,选择一个存储节点,把所述存储节点的节点信息返回给代理模块;接收来自存储服务模块的写入信息,刷新一级映射表,新增写入起始地址、相应块标识、相应存储节点的映射记录,向所述存储服务模块返回刷新成功消息;
[0008]存储服务模块用于维护二级映射表,二级映射表包含了块标识和实际存储物理地址的映射关系;接收路由到本存储服务模块所管理的存储节点的写请求,把数据写入所述存储节点的磁盘,刷新二级映射表,新增相应块标识和实际写入物理地址的记录,并向元数据服务模块发送写入信息。
[0009]可选地,所述代理模块还用于接收来自应用系统的读请求,将该读请求透传给元数据服务模块,以及将来自存储服务模块的读数据返回应用系统;
[0010]所述元数据服务模块还用于接收来自代理模块的携带读取起始地址的读请求,查找一级映射表中所述读取起始地址对应的映射记录,得到相应的存储节点以及块标识,把读请求路由到相应的存储节点;
[0011]所述存储服务模块还用于接收路由到本存储服务模块所管理的存储节点的读请求,根据块标识查找二级映射表,得到实际物理地址,从实际物理地址中获取读数据,将读数据返回给代理模块。
[0012]可选地,所述元数据服务模块进一步包括:
[0013]负载分担算法单元,用于根据负载分担算法选择一个负载较轻的存储节点。
[0014]可选地,元数据服务模块单独部署在独立节点中,或者分布式部署在所有的节点集群上。
[0015]本申请实施例还提供了一种分布式存储系统的数据写入方法,该分布式存储系统如前所述,该数据写入方法包括:
[0016]代理模块接收来自应用系统的写请求,按分块参数计算所要写入的数据的哈希值,得到块标识,向元数据服务模块发送携带所述块标识的写请求;
[0017]元数据服务模块接收来自代理模块的携带块标识的写请求,查找一级映射表,如果已存在相应块标识的映射记录,刷新一级映射表,增加一条写入起始地址和相应块标识的映射记录,通过代理模块向应用系统返回写入成功消息,结束写入流程;若不存在,选择一个存储节点,把所述存储节点的节点信息返回给代理模块;
[0018]代理模块接收元数据服务模块返回的节点信息,根据所述节点信息,把写入请求路由到相应的存储节点;
[0019]存储服务模块接收路由到本存储服务模块所管理的存储节点的写请求,把数据写入所述存储节点的磁盘,刷新二级映射表,新增相应块标识和实际写入物理地址的记录,并向元数据服务模块发送写入信息;
[0020]元数据服务模块接收来自存储服务模块的写入信息,刷新一级映射表,新增写入起始地址、相应块标识、相应存储节点的映射记录,向所述存储服务模块返回刷新成功消息;
[0021]存储服务模块将来自元数据服务模块或存储服务模块的写入成功消息返回应用系统。
[0022]本申请实施例还提供了一种分布式存储系统的数据读取方法,该分布式存储系统如前所述,该数据读取方法包括:
[0023]代理模块接收来自应用系统的读请求,将该读请求透传给元数据服务模块;
[0024]元数据服务模块接收来自代理模块的携带读取起始地址的读请求,查找一级映射表中所述读取起始地址对应的映射记录,得到相应的存储节点以及块标识,把读请求路由到相应的存储节点;
[0025]存储服务模块接收路由到本存储服务模块所管理的存储节点的读请求,根据块标识查找二级映射表,得到实际物理地址,从实际物理地址中获取读数据,将读数据返回给代理模块;
[0026]代理模块将来自存储服务模块的读数据返回应用系统。
[0027]从以上技术方案可以看出,由于采用两级元数据组织,在写入数据时,如果已存在相同数据则不进行实际写入,从而减少数据写入的操作,并且达到全局重复数据删除的目标。本申请方案可以实现如下技术效果:
[0028]在分布式存储系统中实现了在线的全局重复数据删除,降低实际存储空间占用;
[0029]写数据时由于重复的数据不需要实际的写操作,节省了应用系统和存储系统的数据交互和带宽,提高了存储效率;
[0030]可以很灵活地在存储节点上部署元数据服务和存储服务,易于构建分布式、大规模的存储系统。
【附图说明】
[0031]图1为本申请实施例提供的采用二级元数据组织方法的分布式存储系统的架构示意图;
[0032]图2为本申请实施例提供的分布式存储系统的数据写入流程示意图;
[0033]图3为本申请实施例提供的分布式存储系统的读数据流程示意图。
【具体实施方式】
[0034]为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
[0035]本申请方案中,采用二级元数据组织方法,把分布式存储系统的服务模块分为元数据服务模块和存储服务模块,其中元数据服务模块负责维护全局的一级映射表,一级映射表包含了全局逻辑地址和存储节点、块标识(即数据块哈希(Hash)值)的映射关系;存储服务模块负责维护二级映射表,二级映射表包含了块标识和实际存储物理地址的映射关系Ο
[0036]本申请实施例提供的采用二级元数据组织方法的分布式存储系统的架构如图1所示,分布式存储系统100中包括一个代理模块101、一个元数据服务模块102以及多个存储服务t旲块103。
[0037]所述代理模块101用于接收来自应用系统的写请求,按分块参数计算所要写入的数据的哈希值,得到块标识,向元数据服务模块102发送携带所述块标识的写请求;接收元数据服务模块102返回的节点信息,根据所述节点信息,把写入请求路由到相应的存储节点;以及将来自元数据服务模块102或存储服务模块103的写入成功消息返回应用系统;
[0038]所述元数据服务模块102用于维护全局的一级映射表,一级映射表包含了全局逻辑地址和存储节点、块标识的映射关系;接收来自代理模块的携带块标识的写请求,查找一级映射表,如果已存在相应块标识的映射记录,刷新一级映射表,增加一条写入起始地址和相应块标识的映射记录,通过代理模块101向应用系统返回写入成功消息;若不存在,选择一个存储节点,把所述存储节点的节点信息返回给代理模块101 ;接收来自存储服务模块103的写入信息,刷新一级映射表,新增写入起始地址、相应块标识、相应存储节点的映射记录,向所述存储服务模块103返回刷新成功消息;
[0039]存储服务模块103用于维护二级映射表,二级映射表包含了块标识和实际存储物理地址的映射关系;接收路由到本存储服务模块103所管理的存储节点的写请求,把数据写入所述存储节点的磁盘,刷新二级映射表,新增相应块标识和实际写入物理地址的记录,并向元数据服务模块102发送写入信息。
[0040]根据本申请的另一实施例,所述代理模块101还用于接收来自应用系统的读请求,将该读请求透传给元数据服务模块102,以及将来自存储服务模块103的读数
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1