CN111680014A - 共享文件的获取方法、装置、电子设备及存储介质 - Google Patents
共享文件的获取方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111680014A CN111680014A CN202010482053.7A CN202010482053A CN111680014A CN 111680014 A CN111680014 A CN 111680014A CN 202010482053 A CN202010482053 A CN 202010482053A CN 111680014 A CN111680014 A CN 111680014A
- Authority
- CN
- China
- Prior art keywords
- information
- meta
- stored
- target
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种共享文件的获取方法、装置、电子设备及存储介质,主要应用在共享文件较大的情况下。当共享文件较大时,共享文件会被拆分为多个数据段在对象存储设备中保存,每一个数据段也会在元数据服务器中对应一段元信息。本发明方案中,当接收到对于同一个共享文件的多个数据段请求并且请求的元信息包含在预存的元信息中时,客户端可以从预存的元信息中直接获取当前请求的元信息,无需再次从元数据服务器从获取元信息。本发明方案中的客户端,在接收到对于同一个共享文件的多个数据段请求时,能够减少与元数据服务器进行通信的次数,提高获取到完整共享文件数据的效率。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及共享文件的获取方法、装置、电子设备及存储介质。
背景技术
共享文件存储技术可以将共享文件的元信息保存在元数据服务器(MetadataServer,MDS)上,将共享文件的数据保存在对象存储设备(Object-based Storage Device,OSD)上。当客户端需要读取某一共享文件的数据时,需要先从MDS中获取该文件的元信息,进而根据元信息确定该文件数据的存储位置,即确定存储数据的OSD,最后再从所确定的OSD内读出相应的数据。
当共享文件较大时,共享文件存储技术需要将共享文件的完整数据划分为多个数据段保存到不同的OSD中,再将每一个数据段对应的元信息分别保存进MDS。如果客户端需要获取该文件的完整数据,需要与MDS进行多次通信,从而获取该文件各个数据段的元信息,最后再根据各个元信息分别从OSD中获取到对应的数据段。
然而,当前这种共享文件存储技术中,共享文件越大,其数据段以及数据段对应的元信息就越多,相应地,客户端与MDS通信的次数也越多,客户端获取到完整共享文件数据的效率就越低。
发明内容
本发明提供了一种共享文件的获取方法、装置、电子设备及存储介质,以解决目前共享文件存储技术中,共享文件越大客户端获取到完整共享文件数据的效率就越低的问题。
第一方面,本发明提供了一种共享文件的获取方法,应用于客户端,包括:
获取当前数据请求,所述当前数据请求用于表示客户端需要获取的属于共享文件的目标数据段;
响应于所述当前数据请求,查询本地缓存中的预存元信息是否包含与所述目标数据段对应的目标元信息;所述预存元信息是指属于所述共享文件且已保存在本地缓存中的元信息;
如果所述本地缓存中的所述预存元信息包含所述目标元信息,则从对象存储设备中获取所述目标元信息对应的所述目标数据段。
结合第一方面,在第一方面的一种可实现方式中,所述从对象存储设备中获取所述目标元信息对应的所述目标数据段之后,还包括:
获取响应上一次的历史数据请求时,计算出的历史预读位置;
如果所述历史预读位置处于所述目标数据段内,并且所述目标数据段与上一次历史数据请求所请求的历史数据段的数据内容连续,则确定响应于所述当前数据请求时需要从元数据服务器中获取预存元信息;
获取当前请求次序,所述当前请求次序用于表示响应于当前数据请求时客户端是第几次需要从所述元数据服务器获取预存元信息;
根据所述当前请求次序,计算预存元信息的起始位置和长度;
根据所述预存元信息的起始位置和长度,从所述元数据服务器中所述共享文件对应的完整元信息中获取所述预存元信息;
将所述预存元信息保存在本地缓存中。
结合第一方面,在第一方面的一种可实现方式中,根据如下公式计算所述预存元信息的起始位置和长度:
offset(n)=offset(n-1)+size(n-1),(n≥1),
size(n)=ka×n,(k≥1),(n≥1),
其中,n表示当前请求次序,offset(n)表示预存元信息的起始位置,size(n)表示预存元信息的长度,a为预设长度值,k为表示正值的系数。
结合第一方面,在第一方面的一种可实现方式中,所述获取响应上一次的历史数据请求时,计算出的历史预读位置的步骤,包括:
确定上一次的历史请求次序,所述上一次的历史请求次序用于表示客户端上一次获取预存元信息时,是第几次从所述元数据服务器获取的;
根据所述历史请求次序,以及上一次获取的预存元信息的起始位置和长度,计算出历史预读位置。
结合第一方面,在第一方面的一种可实现方式中,根据如下公式计算所述历史预读位置:
R(m)=offset(0)+a+1,(m=1),
其中,R(m)表示历史预读位置,m表示历史请求次序,offset(m)表示历史请求次序为m时获取预存元信息的起始位置,size(m)表示历史请求次序为m时获取预存元信息的长度,a为预设长度值。
结合第一方面,在第一方面的一种可实现方式中,所述在所述响应于当前数据请求,查询本地缓存中的预存元信息是否包含所述目标数据段对应的目标元信息之后,还包括:
如果所述本地缓存中的所述预存元信息不包含所述目标元信息,则从元数据服务器中获取所述目标元信息;
从所述对象存储设备中获取所述目标元信息对应的所述目标数据段。
结合第一方面,在第一方面的一种可实现方式中,所述从元数据服务器中获取所述目标元信息的步骤,包括:
在所述目标数据段与上一次历史数据请求所请求的历史数据段的数据内容不连续的情况下,确定响应于所述当前数据请求时需要从元数据服务器中获取预存元信息;
将当前请求次序重置为初始值,所述当前请求次序用于表示响应于当前数据请求时客户端首次从所述元数据服务器获取预存元信息;
根据所述当前请求次序和所述目标数据段,获得预存元信息的起始位置和长度;
根据所述预存元信息的起始位置和长度,从所述元数据服务器中所述共享文件对应的完整元信息中获取所述预存元信息,所述预存元信息中包含有所述目标元信息。
第二方面,本发明提供了一种共享文件的获取装置,应用于客户端,包括:
请求获取模块,用于获取当前数据请求,所述当前数据请求用于表示客户端需要获取的属于共享文件的目标数据段;
数据获取模块,用于响应于所述当前数据请求,查询本地缓存中的预存元信息是否包含与所述目标数据段对应的目标元信息;所述预存元信息是指属于所述共享文件且已保存在本地缓存中的元信息;在所述本地缓存中的所述预存元信息包含所述目标元信息时,从对象存储设备中获取所述目标元信息对应的所述目标数据段。
第三方面,本发明提供了一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现第一方面所述的共享文件的获取方法。
第四方面,本发明还提供了一种存储介质,所述存储介质中存储有计算机程序,当共享文件的获取装置的至少一个处理器执行所述计算机程序时,共享文件的获取装置执行第一方面所述的共享文件的获取方法。
由以上技术方案可知,本发明提供了一种共享文件的获取方法、装置、电子设备及存储介质,主要应用在共享文件较大的情况下。当共享文件较大时,共享文件会被拆分为多个数据段在对象存储设备中保存,每一个数据段也会在元数据服务器中对应一段元信息。本发明方案中,当接收到对于同一个共享文件的多个数据段请求并且请求的元信息包含在预存的元信息中时,客户端可以从预存的元信息中直接获取当前请求的元信息,无需再次从元数据服务器从获取元信息。本发明方案中的客户端,在接收到对于同一个共享文件的多个数据段请求时,能够减少与元数据服务器进行通信的次数,提高获取到完整共享文件数据的效率。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种共享文件的获取方法的流程图;
图2为本发明实施例提供的客户端与元数据服务器MDS和对象存储设备OSD之间交互的示意图;
图3为本发明实施例中提供的一种客户端获取预存元信息的流程图;
图4为本发明实施例提供的中计算历史预读位置的流程图;
图5为本发明实施例提供的另一种客户端获取预存元信息的流程图;
图6为本发明实施例提供的一种共享文件的获取装置的结构框图;
图7为本发明实施例提供的电子设备硬件结构示意图。
具体实施方式
当前的共享文件存储技术可以将共享文件的元信息保存在元数据服务器,将元信息对应的数据保存在对象存储设备中。当客户端需要获取该共享文件时,只需从元数据服务器中获取到该共享文件的元信息,再根据元信息中所指示的内容,从指定的对象存储设备中获取到该共享文件的数据即可,不同的客户端可以通过该共享文件存储技术获取到同一个共享文件。但是,当共享文件较大时,当前的共享文件存储技术需要将共享文件的完整数据划分为多个数据段保存到对象存储设备中的不同位置,再将每一个数据段对应的元信息分别保存进元数据服务器。如果客户端需要获取该文件的完整数据,需要与元数据服务器进行多次通信,从而获取该文件各个数据段的元信息,最后再根据各个元信息分别从对象存储设备中获取到对应的数据段。这种情况下,共享文件越大,其数据段以及数据段对应的元信息就越多,相应地,客户端与元数据服务器通信的次数也越多,客户端获取到完整共享文件数据的效率就越低。
基于上述内容,本发明实施例中提供了一种共享文件的获取方法、装置、电子设备及存储介质,当共享文件较大时,可以先在客户端的缓存中预存一些元信息,这样多个请求同一个共享文件的数据段时,可以先从预存的元信息中直接获取到请求的数据段对应的元信息,避免客户端与元数据服务器多次通信,提供共享文件的获取效率。
图1为本发明实施例提供的一种共享文件的获取方法的流程图。如图1所示,该共享文件的获取方法,具体包括如下步骤:
步骤S101,获取当前数据请求,所述当前数据请求用于表示客户端需要获取的属于共享文件的目标数据段。
图2为本发明实施例提供的客户端与元数据服务器MDS和对象存储设备OSD之间交互的示意图。通常,获取共享文件的操作是由客户端发起的。操作系统中有用于支持用户空间文件系统的内核模块FUSE,FUSE接收到用户的操作请求,通过对请求进行分析,分析出用户的操作是否需要获取共享文件,如果需要,则FUSE再向客户端发送用于请求共享文件的数据请求。
如果共享文件较大,并且以不同数据段的形式存在,FUSE向客户端发送一次数据请求可以获取到一个数据段的内容,多次请求后就可以获得共享文件的全部内容。
步骤S102,响应于所述当前数据请求,查询本地缓存中的预存元信息是否包含与所述目标数据段对应的目标元信息;所述预存元信息是指属于所述共享文件且已保存在本地缓存中的元信息。
客户端在响应数据请求时,通常需要先向元数据服务器MDS发送元信息获取请求。但是本实施例中为了避免客户端与MDS的多次通信,客户端通常是先在本地缓存中预存一部分元信息,当客户端接收到FUSE发送的数据请求时,需要先查询本地缓存中是否有目标元信息,如果有,客户端响应于当前的数据请求时则无需从MDS中获取目标元信息,即减少了一次与MDS通信的机会。
客户端本地缓存中预存元信息的内容大于目标元信息的内容,比如目标元信息需要的是1M-2M的内容,而预存元信息可以是预先保存的0M-4M的内容。客户端中预存元信息的来源有两种,一种是在响应上一次的数据请求时,客户端本地缓存中没有上一次的目标元信息,然后客户端从MDS中不仅获取到了该目标元信息还获取到了比该目标元信息内容多的预存元信息;另一种是在响应上一次的数据请求时,客户端中本地缓存中已经存在了预存元信息。预存元信息是可以循环使用的,如果获取同一个共享文件的每一次的数据请求对应的目标元信息都包含在预存元信息中,则客户端可以直接从本地缓存中调用目标元信息,不必与MDS进行通信就可以获得完成的共享文件元信息;但如果某一次的数据请求对应的目标元信息并没有包含在预存元信息中,客户端则需要重新从MDS中获取包含有目标元信息的预存元信息,本次获得的预存元信息可以为下一次的数据请求做准备。
步骤S103,如果所述本地缓存中的所述预存元信息包含所述目标元信息,则从对象存储设备中获取所述目标元信息对应的所述目标数据段。
在本实施例中,对象存储设备OSD是设备集群中一个设备。目标元信息中具体包含了目标数据数段的保存位置,即目标数据段保存在哪一个OSD中,客户端在从本地缓存中获取到目标元信息之后,就可以根据目标元信息的内容从对应的OSD中获取到目标数据段。
另外,如果本地缓存中的预存元信息不包含目标元信息,则需要从MDS中获取相应的目标元信息;再从OSD中获取目标元信息对应的目标数据段。
由以上内容可知,本实施例中提供的共享文件获取方法可以应用在客户端上,并且当数据请求的目标元信息包含在预存元信息中时,客户端可以从预存的元信息中直接获取当前请求的元信息,无需再次从元数据服务器MDS从获取元信息,能够减少与元数据服务器MDS进行通信的次数,提高获取到完整共享文件数据的效率。
图3为本发明实施例中提供的一种客户端获取预存元信息的流程图。如图3所示,在一些实施例中,客户端需要向MDS获取预存元信息,在从对象存储设备中获取所述目标元信息对应的所述目标数据段之后,还包括如下步骤:
步骤S201,获取响应上一次的历史数据请求时,计算出的历史预读位置。
客户端每获取一次预存元信息,对应的历史预读位置就会发生一次改变,本实施例中利用历史预读位置来判断客户端是否需要向MDS获取预存元信息,具体的方式为:判断上一次计算出的历史预读位置是否处于当前数据请求的目标数据段内。
步骤S202,如果所述历史预读位置处于所述目标数据段内,并且所述目标数据段与上一次历史数据请求所请求的历史数据段的数据内容连续,则确定响应于所述当前数据请求时需要从元数据服务器中获取预存元信息。
预存元信息的内容实际上多于目标元信息的内容,并且多出的内容是在目标元信息的内容之后的,例如目标元信息为0M-1M,而预存元信息为0M-2M。本实施例中要求数据请求中请求的数据段是连续的,以保证获取的目标元信息是连续的,这样连续的目标元信息更容易在本地缓存中找到。例如,如果第一次请求的目标元信息为0M-1M,第二请求的目标元信息为1M-2M,而预存元信息为0M-2M时,第二请求的目标元信息可直接从本地缓存中获得。可见,只有当前后请求的目标数据段是连续的情况下,才能保证减少客户端与MDS之间的通信次数。
另外,在数据段连续的情况下,如果历史预读位置并未处于目标数据段内,客户端则无需再次从MDS中获取新的预存元信息。
步骤S203,获取当前请求次序,所述当前请求次序用于表示响应于当前数据请求时客户端是第几次需要从所述元数据服务器获取预存元信息。
步骤S204,根据所述当前请求次序,计算预存元信息的起始位置和长度。
具体的,根据如下公式计算预存元信息的起始位置和长度:
offset(n)=offset(n-1)+size(n-1),(n≥1),
size(n)=ka×n,(k≥1),(n≥1),
其中,n表示当前请求次序,offset(n)表示预存元信息的起始位置,size(n)表示预存元信息的长度,a为预设长度值,k为表示正值的系数。
例如,当前请求次序2,如果offset(0)=0并且表示预存元信息的起始位置为0M,那么预存元信息的起始位置为offset(2)=offset(1)+size(1)=offset(1)+ka=offset(0)+size(0)+ka=ka,而预存元信息的长度为size(2)=2ka。
步骤S205,根据所述预存元信息的起始位置和长度,从所述元数据服务器中所述共享文件对应的完整元信息中获取所述预存元信息。
仍以当前请求次序为2、offset(0)=0为例,当a取1M,k取2时,预存元信息的起始位置为offset(2)=2M,长度size(2)=4M,那么客户端应该从MDS中共享文件对应的完整元信息中获取内容为2M-6M部分的预存元信息
步骤S206,将所述预存元信息保存在本地缓存中。
可见,在一些实施例中,共享文件的获取方法可以通过判断历史预读位置是否处于目标数据段内,来确定是否需要从MDS中获取预存元信息,并且可以根据从MDS中获取预存元信息次数,来计算预存元信息获取位置和长度,保证获取到的预存元信息可以满足下一次连续数据段的请求,减少客户端与MDS的通信次数。
图4为本发明实施例提供的中计算历史预读位置的流程图。在一些实施例中,可以根据如图4所示的方法计算出历史预读位置,具体步骤如下:
步骤S301,确定上一次的历史请求次序,所述上一次的历史请求次序用于表示客户端上一次获取预存元信息时,是第几次从所述元数据服务器获取的。
步骤S302,根据所述历史请求次序,以及上一次获取的预存元信息的起始位置和长度,计算出历史预读位置。
具体的,根据如下公式计算历史预读位置:
R(m)=offset(0)+a+1,(m=1),
其中,R(m)表示历史预读位置,m表示历史请求次序,offset(m)表示历史请求次序为m时获取预存元信息的起始位置,size(m)表示历史请求次序为m时获取预存元信息的长度,a为预设长度值。
例如,历史请求次序为1、offset(0)=0时,历史预读位置为R(1)=offset(0)+a+1=a+1;历史请求次序为2时,历史预读位置为:
图5为本发明实施例提供的另一种客户端获取预存元信息的流程图。如图5所示,在一些实施例中,在本地缓存中的预存元信息不包含目标元信息的情况下,从元数据服务器中获取所述目标元信息的步骤,还具体包括如下步骤:
步骤S401,在所述目标数据段与上一次历史数据请求所请求的历史数据段的数据内容不连续的情况下,确定响应于所述当前数据请求时需要从元数据服务器中获取预存元信息。
如上述实施例的内容所述,只有当前后请求的目标数据段是连续的情况下,才能保证减少客户端与MDS之间的通信次数。而对于请求的数据段不连续的情况,本实施例中需要重新获取新的预存元信息,例如客户端本地缓存中有内容为0M-2M的预存元信息,上一次请求的目标数据段为0M-1M,而本次请求的目标数据段为50M-51M,那么本次需要请求的对应目标元信息需要获取的50M-51M的内容,本地缓存中不存在,就需要重新从MDS中获取新的包含50M-51M内容的预存元信息,但是如果本次请求的是与上次连续的目标数据段1M-2M,那么就可以从本地缓存中直接获取1M-2M的目标元信息。
步骤S402,将当前请求次序重置为初始值,所述当前请求次序用于表示响应于当前数据请求时客户端首次从所述元数据服务器获取预存元信息。
本实施例中的初始值置为1,即客户端从MDS中获取预存元信息的请求次序需要重新累计。
步骤S403,根据所述当前请求次序和所述目标数据段,获得预存元信息的起始位置和长度。
本实施例中是在客户端已经响应了一些数据请求并且获取到了一些连续的数据段的情况下进行的,此时,如果当前所请求的数据段出现了中断的情况,则需要获取预存元信息的次数需要重新累计,但是预存元信息的起始位置需要根据当前请求数据段来决定,例如,前次获取了3M-4M的数据段,而当前获取的是15M-16M的数据段,那么客户端需要重新从MDS中获取预存元信息的起始位置offset(1)应该为15M,预存元信息的长度也应该重新计算,即从size(1)=ka开始。可见,客户端需要从MDS中获取15M-(15+ka)M的预存元信息。
步骤S404,根据所述预存元信息的起始位置和长度,从所述元数据服务器中所述共享文件对应的完整元信息中获取所述预存元信息,所述预存元信息中包含有所述目标元信息。在获取到预存元信息之后,客户端可以根据预存元信息中的目标元信息从OSD中获取到相应的目标数据段。
另外,在一些实施例中,如果当前请求的目标数据段对应的目标元信息包含在客户端本地缓存中,但是当前请求的目标数据段与上一次请求的目标数据段不连续,这种情况下也可以先从本地缓存中获取目标元信息,利用目标元信息从OSD中获取到目标数据段,并且客户端响应于当前的数据请求时无需重新获取预存元信息。例如:客户端本地缓存中有数据内容为2M-6M的预存元信息,上一次请求的目标数据段为1M-2M,而本次请求的目标数据段为4M-5M,那么本次需要请求的对应目标元信息需要获取的4M-5M的内容,包含在本地缓存中,客户端可以直接从本地缓存中获取到目标元信息,并且无需从MDS中获取新的预存元信息。但是,这种情况下,应当将本次获取目标数据段4M-5M的请求看作是初始请求,在本次请求的基础上重新累计获取预存元信息的次数,以及重新获取预存元信息的初始位置和长度,具体情况同上述实施例的内容,在此不再赘述。
值得说明的是,上述所有实施例中,FUSE向客户端发送的第一次数据请求,可以看作是关于共享文件的初始请求,并且请求的是该共享文件的最初始数据段。对于共享文件的初始数据请求,客户端中并没有相应的预存元信息,客户端针对于初次的数据请求需要初次从MDS中获取预存元信息,对于上述实施例中的a、k或者offset(0)都是初始数据请求中设置好的内容,设置好之后,当FUSE继续向客户端发送连续数据段的数据请求时,客户端就可以通过如上所述的公式计算出相应的历史预读位置、预存元信息的初始位置和预存元信息的长度。本发明实施例中可通过如下具体的实例解释上述实施例的整体内容。
当FUSE第一次向客户端发送数据请求时,该数据请求中包含了用于指示客户端获取共享文件A的第一个数据段A1的内容,并且该数据请求中还指定了A1的起始位置offset(0)=0,以及,a=1M,预设K=2,所以FUSE请求的第一数据段A1的长度为0M-1M,对应的目标元信息的内容也为0M-1M。此时,客户端的本地缓存中是不存在任何预存元信息的,所以客户端需要从MDS中获取到目标元信息以及第一次获取预存元信息,根据公式计算出预存元信息的长度为size(1)=ka=2M,起始位置offset(1)=offset(0)+size(0)=0M,可见,客户端第一次从MDS保存共享文件A的完整元信息中获取到内容为0M-2M的预存元信息,然后将其保存在本地缓存中,客户端根据目标元信息从OSD中获取到数据内容为0M-1M的第一数据段,并且,本次计算出的预读位置为R(1)=1M+1,其中1是指一个字节的内容。
FUSE第二次向客户端请求第二数据段A2的长度为1M-2M,可见第二数据段对应的目标元信息1M-2M的内容包含在客户端当前本地缓存中的预存元信息1M-2M中,此时客户端可以直接从本地缓存中获取目标元信息并根据其内容从OSD中获取到数据内容为1M-2M的第二数据段;然后判断第一次的预读位置1M+1在第二数据段1M-2M内,所以客户端需要第二次向MDS获取预存元信息,计算出本次获取预存元信息的长度为size(2)=4M,起始位置offset(2)=2M,所以本次客户端需要从MDS保存共享文件A的完整元信息中获取到内容为2M-6M的预存元信息,然后将其保存在本地缓存中,并且,本次计算出的预读位置为R(2)=4M+1。
FUSE第三次向客户端请求第三数据段A3的长度为2M-3M,此时第三数据段对应的目标元信息2M-3M的内容包含在客户端当前本地缓存中的预存元信息2M-6M中,客户端可以直接从本地缓存中获取目标元信息并根据其内容从OSD中获取到数据内容为2M-3M的第三数据段;然后判断第二次的预读位置4M+1不在第三数据段2M-3M中,所以本次客户端无需再从MDS中获取预存元信息。
FUSE第四次向客户端请求第四数据段A4的长度为3M-4M,此时第四数据段对应的目标元信息3M-4M的内容包含在客户端当前本地缓存中的预存元信息2M-6M中,客户端可以直接从本地缓存中获取目标元信息并根据其内容从OSD中获取到数据内容为3M-4M的第四数据段;然后判断第二次的预读位置4M+1不在第四数据段3M-4M中,所以本次客户端无需从MDS中获取预存元信息。
FUSE第五次向客户端请求第五数据段A5的长度为4M-5M,此时第五数据段对应的目标元信息4M-5M的内容包含在客户端当前本地缓存中的预存元信息2M-6M中,客户端可以直接从本地缓存中获取目标元信息并根据其内容从OSD中获取到数据内容为4M-5M的第五数据段;然后判断第二次的预读位置4M+1在第五数据段4M-5M中,所以客户端需要第三次向MDS获取预存元信息,计算出第三次获取预存元信息的长度为size(3)=6M,起始位置offset(3)=6M,所以本次客户端需要从MDS保存共享文件A的完整元信息中获取到内容为6M-12M的预存元信息,然后将其保存在本地缓存中,并且,计算出的第三次的预读位置为R(3)=9M+1。
如果FUSE以后每一次请求的数据段均是连续的,例如依次为5M-6M、6M-7M、7M-8M等等,都可以利用如上所述的内容依次类推获取目标数据段或者获取预存元信息,直至整个共享文件A的内容全部获得。
但是,如果FUSE第六次向客户端请求第六数据段A6与第五数据段A5不是连续的,例如A6为13M-14M,此时客户端需要从MDS中获取A6对应的目标元信息13M-14M,重新从MDS中获取新的预存元信息,并且将本次获取的次数看成是首次获取,并且获取的起始位置offset(1)=13M,长度size(1)=2M,进而客户端本次需要从MDS中获取内容为13M-15M的预存元信息,此后再次请求A7等数据段时,则可再根据上述内容依次获取。
由以上实施例可知,本发明提供了一种共享文件的获取方法,主要应用在共享文件较大的情况下。当共享文件较大时,共享文件会被拆分为多个数据段在对象存储设备中保存,每一个数据段也会在元数据服务器中对应一段元信息。本发明方案中,当接收到对于同一个共享文件的多个数据段请求并且请求的元信息包含在预存的元信息中时,客户端可以从预存的元信息中直接获取当前请求的元信息,无需再次从元数据服务器从获取元信息。本发明方案中的客户端,在接收到对于同一个共享文件的多个数据段请求时,能够减少与元数据服务器进行通信的次数,提高获取到完整共享文件数据的效率。
图6为本发明实施例提供的一种共享文件的获取装置的结构框图。如图6所示,该装置具体包括:请求获取模块51,用于获取当前数据请求,所述当前数据请求用于表示客户端需要获取的属于共享文件的目标数据段;数据获取模块52,用于响应于所述当前数据请求,查询本地缓存中的预存元信息是否包含与所述目标数据段对应的目标元信息;所述预存元信息是指属于所述共享文件且已保存在本地缓存中的元信息;在所述本地缓存中的所述预存元信息包含所述目标元信息时,从对象存储设备中获取所述目标元信息对应的所述目标数据段。
上述装置还包括预存元信息获取模块,用于获取响应上一次的历史数据请求时,计算出的历史预读位置;如果所述历史预读位置处于所述目标数据段内,并且所述目标数据段与上一次历史数据请求所请求的历史数据段的数据内容连续,则确定响应于所述当前数据请求时需要从元数据服务器中获取预存元信息;获取当前请求次序,所述当前请求次序用于表示响应于当前数据请求时客户端是第几次需要从所述元数据服务器获取预存元信息;根据所述当前请求次序,计算预存元信息的起始位置和长度;根据所述预存元信息的起始位置和长度,从所述元数据服务器中所述共享文件对应的完整元信息中获取所述预存元信息;将所述预存元信息保存在本地缓存中。
其中,预存元信息获取模块,还用于确定上一次的历史请求次序,所述上一次的历史请求次序用于表示客户端上一次获取预存元信息时,是第几次从所述元数据服务器获取的;根据所述历史请求次序,以及上一次获取的预存元信息的起始位置和长度,计算出历史预读位置。
预存元信息获取模块,还用于根据如下公式计算所述历史预读位置:
R(m)=offset(0)+a+1,(m=1),
其中,R(m)表示历史预读位置,m表示历史请求次序,offset(m)表示历史请求次序为m时获取预存元信息的起始位置,size(m)表示历史请求次序为m时获取预存元信息的长度,a为预设长度值。
数据获取模块,还用于如果所述本地缓存中的所述预存元信息不包含所述目标元信息,则从元数据服务器中获取所述目标元信息;从所述对象存储设备中获取所述目标元信息对应的所述目标数据段。
数据获取模块,还用于在所述目标数据段与上一次历史数据请求所请求的历史数据段的数据内容不连续的情况下,确定响应于所述当前数据请求时需要从元数据服务器中获取预存元信息;将当前请求次序重置为初始值,所述当前请求次序用于表示响应于当前数据请求时客户端首次从所述元数据服务器获取预存元信息;根据所述当前请求次序和所述目标数据段,获取预存元信息的起始位置和长度;根据所述预存元信息的起始位置和长度,从所述元数据服务器中所述共享文件对应的完整元信息中获取所述预存元信息,所述预存元信息中包含有所述目标元信息。
预存元信息获取模块,还用于根据如下公式计算所述预存元信息的起始位置和长度:
offset(n)=offset(n-1)+size(n-1),(n≥1),
size(n)=ka×n,(k≥1),(n≥1),
其中,n表示当前请求次序,offset(n)表示预存元信息的起始位置,size(n)表示预存元信息的长度,a为预设长度值,k为表示正值的系数。
图7为本发明实施例提供的电子设备硬件结构示意图,如图7所示,该电子设备包括:存储器61,用于存储程序指令;处理器62,用于调用并执行所述存储器中的程序指令,以实现上述实施例所述的共享文件的获取方法。
本发明实施例中,处理器62和存储器61可通过总线或其他方式连接。处理器可以是通用处理器,例如中央处理器、数字信号处理器、专用集成电路,或者被配置成实施本发明实施例的一个或多个集成电路。存储器可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘。
本发明还提供一种存储介质所述存储介质中存储有计算机程序,当共享文件的获取装置的至少一个处理器执行所述计算机程序时,共享文件的获取装置执行上述实施例所述的共享文件的获取方法。
所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于服务构建装置和服务加载装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。
Claims (10)
1.一种共享文件的获取方法,应用于客户端,其特征在于,包括:
获取当前数据请求,所述当前数据请求用于表示客户端需要获取的属于共享文件的目标数据段;
响应于所述当前数据请求,查询本地缓存中的预存元信息是否包含与所述目标数据段对应的目标元信息;所述预存元信息是指属于所述共享文件且已保存在本地缓存中的元信息;
如果所述本地缓存中的所述预存元信息包含所述目标元信息,则从对象存储设备中获取所述目标元信息对应的所述目标数据段。
2.根据权利要求1所述的方法,其特征在于,所述从对象存储设备中获取所述目标元信息对应的所述目标数据段之后,还包括:
获取响应上一次的历史数据请求时,计算出的历史预读位置;
如果所述历史预读位置处于所述目标数据段内,并且所述目标数据段与上一次历史数据请求所请求的历史数据段的数据内容连续,则确定响应于所述当前数据请求时需要从元数据服务器中获取预存元信息;
获取当前请求次序,所述当前请求次序用于表示响应于当前数据请求时客户端是第几次需要从所述元数据服务器获取预存元信息;
根据所述当前请求次序,计算预存元信息的起始位置和长度;
根据所述预存元信息的起始位置和长度,从所述元数据服务器中所述共享文件对应的完整元信息中获取所述预存元信息;
将所述预存元信息保存在本地缓存中。
3.根据权利要求2所述的方法,其特征在于,根据如下公式计算所述预存元信息的起始位置和长度:
offset(n)=offset(n-1)+size(n-1),(n≥1),
size(n)=ka×n,(k≥1),(n≥1),
其中,n表示当前请求次序,offset(n)表示预存元信息的起始位置,size(n)表示预存元信息的长度,a为预设长度值,k为表示正值的系数。
4.根据权利要求2所述的方法,其特征在于,所述获取响应上一次的历史数据请求时,计算出的历史预读位置的步骤,包括:
确定上一次的历史请求次序,所述上一次的历史请求次序用于表示客户端上一次获取预存元信息时,是第几次从所述元数据服务器获取的;
根据所述历史请求次序,以及上一次获取的预存元信息的起始位置和长度,计算出历史预读位置。
6.根据权利要求1所述的方法,其特征在于,所述在所述响应于当前数据请求,查询本地缓存中的预存元信息是否包含所述目标数据段对应的目标元信息之后,还包括:
如果所述本地缓存中的所述预存元信息不包含所述目标元信息,则从元数据服务器中获取所述目标元信息;
从所述对象存储设备中获取所述目标元信息对应的所述目标数据段。
7.根据权利要求6所述的方法,其特征在于,所述从元数据服务器中获取所述目标元信息的步骤,包括:
在所述目标数据段与上一次历史数据请求所请求的历史数据段的数据内容不连续的情况下,确定响应于所述当前数据请求时需要从元数据服务器中获取预存元信息;
将当前请求次序重置为初始值,所述当前请求次序用于表示响应于当前数据请求时客户端首次从所述元数据服务器获取预存元信息;
根据所述当前请求次序和所述目标数据段,获得预存元信息的起始位置和长度;
根据所述预存元信息的起始位置和长度,从所述元数据服务器中所述共享文件对应的完整元信息中获取所述预存元信息,所述预存元信息中包含有所述目标元信息。
8.一种共享文件的获取装置,应用于客户端,其特征在于,包括:
请求获取模块,用于获取当前数据请求,所述当前数据请求用于表示客户端需要获取的属于共享文件的目标数据段;
数据获取模块,用于响应于所述当前数据请求,查询本地缓存中的预存元信息是否包含与所述目标数据段对应的目标元信息;所述预存元信息是指属于所述共享文件且已保存在本地缓存中的元信息;在所述本地缓存中的所述预存元信息包含所述目标元信息时,从对象存储设备中获取所述目标元信息对应的所述目标数据段。
9.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现权利要求1-7任一项所述的共享文件的获取方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,当共享文件的获取装置的至少一个处理器执行所述计算机程序时,共享文件的获取装置执行权利要求1-7任一项所述的共享文件的获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010482053.7A CN111680014B (zh) | 2020-05-29 | 2020-05-29 | 共享文件的获取方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010482053.7A CN111680014B (zh) | 2020-05-29 | 2020-05-29 | 共享文件的获取方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111680014A true CN111680014A (zh) | 2020-09-18 |
CN111680014B CN111680014B (zh) | 2023-06-02 |
Family
ID=72452969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010482053.7A Active CN111680014B (zh) | 2020-05-29 | 2020-05-29 | 共享文件的获取方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680014B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114020504A (zh) * | 2021-10-19 | 2022-02-08 | 北京五八信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546776A (zh) * | 2011-12-27 | 2012-07-04 | 北京中科大洋科技发展股份有限公司 | 一种san共享文件系统中实现离线读文件的方法 |
CN103916465A (zh) * | 2014-03-21 | 2014-07-09 | 中国科学院计算技术研究所 | 一种基于分布式文件系统的数据预读装置及其方法 |
US9268651B1 (en) * | 2012-10-31 | 2016-02-23 | Amazon Technologies, Inc. | Efficient recovery of storage gateway cached volumes |
CN105468660A (zh) * | 2014-09-30 | 2016-04-06 | 北京金山云网络技术有限公司 | 分布式文件系统的读方法、客户端设备及分布式文件系统 |
US20160210195A1 (en) * | 2015-01-20 | 2016-07-21 | Commvault Systems, Inc. | Synchronizing selected portions of data in a storage management system |
CN107491545A (zh) * | 2017-08-25 | 2017-12-19 | 郑州云海信息技术有限公司 | 一种分布式存储系统的目录读取方法及客户端 |
US20180285202A1 (en) * | 2017-03-29 | 2018-10-04 | Commvault Systems, Inc. | External fallback system for local computing systems |
CN110874345A (zh) * | 2018-08-29 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 分布式存储系统中的数据处理方法、装置和系统 |
-
2020
- 2020-05-29 CN CN202010482053.7A patent/CN111680014B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546776A (zh) * | 2011-12-27 | 2012-07-04 | 北京中科大洋科技发展股份有限公司 | 一种san共享文件系统中实现离线读文件的方法 |
US9268651B1 (en) * | 2012-10-31 | 2016-02-23 | Amazon Technologies, Inc. | Efficient recovery of storage gateway cached volumes |
CN103916465A (zh) * | 2014-03-21 | 2014-07-09 | 中国科学院计算技术研究所 | 一种基于分布式文件系统的数据预读装置及其方法 |
CN105468660A (zh) * | 2014-09-30 | 2016-04-06 | 北京金山云网络技术有限公司 | 分布式文件系统的读方法、客户端设备及分布式文件系统 |
US20160210195A1 (en) * | 2015-01-20 | 2016-07-21 | Commvault Systems, Inc. | Synchronizing selected portions of data in a storage management system |
US20180285202A1 (en) * | 2017-03-29 | 2018-10-04 | Commvault Systems, Inc. | External fallback system for local computing systems |
CN107491545A (zh) * | 2017-08-25 | 2017-12-19 | 郑州云海信息技术有限公司 | 一种分布式存储系统的目录读取方法及客户端 |
CN110874345A (zh) * | 2018-08-29 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 分布式存储系统中的数据处理方法、装置和系统 |
Non-Patent Citations (2)
Title |
---|
YANG HONGZHANG等: ""Research of Massive Small Files Reading Optimization Based on Parallel Network File System"", 《IEEE》 * |
王振升: ""可重构堆叠存储系统的设计及实现研究"", 《中国硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114020504A (zh) * | 2021-10-19 | 2022-02-08 | 北京五八信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111680014B (zh) | 2023-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109753207B (zh) | 一种信息处理方法及其装置、存储介质 | |
CN108780420B (zh) | 在基于处理器的系统中的存储器中的经压缩存储器线的基于优先级的存取 | |
CN107197359B (zh) | 视频文件缓存方法及装置 | |
CN112667405B (zh) | 信息处理方法、装置、设备及存储介质 | |
CN111597213A (zh) | 一种缓存方法、软件服务器及存储介质 | |
CN112035529A (zh) | 缓存方法、装置、电子设备及计算机可读存储介质 | |
CN111159219A (zh) | 一种数据管理方法、装置、服务器及存储介质 | |
CN112764925A (zh) | 基于虚拟内存的数据存储方法、装置、设备及存储介质 | |
CN107784085B (zh) | 一种数据列表的导出方法及其终端 | |
CN105988941B (zh) | 缓存数据处理方法和装置 | |
CN111680014B (zh) | 共享文件的获取方法、装置、电子设备及存储介质 | |
CN112948498A (zh) | 一种分布式系统全局标识的生成方法和装置 | |
CN110545313B (zh) | 消息推送控制方法、装置及电子设备 | |
CN114116656B (zh) | 数据处理方法及相关装置 | |
CN113779412B (zh) | 一种基于区块链网络的消息触达方法、节点和系统 | |
CN116185578A (zh) | 计算任务的调度方法和计算任务的执行方法 | |
CN111131497B (zh) | 文件传输方法、装置、电子设备及存储介质 | |
CN111708715B (zh) | 内存分配方法、内存分配装置及终端设备 | |
CN110377665B (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN107679093B (zh) | 一种数据查询方法及装置 | |
CN114328558B (zh) | 一种榜单更新方法、装置、设备及存储介质 | |
CN117743206B (zh) | 数据的储存方法和装置 | |
WO2022028165A1 (zh) | 缓存管理方法、终端以及存储介质 | |
US20220164317A1 (en) | Remote file access apparatus and method thereof | |
CN115982183A (zh) | 一种基于自定义路径的数据差量更新方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |