基于纠删码的数据恢复控制方法、装置、设备及介质转让专利

申请号 : CN202110560113.7

文献号 : CN113190384B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杜兴

申请人 : 重庆紫光华山智安科技有限公司

摘要 :

本申请提供一种基于纠删码的数据恢复控制方法、装置、设备及介质,该方法包括:根据预设的纠删比存储数据,所述数据包括源数据和校验数据;当磁盘上线时,加载源数据索引信息,待加载完成后,通过源数据加载标识表示源数据索引加载状态;然后,加载校验数据的索引信息,待加载完成后,通过校验数据加载标识表示校验数据索引加载状态;根据所有源数据加载标识和校验数据加载标识,控制数据上报,并优先获取源数据,待源数据处理完毕后,再对校验数据进行处理,完成数据恢复。通过标识区分源数据与校验数据,采用先加载源数据再加载校验数据的方式,加快了文件系统加载过程和服务节点启动过程,减少了异常状况下服务节点的启动时间,提高了响应效率。

权利要求 :

1.一种基于纠删码的数据恢复控制方法,其特征在于,包括:

根据预设的纠删比存储数据,所述数据包括源数据和校验数据;

当磁盘上线时,加载所述源数据索引信息,待加载完成后,通过源数据加载标识表示源数据索引加载状态;然后,加载所述校验数据的索引信息,待加载完成后,通过校验数据加载标识表示校验数据索引加载状态;

根据所有的源数据加载标识和校验数据加载标识,控制数据上报;当检测到磁盘恢复数据时,根据所述源数据加载标识恢复所述磁盘内的源数据,待所述源数据恢复完后,再根据所述校验数据加载标识恢复所述磁盘内的校验数据。

2.根据权利要求1所述的基于纠删码的数据恢复控制方法,其特征在于,所述根据所有的源数据加载标识和校验数据加载标识,控制数据上报的步骤,包括:根据所述源数据加载标识优先上报所述磁盘内的源数据,待所述源数据上报完后,再根据校验数据加载标识上报所述磁盘内的校验数据。

3.根据权利要求1所述的基于纠删码的数据恢复控制方法,其特征在于,所述根据预设的纠删比存储数据的步骤,包括:根据存储对象在相应的磁盘上按照纠删比创建k+m个块文件,k、m均为整数;

根据块文件类型创建对应的源数据块文件或校验数据块文件;

将待写入的数据存储到缓存中,当所述缓存中源数据大小满足预设大小时,通过对所述源数据进行条带化处理,按序将原数据分割成多个条带单元,利用纠删方法计算相应的校验条带单元;

根据块文件名分别将源数据、校验数据按照顺序对应写入相应的条带单元,所述块文件名包含文件名、对象ID与块ID。

4.根据权利要求3所述的基于纠删码的数据恢复控制方法,其特征在于,所述根据块文件类型创建对应的源数据块文件或校验数据块文件的步骤,包括:在所述磁盘的私有文件系统中创建块文件;

如果块文件类型是源数据,从所述磁盘的源数据位图表中寻找空闲块节点,根据空闲块节点和超级块信息计算磁盘上索引与数据块位置,利用所述磁盘上索引与数据块位置创建源数据块文件;

如果块文件类型是校验数据,从所述磁盘的校验数据位图表中寻找空闲块节点,根据空闲块节点和超级块信息计算磁盘上索引与数据块位置,利用所述磁盘上索引与数据块位置创建校验数据块文件。

5.根据权利要求1所述的基于纠删码的数据恢复控制方法,其特征在于,所述当检测到磁盘恢复数据时,根据所述源数据加载标识恢复所述磁盘内的源数据,待所述源数据恢复完后,再根据所述校验数据加载标识恢复所述磁盘内的校验数据的步骤,包括:当监测到磁盘下线时,触发数据节点中的恢复扫描线程与恢复线程;

利用恢复扫描线程查询数据库中掉线磁盘的所有块文件,根据所述块文件的类型将其加入不同恢复链表;

优先恢复源数据块文件恢复链表中待恢复的块文件,直到所有源数据块文件恢复完后,再恢复校验数据块文件恢复链表中待恢复的块文件。

6.根据权利要求5所述的基于纠删码的数据恢复控制方法,其特征在于,所述根据所述块文件的类型将其加入不同恢复链表的步骤,包括:判断所述块文件的类型;如果所述块文件是源数据块文件,则加入源数据块文件恢复链表;如果所述块文件是校验数据块文件,则加入校验数据块文件恢复链表。

7.根据权利要求1所述的基于纠删码的数据恢复控制方法,其特征在于,还包括:当监测到磁盘上线时,加载磁盘上私有文件系统,将磁盘空间结构中的超级块和各个块组中索引区记录的目标或文件数据读取加载至内存中的文件节点管理结构中;

根据加载的所述超级块确定源数据区域与校验数据区域,待依次加载完源数据区域和校验数据区域后置位其对应的标识;

根据所述标识的置位信息扫描源数据与校验数据,将其加入相应的源数据上报队列和校验数据上报队列;

当检测到线程池内有数据上报时,优先处理源数据上报队列,直到源数据上报队列处理完后,再处理校验数据上报队列;

根据上报流量控制上报线程的数量和上报速度。

8.根据权利要求7所述的基于纠删码的数据恢复控制方法,其特征在于,所述根据上报流量控制上报线程的数量和上报速度的步骤,包括:获取当前数据节点上报的业务流量;

如果所述数据节点的上报线程速度超过该数据节点最大流量与业务流量之差时,则减少线程池内上报线程的数量以降低所述节点的上报线程速度;

如果所述数据节点的上报线程速度未超过该数据节点最大流量与业务流量之差时,则增加线程池内上报线程的数量,使上报线程的速度小于数据节点最大流量与业务流量之差。

9.根据权利要求1所述的基于纠删码的数据恢复控制方法,其特征在于,还包括:获取前端业务流量与底层业务流量;

当监测到所述前端业务流量达到预警值时且存在磁盘上线或/和下线时,根据前端业务流量与底层业务流量生成磁盘上线形成的数据上报或/和磁盘下线形成的数据恢复的速度控制指令;

根据所述速度控制指令分别控制磁盘数据上报或/和数据恢复的速度。

10.一种基于纠删码的数据恢复控制装置,其特征在于,包括:数据存储模块,适用于根据预设的纠删比存储数据,所述数据包括源数据和校验数据;

数据加载模块,适用于当磁盘上线时,加载所述源数据索引信息,待加载完成后,通过源数据加载标识表示源数据索引加载状态;然后,加载所述校验数据的索引信息,待加载完成后,通过校验数据加载标识表示校验数据索引加载状态;

数据恢复模块,适用于根据所有的源数据加载标识和校验数据加载标识,控制数据上报,当检测到磁盘恢复数据时,根据所述源数据加载标识恢复所述磁盘内的源数据,待所述源数据恢复完后,再根据所述校验数据加载标识恢复所述磁盘内的校验数据。

11.一种电子设备,其特征在于:包括:

一个或多个处理装置;

存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置实现如1至9中任一所述的基于纠删码的数据恢复控制方法。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序用于使所述计算机执行权利要求1至9中任一所述的基于纠删码的数据恢复控制方法。

说明书 :

基于纠删码的数据恢复控制方法、装置、设备及介质

技术领域

[0001] 本申请涉及数据存储技术领域,特别是涉及一种基于纠删码的数据恢复控制方法、装置、设备及介质。

背景技术

[0002] 当今互联网高速发展,大数据及云技术的普遍应用,存储系统需要处理的数据越来越多。做为数据存储介质的磁盘,经过几次更新换代,单个磁盘可存储数据量更加庞大。但由于存储环境越来越复杂,常常出现掉电或者故障导致的磁盘重新上线。
[0003] 目前为了满足使用少量盘存储更多数据且实现灾备,市场上通常采用纠删方式实现数据灾备。然而,在数据容灾过程中,由于没有考虑磁盘上电时数据上报和磁盘掉电时数据恢复对前端业务的影响,即数据上报和数据恢复会使CPU和内存占用率高升高,最终导致前端业务出现响应超时、数据重传等现象;另外,由于文件系统没有针对纠删特定场景进行适配,磁盘上电时数据数据上报和磁盘下电时数据恢复没有区分源数据与校验数据,造成不必要的纠删计算过程和等待。
[0004] 因此,现有的基于纠删存储系统的磁盘存储方案没有考虑到纠删特性,节点重启或磁盘故障情况下会占用大量系统资源,造成前端业务响应慢,磁盘负载过大的现象。

发明内容

[0005] 鉴于以上所述现有技术的缺点,本申请的目的在于提供一种基于纠删码的数据恢复控制方法、装置、设备及介质,用于解决现有技术中基于纠删码的数据恢复控制过程中,引起的前端业务响应慢,磁盘负载过大的问题。
[0006] 为实现上述目的及其他相关目的,本申请提供一种基于纠删码的数据恢复控制方法,包括:
[0007] 根据预设的纠删比存储数据,所述数据包括源数据和校验数据;
[0008] 当磁盘上线时,加载所述源数据索引信息,待加载完成后,通过源数据加载标识表示源数据索引加载状态;然后,加载所述校验数据的索引信息,待加载完成后,通过校验数据加载标识表示校验数据索引加载状态;
[0009] 根据所有的源数据加载标识和校验数据加载标识,控制数据上报,并优先获取源数据,待源数据处理完毕后,再对校验数据进行处理,完成数据恢复。
[0010] 在本申请的另一目的在于提供一种基于纠删码的数据恢复控制装置,包括:
[0011] 数据存储模块,适用于根据预设的纠删比存储数据,所述数据包括源数据和校验数据;
[0012] 数据加载模块,适用于当磁盘上线时,加载所述源数据索引信息,待加载完成后,通过源数据加载标识表示源数据索引加载状态;然后,加载所述校验数据的索引信息,待加载完成后,通过校验数据加载标识表示校验数据索引加载状态;
[0013] 数据恢复模块,适用于根据所有的源数据加载标识和校验数据加载标识,控制数据上报,并优先获取源数据,待源数据处理完毕后,再对校验数据进行处理,完成数据恢复。
[0014] 在本申请的另一目的在于提供一种电子设备,包括:
[0015] 一个或多个处理装置;
[0016] 存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置执行所述基于纠删码的数据恢复控制方法。
[0017] 在本申请的还一目的在于提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于使所述计算机执行所述基于纠删码的数据恢复控制方法。
[0018] 如上所述,本申请的基于纠删码的数据恢复控制方法、装置、设备及介质,具有以下有益效果:
[0019] 通过利用加载标识区分磁盘内的源数据与校验数据,采用优先加载源数据再加载校验数据的方式,加快了文件系统加载过程和服务节点启动过程,减少了异常状况下服务节点的启动时间,同时,在磁盘下电时,优先恢复源数据再恢复校验数据,减少了前端业务对校验数据的读取与纠删恢复计算的时间,提高了响应效率。

附图说明

[0020] 图1显示为本申请提供的一种基于纠删码的数据恢复控制方法流程图;
[0021] 图2显示为本申请提供的一种基于纠删码的数据恢复控制方法中步骤S3流程图;
[0022] 图3显示为本申请提供的一种基于纠删码的数据恢复控制方法中步骤S1流程图;
[0023] 图4显示为本申请提供的一种基于纠删码的数据恢复控制方法中步骤S2流程图;
[0024] 图5显示为本申请提供的一种基于纠删码的数据恢复控制方法中步骤S321流程图;
[0025] 图6显示为本申请提供的一种基于纠删码的数据恢复控制方法中速度控制流程图;
[0026] 图7显示为本申请提供的一种基于纠删码的数据恢复控制装置结构框图;
[0027] 图8显示为本申请提供的一种纠删存储系统结构图;
[0028] 图9显示为本申请提供的一种基于纠删码的数据恢复控制系统结构框图;
[0029] 图10显示为本申请提供的一种基于纠删码的数据恢复控制系统中磁盘空间结构图;
[0030] 图11显示为本申请一实施例提供的一种电子设备的结构示意图。

具体实施方式

[0031] 以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0032] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,遂图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0033] 现有的对象存储系统多采用分布式架构,各节点分布在不同的服务器上。为了防止数据丢失的同时最大化磁盘利用率,OS(object storage)系统多采用纠删码对数据进行分块、编码,生成一些冗余编码块。如果数据块丢失或被篡改(数量少于冗余编码块),系统可以通过纠删码算法对数据进行恢复。
[0034] 然而,在数据容灾过程中,由于没有考虑磁盘上电时数据上报和磁盘掉电时数据恢复对前端业务的影响,即数据上报和数据恢复会使CPU和内存占用率高升高,最终导致前端业务出现响应超时、数据重传等现象;另外,由于文件系统没有针对纠删特定场景进行适配,磁盘上电时数据数据上报和磁盘下电时数据恢复没有区分源数据与校验数据,造成不必要的纠删计算过程和等待。造成基于纠删存储系统的磁盘存储方案没有考虑到纠删特性,节点重启或磁盘故障情况下会占用大量系统资源,造成前端业务响应慢,磁盘负载过大的现象。
[0035] 请参阅图1,为本申请提供的一种基于纠删码的数据恢复控制方法流程图,包括:
[0036] 步骤S1,根据预设的纠删比存储数据,所述数据包括源数据和校验数据;
[0037] 步骤S2,当磁盘上线时,加载所述源数据索引信息,待加载完成后,通过源数据加载标识表示源数据索引加载状态;然后,加载所述校验数据的索引信息,待加载完成后,通过校验数据加载标识表示校验数据索引加载状态;
[0038] 其中,通过加载标识的加载状态反映源数据与校验数据是否完成加载,同时,数据加载时优先加载源数据,待源数据加载完后,再加载校验数据数据;
[0039] 步骤S3,根据所有的源数据加载标识和校验数据加载标识,控制数据上报,并优先获取源数据,待源数据处理完毕后,再对校验数据进行处理,完成数据恢复。
[0040] 在本实施例中,通过利用加载标识区分磁盘内的源数据与校验数据,采用优先加载源数据再加载校验数据的方式,加快了文件系统加载过程和服务节点启动过程,减少了异常状况下服务节点的启动时间,同时,在磁盘下电时,优先恢复源数据再恢复校验数据,减少了前端业务对校验数据的读取与纠删恢复计算的时间,提高了响应效率。
[0041] 请参阅图2,为本申请提供的一种基于纠删码的数据恢复控制方法中步骤S3的流程图,在上述图1的基础上,还包括:
[0042] 步骤S31,根据所述源数据加载标识优先上报所述磁盘内的源数据,待所述源数据上报完后,再根据校验数据加载标识上报所述磁盘内的校验数据。
[0043] 具体地,磁盘上电上报数据时,系统优先上报各磁盘的源数据,减少该情况下前端读业务先读取到校验数据而进行额外的纠删恢复计算,因为客户端如果读取不到源数据后会去读取校验数据,然而通过校验数据结算得到源数据,增加了流程和复杂度,浪费了系统资源,延长了读取数据的响应时间。
[0044] 在本实施例中,适用于磁盘纠删场景下的磁盘数据管理,通过区分源数据与校验数据,减少磁盘数据上报对前端业务的影响,提升业务的稳定性。
[0045] 步骤S32,当检测到磁盘恢复数据时,根据所述源数据加载标识恢复所述磁盘内的源数据,待所述源数据恢复完后,再根据所述校验数据加载标识恢复所述磁盘内的校验数据。
[0046] 具体地,磁盘恢复数据时,根据所述源数据加载标识恢复所述磁盘内的源数据,待所述源数据恢复完后,校验通过源数据是否完整恢复数据,如果数据恢复完整,则可结束流程;如果数据恢复不完整,则根据所述校验数据加载标识恢复所述磁盘内的校验数据。
[0047] 在本实施例中,适用于磁盘纠删场景下的磁盘数据管理,通过区分源数据与校验数据,优先恢复源数据然后再恢复校验数据,减少前端业务对校验数据的读取和纠删恢复计算,提高响应效率。
[0048] 详见图8,为图1中涉及的纠删存储系统的结构框图,包括客户端、中央存储管理节点(Central Management,CM)、数据节点(Data Node,DN)及其下属磁盘,其中CM可以部署在数据节点或者单独的服务器上,DN下各磁盘初始化为带纠删特性的私有文件系统。
[0049] 详见图9,为基于纠删码的数据恢复控制系统结构框图,包括:
[0050] 客户端下发数据到DN的纠删码(Erasure Code,简称EC)策略模块,纠删码策略模将下发的数据块进行条带化处理,即通过u*k的源数据计算出u*m的校验数据,这里的u指一个条带单元的数据大小,k指源数据条带单元的个数,m指通过纠删方法计算得出的校验数据条带单元个数,其中,u、k、m均为整数。
[0051] 条件判断模块通过监控模块获取所有在线磁盘,从中选取k+m个可用的磁盘。结合选定的磁盘,为k+m个条带单元中的每个数据块在对应磁盘上创建全局唯一的块文件名,k、m均为整数。
[0052] 将k+m个条带单元的数据写入对应的块文件中,写入成功后,将各条带单元的元信息写入CM的数据库中,元信息包含块文件名,每个块文件名对应的数据类型和磁盘id、时间戳。
[0053] 在本实施例中,在分布式对象存储系统中的存储设备中会接收来自管理设备的恢复任务命令,恢复任务命令包括一个或多个待恢复副本的ID,以及每个待恢复副本的目的节点设备的信息;通过纠删码解码,获得每个待恢复副本的数据;最终根据每个待恢复副本的目的节点设备的信息,将每个待恢复副本的数据写入与其对应的目的节点设备中。在节点设备检测到恢复任务时,只需下发一次恢复任务即可实现一个或多个节点的恢复,实现了一次EC解码过程就将所有的丢失副本还原并恢复到指定的一个或多个节点中,减少了不必要的资源浪费,数据恢复的时间也更短,提升了数据安全性。
[0054] 详见图10,为本申请提供的一种基于纠删码的数据恢复控制系统中磁盘空间结构图,包括:
[0055] 地纠删存储系统创建存储池时即确定了纠删比(k:m),这里的存储池是一部分磁盘的集合,该存储池中所有数据都是按照指定(预设的)纠删比存储数据。存储是创建时,磁盘根据确定的纠删比(k:m)进行格式化。
[0056] 文件系统包含保留区、超级块、块组;块组部分按照k:m比列将地址进行划分,前面k份存储源数据,后面m份存储校验数据,每个块组包含索引节点信息和实际的数据块。
[0057] 超级块中除了存储必要的元数据外,还存储了源数据和校验数据的起始块组位置。
[0058] 内存中除了维护文件系统的红黑树等结构外,每个磁盘文件系统还维护两张位图表结构,分别为源数据和校验数据节点使用位图以及各位图当前空闲节点的游标位置,文件系统加载时需要根据磁盘上的源数据和校验数据分别更新对应的位图表结构和当前空闲游标位置。
[0059] 在另一些实施例中,数据上线对应的数据加载(磁盘上线时需要加载每个磁盘的文件系统,该文件系统在内存中额外维护两个加载成功标识,分别为源数据加载标识和校验数据加载标识)。
[0060] 文件系统加载时,根据超级块记录的源数据偏移地址,先加载源数据部分,源数据加载完成后磁盘文件系统即加载成功,并置磁盘文件系统源数据加载标识为真。文件系统加载成功后即可正常访问源数据。
[0061] 校验数据的访问需要判断校验数据加载标识是否置位,如果未加载成功需要等加载完成后才能访问。校验数据等磁盘源数据加载成功后通过后台继续进行校验数据的加载,加载成功后置内存中校验数据加载标识为真。
[0062] 在本实施例中,文件系统先加载源数据在加载校验数据,利用置位信息协助判断加载是否成功,通过利用加载成功的标识,一方面,可提高加载的效率,另一方面,可准确加载相应的数据。
[0063] 请参阅图3,为本申请提供的一种基于纠删码的数据恢复控制方法中步骤S1流程图,包括:
[0064] 步骤S11,根据存储对象在相应的磁盘上按照纠删比创建k+m个块文件,k、m均为整数;
[0065] 步骤S12,根据块文件类型创建对应的源数据块文件或校验数据块文件;
[0066] 其中,在所述磁盘的私有文件系统中创建块文件;
[0067] 如果块文件类型是源数据,从所述磁盘的源数据位图表中寻找空闲块节点,根据空闲块节点和超级块信息计算磁盘上索引与数据块位置,利用所述磁盘上索引与数据块位置创建源数据块文件;
[0068] 如果块文件类型是校验数据,从所述磁盘的校验数据位图表中寻找空闲块节点,根据空闲块节点和超级块信息计算磁盘上索引与数据块位置,利用所述磁盘上索引与数据块位置创建校验数据块文件。
[0069] 例如,文件创建时,如果是源数据,则从源数据位图表中寻找空闲节点,如果是校验数据,则从校验数据位图表中寻找空闲节点。根据文件系统的特性,块数据写之前,先在底层创建预分配大小为64M的文件,即该文件在文件系统中只占用一个数据块。最后更新索引信息并返回创建文件成功分配的数据块信息。文件系统中所有源数据和校验数据的文件处于同一文件层。
[0070] 又例如,块文件名由文件名,对象id,块id组成,一个文件可以分为一到多个对象,而一个对象的大小则为64M*(k+m),对象id则表示文件的第几个对象。小文件需要在客户端聚合成至少满足一个对象的大文件写入,块id范围为1~k+m。
[0071] 又例如,数据写入时根据创建文件时节点的元信息,如果是源数据,结合超级块记录的源数据起始偏移和节点的偏移计算处写入位置,调用系统函数seek(寻找)到偏移位置,再通过write(写入)源数据,最后更新源数据的元数据和内存记录信息;如果是校验数据,结合超级块记录的校验数据起始偏移和节点信息计算写入偏移位置,采用写源数据同样的方法将数据落盘并更新对应元数据和内存。
[0072] 数据读取时根据数据块节点信息计算偏移地址,直接seek到块设备的偏移点,读取对应长度数据即可。
[0073] 步骤S13,将待写入的数据存储到缓存中,当所述缓存中源数据大小满足预设大小时,通过对所述源数据进行条带化处理,按序将源数据分割成多个条带单元,利用纠删方法计算相应的校验条带单元;
[0074] 具体地,纠删方式计算如下:
[0075] 将提取出的m个源数据块按列排列成向量D;
[0076] 假设校验块的数量为k,则需要构造一个维度的分布矩阵B,对矩阵B需要满足:任意m行向量都是相互独逆,故以m*m维的单位矩阵I作为分布矩阵B的前m行,再从范德蒙矩阵中取k行作为分布矩阵B的后k行,从而构成完整的分布矩阵B;
[0077] 将分布矩阵B与向量D相乘:(从乘积结果向量中即可分解得到k个校验块)[0078] 从m个源数据块和k个校验块中任选m个数据块,按列排列成向量,从矩阵B中将所选m个数据块对应的行向量挑出来,组成新矩阵;因为从矩阵B任意m行组成的矩阵都可逆,所以矩阵存在逆矩阵,在等式两边同时左乘矩阵,由此可见,通过任意m个数据块都可解码恢复源数据块。
[0079] 步骤S14,根据块文件名分别将源数据、校验数据按照顺序对应写入相应的条带单元,所述块文件名由文件名,对象id,块id组成。
[0080] 在另一些实施例中,数据存储流程包括:
[0081] 步骤a,利用客户端发送创建文件的请求时,DN监控模块根据每个磁盘的平均流量排序,从流量最小磁盘中选出k+m个可用磁盘。创建文件的第一个对象,对象id为n,预分配大小为64M*(k+m),在选中每个磁盘上创建64M大小的块文件。对象id从1开始递增,当写入数据超出文件大小时,需要继续为文件申请创建新的对象。
[0082] 步骤b,在步骤a中,每个对象前k个盘上的块文件存储源数据,块id分别为1~k,后m个盘上的块文件存储校验数据,块id分别为k+1~k+m。将文件、文件所属的所有块文件名、块文件对应的磁盘id和块文件类型等元信息存入CM的数据库中。
[0083] 步骤c,在选定的每个磁盘私有文件系统中创建块文件,如果块文件类型是源数据,从内存维护的该磁盘的源数据位图表中寻找空闲块节点,根据空空闲块节点和超级块信息计算磁盘上索引与数据块位置;如果块文件类型是校验数据,从内存维护的该磁盘的校验数据位图表中寻找空闲块节点,根据空空闲块节点和超级块信息计算磁盘上索引与数据块位置。
[0084] 步骤d,将块文件名、文件类型、时间戳等相关元信息刷盘,更新对应源数据或者校验数据位图表和对应位图的当前空闲块节点游标。
[0085] 元信息包含块文件名、数据类型、磁盘ID与时间戳,例如,元信息包括但不限于身份标识号、生成的时间节点、大小、类型、所属原大文件信息等;将m+k个数据块的元数据信息写入数据库。
[0086] 步骤e,文件创建成功后,纠删码策略模块将客户端写入的数据存储在临时缓存中,当缓存中的源数据大小满足u*k大小时,将源数据按序分割成k个数据块,通过纠删方法计算得m校验数据块,每个数据块大小都为u。
[0087] 步骤f,步骤e中的k个源数据按顺序写入块id为1~k的k个块文件当中,m个校验数据写入块id分别为k+1~k+m的m个块文件当中,更新块文件对应磁盘上的索引信息。
[0088] 在本实施例中,与通用基于纠删码的存储系统相比,文件系统增加源数据与校验数据标识,减少文件系统加载时间,加快磁盘上线流程,降低服务节点启动耗时,减少服务中断时间;同时,加快了文件系统的加载过程和服务节点的启动过程,减少了异常情况下服务节点的启用时间。
[0089] 请参阅图4,为本申请提供的一种基于纠删码的数据恢复控制方法中步骤S2流程图,包括:
[0090] 步骤S21,当监测到磁盘上线时,加载磁盘上私有文件系统,将磁盘空间结构中的超级块和各个块组中索引区记录的目标或文件数据读取加载至内存中的文件节点管理结构中;
[0091] 步骤S22,根据加载的所述超级块确定源数据区域与校验数据区域,待依次加载完源数据区域和校验数据区域后置位其对应的标识;
[0092] 其中,先加载源数据再加载校验数据,分别生成所述源数据和校验数据各自对应的标识;
[0093] 步骤S23,根据所述标识的置位信息扫描源数据与校验数据,将其加入相应的源数据上报队列和校验数据上报队列;
[0094] 具体地,判断磁盘文件系统中的源数据加载标识是否为真,如果加载标识为真,则扫描源数据并加入源数据上报队列;如果加载标识不为真,则等待加载标识为真时再处理;
[0095] 判断磁盘文件系统中的校验数据加载标识是否为真,如果加载标识为真,则扫描校验数据并加入校验数据上报队列;如果加载标识不为真,则等待加载标识为真时再处理;
[0096] 步骤S24,当检测到线程池内有数据上报时,优先处理源数据上报队列,直到源数据上报队列处理完后,再处理校验数据上报队列(例如,步骤S31);
[0097] 具体地,当检测到线程池内有数据上报时,先处理源数据上报队列,直到源数据上报队列处理完后,再处理校验数据上报队列分别得到上报数据,根据所述上报数据的文件名在数据库查询源信息,如果数据库不存在或上报数据已恢复,则删除磁盘中的上报数据,如果数据库存在该上报数据,则停止恢复该数据块;
[0098] 步骤S25,根据上报流量控制上报线程的数量和上报速度。
[0099] 其中,步骤S25具体包括:
[0100] 获取当前数据节点上报的业务流量;
[0101] 如果所述数据节点的上报线程速度超过该数据节点最大流量与业务流量之差时,则减少线程池内上报线程的数量以降低所述节点的上报线程速度;
[0102] 如果所述数据节点的上报线程速度未超过该数据节点最大流量与业务流量之差时,则增加线程池内上报线程的数量,使上报线程的速度小于数据节点最大流量与业务流量之差。
[0103] 需要说明的是,在大量数据上报情况下,结合整个节点各个磁盘的带宽,自适应控制磁盘上报速度,降低对前端业务的影响,提升业务响应速度。
[0104] 在另一些实施例中,磁盘上线时数据上报的流程包括:
[0105] 步骤(1),磁盘上线时加载磁盘上私有文件系统,将磁盘空间结构中的超级块和各个块组中索引区记录的目录或文件数据读取加载至内存中的文件节点管理结构中。根据加载超级块信息确定源数据区域和校验数据区域。
[0106] 步骤(2),首先加载源数据部分,当源数据部分索引加载完成后,源数据加载标识置为真。然后再加载校验数据部分索引,加载完成后校验数据加载标识置为真。
[0107] 步骤(3),当磁盘上线时,触发为每个磁盘创建一个扫描线程,先判断该磁盘文件系统的源数据加载标识是否为真,如果为真则扫描源数据并加入源数据上报队列。如果不为真则等待该标识置为真后再处理。
[0108] 步骤(4),源数据扫描上报完成后,判断校验数据加载标识是否为真,为真则扫描校验数据并加入校验数上报队列,如果不为真则等待该标识置为真后再处理。
[0109] 步骤(5),DN服务进程中上报数据处理线程池检测到有数据上报时,线程池中的线程优先从源数据上报队列中取数据,根据上报数据的文件名从数据库中查询元信息,数据库中不存或者该上报数据已被系统恢复,则删除上报磁盘中的数据,若存在则停止系统对该数据块的恢复。
[0110] 步骤(6),当源数据上报队列中数据处理完后,线程再从校验数据上报队列中取数据并进行处理,其处理过程同步骤(5)中一致。
[0111] 步骤(7),步骤(5)和(6)中,监控模块获取当前DN业务流量Cflow,假设当前DN能承受的最大流量为Smax。如果上报线程的速度超过(Smax‑Cflow),则线程池逐步减少上报处理线程;如果还有多余空闲资源,则逐步增加上报处理线程,将上报速度控制在(Smax‑Cflow)以下。
[0112] 在本实施例中,实时监控磁盘状态,磁盘上下线先都会触发磁盘状态的更新。DN内存中维护两个上报队列,分别为源数据上报队列和校验数据上报队列,数据上报处理线程优先处理源数据队列数据,源数据队列处理完成后才处理校验数据上报队列。当多个磁盘共同上线时,会分别将上报数据插入对应的上报队列中,减少该情况下前端读业务先读取到校验数据而进行额外的纠删恢复计算,因为客户端如果读取不到源数据后会去读取校验数据,然后再通过校验数据结算得到源数据,增加了流程和复杂度,浪费了系统资源,提高了读数据响应,通过数据上报时先上报源数据后上报校验数据,减少业务读取不到源数据而去读取校验数据并进行纠删处理增加响应时间。
[0113] 请参阅图5,为本申请提供的一种基于纠删码的数据恢复控制方法中步骤S32流程图,包括:
[0114] 步骤S321,当监测到磁盘下线时,触发数据节点中的恢复扫描线程与恢复线程;
[0115] 具体地,数据恢复模块维护两个异常恢复链表,分别为源数据异常恢复链表和校验数据恢复链表。该模块还维护两个工作线程,一个由监控模块触发的扫描线程,一个定时处理恢复链表中数据恢复的恢复线程;
[0116] 步骤S322,利用恢复扫描线程查询数据库中掉线磁盘的所有块文件,根据所述块文件的类型将其加入不同恢复链表;
[0117] 其中,判断所述块文件的类型;如果所述块文件是源数据块文件,则加入源数据块文件恢复链表;如果所述块文件是校验数据块文件,则加入校验数据块文件恢复链表;
[0118] 具体地,磁盘下线时,监控模块触发恢复模块的扫描线程从数据库中查找掉线磁盘上的所有元数据,将其中的源数据块文件加入源数据异常恢复链表,校验数据块文件加入校验数据恢复链表;
[0119] 步骤S323,优先恢复源数据块文件恢复链表中待恢复的块文件,直到所有源数据块文件恢复完后,再恢复校验数据块文件恢复链表中待恢复的块文件。
[0120] 具体地,恢复模块的恢复线程首先遍历并恢复源数据异常恢复链表的数据,然后再遍历并恢复校验数据异常恢复链表的数据。
[0121] 在另一些实施例中,磁盘下线恢复流程包括:
[0122] 步骤(a),监控模块发现磁盘下线时,触发DN服务进程中恢复扫描线程和恢复线程工作,恢复扫描线程从数据库中查询该掉线磁盘上的所有块文件,根据文件类型加入不同的恢复链表。
[0123] 步骤(b),判定块文件类型,如果是源数据块文件,则加入源数据块文件恢复链表,如果是校验数据块文件,则加入校验块文件恢复链表。
[0124] 步骤(c),恢复线优先从源数据块文件恢复链表中取处待恢复的块文件进行恢复,待所有源数据块文件恢复完成后,再从校验块文件恢复链表中取处文件名并进行恢复。
[0125] 在本实施例中,磁盘下线后,查询数据库中该磁盘的所有数据块,通常情况下所有块数据按顺序恢复,其中就包含校验块的数据,而本实施例中,磁盘下电时优先恢复源数据然后再恢复校验数据,减少前端业务对校验数据的读取和纠删恢复计算,提高响应效率。
[0126] 在另一实施例中,请参阅图6,为本申请提供的一种基于纠删码的数据恢复控制方法中速度控制流程图;尤其在图1或图2的基础上,还包括:
[0127] 步骤S41,获取前端业务流量与底层业务流量;
[0128] 步骤S42,当监测到前端业务流量达到预警值时且存在磁盘上线或/和下线时,根据前端业务流量与底层业务流量生成磁盘上线形成的数据上报或/和磁盘下线形成的数据恢复的速度控制指令;
[0129] 步骤S43,根据所述速度控制指令分别控制磁盘数据上报或/和数据恢复的速度。
[0130] 其中,数据负载速率控制包括数据上线数据上报的速度控制与磁盘下线后数据恢复速度控制,具体地,监控模块包含第一监控单元和第二监控单元,第一监控单元监控前端业务流量,第二监控单元监控底层业务流量。判断单元设置阈值,当前端业务流量压力大时,且有磁盘上下线时,控制磁盘上下电后的数据恢复和上报速度,防止对前端业务造成太大影响。假设系统承受的流量上线为Smax,前端业务流量为Cmax,执行单元控制磁盘上下线的上报和恢复速度则应该控制在Smax‑Cmax以下。
[0131] 由于用户对读具有实时性需求,其响应越块越好,而且数据读具有时间和空间的局部性,判断单元在写数据进行选磁盘时,根据每个磁盘的读流量进行排序,选择读流量最少且存在可用空间的k+m个盘进行写数据。
[0132] 在本实施例中,存储节点启动时无前端业务,则不需要进行流量控制,此时所有磁盘都会进行文件系统加载与数据上报工作,待文件系统加载完成后将数据上报工作放在后台进行,不阻塞服务进程启动。监控并实时更新磁盘在线状态,实时检测业务吞吐量,通过自适应控制数据上报和恢复速度,防止底层数据业务占用系统资源过大导致前端业务受到影响,提高系统性能。
[0133] 请参阅图7,为本申请提供的一种基于纠删码的数据恢复控制装置结构框图,包括:
[0134] 数据存储模块1,适用于根据预设的纠删比存储数据,所述数据包括源数据和校验数据;
[0135] 数据加载模块2,适用于当磁盘上线时,加载所述源数据索引信息,待加载完成后,通过源数据加载标识表示源数据索引加载状态;然后,加载所述校验数据的索引信息,待加载完成后,通过校验数据加载标识表示校验数据索引加载状态;
[0136] 数据恢复模块3,适用于根据所有的源数据加载标识和校验数据加载标识,控制数据上报,并优先获取源数据,待源数据处理完毕后,再对校验数据进行处理,完成数据恢复。
[0137] 在上述基础上,还包括:
[0138] 数据上报单元,适用于根据所述源数据加载标识优先上报所述磁盘内的源数据,待所述源数据上报完后,再根据校验数据加载标识上报所述磁盘内的校验数据。
[0139] 数据恢复单元,适用于当检测到磁盘恢复数据时,根据所述源数据加载标识恢复所述磁盘内的源数据,待所述源数据恢复完后,再根据所述校验数据加载标识恢复所述磁盘内的校验数据。
[0140] 在上述基础上,还包括:
[0141] 速度控制模块,适用于当监测到所述前端业务流量达到预警值时且存在磁盘上线或/和下线时,根据前端业务流量与底层业务流量生成磁盘上线形成的数据上报或/和磁盘下线形成的数据恢复的速度控制指令;根据所述速度控制指令分别控制磁盘数据上报或/和数据恢复的速度。
[0142] 该速度控制模块包括第一监控单元、第二监控单元、判断单元与执行单元,所述第一监控单元,用于监控前端业务流量;所述第二监控单元,用于监控底层业务流量;判断单元,用于当监测到前端业务流量大且存在磁盘上线或下线时,生成磁盘在上线或下线后的数据恢复和数据上报各自对应速度的控制指令;执行单元,用于根据所述控制指令控制磁盘在上线或下线后的数据恢复和数据上报各自对应速度。
[0143] 其中,需要说明的是,基于纠删码的数据恢复控制装置为服务器或数据节点设备;
[0144] 其中,还需要说明的是,基于纠删码的数据恢复控制装置与基于纠删码的数据恢复控制方法为一一对应的关系,在此,各个模块/单元与上述流程步骤所涉及的技术细节与技术效果均相同,在此不用一一赘述,请参照上述基于纠删码的数据恢复控制方法。
[0145] 下面参考图11,其示出了适于用来实现本公开实施例的电子设备(例如电子设备设备或服务器600的结构示意图。本公开实施例中的电子设备设备可以包括但不限于诸如手机、平板电脑、膝上型电脑、台式电脑、电脑一体机、服务器、工作站、电视、机顶盒、智能眼镜、智能手表、数码相机、MP4播放器、MP5播放器、学习机、点读机、电纸书、电子词典、车载终端、虚拟现实(VirtualReality,VR)播放器或增强现实(Augmented Reality,AR)播放器等的固定器。图11示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0146] 如图11所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有电子设备
600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM603通过总线604彼此相连。
输入/输出(I/O)接口605也连接至总线604。
[0147] 通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图11示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
[0148] 特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能
[0149] 需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
[0150] 上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
[0151] 上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备参照上述基于纠删码的数据恢复控制方法。
[0152] 可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0153] 附图中的流程图和框图,图示了按照本公开各种实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0154] 综上所述,通过利用加载标识区分磁盘内的源数据与校验数据,采用优先加载源数据再加载校验数据的方式,加快了文件系统加载过程和服务节点启动过程,减少了异常状况下服务节点的启动时间,同时,在磁盘下电时,优先恢复源数据再恢复校验数据,减少了前端业务对校验数据的读取与纠删恢复计算的时间,提高了响应效率。
[0155] 上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。