一种集群下基于数据缓存的纠删码归档方法

文档序号:9846832阅读:565来源:国知局
一种集群下基于数据缓存的纠删码归档方法
【技术领域】
[0001 ]本发明属于计算机存储技术领域,更具体地,涉及一种集群下基于数据缓存的纠删码归档方法。
【背景技术】
[0002]在如今的信息时代数据量急速增长,大规模存储集群得到了越来越广泛的应用。根据数据访问频度的高低,可以依次将存储集群中的数据分为热数据(Hot Data)、温数据(Warm Data)和冷数据(Cold Data)。随着系统运行时间的推移,热数据的访问频度会下降,变成温数据,最后成为冷数据,热数据通常按三副本或多副本方式存放在生产集群(Product1n Cluster)。一种提高生产集群系统利用率的方法是将访问频度低的副本数据迀移到纠删码归档集群(Archival Cluster),该归档集群采用RS码来组织存放其中的数据;纠删码归档(Erasure-coded Archival)是指将数据从副本存储迀移到纠删码存储的操作。
[0003]现有纠删码归档和用户访问副本集群是两个相互独立的过程;现有纠删码归档包括(I)获取需要归档数据在生产集群中的数据位图;(2)从生产集群中读取副本数据;(3)将读取副本数据进行纠删码编码,生成校验分块;(4)将一份副本数据和相应校验分块写入纠删码归档集群;(5)对生产集群上剩余冷数据进行回收,删除生产集群中所有参与纠删码归档的数据副本。用户访问副本集群包括(I)获取所需数据分块在生产集群中的元数据信息;
(2)对数据分块所在节点发出读请求;(3)该节点读取相应数据分块到节点缓冲区;(4)数据节点发送数据分块,并将数据分块转发到客户端。
[0004]对于该纠删码归档,若数据归档的请求过量,则采用离线归档,数据访问与归档二者独立;但在当前大数据时代,几乎不存在专门的归档时间,需采用在线归档;对于在线归档,生产集群中的节点上始终保持有热数据和冷数据,采用上述纠删码归档方法存在如下问题:
[0005](I)归档请求直接下发给生产集群,此时生产集群也在为用户提供访问服务;归档请求带来额外的外存访问、内存缓存的占用、网络资源的占用,导致用户请求的响应时间大大增加;
[0006](2)对于归档任务,由于生产集群中的节点需要同时处理用户访问请求与数据归档请求,两者之间存在资源竞争;某个存储集群节点用户访问请求频度高的情况下,该节点的归档请求将迟迟得不到响应,造成归档节点无法及时得到数据分块,进而影响整个归档效率。

【发明内容】

[0007]针对现有技术的以上缺陷或改进需求,本发明提供了一种集群下基于数据缓存的纠删码归档方法,其目的在于提高纠删码归档效率。
[0008]为实现上述目的,按照本发明的一个方面,提供了一种集群下基于数据缓存的纠删码归档方法,具体包括以下步骤:
[0009](I)根据用户访问请求,将所需数据分块从其所在生产节点读取到节点缓冲区,并将数据分块发送给访问节点,同时根据归档数据状态表将其转发给归档节点;
[0010](2)归档节点根据接收到的数据分块,更新每个数据节点的数据分块个数;并判断归档节点是否接收到当前条带的全部数据分块,若是,则将当前条带进行归档;若否,则从生产集群读取冷数据块,将条带凑齐之后进行归档。
[0011]上述纠删码归档方法,由于采用了用户访问缓存的数据分块,相比于普通纠删码归档,可大幅度减少归档节点从生产集群中读取数据分块的次数,从而可以在基本不影响用户访问的情况下进行归档操作,提高归档效率;
[0012]另一方面,将用户访问缓存的数据分块转发到归档节点,避免了用户访问和普通纠删码归档对生产节点中相同数据分块的重复读取请求,可有效地减少生产集群中网络传输的数据量,减轻整个网络的负载。
[0013]优选地,上述步骤(I),具体包括如下子步骤:
[0014](1.1)访问节点从管理服务器获得所需的数据分块在生产集群中的地址;
[0015](1.2)对上述数据分块在生成集群中的地址对应节点发出读请求;
[0016](1.3)将数据分块从其所在生成集群中的生产节点读取到节点缓冲区;
[0017](1.4)根据归档数据状态表,判断该数据分块是否已被转发到归档节点,若是,则将该数据分块转发到访问节点;若否,则将该数据分块同时转发到访问节点和归档节点;该步骤直接利用集群中的交换机将用户访问的数据转发给归档节点。
[0018]优选地,上述步骤(2),具体包括如下子步骤:
[0019](2.1)归档节点接收数据分块(热数据),更新归档节点中包含的每个数据节点的数据分块个数;
[0020](2.2)归档节点初始化当前条带,分析条带的节点组成,判断接收的数据块属于哪个数据节点,并初始化存储变量;本步骤中,节点包括数据节点和校验节点;
[0021](2.3)由归档节点判断是否接收到当前条带的全部数据分块,若是,进入步骤
(2.7);若否,则进入步骤(2.4);
[0022](2.4)在时长为T的时间间隔内,归档节点从用户缓存接收数据分块;
[0023](2.5)判断当前条带的k个数据分块是否集齐,若是,进入步骤(2.7);若否,则进入步骤(2.6);其中,k值等于数据节点的个数;
[0024](2.6)归档节点从生产集群中直接读取冷数据,以凑齐μ个条带,然后进入步骤
(2.3);
[0025]其中,从数据节点j读取的数据分块数为Numj,Numj= max{(y-aj_A( j)) ,0},μ为归档节点在时间T内所能归档的最大条带数,a」为归档节点中包含数据节点j的数据分块个数,A(j)表示在下一个时间间隔T内归档节点将要从数据节点j接收到的数据分块个数;
[0026](2.7)归档当前条带,并将条带号i的值加I,并更新归档数据状态表;
[0027](2.8)根据归档数据状态表判断是否完成全部条带的归档,若否,则进入步骤
(2.3);若是,则结束归档;
[0028]上述过程,归档节点在不影响用户访问的同时,利用缓存数据接收用户分块,可起到提高归档效率的作用。
[0029]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0030](I)本发明提供的这种集群下基于数据缓存的纠删码归档方法,在不影响用户访问的情况下,利用用户访问的缓存数据来提高归档效率:通过将用户访问的缓存数据分块直接发送给归档节点,相比于普通纠删码归档方法,本发明提供的方法能减少磁盘读取的次数,从而加速生产节点外存数据分块读取、生产节点内存空间占用、以及生产节点网卡发送归档数据分块这三个环节,提高归档效率;只有在一个条带未全部接收到的情况下,才会直接读取生产集群数据分块,而读取数据分块的次数和块数相比于用户访问的数据量和频度低很多,基本不影响用户访问;
[0031](2)本发明提供的这种集群下基于数据缓存的纠删码归档方法,降低了生产集群中网络传输的数据量;在现有的普通纠删码归档中,需要将数据分块从节点缓冲区发送给集群中的交换机,再转发给归档节点;而在本发明的提供的纠删码归档方法中,可以直接利用集群中的交换机将用户访问的数据转发给归档节点,避免了普通纠删码归档方法中将数据从节点缓冲区发送到集群网络中的交换机,从而可以有效地减少生产集群中网络传输的数据量,减轻整个网络的负载。
【附图说明】
[0032]图1是本发明集群下基于数据缓存的纠删码归档方法的流程图;
[0033]图2是实施例提供的集群下基于数据缓存的纠删码归档方法的示意图;
[0034]图3是用户访问和普通纠删码归档的示意图;
[0035]图4是基于数据缓存的用户访问和数据归档的示意图。
【具体实施方式】
[0036]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0037]为便于理解,将在本发明中涉及的术语解释说明如下:
[0038]生产集群:指在归档过程中提供归档数据的同时,仍然需要给上层应用提供数据访问服务的节点总称。
[0039]纠删码归档集群:归档完成后存储完整数据条带的集群,可以由生产集群本身的空闲空间替代。
[0040]管理服务器:管理整体集群的元数据信息,包括集群中数据分块及其副本的节点位置信息。
[0041 ]编码节点:一个条带的数据归档过程中,实施编码计算操作的节点。
[0042]节点数据分块以及条带:在归档的编码过程中,读取数据的单元就是数据分块。在存储集群中,一个条带就是由在不同节点上相同偏移地址的数据分块单元组成,可以独立地恢复出失效数据的信息集合。
[0043]数据位图:保存在存储集群的管理服务器中,表示数据分块和数据节点之间的对应关系。
[0044]NUMj:归档过程中,当前归档条带所需的数据分块没有集齐时,归档节点直接向生产集群中数据节点j读取NUMj=max {(y-aj-A(j)), O}个数据分块,μ为归档节点在时间T内所能归档的条带数,a」为归档节点中包含数据节点j的数据分块个数,A(j)表示在下一段时间T内归档节点从节点j接收到的数据分块个数。
[0045]归档数据状态表:管理服务器所维护的一个全局表格,记录生产集群中数据分块是否已被归档,在实施例中,用‘ O ’和‘ I’分别表示该数据分块‘未被归档’和‘已被归档’。
[0046]本发明提供了一种集群下基于数据缓存的纠删码归档方法,主要利用用户访问的缓存数据来加速纠删码归档过程,其具体流程如图1所示,包括如下步骤:
[0047](I)根据用户访问请求,将所需数据分块从其所在生产节点读取到节点缓冲区,再将数据分块发送给访问节点,同时根据归档数据状态表将其转发给归档节点;本步骤具体包括以下子步骤:
[0048](1.1)访问节点根据用户请求,查询管理服务器,得到用户请求的数据分块在生产集群中的节点位置;
[0049](1.2)根据步骤(1.1)得到的生产集群节点位置,生产集群的节点读取数据分块到节点缓冲区;
[0050](1.3)生产节点查询管理服务器,得到归档数据状态表;根据归档数据状态表,判断用户请求数据分块的归档状态;
[0051](1.4)生产节点发送缓冲区中数据分块;
[0052](1.5)交换机将数据分块发送给访问节点,以相应用户请求,同时,将未被归档的数据分块转发到归档节点,以相应归档请求;
[0053](1.6)判断用户请求是否全部处理完成,若为是,则用户访问结束;若为否,则转到步骤(1.1),继续执行下一个用户请求;
[0054](2)归档节点根据接收到的用户访问数据,更新每个数据节点的数据分块个数,归档节点若接收到当前条带的全部数据分块,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1