买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于分布式文件系统的多副本读取方法、设备及存储介质_中兴通讯股份有限公司_201711076732.9 

申请/专利权人:中兴通讯股份有限公司

申请日:2017-11-06

公开(公告)日:2024-02-13

公开(公告)号:CN110019086B

主分类号:G06F16/182

分类号:G06F16/182;G06F16/172;G06F11/14

优先权:

专利状态码:有效-授权

法律状态:2024.02.13#授权;2020.07.07#实质审查的生效;2019.07.16#公开

摘要:本发明公开了一种基于分布式文件系统的多副本读取方法、设备及存储介质。该方法包括:调用sendfile接口在本地存储节点读取副本数据;当调用sendfile接口在本地存储节点读取副本数据失败时,通过writev接口从其他副本存储节点获取副本数据。基于此,本发明有效提高了使用sendfile的容错性,即保证了读性能的高效,又能兼顾云存储的安全,提升了整体性能和用户体验。

主权项:1.一种基于分布式文件系统的多副本读取方法,其特征在于,包括:调用sendfile接口在本地存储节点读取副本数据;当调用sendfile接口在本地存储节点读取副本数据失败时,通过writev接口从其他副本存储节点获取所述副本数据;其中,所述调用sendfile接口在本地存储节点读取副本数据,包括:获取源文件句柄;根据所述源文件句柄确定所要读取的副本数据的物理块句柄;通过调用sendfile接口读取所述物理块句柄中的副本数据;其中,所述通过writev接口从其他副本存储节点获取所述副本数据,包括:调用read接口从所述其他副本存储节点读取所述副本数据,通过writev接口将所述副本数据存储至writev数组中;当所述writev数组达到预设个数后,将所述writev数组中的数据一次写入目标文件的缓存中。

