数据块访问方法及装置、存储介质与流程

文档序号:21081349发布日期:2020-06-12 16:33阅读:307来源:国知局
数据块访问方法及装置、存储介质与流程

本公开涉及一种数据存储技术领域,尤其涉及一种数据访问方法及装置、存储介质。



背景技术:

在分布式文件系统中,会有元数据服务器、数据服务器以及客户端。通常的读写流程是客户(client)端先向元数据服务器发起元数据查询,元数据服务器返回数据服务器地址列表给客户端。客户端向这些数据服务器发起真正的数据读写操作。

为了实现数据的高可用,分布式文件系统的数据一般有多个副本存储在个元数据服务器上。写操作会将数据写到所有的包含副本的存储节点上,读操作会从包含数据副本的节点中选择一个做读操作。在读操作中,为了提高性能,每个文件打开的时候会将该文件所有数据块的存储节点(即数据服务器)的节点信息从元数据服务器获取并缓存,这样不需要频繁和元数据服务器交互。

但是在相关技术中发现,会时常出现数据块读取延时大或者成功率低的现象。



技术实现要素:

本公开提供一种数据访问方法及装置、存储介质。

本公开第一方面提供一种数据块访问方法,包括:

确定待访问的目标数据块的存储节点;

根据故障标识信息,确定故障节点;

从所述故障节点以外的所述存储节点上访问所述目标数据块。

基于上述方案,所述故障标识信息包括:包含故障节点的节点标识的故障节点列表;

所述根据故障信息,确定故障节点,包括:

根据所述故障节点列表,确定所述故障节点。

基于上述方案,所述方法还包括:

获取所述故障节点的修复状况信息;

当根据所述修复状况信息,将故障已排除的所述存储节点的节点标识从所述故障标识信息中删除。

基于上述方案,所述方法还包括:

获取文件系统中各存储节点的节点状态信息;

根据所述节点状态信息,生成标识所述故障节点的故障标识信息。

基于上述方案,所述获取文件系统中各存储节点的节点状态信息,包括:

获取所述文件系统中各所述存储节点的文件访问信息;

所述根据所述节点状态信息,生成标识所述故障节点的故障标识信息,包括:

当在一个所述存储节点上访问一个或多个文件的数据块失败时,确定对应的所述存储节点为所述故障节点。

本申请实施例第二方面提供一种数据块访问装置,包括:

第一确定模块,用于确定待访问的目标数据块的存储节点;

第二确定模块,用于根据故障标识信息,确定故障节点;

访问模块,用于从所述故障节点以外的所述存储节点上访问所述目标数据块。

基于上述方案,所述装置还包括:

所述故障标识信息包括:包含故障节点的节点标识的故障节点列表;

所述第二确定模块,用于根据所述故障节点列表,确定所述故障节点。

基于上述方案,所述装置还包括:

第一获取模块,用于获取所述故障节点的修复状况信息;

更新模块,用于当根据所述修复状况信息,将故障已排除的所述存储节点的节点标识从所述故障标识信息中删除。

基于上述方案,所述装置还包括:

第二获取模块,用于获取文件系统中各存储节点的节点状态信息;

生成模块,用于根据所述节点状态信息,生成标识所述故障节点的故障标识信息。

基于上述方案,所述第二获取模块,用于获取所述文件系统中各所述存储节点的文件访问信息;

所述生成模块,具体用于当在一个所述存储节点上访问一个或多个文件的数据块失败时,确定对应的所述存储节点为所述故障节点。

本公开实施例第三方面提供一种数据块访问装置,包括处理器、存储器及存储在存储器上并能够有所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行前述第一方面数据块访问方法的步骤。

本公开实施例第四方面提供一种存储介质,其上存储由可执行程序,所述可执行程序被处理器执行时实现前述第一方面数据块访问方法的步骤。

本公开的实施例提供的技术方案可以包括以下有益效果:在确定出待访问的目标数据块的存储节点;根据故障标识信息,确定故障节点;从所述故障节点以外的所述存储节点上访问所述目标数据块。如此,相对于单纯以单个文件为故障标注粒度,会以整个存储节点为故障标注粒度,如此,在一旦发现一个存储节点故障,后续的任意文件的所有数据块访问都会优先避开该故障节点,访问其他正常的存储节点实现数据读取,降低数据读取时延,提升数据读取速率。故在本申请实施例中,减少了一个节点整个故障,在后续文件访问时依然从该故障节点上请求访问造成的访问延时大及访问成功率低的现象,提升了访问成功率及访问速率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种数据块访问方法的流程图。

图2是根据一示例性实施例示出的一种数据块访问方法的流程图。

