首页> 中国专利> 一种利用网关节点缓存优化分布式块存储写性能的方法

一种利用网关节点缓存优化分布式块存储写性能的方法

摘要

本发明公开了一种利用网关节点缓存优化分布式块存储写性能的方法,具体包括:缓存经过网关节点的数据,并采用计数表对各数据块的访问次数进行计数;对于用户请求,若为读请求,则在读请求命中缓存时从缓存读取数据,在读请求未命中缓存时从本地节点或者副本节点读取数据;并将该请求访问过的节点计数加一;若为写请求,则先写网关节点的缓存,然后在该写请求对应的其他副本节点上做日志备份,用于掉电恢复;在提高系统性能的同时还保证了数据的可靠性;由于写操作除了写缓存以外只需要根据设定在磁盘上备份日志,不需要根据请求地址在磁盘上进行寻址操作,节省了磁盘的寻址时间,使得分布式块存储系统的写性能得到了提升。

著录项

  • 公开/公告号CN105872040A

    专利类型发明专利

  • 公开/公告日2016-08-17

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN201610188055.9

  • 申请日2016-03-30

  • 分类号H04L29/08(20060101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人赵伟

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2023-06-19 00:16:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-30

    授权

    授权

  • 2016-09-14

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20160330

    实质审查的生效

  • 2016-08-17

    公开

    公开

说明书

技术领域

本发明属于数据存储领域,更具体地,涉及一种利用网关节点缓存优化分布式块存储写性能的方法。

背景技术

在传统的网络存储系统中采用集中的存储服务器来存放所有的数据,存储服务器成为系统性能的瓶颈,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,将数据分散存储在多台独立的设备上,利用多台存储服务器来分担存储负荷,利用位置服务器来定位存储信息,不但提高了系统的可用性、可靠性和存取效率,而且还易于扩展。

在分布式存储系统中为了保证数据的安全性,每份数据会有多个副本存储在多个系统中的多个数据节点;多副本在提高数据安全性的同时,会引起数据一致性的问题。

现有技术中,分布式块存储系统的每个节点处于等同的地位,都可以充当网关的角色,每次写数据到目标节点以后,还需要在目标节点的网关处计算出所有副本节点的节点号并发送写请求到所有副本节点,当所有副本均更新成功时写请求才算成功,而读数据只需要从一处成功返回即可;对缓存而言,其在网关处采用了读写缓存,缓存远程或者本地结点的部分数据;而其中写操作分为写直达法和写回法:写直达法需要寻址且写多个副本,相对较慢,但可靠性比较高;写回法只需要把写请求中的数据写到第一个副本节点的网关缓存中即可,相对比较快,但当缓存掉电丢失,则会永久性损失这部分数据,可靠性得不到保障。我们需要一种方案能够综合两者的优点以在提高分布式块存储系统写性能的同时兼顾系统的可靠性。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供了一种利用网关节点缓存优化分布式块存储写性能的方法,其目的在于利用硬件资源提升分布式块存储系统的写性能。

为实现上述目的,按照本发明的一个方面,提供了一种利用网关节点缓存优化分布式块存储写性能的方法,包括如下步骤:

(1)对分布式块存储系统中流经网关节点缓存处的数据进行缓存处理,并采用计数表对各数据块的访问次数进行计数;

(2)当接收到来自客户端或者其他节点的请求,在计数表中更新该请求对应的数据块的访问计数,并判断请求类型,如果是读请求,则进入步骤(3),如果是写请求,则进入步骤(4);

(3)根据请求所经过的节点数目,判断请求是否已经过所有副本节点,若是,则返回步骤(2);

若否,则在读请求命中缓存时从缓存读取数据,在读请求未命中缓存时从本地节点或者副本节点读取数据;并将该请求访问过的节点计数加一,返回步骤(2);

(4)若写请求命中缓存,则直接用写请求的数据覆盖旧的数据块;否则将新数据写入缓存,并进入步骤(5);

(5)在写请求对应的其他副本节点的磁盘上做日志备份,用于掉电恢复,并进入步骤(2)。

优选地,各磁盘上预留有日志区,当日志区存满时,将其对应的来源节点上的缓存内的脏数据进行倒盘,将缓存清空,并删除该日志区内的内容,写入新日志。

优选地,上述利用网关节点缓存优化分布式块存储写性能的方法,其步骤(3)具体包括以下子步骤:

(3-1)判断请求所访问过的节点数目是否大于等于预设的副本数,若 是,则表明没有所需数据,返回步骤(2);若否,则进入步骤(3-2);

(3-2)判断该读请求是否命中缓存,若是,则从缓存中读取数据,并返回到步骤(2);若否,则进入步骤(3-3);

(3-3)查看本地节点磁盘中是否存在所需数据,若是,则从所述本地节点磁盘读取数据,并进入步骤(3-4);若否,则把读请求转到该读请求对应的副本节点读取数据,并将被访问的副本节点的计数加一,返回步骤(2);

(3-4)判断缓存空间是否已满,若否,则将读取到的数据缓存在本节点缓存中,并返回步骤(2);若是,则进入步骤(3-5);

(3-5)根据计数表使用LRU算法(Least Recently Used,近期最少使用算法)判断该本地节点缓存中拟被替换的数据是否为脏数据,若否,则用从硬盘读取得的新数据覆盖所述拟被替换的数据;若是,则先将脏数据倒盘到该脏数据对应的所有副本节点的磁盘上去,再进行数据覆盖,并返回步骤(2)。

优选地,上述利用网关节点缓存优化分布式块存储写性能的方法,其步骤(4)具体包括以下子步骤:

(4-1)判断写请求是否命中缓存,若是,

(4-1)判断写请求是否命中缓存,若是,则进行写操作,用写请求的新数据覆盖旧的数据块,进入步骤(5);若否,则进入步骤(4-2);

(4-2)判断缓存空间是否足够,若是,则把新的写数据写入缓存,若否,则进入步骤(4-3);

(4-3)根据计数表使用LRU算法判断该本地节点缓存中拟被替换的数据是否为脏数据,若否,则用写请求中的新数据覆盖拟被替换的数据;若是,则先将脏数据倒盘到该脏数据对应的所有副本节点的磁盘上去,再进行数据覆盖,并进入步骤(5)。

优选地,上述利用网关节点缓存优化分布式块存储写性能的方法,其步骤(5)具体包括以下子步骤:

(5-1)通过元数据信息,寻找写请求对应的副本节点;

(5-2)判断副本节点磁盘上对应第一个副本节点的日志区是否已满,若否,则将写请求记录进该日志区,并返回步骤(2);若是,进入步骤(5-3);

(5-3)将上述日志区对应的来源数据节点,即第一个副本节点上的缓存区里的脏数据倒盘到该脏数据对应的其他副本节点的磁盘上,并对该缓存区进行清空操作;

(5-4)清空已满的日志区,在清空后的日志区写入新日志,并返回步骤(2)。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得以下有益效果:

(1)本发明提供的一种利用网关节点缓存优化分布式块存储写性能的方法,将现有技术中的写操作进行优化,每次写操作除了写缓存以外都只在磁盘上写两份日志,不需要根据请求地址在磁盘上进行寻址操作,节省了磁盘的寻址时间,使得写性能得到了提升;

(2)本发明提供的一种利用网关节点缓存优化分布式块存储写性能的方法,由于每个写缓存的数据都在另外两个节点上有两个日志备份,在提供写性能的同时保证了数据的可靠性。

附图说明

图1是本发明实施例所基于的分布式块存储系统的结构示意图;

图2是本发明实施例提供的利用网关节点缓存优化分布式块存储写性能的方法的流程图;

图3是本发明实施例中步骤(3)的细化流程图;

图4是本发明实施例中步骤(4)的细化流程图;

图5是实施例中节点上数据结构图;

图6是本发明实施例中步骤(5)的工作过程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明提出的利用网关缓存来提高系统写性能的方法,其总体思路在于:对所有写缓存的数据选择两个远程节点做两个日志备份,在系统缓存丢失的时候用作恢复数据;在日志区快满时先对缓存区进行倒盘操作然后再清空日志区,以此来在保证数据可靠性的同时提高系统的写性能。

本发明实施例基于图1所示的一种包括多个节点,并且每个节点都由缓存和磁盘构成的分布式块存储系统;其中,磁盘分为日志区和数据区;实施例提供的利用网关节点缓存优化分布式块存储写性能的方法,其流程如图2所示,具体包括以下步骤:

(1)对分布式块存储系统中流经网关节点缓存处的数据进行缓存处理,并采用计数表对各数据块的访问次数进行计数;

(2)当接收到来自客户端或者其他节点的请求,在计数表中更新该请求对应的数据块的访问计数,并判断请求是读请求还是写请求,如果是读请求,则进入步骤(3),如果是写请求,则进入步骤(4);

(3)根据该请求所经过的节点数目,判定请求是否已经经过所有副本节点,是则返回步骤(2);

若否,则在读请求命中缓存时从缓存读取数据,在读请求未命中缓存时从本地节点或者副本节点读取数据;并将该请求访问过的节点计数加一,返回步骤(2);

实施例中,步骤(3)的流程如图3所示,具体如下:

(3-1)判断该请求所访问过的节点数目是否大于等于默认副本数3,若是,则表明没有所需数据,返回步骤(2);若否,则进入步骤(3-2);

(3-2)判断该读请求是否命中缓存,若是,则从缓存中读取数据,并返回到步骤(2);若否,则进入步骤(3-3);

(3-3)查看本地节点磁盘中是否存在所需数据,若是,则从所述本地节点磁盘读取数据,并进入步骤(3-4);若否,则把读请求转到该读请求对应的其它副本节点读取数据,并将被访问的副本节点的计数加一,返回步骤(2);

(3-4)判定缓存空间是否已满,若否,则将读取到的数据缓存在本节点缓存中,并且直接返回步骤(2);若是,则进入步骤(3-5);

(3-5)根据计数表使用LRU算法判断该本地节点缓存中拟被替换的数据是否为脏数据,若否,则用从硬盘读取得的新数据覆盖所述拟被替换的数据;若是,则先将脏数据倒盘到该脏数据对应的所有副本节点的磁盘上去,再进行数据覆盖,并返回步骤(2);

(4)若写请求命中缓存,则直接用写请求的数据覆盖旧的数据块,否则直接把新的数据写入缓存,当缓存空间不够需要进行替换,则要先把被替换的脏数据进行倒盘,转入步骤(5);

实施例中,步骤(4)的流程如图4所示,具体包括以下子步骤:

(4-1)判断该写请求是否命中缓存,若是,则用写请求所对应的新数据直接写覆盖到旧的数据块,进入步骤(5);若否,则进入步骤(4-2);

(4-2)判断缓存空间是否足够,若是,则把新的写数据写入缓存,若否,则进入步骤(4-3);

(4-3)根据计数表使用LRU算法判断该本地节点缓存中拟被替换的数据是否为脏数据,若否,则用写请求中的新数据覆盖拟被替换的数据;若是,则先将脏数据倒盘到该脏数据对应的所有副本节点的磁盘上去,再进行数据覆盖,并进入步骤(5);

如图5所示,是节点中的数据结构分布图,每个节点上的磁盘都会分出一部分区域作为日志区;实施例采用的是三副本结构,每次写缓存时候 在其他两个副本节点上做日志备份;那么每个节点上的日志区中有且仅有两个节点缓存中的数据日志备份,为了后续清理方便,把两个节点的日志备份分开管理,先清理日志区满了的节点;

(5)在写请求对应的其他两个副本节点的磁盘上做日志备份,用于掉电恢复;

每个磁盘上预留有一部分区域做日志区,且将日志区根据所存来源节点的不同划分为两个子日志区;

随着读写次数增加,日志数据越来越大,需要定期清理日志区;当某个日志区存满时,把该日志区对应的来源节点上的缓存全部清空,清空之前要先把脏数据进行倒盘,之后删除该日志区,然后返回步骤(2);

实施例中,步骤(5)的流程如图6所示,具体包括以下子步骤:

(5-1)通过元数据信息,先找到写请求对应的第二个副本节点2;

(5-2)判断副本节点2磁盘上对应第一个副本节点1的日志区1是否已满,若否,则将写请求记录进日志区1,返回步骤(2),若是,进入步骤(5-3);

(5-3)将该日志区1对应的第一个副本节点1上的缓存区里的脏数据倒盘到该脏数据对应的三个副本节点的磁盘上去,并对节点1上的缓存区进行清空操作;

(5-4)清空上述节点2上已满的日志区1,并将新的日志写入清空后的日志区,返回步骤(2)。

本实施例中,每次写操作在写完缓存之后仅需要再在两个节点的磁盘上写两个日志,节省了磁盘的寻址时间,提高了系统的写性能,并且因为采用了两个磁盘日志对缓存中的数据做备份,也保证了数据的可靠性。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号