全文数据:基于分布式文件系统的多副本读取方法、设备及存储介质技术领域本发明涉及数据存储技术领域,特别是涉及一种基于分布式文件系统的多副本读取方法、设备及存储介质。背景技术目前,分布式文件系统在原来的系统read接口下,由于受应用态到内核态频繁切换和磁盘本身最大ops每秒操作次数影响,不改变业务架构或更换硬件的前提下,磁盘的读性能很难提高。因此,提供一种高性能的读取方式是很有必要的。发明内容本发明提供一种基于分布式文件系统的多副本读取方法、设备及存储介质,用以解决现有分布式文件系统中读取效率低的问题。为实现上述发明目的,本发明采用下述的技术方案:依据本发明的一个方面,提供一种基于分布式文件系统的多副本读取方法,其特征在于,包括:调用sendfile接口在本地存储节点读取副本数据;当调用sendfile接口在本地存储节点读取副本数据失败时,通过writev接口从其他副本存储节点获取所述副本数据。可选的,所述调用sendfile接口在本地存储节点读取副本数据,包括:获取源文件句柄;根据所述源文件句柄确定所要读取的副本数据的物理块句柄;通过调用sendfile接口读取所述物理块句柄中的副本数据。可选的,所述根据所述源文件句柄确定所要读取的副本数据的物理块句柄,包括:判断所述源文件句柄是本地句柄还是云存储句柄;当判断所述源文件句柄为云存储句柄时,根据所述源文件句柄确定所要读取的副本数据的物理块句柄。可选的,所述判断源文件句柄是本地句柄还是云存储句柄,包括:当所述源文件句柄数量大于预设阈值时,则判定所述源文件句柄为云存储句柄;当所述源文件句柄数量小于或等于预设阈值时,则判定所述源文件句柄为本地句柄。可选的,所述根据所述源文件句柄确定所要读取的副本数据的物理块句柄,包括:根据预先存储于元数据服务器中文件句柄与物理块句柄的映射关系获取所述源文件句柄所对应的物理块句柄。可选的,在获取源文件句柄之后,所述方法还包括:根据偏移位置和副本数据的字节数计算所述物理块的索引,以根据所述索引确定所述物理块的位置;所述通过调用sendfile接口读取所述物理块句柄中的副本数据,包括:根据所述物理块句柄,从所述物理块的位置读取所述副本数据。可选的,所述通过writev接口从其他副本存储节点获取所述副本数据,包括:调用read接口从所述其他副本存储节点读取所述副本数据,通过writev接口将所述副本数据存储至writev数组中;当所述writev数组达到预设个数后,将所述writev数组中的数据一次写入目标文件的缓存中。依据本发明的另一个方面,提供一种基于分布式文件系统的多副本读取设备,包括存储器和处理器;其中,所述存储器中存储有计算机指令;当所述计算机指令被所述处理器执行时,以实现上述的基于分布式文件系统的多副本读取方法。依据本发明的另一个方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个或者多个处理器执行时,以实现上述的基于分布式文件系统的多副本读取方法。本发明有益效果如下:本发明所提供的分布式文件系统的多副本读取方法,通过sendfile接口来读取本地副本数据,而当本地副本数据异常时,通过writev接口获取其他存储节点的副本数据。基于此,本发明可以有效提高了使用sendfile的容错性,即保证了读性能的高效,又能兼顾云存储的安全,提升了整体性能和用户体验。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明为了更清楚地说明本发明实施例或现有中的方案,下面将对实施例或现有描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明一实施例中基于分布式文件系统的多副本读取方法的流程图;图2为本发明一具体实施例中多副本读取方法的流程图;图3为本发明一具体实施例中分布式文件系统的多副本读取设备的原理框图。具体实施方式以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。方法实施例为了解决现有的分布式文件系统中读取效率低的问题,本发明实施例提供了一种基于分布式文件系统的多副本读取方法,如图1所示,该方法包括如下步骤:步骤101,调用sendfile接口在本地存储节点读取副本数据;步骤102,当调用sendfile接口在本地存储节点读取副本数据失败时,通过writev接口从其他副本存储节点获取副本数据。本发明所提供的基于分布式文件系统的多副本读取方法,通过sendfile接口来读取本地副本数据,有效提到副本数据在本地的读取性能;而当本地副本数据异常时,通过writev接口获取其他存储节点的副本数据。基于此,本发明可以有效提高了使用sendfile的容错性,即保证了读性能的高效,又能兼顾云存储的安全,提升了整体性能和用户体验。其中,本发明一可选实施例中,调用sendfile接口在本地存储节点读取副本数据,包括:获取源文件句柄;根据源文件句柄确定所要读取的副本数据的物理块句柄;通过调用sendfile接口读取物理块句柄中的副本数据。这里,在获取源文件句柄时,通过系统中的open接口来进行获取处理。于此同时获取的还包括目标文件句柄。由于本发明中主要是针对云存储中的副本数据进行处理,因此,根据源文件句柄确定所要读取的副本数据的物理块句柄时,需要通过句柄大小进一步判断该句柄为本地句柄还是云存储句柄:当为云存储句柄时,则根据源文件句柄确定所要读取的副本数据的物理块句柄,根据物理块句柄进一步获取副本数据;当为本地句柄时,则结束处理。其中,具体地,在判断该句柄为本地句柄还是云存储句柄时,包括:当源文件句柄数量大于预设阈值时,则判定源文件句柄为云存储句柄;当源文件句柄数量小于或等于预设阈值时,则判定源文件句柄为本地句柄。其中,本发明一可选实施例中,在根据源文件句柄确定所要读取的副本数据的物理块句柄时,根据预先存储于元数据服务器中文件句柄与物理块句柄的映射关系获取源文件句柄所对应的物理块句柄。这里,物理块句柄为物理块的唯一标识。元数据服务器记录了文件句柄与物理块句柄的映射关系。当获取到源文件句柄时,向元数据服务器发送查询请求;根据映射关系获取与源文件句柄向对应的物理块句柄。其中,本发明一可选实施例中,在获取源文件句柄之后,该方法还包括:根据偏移位置和副本数据的字节数计算物理块的索引,以根据索引确定物理块的位置;通过调用sendfile接口读取物理块句柄中的副本数据,包括:根据物理块句柄,从物理块的位置读取副本数据。其中,在需要读取数据时,由用户输入偏移位置和所要读取的字节数。在进行读取时,获取用户输入的偏移位置和所要读取的字节数,根据两个参数确定物理块的索引。索引用于指示物理块的位置信息,因此,根据该索引可以获取数据所在的物理块位置。当确定物理块的所在位置之后,通过物理块句柄,读取相应位置的数据即可。其中,本发明一可选实施例中,通过writev接口从其他副本存储节点获取副本数据,包括:调用read接口从其他副本存储节点读取副本数据,通过writev接口将副本数据存储至writev数组中;当writev数组达到预设个数后,将writev数组中的数据一次写入目标文件的缓存中。具体地,当通过sendfile接口读取数据失败时,则说明本地的副本数据异常,无法读取。当检测到读取数据失败后,系统自动通过调用内部的read接口与分布式文件系统中的其他存储节点进行通信,跨网络循环读取其他节点中的数据。这里在通过read接口读取时,可以读取多个页的数据,将数据存储于writev数组中。当writev数组达到20个以后,可以直接将writev数组中的数据一次拷贝至目标文件句柄所对应的缓存中,实现了副本的跨网络读取。基于此,通过采用read接口和writev接口相结合的方式,有效减少了写次数,提高了拷贝性能。下面结合附图和具体实施例对本发明的技术内容进行详细说明。具体地,如图2所示,图2为本发明一具体实施例中数据读取方法,包括如下步骤:步骤201,通过云存储内部sendfile接口获取文件句柄;包括源文件句柄和目标文件句柄。步骤202,根据句柄大小判断源文件句柄是本地句柄还是云存储句柄:当为云存储句柄时,则执行步骤203;当为本地句柄时,则直接结束处理。这里,句柄数据的预设阈值为10000;当然还可以根据需求设置该阈值,因此,这里的预设阈值仅用于解释和说明,不用于对本发明的限定。步骤203,根据偏移位置和要读的字节数,计算物理块起始和结束的索引位置,根据源文件句柄,通过发送消息给元数据服务器获取物理块的句柄;步骤204,调用标准sendfile接口,传入物理块的句柄,根据偏移位置和要写的字节数读取物理块句柄中的数据:当读取成功时,则执行步骤205;处理结束;当读取失败时,则执行步骤206;步骤205,将数据写入到目标文件句柄的缓存中;步骤206,通过内部read接口通过网络获取其他存储节点的多个页的数据;步骤207,将数据通过writev接口并发写入到目标文件句柄的缓存中。基于上述方案,本发明将原本只适合在单机文件系统中使用的sendfile机制迁移到云存储中,并通过内部的read接口结合并发接口writev解决了单机系统中本地副本异常时可能读取失败的问题,使用分布式文件系统也能充分利用到sendfile的性能优势,提高了单盘读性能。设备实施例根据本发明的实施例,提供了一种基于分布式文件系统的多副本读取设备,用于实现上述方法实施例所提供的方法。如图3所示。该设备括处理器32以及存储有处理器32可执行指令的存储器31。其中,处理器32可以是通用处理器,例如中央处理器centralprocessingunit,CPU,还可以是数字信号处理器digitalsignalprocessor,DSP、专用集成电路applicationspecificintegratedcircuit,ASIC,或者是被配置成实施本发明实施例的一个或多个集成电路。存储器31,用于存储程序代码,并将该程序代码传输给CPU。存储器31可以包括易失性存储器volatilememory,例如随机存取存储器randomaccessmemory,RAM;存储器31也可以包括非易失性存储器non-volatilememory,例如只读存储器read-onlymemory,ROM、快闪存储器flashmemory、硬盘harddiskdrive,HDD或固态硬盘solid-statedrive,SSD;存储器31还可以包括上述种类的存储器的组合。具体地,该基于分布式文件系统的多副本读取设备,包括处理器32和存储器31;存储器31用于存储计算机指令,处理器32用于运行存储器31存储的计算机指令,以实现如下步骤:调用sendfile接口在本地存储节点读取副本数据;当调用sendfile接口在本地存储节点读取副本数据失败时,通过writev接口从其他副本存储节点获取副本数据。可选的,处理器32用于运行存储器31存储的计算机指令,以实现如下步骤:获取源文件句柄;根据源文件句柄确定所要读取的副本数据的物理块句柄;通过调用sendfile接口读取物理块句柄中的副本数据。可选的,处理器32用于运行存储器31存储的计算机指令,以实现如下步骤:判断源文件句柄是本地句柄还是云存储句柄;当判断源文件句柄为云存储句柄时,根据源文件句柄确定所要读取的副本数据的物理块句柄;当判断源文件句柄为本地句柄时,则直接结束处理。可选的,处理器32用于运行存储器31存储的计算机指令,以实现如下步骤:当源文件句柄数量大于预设阈值时,则判定源文件句柄为云存储句柄;当源文件句柄数量小于或等于预设阈值时,则判定源文件句柄为本地句柄。可选的,处理器32用于运行存储器31存储的计算机指令,以实现如下步骤:根据预先存储于元数据服务器中文件句柄与物理块句柄的映射关系获取源文件句柄所对应的物理块句柄。可选的,在获取源文件句柄的步骤之后,处理器32用于运行存储器31存储的计算机指令,以实现如下步骤:根据偏移位置和副本数据的字节数计算物理块的索引,以根据索引确定物理块的位置;通过调用sendfile接口读取物理块句柄中的副本数据,包括:根据物理块句柄,从物理块的位置读取副本数据。可选的,调用read接口从其他副本存储节点读取副本数据,通过writev接口将副本数据存储至writev数组中;当writev数组达到预设个数后,将writev数组中的数据一次写入目标文件的缓存中。需要说明的是,在该实施例中,对于各个步骤仅做了简要的说明。具体可以参见方法实施例中的详细描述,这里不再介绍,因此也能实现相应的有益技术效果,此处也不再赘述。存储介质实施例本发明实施例还提供了一种计算机可读存储介质。这里的计算机可读存储介质存储有一个或者多个程序。其中,计算机可读存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。当计算机可读存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现方法实施例的方法,因此也能实现相应的有益技术效果,前文已经进行了详细的说明,此处不再赘述。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。虽然通过实施例描述了本申请,本领域的技术人员知道,本申请有许多变形和变化而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