图3是根据一示例性实施例示出的一种数据块访问方法的流程图。

图4是根据一示例性实施例示出的一种数据块访问方法的流程图。

图5是根据一示例性实施例示出的一种网址数据块访问装置的结构框图。

图6是根据一示例性实施例示出的一种网址数据块访问装置的结构框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在图1中,是客户端需要访问文件3中各数据块的过程。首先,获取文件3各个数据块所在节点列表并缓存。如图1所示,文件3有一个数据块,该数据块的副本在数据存储节点b、存储节点c及存储节点e上。

图1是一个分布式文件系统中访问文件3第1个数据块上的示意过程,可包括:

1:客户端访问元数据服务器;

2:元数据服务器向客户端返回客户端请求访问的数据块的地址列表告知客户端。

3:客户端根据元数据服务器从数据服务器b(即存储节点b)上请求访问文件3的各个数据块;

4:数据服务器b将客户端请求访问的数据块返回给客户端。

客户端在为读取操作打开文件的时候,会把该文件各个数据块所对应的数据节点列表获取并且缓存起来,如果某个节点故障了,则在访问该节点时数据返回会超时或者返回其他错误信息。此时,客户端会选择另一个包含该副本的另一个存储节点。但是这种故障的记录都是以一个文件为粒度的,而非是整个故障节点。

如图2所示,本实施例提供一种数据块访问方法,包括:

s11:确定待访问的目标数据块的存储节点;

s12:根据故障标识信息,确定故障节点;

s13:从故障节点以外的存储节点上访问目标数据块。

本实施例提供的数据块访问方法可应用于分布式文件系统中。例如,该数据块访问方法可应用于分布式文件系统的客户端上。在该客户端上存储有全局故障节点的故障标识信息。如此,客户端在访问目标数据块之前,先确定该目标数据块在哪些存储节点上有存储副本。

在一些实施例中,s11可包括:访问分布式文件系统的元数据服务器,从元数据服务器接收到包含存储有目标数据块的节点列表,从而通过读取节点列表,确定待访问的目标数据块的存储节点。

在s12中会获取到故障标识信息,例如,从元数据服务器接收到故障标识信息,并确定出当前分布式文件系统中包含哪些故障节点。

在s13中,可比比对目标数据块所在的存储节点是否包含有故障节点,若目标数据块的存储节点不包含故障节点,可以在任意一个存储节点上读取目标数据块。若目标数据块的存储节点包含故障节点,则在剔除了故障节点以外的存储节点上读取目标数据块。

一般在分布式文件系统中,一个数据块将会在多个存储节点上存储有多个副本,以供分布式访问和系统稳定性维护。

同时还会确定当前分布式系统中有哪些存储节点是处于失效状态的故障节点。此处的失效状态为:不能够被读取数据的状态,例如,存储节点宕机了,存储节点的网络断开了,或者,存储节点出现了系统故障,这些都会导致存储节点整个失效。如此,存在该存储接上的所有数据块的访问都会失败。

有鉴于此,为了减少对故障节点的数据访问,在本申请实施例中会生成有全局的故障标识信息。该全局的故障标识信息是会广播分发给分布式文件系统的客户端的。

如此,确定出故障节点之后,从正常的存储节点上读取目标数据,如此,显然可以一方面提升目标数据的读取成功率,另一方面,可以大大的降低目标数据块的访问延时。

例如,如图3所示的分布式文件系统中仅建立以单个问价为粒度的故障文件。若存储节点(以下简称节点)b故障。客户端在访问文件1数据块2时发现访问失败,标注文件1的访问失败的节点b,但是这种标注是以文件1为粒度,并不认为是整个节点b故障。终端继续访问文件4的数据块,但是由于之前故故障信息是以文件为粒度的故障文件,是标注了文件1在节点b上的古战,此时,由于分布式系统的负载均衡或者就近访问等原因,终端再次访问节点b上的文件4的数据块,文件4的数据块访问失败。如此,一方面导致文件4的访问失败率高及延时大的现象。终端继续进行文件访问,在访问文件2时再次访问故障的节点b,文件2再次访问失败,然后标注文件2的故障信息。

而采用本申请实施例的方法可如图4所示。在终端确定出文件1的数据块访问过程中,从节点b上读取失败,就会生成以节点为粒度的故障标识信息,标注的是整个节点b故障。则终端在后续访问文件4及文件2的数据块时,避开节点b,游侠从节点a、节点c或节点d上访问文件4及文件2的数据块,从而减少文件4和文件2的访问延时和并降低访问失败率。

所述故障标识信息包括:包含故障节点的节点标识的故障节点列表;

