一种基于纠删码的数据读取方法、装置、设备与流程

文档序号:13512878阅读:236来源:国知局
一种基于纠删码的数据读取方法、装置、设备与流程

本发明涉及数据存储技术领域,特别是涉及一种基于纠删码的数据读取方法、装置、设备和计算机可读存储介质。



背景技术:

纠删码(erasurecoding,ec)是一种数据保护方法,它将一定长度(stripe_width)的数据分割成k份,用k份数据通过算法计算出m份冗余数据块;并将这k+m份数据存储在不同的位置,比如磁盘、存储节点或者其它地理位置。只需要k+m份中的k份数据就可以恢复出源数据。纠删码与副本相比在保障数据安全的情况下,可以提高磁盘有效利用率;所以纠删码技术在分布式存储系统中得到广泛应用。

传统方式中,纠删码的数据读写都是以纠删条带长度(stripe_width)为基本单元的,即使是读取一个字节的长度的内容,它也是读取这个字节所在的整个条带的内容;然后抽取出所需的数据。有可能所需的数据分布在一个硬盘上,但由于现有以整条纠删条带为基本操作单元实现的机制需要从k个硬盘上读取数据。但所需读取的数据小于一个完整的纠删码条带时可能会产生一些无用的读操作,在集群压力较大时这些无用的操作将成为影响整个集群性能的瓶颈点,造成存储集群的性能较低。

可见,如何提高存储系统的小文件读性能,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种基于纠删码的数据读取方法、装置、设备和计算机可读存储介质,可以提高存储系统的小文件读性能。

为解决上述技术问题,本发明实施例提供一种基于纠删码的数据读取方法,包括:

接收客户端发送的读操作请求;

依据所述读操作请求中携带的偏移量和长度,判断所需读取的数据是否满足预设的读优化条件;

若是,则依据所述偏移量和长度,确定出所述数据对应的硬盘;并计算出每个所述硬盘中对象文件的目标偏移量和目标长度;

依据所述目标偏移量和目标长度,向每个所述硬盘发送对应的读取命令,获取到对应的子数据;

根据纠删码数据分布规则,拼接所述子数据,构成一个完整的目标数据,并将所述目标数据封装成消息发送至所述客户端。

可选的,所述依据所述读操作请求中携带的偏移量和长度,判断所需读取的数据是否满足预设的读优化条件包括:

判断所需读取的数据是否小于纠删条带长度;

若是,则依据所述读操作请求中携带的偏移量和长度,判断所述数据所分布的硬盘个数是否小于源数据所分布的硬盘个数,并且所述数据所分布的硬盘是否正常运行。

本发明实施例还提供了一种基于纠删码的数据读取装置,包括接收单元、判断单元、确定单元、发送单元和拼接单元;

所述接收单元,用于接收客户端发送的读操作请求;

所述判断单元,用于依据所述读操作请求中携带的偏移量和长度,判断所需读取的数据是否满足预设的读优化条件;

若是,则触发所述确定单元,所述确定单元,用于依据所述偏移量和长度,确定出所述数据对应的硬盘,并计算出每个所述硬盘中对象文件的目标偏移量和目标长度;

所述发送单元,用于依据所述目标偏移量和目标长度,向每个所述硬盘发送对应的读取命令,获取到对应的子数据;

所述拼接单元,用于根据纠删码数据分布规则,拼接所述子数据,构成一个完整的目标数据,并触发所述发送单元,所述发送单元还用于将所述目标数据封装成消息发送至所述客户端。

可选的,所述判断单元具体用于判断所需读取的数据是否小于纠删条带长度;若是,则依据所述读操作请求中携带的偏移量和长度,判断所述数据所分布的硬盘个数是否小于源数据所分布的硬盘个数,并且所述数据所分布的硬盘是否正常运行。

本发明实施例还提供了一种基于纠删码的数据读取设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如权上述基于纠删码的数据读取方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述基于纠删码的数据读取方法的步骤。

由上述技术方案可以看出,接收客户端发送的读操作请求;依据读操作请求中携带的偏移量和长度,判断所需读取的数据是否满足预设的读优化条件;当满足该预设的读优化条件时,则说明所需读取的数据属于小文件数据,为了避免无用的读操作,可以依据偏移量和长度,确定出所述数据对应的硬盘,并计算出每个所述硬盘中对象文件的目标偏移量和目标长度,然后向所述硬盘发送对应的读取命令,获取到对应的子数据;根据纠删码数据分布规则,拼接所述子数据,构成一个完整的目标数据,并将所述目标数据发送至所述客户端。通过上述判断步骤以及确定所需读取的数据所在的硬盘,打破了原有的以纠删条带长度为基本操作单元的思想,减少了无效数据所在硬盘的读取和通讯耗时,从而提高了海量存储系统的小文件读性能。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种基于纠删码的数据读取方法的流程图;

图2为本发明实施例提供的一种基于纠删码的数据读取装置的结构示意图;

图3为本发明实施例提供的一种基于纠删码的数据读取设备的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种基于纠删码的数据读取方法。图1为本发明实施例提供的一种基于纠删码的数据读取方法的流程图,该方法包括:

s101:接收客户端发送的读操作请求。

读操作请求中携带有所需读取的数据的相关信息,如偏移量和长度等。

s102:依据所述读操作请求中携带的偏移量和长度,判断所需读取的数据是否满足预设的读优化条件。

当所需读取的数据小于一个完整的纠删条带长度时,可能会产生一些无用的读操作,在本发明实施例中,为了减少无用的读操作,可以在读取数据之前,先对所需读取的数据进行优化判断。当所需读取的数据满足预设的读优化条件时,则说明需要对数据的读取进行优化,从而减少无用的读操作,即执行s103。

需要说明的是,在本发明实施例中,对于数据存储的位置不做具体限定,可以存储于硬盘、存储节点或其它地理位置,为介绍方便,均以存储于硬盘上为例展开说明。

读优化条件可以是用于判别所需读取的数据是否为一个完整的源数据的条件。具体的,可以先判断所需读取的数据是否小于纠删条带长度。

当所需读取的数据不小于纠删条带长度时,则说明用户所需的数据可能是完整的源数据,此时按照现有的以整条纠删条带为基本操作单元读取数据即可。当所需读取的数据小于纠删条带长度时,则说明用户所需的数据并非是源数据,而是其中的部分数据,此时可以依据所述读操作请求中携带的偏移量和长度,判断所述数据所分布的硬盘个数是否小于源数据所分布的硬盘个数,并且所述数据所分布的硬盘是否正常运行。

在本发明实施例中,数据分布在哪些硬盘上,则可以将这些硬盘称作数据所分布的硬盘。例如,将源数据划分成4份数据,每份数据存储在对应的一个硬盘上,则源数据所分布的硬盘个数为4个。

判断硬盘是否正常运行,是为了保证可以从该硬盘中顺利读取数据,当硬盘出现故障时,无法送该硬盘中读取数据,此时仍可以按照现有的以整条纠删条带为基本操作单元读取数据即可。

当数据所分布的硬盘个数小于源数据所分布的硬盘个数,并且数据所分布的硬盘均能正常运行,则可以对数据的读取过程进行优化,即执行s103。

s103:依据所述偏移量和长度,确定出所述数据对应的硬盘,并计算出每个所述硬盘中对象文件的目标偏移量和目标长度。

依据纠删码原则,将源数据划分成多个数据块后,存储每个数据块的文件可以称作对象文件。为了确定出需要从对象文件中读取哪些数据,需要计算出对象文件的目标偏移量和目标长度。

例如,将大小为4kb的源数据划分成4份数据,每份数据存储在对应的一个硬盘上,其中,硬盘1中存储有第(0kb,1kb]的数据,硬盘2中存储有第(1kb,2kb]的数据,硬盘3中存储有第(2kb,3kb]的数据,硬盘4中存储有第(3kb,4kb]的数据。当所需读取的数据偏移量为0.5kb,长度为2kb,偏移量0.5kb属于硬盘1的范围,则可知该数据需要从硬盘1中读取,由于每个硬盘中对象文件长度为1kb,根据所需读取的数据长度为2kb,则还需要从硬盘2中读取1kb的数据,从硬盘3中读取0.5kb的数据,该数据对应的硬盘为硬盘1、硬盘2和硬盘3。其中,硬盘1中对象文件的目标偏移量为0.5kb、由于硬盘1中对象文件的总长度为1kb,总长度减去偏移量得到对应的目标长度为0.5kb;硬盘2中对象文件的目标偏移量为0kb、目标长度为1kb;硬盘3中对象文件的目标偏移量为0kb、由于数据长度为2kb,已经从硬盘1和硬盘2中获取到了1.5kb的数据,所以从硬盘3中只需获取0.5kb数据即可,此时,硬盘3中对象文件的目标长度为0.5kb。

s104:依据所述目标偏移量和目标长度,向每个所述硬盘发送对应的读取命令,获取到对应的子数据。

在本发明实施例中,可以将每个硬盘中获取的数据称作子数据。

依据每个硬盘中对象文件的目标偏移量和目标长度,可以获知需要从该目标文件中获取哪些数据。例如,硬盘1中大小为1kb的对象文件的目标偏移量为0.5kb、目标长度为0.5kb,则可以获知需要从对象文件中获取第[0.5kb,1kb]的数据。

s105:根据纠删码数据分布规则,拼接所述子数据,构成一个完整的目标数据,并将所述目标数据封装成消息发送至所述客户端。

将源数据划分成多个数据块进行存储时,可以获知其对应的存储顺序,当从各硬盘中获取各个子数据后,可以依据该顺序将获取的子数据拼接成一个完整的目标数据,该目标数据即为用户所需要的数据。

由上述技术方案可以看出,接收客户端发送的读操作请求;依据读操作请求中携带的偏移量和长度,判断所需读取的数据是否满足预设的读优化条件;当满足该预设的读优化条件时,则说明所需读取的数据属于小文件数据,为了避免无用的读操作,可以依据偏移量和长度,确定出所述数据对应的硬盘,并计算出每个所述硬盘中对象文件的目标偏移量和目标长度,然后向所述硬盘发送对应的读取命令,获取到对应的子数据;根据纠删码数据分布规则,拼接所述子数据,构成一个完整的目标数据,并将所述目标数据发送至所述客户端。通过上述判断步骤以及确定所需读取的数据所在的硬盘,打破了原有的以纠删条带长度为基本操作单元的思想,减少了无效数据所在硬盘的读取和通讯耗时,从而提高了海量存储系统的小文件读性能。

图2为本发明实施例提供的一种基于纠删码的数据读取装置的结构示意图,包括接收单元21、判断单元22、确定单元23、发送单元24和拼接单元25;

所述接收单元21,用于接收客户端发送的读操作请求;

所述判断单元22,用于依据所述读操作请求中携带的偏移量和长度,判断所需读取的数据是否满足预设的读优化条件;

若是,则触发所述确定单元23,所述确定单元23,用于依据所述偏移量和长度,确定出所述数据对应的硬盘,并计算出每个所述硬盘中对象文件的目标偏移量和目标长度;

所述发送单元24,用于依据所述目标偏移量和目标长度,向每个所述硬盘发送对应的读取命令,获取到对应的子数据;

所述拼接单元25,用于根据纠删码数据分布规则,拼接所述子数据,构成一个完整的目标数据,并触发所述发送单元24,所述发送单元24还用于将所述目标数据封装成消息发送至所述客户端。

可选的,所述判断单元具体用于判断所需读取的数据是否小于纠删条带长度;若是,则依据所述读操作请求中携带的偏移量和长度,判断所述数据所分布的硬盘个数是否小于源数据所分布的硬盘个数,并且所述数据所分布的硬盘是否正常运行。

图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,接收客户端发送的读操作请求;依据读操作请求中携带的偏移量和长度,判断所需读取的数据是否满足预设的读优化条件;当满足该预设的读优化条件时,则说明所需读取的数据属于小文件数据,为了避免无用的读操作,可以依据偏移量和长度,确定出所述数据对应的硬盘,并计算出每个所述硬盘中对象文件的目标偏移量和目标长度,然后向所述硬盘发送对应的读取命令,获取到对应的子数据;根据纠删码数据分布规则,拼接所述子数据,构成一个完整的目标数据,并将所述目标数据发送至所述客户端。通过上述判断步骤以及确定所需读取的数据所在的硬盘,打破了原有的以纠删条带长度为基本操作单元的思想,减少了无效数据所在硬盘的读取和通讯耗时,从而提高了海量存储系统的小文件读性能。

图3为本发明实施例提供的一种基于纠删码的数据读取设备30的硬件结构示意图,包括存储器31和处理器32,存储器31,用于存储计算机程序;处理器32,用于执行所述计算机程序以实现如上述基于纠删码的数据读取方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权上述基于纠删码的数据读取方法的步骤。

以上对本发明实施例所提供的一种基于纠删码的数据读取方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

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