一种文件读写方法、系统及设备和存储介质与流程

文档序号:15492559发布日期:2018-09-21 20:55阅读:207来源:国知局

本发明涉及存储技术领域,更具体地说,涉及一种文件读写方法、系统及设备和一种计算机可读存储介质。



背景技术:

随着互联网时代的高速发展,许多行业的数据量都达到了p级,例如,目前国内最大的在线购物网站淘宝的可用存储数据为35pb,实际使用了24pb的容量,存储了近千亿的图片信息,而且这些信息每天都会以亿级数量递增,这使得海量数据的存储受到了极大的挑战。

通过大数据分析得出,在整个数据应用端和数据存储端,存储的数据60%都是平均大小只有17.45kb的小文件,这些文件格式是多种多样的,可能是图片jpg格式、可执行文件exe或大量的自定义格式。现有技术主要采用直接读写大量的小文件的方式,使得客户端在读写集群文件的时候iops(英文全称:input/outputoperationspersecond,中文全称:每秒进行读写操作的次数)非常高,严重影响了存储系统的读写性能,降低了集群文件的传输速率。

因此,如何提高小文件的传输效率,提高存储系统的读写性能是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种文件读写方法、系统及设备和一种计算机可读存储介质,提高了小文件的传输效率,提高了存储系统的读写性能。

为实现上述目的,本发明提供了一种文件读写方法,应用于客户端,包括:

接收上层接口发送的目标文件序列的读取请求,并在所述目标文件序列中选择目标文件;

确定所述目标文件的文件大小,并判断所述文件大小是否小于预设值;

若是,则在数据存储器中读取所述目标文件,存储至所述客户端的inode节点中,同时在所述目标文件序列中重新选择除所述目标文件之外的文件作为目标文件,直至所述目标文件序列中的文件全部读取完成;

将所述inode节点中的数据发送至所述上层接口。

其中,确定所述目标文件的文件大小,包括:

向元数据存储器发送所述目标文件的元数据查询请求,并判断所述客户端的本地缓存是否存在所述目标文件的元数据;

若是,则根据所述本地缓存中的元数据确定所述目标文件的文件大小;

若否,则接收所述元数据存储器返回的元数据,并根据所述元数据存储器返回的元数据确定所述目标文件的文件大小。

其中,所述接收所述元数据存储器返回的元数据之后,还包括:

将所述元数据存储器返回的元数据存储至所述本地缓存中。

其中,所述读取请求至少包括所述目标文件序列中所有文件的索引,所述判断所述客户端的本地缓存是否存在所述目标文件的元数据,包括:

判断所述客户端的本地缓存是否存在所述目标文件的索引。

其中,还包括:

当所述元数据存储器中文件的元数据发生变化时,根据所述文件的索引更新所述本地缓存中的元数据。

其中,还包括:

接收待写入文件序列的写入请求,并在所述待写入文件序列中选择待写入文件;

确定所述待写入文件的文件大小,并判断缓存中是否存在所述文件大小的定义空间;

若是,则将所述待写入文件添加到所述定义空间中,若否,则将所述待写入文件添加到所述缓存的链表中;

在所述待写入文件序列中重新选择除所述待写入文件之外的文件作为待写入文件,直至所述待写入文件序列中的文件全部添加完成;

将所述缓存中的数据写入所述数据存储器中。

为实现上述目的,本发明提供了一种文件读写系统,应用于客户端,包括:

第一接收模块,用于接收上层接口发送的目标文件序列的读取请求,并在所述目标文件序列中选择目标文件;

第一确定模块,用于确定所述目标文件的文件大小,并判断所述文件大小是否小于预设值;

读取模块,用于当所述文件大小小于预设值时,在数据存储器中读取所述目标文件,存储至所述客户端的inode节点中,同时在所述目标文件序列中重新选择除所述目标文件之外的文件作为目标文件,直至所述目标文件序列中的文件全部读取完成;

返回模块,用于将所述inode节点中的数据发送至所述上层接口。

其中,还包括:

第二接收模块,用于接收待写入文件序列的写入请求,并在所述待写入文件序列中选择待写入文件;

第二确定模块,用于确定所述待写入文件的文件大小,并判断缓存中是否存在所述文件大小的定义空间;

添加模块,用于当所述缓存中存在所述文件大小的定义空间时,将所述待写入文件添加到所述定义空间中,当所述缓存中不存在所述文件大小的定义空间时,将所述待写入文件添加到所述缓存的链表中;

选择模块,用于在所述待写入文件序列中重新选择除所述待写入文件之外的文件作为待写入文件,直至所述待写入文件序列中的文件全部添加完成;

写入模块,用于将所述缓存中的数据写入所述数据存储器中。

为实现上述目的,本发明提供了一种文件读写设备,包括:

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

处理器,用于执行所述计算机程序时实现如上述文件读写方法的步骤。

为实现上述目的,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述文件读写方法。

通过以上方案可知,本发明提供的一种文件读写方法包括:接收上层接口发送的目标文件序列的读取请求,并在所述目标文件序列中选择目标文件;确定所述目标文件的文件大小,并判断所述文件大小是否小于预设值;若是,则在数据存储器中读取所述目标文件,存储至所述客户端的inode节点中,同时在所述目标文件序列中重新选择除所述目标文件之外的文件作为目标文件,直至所述目标文件序列中的文件全部读取完成;将所述inode节点中的数据发送至所述上层接口。

本发明提供的文件读写方法,在文件的读取过程中,当确定目标文件为小文件时,读取该目标文件的同时,触发对其后续文件的读请求,并且这些读请求是异步的,它不影响读取当前目标文件的返回。另外,当目标文件序列中的所有小文件全部读取完成后,批量返回上层接口。由此可见,本发明提供的文件读写方法相比于现有技术直接读取逐个返回的方法,提高了小文件的传输效率,提高了存储系统的读写性能。本发明还公开了一种文件读写系统及设备和一种计算机可读存储介质,同样能实现上述技术效果。

附图说明

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

图1为本发明实施例公开的一种文件读写方法的流程图;

图2为本发明实施例公开的另一种文件读写方法的流程图;

图3为本发明实施例公开的一种文件读写系统的结构图;

图4为本发明实施例公开的一种文件读写设备的结构图。

具体实施方式

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

本发明实施例公开了一种文件读写方法,提高了小文件的传输效率,提高了存储系统的读写性能。

参见图1,本发明实施例公开的一种文件读写方法的流程图,如图1所示,包括:

s101:接收上层接口发送的目标文件序列的读取请求,并在所述目标文件序列中选择目标文件;

在具体实施中,客户端接收目标文件序列的读取请求,目标文件序列中包含多个待读取文件,客户端可以选取第一个待读取文件作为目标文件,当然,也可以依据其他选取方式选取其中的一个作为目标文件,本实施例不对选取方式进行具体限定,本领域技术人员可以根据实际情况灵活选择。

s102:确定所述目标文件的文件大小,并判断所述文件大小是否小于预设值;若是,则进入s103;

此步骤旨在确定上一步骤选取的目标文件是否为小文件,以便后续步骤进行小文件的读取操作。当目标文件的文件大小小于预设值时,则该目标文件为小文件,此处不对预设值进行具体限定,本领域技术人员可以根据实际情况灵活设置。

当该目标文件为小文件时进入s103,当目标文件不属于小文件时则按现有技术中的文件读取方法读取该目标文件,本实施例不进行具体描述。

需要说明的是,确定目标文件的文件大小的步骤可以具体包括:向元数据存储器发送所述目标文件的元数据查询请求,并判断所述客户端的本地缓存是否存在所述目标文件的元数据;若是,则根据所述本地缓存中的元数据确定所述目标文件的文件大小;若否,则接收所述元数据存储器返回的元数据,并根据所述元数据存储器返回的元数据确定所述目标文件的文件大小。

具体的,客户点可以通过查询本地缓存中是否存在目标文件的索引的方式判断本地缓存是否存在目标文件的元数据,上一步骤的读取请求和本步骤的查询请求中应该包括该目标文件的索引。当本地缓存中存在该索引时则说明本地缓存中存在目标文件的元数据,根据该元数据确定目标文件的文件大小,当本地缓存中不存在该索引时,则向元数据存储器发送元数据查询请求,将所述元数据存储器返回的元数据存储至所述本地缓存中,并根据返回的元数据确定该目标文件的文件大小。

可以理解的是,当所述元数据存储器中文件的元数据发生变化时,需要根据所述文件的索引更新所述本地缓存中的元数据。

s103:在数据存储器中读取所述目标文件,存储至所述客户端的inode节点中,同时在所述目标文件序列中重新选择除所述目标文件之外的文件作为目标文件,直至所述目标文件序列中的文件全部读取完成;

s104:将所述inode节点中的数据发送至所述上层接口。

在具体实施中,根据目标文件的索引在数据存储器中读取该目标文件,存储至客户端的inode节点中,同时向数据存储器发送下一目标文件的读取请求,下一目标文件的读取请求是异步的,不影响当前目标文件的返回,直至目标文件序列的小文件全部读取完成,将inode节点中的数据统一发送至上层接口,相比于现有技术直接读取逐个返回的方法,提高了小文件的传输效率。

本发明实施例提供的文件读写方法,在文件的读取过程中,当确定目标文件为小文件时,读取该目标文件的同时,触发对其后续文件的读请求,并且这些读请求是异步的,它不影响读取当前目标文件的返回。另外,当目标文件序列中的所有小文件全部读取完成后,批量返回上层接口。由此可见,本发明实施例提供的文件读写方法相比于现有技术直接读取逐个返回的方法,提高了小文件的传输效率,提高了存储系统的读写性能。

本发明实施例公开了一种文件写入方法,具体的:

参见图2,本发明实施例提供的另一种文件读写方法的流程图,如图2所示,包括:

s201:接收待写入文件序列的写入请求,并在所述待写入文件序列中选择待写入文件;

在具体实施中,客户端接收待写入文件序列的写入请求,待写入文件序列中包含多个待写入文件,客户端可以选取第一个待写入文件,当然,也可以依据其他选取方式选取其中的一个作为待写入文件,本实施例不对选取方式进行具体限定,本领域技术人员可以根据实际情况灵活选择。