s12可包括:根据故障节点列表,确定故障节点。

在一些实施例中,故障节点的节点标识将以列表的形式存储,形成全局故障列表。

如此,在s11中确定出存储有目标数据块的存储节点的节点标识之后,将确定的节点标识与故障节点列表中的节点标识进行匹配,若将匹配成功的节点标识去除。在s13中将从去除了匹配成功的节点标识中选择一个或多个作为访问目标数据块的目标节点,向目标节点发送访问请求,以提高数据块的访问成功率和访问速率。

在一些实施例中,方法还包括:

获取故障节点的修复状况信息;

当根据修复状况信息,将故障已排除的存储节点的节点标识从故障标识信息中删除。

若一个存储节点被认定为故障节点,分布式文件系统会试图对故障节点进行故障排除,实现存储节点的修复。

例如,重启故障节点,以排除故障节点可修复性系统故障或者宕机导致的故障。再例如,进行故障节点的网络重连接,以排除故障节点的网络故障。

根据修复状况信息,及时将故障已排除的节点的接地标识从故障标识信息排除,以方便后续正常访问对应的存储节点,实现分布式文件系统中各个节点的有效利用率,减少资源浪费。

在一些实施例中会周期性获取故障节点的修复状况信息。例如,周期性向故障节点发送探测数据包,若接收到基于探测数据包返回响应数据包,则可以根据响应数据包确定该节点的故障是否排除。例如,在预定时间内成功接收到响应数据包,可认为该节点的故障已排除。

在一些实施例中,获取故障节点的修复状况信息,可包括:

接收各存储节点的心跳信号,

此时,故障节点的心跳信号的接收状况即为修复状况信息的一种。例如,成功接收到故障节点的心跳信号,可认为故障已排除。

在一些实施例中,方法还包括:

获取文件系统中各存储节点的节点状态信息;

根据节点状态信息,生成标识故障节点的故障标识信息。

该节点状况信息可包括:

存储节点的运行状况信息,例如,存储节点广播的自身运行状态信息和/或心跳信号等。再例如,运行状况信息还可包括:文件访问状态信息。例如,是否出现了文件访问失败,或者,文件访问失败的个数等信息。

例如,根据文件访问状况信息,确定出某一个节点上出现一个或多个文件访问超时,确定对应的存储节点为故障节点。

再例如,根据文件访问状况信息,确定出某一个节点上出现一个或多个文件访问返回访问错误的提示消息或者返回乱码文件等访问错误时,确定对应的存储节点为故障节点。

在一些实施例中,获取文件系统中各存储节点的节点状态信息,包括:

获取文件系统中各存储节点的文件访问信息;

s10可包括:当在一个存储节点上访问一个或多个文件的数据块失败时,确定对应的存储节点为故障节点。

例如,在一些实施例中,本申请实施例提供过得文件分布式系统中还维护有文件粒度的故障信息,例如,在一个时刻一个节点上出现小于预定个数的文件访问失败,则可认为被访问的文件被损坏,从而生成文件粒度的故障信息。若在一个时刻一个节点上大于或等于预定个数的文件访问失败,则可认为节点故障,则生成节点粒度的故障信息。例如,各终端之间可以交互文件访问失败的信息,然后根据文件访问的统计信息,确定是文件损坏故障还是整个节点故障。通常在一个节点一个时候出现多个文件访问失败,可认为节点故障,否则可认为是单个文件的存储故障。

在一些实施例中,分布式文件系统的元数据服务器上会存储有故障标识信息,并在向客户端下发存储列表时,同步告知客户端。

如图5所示,本实施例提供一种数据块访问装置,包括:

第一确定模块51,用于确定待访问的目标数据块的存储节点;

第二确定模块52,用于根据故障标识信息,确定故障节点;

访问模块53,用于从故障节点以外的存储节点上访问目标数据块。

在一些实施例中,第一确定模块51、第二确定模块52及访问模块53可均为程序模块;程序模块被处理器执行后,能够确定出存储节点、故障节点,并从故障节点以外的存储节点上访问目标数据块。

在另一些实施例中,第一确定模块51、第二确定模块52及访问模块53可均为软硬结合模块;软硬结合模块;软硬结合模块可包括:各种可编程阵列;可编程阵列包括但不限于:复杂可编程阵列或现场可编程阵列。

在还有一些实施例中,第一确定模块51、第二确定模块52及访问模块53可均为软硬结合模块;纯硬件模块;纯硬件模块可包括:专用集成电路。

在一些实施例中,装置还包括:

故障标识信息包括:包含故障节点的节点标识的故障节点列表;

第二确定模块52,用于根据故障节点列表,确定故障节点。

在一些实施例中,装置还包括:

第一获取模块,用于获取故障节点的修复状况信息;

更新模块,用于当根据修复状况信息,将故障已排除的存储节点的节点标识从故障标识信息中删除。

在一些实施例中,装置还包括:

第二获取模块,用于获取文件系统中各存储节点的节点状态信息;

生成模块,用于根据节点状态信息,生成标识故障节点的故障标识信息。

在一些实施例中,第二获取模块,用于获取文件系统中各存储节点的文件访问信息;

生成模块,具体用于当在一个存储节点上访问一个或多个文件的数据块失败时,确定对应的存储节点为故障节点。

以下结合上述任一实施例提供几个具体示例:

示例1:

本示例一种全局故障节点的检测机制。当一个文件的读操作检测到一个故障节点的时候,会把这个故障节点添加到一个全局故障节点列表中,当另一个文件的读操作试图访问这个数据节点的时候会检测它是否在全局故障节点列表中,如果在这里头则它会直接切换到另一个节点。为了减少暂时故障的影响(比如网络抖动或者数据节点重启维护等),对于全局故障列表里头的每个节点都会探测它们的存活情况,如果发现节点又变成活动状态则把它从故障节点里头剔除。对每个故障节点的检测周期随着检测次数的增大而增大,这样可以避免对真实故障节点的频繁检测而浪费系统资源。

此处的全局故障列表即为故障标识信息的一种。

示例2:

如果多个文件的数据块在同一个节点上有副本,当该节点故障后,对每个文件的访问都会重复尝试从失败节点上获取数据,失败后各自把该节点标记为故障节点。这使得每个包含该失败节点的文件数据访问的延迟增大。

在本示例中,会在客户端建立一个全局故障节点列表,而不是每个文件单独建立。在每次访问数据块之前,会在全局数据列表里头查找,如果发现待访问节点在该列表中,则跳过该节点,选择数据块副本中的另外一个节点。通过这种方式,一个文件访问某节点发现该节点故障后,其他文件的数据访问将会避开该节点,这样就能提高其他文件访问的性能,降低数据获取的延迟。

在图1的情况中,假定客户端访问文件1、文件2及文件4,并假设某个时间点节点b故障。如图3是传统实现中经过一段时间后客户端缓存(cache)中的情况。而如图4则为本示例方法中采用全局坏节点列表情况后,客户端信息情况。

在本示例的实现中,为了应对坏节点修复的情况(比如节点重启恢复),会有一个后台线程扫描坏节点列表,并访问坏节点以判断坏节点是否修复,如果探测发现坏节点已修复,则会将该节点从坏节点列表中删除,如此,能防止在有数据节点故障的情况下,访问不同文件的数据时反复尝试使用故障节点。

本公开实施例提供一种数据块访问装置,包括处理器、存储器及存储在存储器上并能够有处理器运行的可执行程序,处理器运行可执行程序时执行如前述任意技术方案提供的数据块访问方法。例如,图6是根据一示例性实施例示出的一种数据块访问装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图6,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电力组件806,多媒体组件808,音频组件810,输入/输出(i/o)的接口812,传感器组件814,以及通信组件816。

处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。

存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

电力组件806为装置800的各种组件提供电力。电力组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。

多媒体组件808包括在装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。

i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

在示例性实施例中,装置800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本公开实施例还提供一种非临时性计算机可读存储介质,该非临时性计算机可读存储介质可简称为存储介质。该非临时性计算机可读存储介质上存储由可执行程序。当存储介质中的指令由移动终端的处理器执行时,使得终端能够执行一种数据块访问方法,方法包括:

确定待访问的目标数据块的存储节点;

根据故障标识信息,确定故障节点;

从故障节点以外的存储节点上访问目标数据块。

在一些实施例中,故障标识信息包括:包含故障节点的节点标识的故障节点列表;

根据故障信息,确定故障节点,包括:

根据故障节点列表,确定故障节点。

在一些实施例中,方法还包括:

获取故障节点的修复状况信息;

当根据修复状况信息,将故障已排除的存储节点的节点标识从故障标识信息中删除。

在一些实施例中,方法还包括:

获取文件系统中各存储节点的节点状态信息;

根据节点状态信息,生成标识故障节点的故障标识信息。

在一些实施例中,获取文件系统中各存储节点的节点状态信息,包括:

获取文件系统中各存储节点的文件访问信息;

根据节点状态信息,生成标识故障节点的故障标识信息,包括:

当在一个存储节点上访问一个或多个文件的数据块失败时,确定对应的存储节点为故障节点。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

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