权利要求:1.一种基于分布式文件系统的多副本读取方法,其特征在于,包括:调用sendfile接口在本地存储节点读取副本数据;当调用sendfile接口在本地存储节点读取副本数据失败时,通过writev接口从其他副本存储节点获取所述副本数据。2.根据权利要求1所述的方法,其特征在于,所述调用sendfile接口在本地存储节点读取副本数据,包括:获取源文件句柄;根据所述源文件句柄确定所要读取的副本数据的物理块句柄;通过调用sendfile接口读取所述物理块句柄中的副本数据。3.根据权利要求2所述的方法,其特征在于,所述根据所述源文件句柄确定所要读取的副本数据的物理块句柄,包括:判断所述源文件句柄是本地句柄还是云存储句柄;当判断所述源文件句柄为云存储句柄时,根据所述源文件句柄确定所要读取的副本数据的物理块句柄。4.根据权利要求3所述的方法,其特征在于,所述判断源文件句柄是本地句柄还是云存储句柄,包括:当所述源文件句柄数量大于预设阈值时,则判定所述源文件句柄为云存储句柄;当所述源文件句柄数量小于或等于预设阈值时,则判定所述源文件句柄为本地句柄。5.根据权利要求2所述的方法,其特征在于,所述根据所述源文件句柄确定所要读取的副本数据的物理块句柄,包括:根据预先存储于元数据服务器中文件句柄与物理块句柄的映射关系获取所述源文件句柄所对应的物理块句柄。6.根据权利要求2~5任一项所述的方法,其特征在于,在获取源文件句柄之后,所述方法还包括:根据偏移位置和副本数据的字节数计算所述物理块的索引,以根据所述索引确定所述物理块的位置;所述通过调用sendfile接口读取所述物理块句柄中的副本数据,包括:根据所述物理块句柄,从所述物理块的位置读取所述副本数据。7.根据权利要求1所述的方法,其特征在于,所述通过writev接口从其他副本存储节点获取所述副本数据,包括:调用read接口从所述其他副本存储节点读取所述副本数据,通过writev接口将所述副本数据存储至writev数组中;当所述writev数组达到预设个数后,将所述writev数组中的数据一次写入目标文件的缓存中。8.一种基于分布式文件系统的多副本读取设备,其特征在于,包括存储器和处理器;其中,所述存储器中存储有计算机指令;当所述计算机指令被所述处理器执行时,用以实现权利要求1~7任一项所述的方法。9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个或者多个处理器执行时,以实现权利要求1~7任一项所述的方法。

百度查询: 中兴通讯股份有限公司 基于分布式文件系统的多副本读取方法、设备及存储介质

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。