s202:确定所述待写入文件的文件大小,并判断缓存中是否存在所述文件大小的定义空间;若是,则进入s203;若否,则进入s204;

s203:将所述待写入文件添加到所述定义空间中;

s204:将所述待写入文件添加到所述缓存的链表中;

在具体实施中,根据待写入文件的元数据确定该文件的文件大小,当缓存中存在该文件大小的定义空间时,则写入该待写入文件,当缓存中不存在该文件大小的定义空间时,则将待写入文件添加到缓存的链表中。

s205:在所述待写入文件序列中重新选择除所述待写入文件之外的文件作为待写入文件,直至所述待写入文件序列中的文件全部添加完成;

s206:将所述缓存中的数据写入所述数据存储器中。

在具体实施中,当待写入文件序列中的所有待写入文件全部写入缓存后,统一将缓存中的数据写入数据存储器,将元数据写入数据存储器。与现有技术中逐个写入的方法,提高了文件的写入效率。

下面对本发明实施例提供的一种文件读写系统进行介绍,下文描述的一种文件读写系统与上文描述的一种文件读写方法可以相互参照。

参见图3,本发明实施例提供的一种文件读写系统的结构图,如图3所示,包括:

第一接收模块301,用于接收上层接口发送的目标文件序列的读取请求,并在所述目标文件序列中选择目标文件;

第一确定模块302,用于确定所述目标文件的文件大小,并判断所述文件大小是否小于预设值;

读取模块303,用于当所述文件大小小于预设值时,在数据存储器中读取所述目标文件,存储至所述客户端的inode节点中,同时在所述目标文件序列中重新选择除所述目标文件之外的文件作为目标文件,直至所述目标文件序列中的文件全部读取完成;

返回模块304,用于将所述inode节点中的数据发送至所述上层接口。

本发明实施例提供的文件读写系统,在文件的读取过程中,当确定目标文件为小文件时,读取该目标文件的同时,触发对其后续文件的读请求,并且这些读请求是异步的,它不影响读取当前目标文件的返回。另外,当目标文件序列中的所有小文件全部读取完成后,批量返回上层接口。由此可见,本发明实施例提供的文件读写系统,提高了小文件的传输效率,提高了存储系统的读写性能。

在上述实施例的基础上,作为优选实施方式,还包括:

第二接收模块,用于接收待写入文件序列的写入请求,并在所述待写入文件序列中选择待写入文件;

第二确定模块,用于确定所述待写入文件的文件大小,并判断缓存中是否存在所述文件大小的定义空间;

添加模块,用于当所述缓存中存在所述文件大小的定义空间时,将所述待写入文件添加到所述定义空间中,当所述缓存中不存在所述文件大小的定义空间时,将所述待写入文件添加到所述缓存的链表中;

选择模块,用于在所述待写入文件序列中重新选择除所述待写入文件之外的文件作为待写入文件,直至所述待写入文件序列中的文件全部添加完成;

写入模块,用于将所述缓存中的数据写入所述数据存储器中。

在上述实施例的基础上,作为优选实施方式,所述第一确定模块302包括:

发送单元,用于向元数据存储器发送所述目标文件的元数据查询请求,并判断所述客户端的本地缓存是否存在所述目标文件的元数据;

确定单元,用于当所述客户端的本地缓存存在所述目标文件的元数据时,根据所述本地缓存中的元数据确定所述目标文件的文件大小;

接收单元,用于所述客户端的本地缓存不存在所述目标文件的元数据时,接收所述元数据存储器返回的元数据,并根据所述元数据存储器返回的元数据确定所述目标文件的文件大小;

判断单元,用于判断所述文件大小是否小于预设值。

在上述实施例的基础上,作为优选实施方式,所述第一确定模块302还包括:

存储单元,用于接收所述元数据存储器返回的元数据之后,将所述元数据存储器返回的元数据存储至所述本地缓存中。

在上述实施例的基础上,作为优选实施方式,所述读取请求至少包括所述目标文件序列中所有文件的索引,所述发送单元具体为向元数据存储器发送所述目标文件的元数据查询请求,并判断所述客户端的本地缓存是否存在所述目标文件的索引的单元。

在上述实施例的基础上,作为优选实施方式,还包括:

更新模块,用于当所述元数据存储器中文件的元数据发生变化时,根据所述文件的索引更新所述本地缓存中的元数据。

本申请还提供了一种文件读写设备,参见图4,本发明实施例提供的一种文件读写设备的结构图,如图4所示,包括:

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

处理器402,用于执行所述计算机程序时可以实现上述实施例所提供的步骤。当然所述文件读写设备还可以包括各种网络接口,电源等组件。

本发明实施例提供的文件读写设备,在文件的读取过程中,当确定目标文件为小文件时,读取该目标文件的同时,触发对其后续文件的读请求,并且这些读请求是异步的,它不影响读取当前目标文件的返回。另外,当目标文件序列中的所有小文件全部读取完成后,批量返回上层接口。由此可见,本发明实施例提供的文件读写设备,提高了小文件的传输效率,提高了存储系统的读写性能。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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