一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

网络文件系统和基于网络文件系统的请求处理方法与流程

2021-12-07 21:58:00 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种网络文件系统和基于网络文件系统的请求处理方法。


背景技术:

2.网络文件系统(network file system,简称nfs)是当前主流异构平台共享文件系统之一,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。nfs客户端(一般为应用服务器,例如web)可以通过挂载的方式将nfs服务端共享的数据目录挂载到nfs客户端本地系统中(就是某一个挂载点下)。也就是说,从nfs客户端看,nfs服务端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上确是远端的nfs服务端的目录。
3.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:nfs对应的后台文件系统需要开发完整的文件系统抽象层fsal(file system abstraction layer,简称fsal,即将后端存储抽象为统一的、命名空间独立的应用程序调用接口,供应用层来调用)模块才能实现,实现较为复杂。


技术实现要素:

4.有鉴于此,本发明实施例提供一种网络文件系统和基于网络文件系统的请求处理方法,能够达到客户端使用方便、以及文件系统服务端开发简单的有益效果,解决fuse没有网络访问能力以及现有nfs实现较为复杂的问题。
5.为实现上述目的,根据本发明实施例的第一方面,提供了一种网络文件系统。
6.本发明实施例的一种网络文件系统,包括:文件系统客户端和文件系统服务端,所述文件系统客户端和所述文件系统服务端之间基于fuse通信协议进行信息交互;所述文件系统客户端用于将写入的文件操作请求转化为网络fuse请求,将所述网络fuse请求发送至所述文件系统服务端,然后接收所述文件系统服务端返回的请求处理结果;所述文件系统服务端用于获取所述文件系统客户端发送的所述网络fuse请求,处理所述网络fuse请求,获得所述请求处理结果,接着向所述文件系统客户端返回所述请求处理结果。
7.可选地,所述文件系统客户端包括位于内核空间的虚拟文件系统、fuse请求写入模块和发送队列;所述虚拟文件系统用于接收写入的所述文件操作请求,将所述文件操作请求下发至所述fuse请求写入模块;所述fuse请求写入模块用于将所述虚拟文件系统下发的所述文件操作请求转化为所述网络fuse请求,并将所述网络fuse请求放入所述发送队列中;所述发送队列用于将所述网络fuse请求发送至所述文件系统服务端。
8.可选地,所述发送队列包括第一指令队列和第一数据缓冲器,所述网络fuse请求包括指令请求和数据请求;所述fuse请求写入模块还用于将所述指令请求放入所述第一指令队列中,将所述数据请求放入所述第一数据缓冲器中。
9.可选地,所述文件系统服务端包括位于内核空间的第二指令队列和第二数据缓冲器;所述第一指令队列用于将所述指令请求发送至所述第二指令队列;所述第一数据缓冲
器用于将所述数据请求发送至所述第二数据缓冲器;所述第二指令队列用于接收所述第一指令队列发送的所述指令请求;所述第二数据缓冲器用于接收所述第一数据缓冲器发送的所述数据请求。
10.可选地,所述文件系统服务端包括位于内核空间通信媒介和获取请求模块;所述通信媒介与所述第二指令队列对接,用于捕获所述第二指令队列中的所述指令请求;所述获取请求模块用于获取所述通信媒介捕获的所述指令请求,以及从所述第二数据缓冲器中获取所述数据请求。
11.可选地,所述文件系统服务端包括位于用户空间的用户态文件系统;所述用户态文件系统包括:读取请求模块、处理请求模块、文件写入模块;所述读取请求模块用于在所述文件系统服务端的用户空间获取所述网络fuse请求;所述处理请求模块用于处理所述读取请求模块获取的所述网络fuse请求,获得所述请求处理结果;所述文件写入模块用于将所述请求处理结果写入存储介质中。
12.为实现上述目的,根据本发明实施例的第二方面,提供了一种基于网络文件系统的请求处理方法。
13.本发明实施例的一种基于网络文件系统的请求处理方法,应用于文件系统客户端,所述方法包括:接收写入的待处理文件操作请求,将所述待处理文件操作请求转化为待处理网络fuse请求,将所述待处理网络fuse请求发送至文件系统服务端;在所述文件系统服务端对所述待处理网络fuse请求进行处理后,接收所述文件系统服务端返回的目标请求处理结果。
14.可选地,所述文件系统客户端包括位于内核空间的虚拟文件系统、fuse请求写入模块和发送队列;以及,所述接收写入的待处理文件操作请求,将所述待处理文件操作请求转化为待处理网络fuse请求,将所述待处理网络fuse请求发送至文件系统服务端,包括:所述虚拟文件系统接收写入的所述待处理文件操作请求,将所述待处理文件操作请求下发至所述fuse请求写入模块;所述fuse请求写入模块将所述虚拟文件系统下发的所述待处理文件操作请求转化为所述待处理网络fuse请求,并将所述待处理网络fuse请求放入所述发送队列中;所述发送队列将所述待处理网络fuse请求发送至所述文件系统服务端。
15.可选地,所述发送队列包括第一指令队列和第一数据缓冲器;以及,在将所述待处理网络fuse请求放入所述发送队列中之前,所述方法还包括:所述fuse请求写入模块判断所述待处理网络fuse请求是否包括待处理指令请求;若所述待处理网络fuse请求包括所述待处理指令请求,则将所述待处理指令请求放入所述第一指令队列中;所述fuse请求写入模块判断所述待处理网络fuse请求是否包括待处理数据请求;若所述待处理网络fuse请求包括所述待处理数据请求,则将所述待处理数据请求放入所述第一数据缓冲器中。
16.为实现上述目的,根据本发明实施例的第三方面,提供了一种基于网络文件系统的请求处理方法。
17.本发明实施例的一种基于网络文件系统的请求处理方法,应用于文件系统服务端,所述方法包括:在所述文件系统服务端的内核空间获取文件系统客户端发送的待处理fuse请求;在所述文件系统服务端的用户空间处理所述待处理网络fuse请求,获得目标请求处理结果;向所述文件系统客户端返回所述目标请求处理结果。
18.可选地,所述文件系统服务端包括位于内核空间的通信媒介和获取请求模块;以
及,所述在所述文件系统服务端的内核空间获取文件系统客户端发送的待处理fuse请求,包括:所述通信媒介捕获所述文件系统客户端发送的待处理指令请求,将所述待处理指令请求发送至所述获取请求模块;所述获取请求模块接收所述待处理指令请求,判断所述待处理指令请求是否需要对应的数据;若是,则所述获取请求模块获取所述文件系统客户端发送的所述待处理指令请求对应的待处理数据请求,确定所述待处理指令请求和所述待处理数据请求为所述待处理fuse请求;若否,则所述获取请求模块确定所述待处理指令请求为所述待处理fuse请求。
19.可选地,所述文件系统服务端包括位于内核空间的第二指令队列;所述第二指令队列存储所述文件系统客户端发送的所述待处理指令请求;以及,所述第二指令队列与所述通信媒介对接,以便所述通信媒介捕获所述待处理指令请求。
20.可选地,所述文件系统服务端包括位于内核空间的第二数据缓冲器;所述第二数据缓冲器存储所述文件系统客户端发送的所述待处理数据请求;以及,所述获取请求模块获取所述文件系统客户端发送的所述待处理指令请求对应的待处理数据请求,包括:所述获取请求模块从所述第二数据缓冲器中获取所述待处理数据请求。
21.可选地,所述文件系统服务端包括位于用户空间的用户态文件系统,所述用户态文件系统包括:读取请求模块、处理请求模块、文件写入模块;以及,在所述文件系统服务端的用户空间处理所述待处理网络fuse请求,获得目标请求处理结果,包括:所述读取请求模块在所述文件系统服务端的用户空间获取所述网络fuse请求,将获取的所述网络fuse请求发送至所述处理请求模块;所述处理请求模块处理所述读取请求模块获取的所述网络fuse请求,获得所述请求处理结果;所述文件写入模块将所述请求处理结果写入存储介质中。
22.上述发明中的一个实施例具有如下优点或有益效果:本发明实施例的网络文件系统,通过对fuse进行优化,得到文件系统客户端和文件系统服务端,且将fuse通信协议作为文件系统客户端与文件系统服务端之间的协议方式,达到客户端使用方便、以及文件系统服务端开发简单的有益效果,解决fuse没有网络访问能力以及现有nfs实现较为复杂的问题。此外,fuse请求写入模块可以将用户态的请求转化为内核态的请求,使得文件系统客户端与文件系统服务端可以按照fuse通信协议进行信息交互。还有,第一指令队列可以采用低延迟的队列发送指令请求,从而提高发送速度,第一数据缓冲器可以采用高吞吐队列发送数据请求,从而增加发送带宽。
23.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
24.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
25.图1是根据本发明实施例的网络文件系统的结构示意图;
26.图2是fuse的工作原理示意图;
27.图3是根据本发明一个实施例的基于网络文件系统的请求处理方法的主要步骤的示意图;
28.图4是根据本发明一个实施例的基于网络文件系统的请求处理方法的主要流程的示意图;
29.图5是根据本发明另一实施例的基于网络文件系统的请求处理方法的主要步骤的示意图;
30.图6是根据本发明另一实施例的基于网络文件系统的请求处理方法的主要流程的示意图。
具体实施方式
31.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
32.文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。文件系统由三部分组成:文件系统的接口、对对象操纵和管理的软件集合、对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。nfs是文件系统之上的一个网络抽象,来允许远程客户端以与本地文件系统类似的方式,来通过网络进行访问,即可以让使用者访问网络上别处的文件就像在使用自己的计算机一样。但是,nfs对应的后台文件系统需要开发完整的文件系统抽象层fsal模块才能实现,实现较为复杂。
33.为了解决nfs的实现较为复杂的技术问题,本发明实施例提供一种网络文件系统,该网络文件系统是基于用户空间文件系统(filesystem in userspace,简称fuse)构建的。其中,fuse是目前一个主流的开源的用户态文件系统实现方案,它将文件系统的实现从内核态搬到了用户态,可以在用户态实现一个文件系统,解决了文件系统必须在内核态的难题。由于fuse可以提供本地用户态文件系统的功能,但是没有网络访问的能力,因此本发明实施例提供一种网络文件系统,可以对fuse进行优化,解决了fuse没有网络访问能力的问题,也解决了现有nfs实现较为复杂的问题。
34.图1是根据本发明实施例的网络文件系统的结构示意图,如图1所示,网络文件系统可以包括:文件系统客户端10和文件系统服务端20。文件系统客户端10可以看作为本地客户端,用户通过文件系统客户端10访问文件系统服务端20上的文件。文件系统客户端10和文件系统服务端20之间基于fuse通信协议进行信息交互,也就是说网络文件系统是按照fuse的工作原理进行工作的。
35.为了更好的理解本发明实施例的网络文件系统,接下来描述fuse的工作过原理,图2是fuse的工作原理示意图。图2中,fuse挂载在目录/tmp/fuse下,当应用层程序要访问/tmp/fuse下的文件时,通过glibc(即,运行库,是操作系统中最底层的调用接口)中的函数进行系统调用,处理这些系统调用的虚拟文件系统中的函数会调用fuse在内核中的文件系统(即,图2中的fuse);内核中的fuse文件系统将用户的请求,发送给用户态文件系统;用户态文件系统收到请求后,进行处理,将结果返回给内核中的fuse文件系统;最后,内核中的fuse文件系统将数据返回给用户程序。
36.文件系统客户端10可用于:将写入的文件操作请求转化为网络fuse请求,将网络
fuse请求发送至文件系统服务端20,然后接收文件系统服务端20返回的请求处理结果。
37.其中,文件操作请求是用户通过应用程序输入的文件操作请求,比如用户通过某购物平台提交订单数据,将该订单数据写入某数据库,则文件操作请求为请求将该订单数据写入某数据库。文件操作请求为用户态请求,即用户在文件系统客户端10的用户空间获取到的请求。本发明实施例提供的网络文件系统是按照从图2所示的fuse的工作原理进行工作的,fuse在接收到用户态请求后,将用户态请求转化为内核态请求,然后通过用户态文件系统处理内核态请求。因此本发明实施例的文件系统客户端10在获取到文件操作请求后,首先将该文件操作请求转化为网络fuse请求,fuse请求为在fuse通信协议中使用的特定格式的请求,即内核态的文件操作请求。由于本发明实施例的网络文件系统可以实现文件系统客户端与文件系统服务端之间的信息交互,因此命名内核态的文件操作请求为网络fuse请求。文件系统客户端10将文件操作请求转化为网络fuse请求后,可以将该网络fuse请求发送至文件系统服务端20,这样文件系统服务端20可以对请求进行处理,并将请求处理结果返回至文件系统客户端10。
38.文件系统服务端20可用于:获取文件系统客户端10发送的网络fuse请求,处理网络fuse请求,获得请求处理结果,接着向文件系统客户端10返回请求处理结果。
39.网络fuse请求为内核态的文件操作请求,因此文件系统客户端10将转化的网络fuse请求从文件系统客户端10的内核空间发送至文件系统服务端20的内核空间,即在文件系统服务端20的内核空间获取文件系统客户端10发送的网络fuse请求。根据fuse的工作原理得知,请求是在用户空间处理的,所以文件系统服务端20获取到网络fuse请求后,将获取到的请求转化为用户态请求,然后在文件系统服务端20的用户空间处理请求,最后将请求处理结果返回至文件系统客户端10。
40.从图1可以看出,文件系统客户端10可以包括:虚拟文件系统101、fuse请求写入模块102和发送队列103,且虚拟文件系统101、fuse请求写入模块102和发送队列103均位于文件系统客户端10的内核空间。
41.其中,虚拟文件系统101可用于:接收写入的文件操作请求,将文件操作请求下发至fuse请求写入模块102。虚拟文件系统(virtual file systems,简称vfs)是一种用于网络环境的分布式文件系统,是允许和操作系统使用不同的文件系统实现的接口。虚拟文件系统是物理文件系统与服务之间的一个接口层,它对操作系统的每个文件系统的所有细节进行抽象,使得不同的文件系统在操作系统核心以及系统中运行的其他进程看来,都是相同的。严格说来,虚拟文件系统并不是一种实际的文件系统,只存在于内存中,不存在于任何外存空间。本发明实施例中,虚拟文件系统101根据文件操作请求判断出需要调用的文件系统(即,fuse已经挂到虚拟文件系统的文件系统列表上),并将此请求发送到fuse请求写入模块102。
42.fuse请求写入模块102可用于:将虚拟文件系统101下发的文件操作请求转化为网络fuse请求,并将网络fuse请求放入发送队列103中。其中,fuse请求写入模块102相当于是图2中的fuse,即fuse在内核中的文件系统。
43.发送队列103可用于:将网络fuse请求发送至文件系统服务端20。本发明实施例的网络文件系统是用户通过文件系统客户端10访问文件系统服务端20上的文件,即从文件系统客户端10看,用户访问文件系统服务端20上的文件就像在使用文件系统客户端10一样。
所以,文件系统客户端10需要通过发送队列103将网络fuse请求发送至文件系统服务端20,以便文件系统服务端20可以处理网络fuse请求。
44.如图1所示,发送队列103可以包括:第一指令队列1031和第一数据缓冲器1032。考虑到网络fuse请求可以包括:指令请求和数据请求。指令请求可以包含文件系统操作码和链接管理操作请求,数据请求可以为具体的写操作和读操作的数据部分。以写操作请求为例,被写入的文件名称和写入的数据大小可以放入指令请求部分,具体需要被写入的数据放入数据请求部分。由于指令请求一般数据量较少,数据请求一般数据量较大,所以可以采用低延迟的队列发送指令请求,从而可以提高发送速度,采用高吞吐队列发送数据请求,从而可以增加发送带宽。所以,fuse请求写入模块102将网络fuse请求放入发送队列103中,具体可以为:fuse请求写入模块102将指令请求放入第一指令队列1031中,将数据请求放入第一数据缓冲器1032中。
45.本发明实施例的网络文件系统中,文件系统客户端10将数据量较少的指令请求放入第一指令队列1031中,这样第一指令队列1031可以采用低延迟队列的方式将指令请求发送至文件系统服务端20;还有文件系统客户端10将数据量见多的数据请求放入第一数据缓冲器1032,使得第一数据缓冲器1032可以采用高吞吐队列的方式将数据请求发送至文件系统服务端20。
46.文件系统客户端10具有发送请求的第一指令队列1031和第一数据缓冲器1032,相应地,文件系统服务端20可以包括用于接收请求的第二指令队列201和第二数据缓冲器202。第二指令队列201和第二数据缓冲器202均位于文件系统服务端20的内核空间,第二指令队列201可用于:接收第一指令队列1031发送的指令请求,第二数据缓冲器202可用于:接收第一数据缓冲器1032发送的数据请求。
47.图1中,文件系统服务端20还可以包括位于内核空间的通信媒介203和获取请求模块204。
48.通信媒介203与第二指令队列201对接,可用于:捕获第二指令队列201中的指令请求。通信媒介203相当于进程间通信的设备,由于指令请求和数据请求处于两个不同的进程中,无法直接相互访问数据,所以需要利用通信媒介203获取到指令请求。本发明实施例中,文件系统服务端20启动后,会不停的读取通信媒介203,由于通信媒介203的读接口与第二指令队列201对接,因此当文件系统客户端10的第一指令队列1031将指令请求发送至文件系统服务端20的第二指令队列201时,便会被通信媒介203的读接口捕获到。
49.通信媒介203捕获到第二指令队列201中的指令请求后,可以将捕获的指令请求发送至获取请求模块204中,获取请求模块204还可以从第二数据缓冲器202中获取到数据请求。需要注意的是,获取请求模块204在得到指令请求a后,判断该指令请求a是否需要对应的数据请求b。若需要,则从第二数据缓冲器202中获取到指令请求a对应的数据请求b,比如写操作请求,数据请求为被写入的数据,则需要从第二数据缓冲器202中获取到被写入的数据。若不需要,则不需要从第二数据缓冲器202中获取数据请求,比如读操作请求,不需要从第二数据缓冲器202中获取数据请求。总结来说,获取请求模块204可以接收通信媒介203发送的指令请求,以及从第二数据缓冲器202中获取数据请求。
50.此外,文件系统服务端20还可以包括位于用户空间的用户态文件系统205,该用户态文件系统205与图2所示的用户态文件系统相对应,可以包括:读取请求模块2051、处理请
求模块2052和文件写入模块2053。
51.具体的,读取请求模块2051可用于:在文件系统服务端20的用户空间获取网络fuse请求。根据上文描述得知,获取请求模块204可以获得请求的全部部分,由于获取请求模块204位于文件系统服务端20的内核空间,即获取请求模块204在文件系统服务端20的内核空间获取到请求的全部部分,但是请求处理是在文件系统服务端20的用户空间操作的,所以读取请求模块2051可用于:在文件系统服务端20的用户空间读取网络fuse请求,然后将读取到的网络fuse请求发送至处理请求模块2052,进而处理请求模块2052可用于处理读取请求模块2051获取的网络fuse请求,获得请求处理结果,最后文件写入模块2053可用于将请求处理结果写入存储介质中。
52.上文通过介绍网络文件系统的各组成部分,详细说明文件操作请求从文件系统客户端10的虚拟文件模块101到文件系统服务端20的处理请求模块2052的过程。在处理请求模块2052处理请求后,可以按照逆方向返回请求处理结果。具体为如下步骤a1至a5所示:
53.步骤a1,处理读取请求模块2051在获得请求处理结果后,可以将请求处理结果返回至获取请求模块204;
54.步骤a2,获取请求模块204在得到请求处理结果后,将请求处理结果分为指令请求对应的处理结果和数据请求对应的处理结果,然后将指令请求对应的处理结果发送通信媒介203中,这样通信媒介203可以将指令请求对应的处理结果放入第二指令队列201中,同时,获取请求模块204将数据请求对应的处理结果放入第二数据缓冲器202中;
55.步骤a3,第二指令队列201将指令请求对应的处理结果发送至第一指令队列1031,第二数据缓冲器202将数据请求对应的处理结果发送至第一数据缓冲器1032;
56.步骤a4,fuse请求写入模块102可以从第一指令队列1031中获取指令请求对应的处理结果,以及从第一数据缓冲器1032中获取数据请求对应的处理结果,也就是说,fuse请求写入模块102可以获取网络fuse请求对应的处理结果,由于此时的处理结果为内核态的处理结果,因此fuse请求写入模块102需要将内核态的处理结果转化为用户态的处理结果,接着将用户态的处理结果发送至虚拟文件系统101;
57.步骤a5,虚拟文件系统101可以将用户态的处理请求返回至用户。
58.此外,图1所示的箭头方向为文件操作请求从文件系统客户端10的虚拟文件模块101到文件系统服务端20的处理请求模块2052的过程,并没有标出请求处理结果的返回过程。
59.本发明实施例的网络文件系统,通过对fuse进行优化,得到文件系统客户端和文件系统服务端,且将fuse通信协议作为文件系统客户端与文件系统服务端之间的协议方式,达到客户端使用方便、以及文件系统服务端开发简单的有益效果,解决fuse没有网络访问能力以及现有nfs实现较为复杂的问题。此外,fuse请求写入模块可以将用户态的请求转化为内核态的请求,使得文件系统客户端与文件系统服务端可以按照fuse通信协议进行信息交互。还有,第一指令队列可以采用低延迟的队列发送指令请求,从而提高发送速度,第一数据缓冲器可以采用高吞吐队列发送数据请求,从而增加发送带宽。
60.图3是根据本发明一个实施例的基于网络文件系统的请求处理方法的主要步骤的示意图。图3所示的请求处理方法应用于文件系统客户端10,该请求处理方法的主要步骤可以包括:
61.步骤s301,文件系统客户端10接收写入的待处理文件操作请求,将待处理文件操作请求转化为待处理网络fuse请求,将待处理网络fuse请求发送至文件系统服务端20;
62.步骤s302,在文件系统服务端20对待处理网络fuse请求进行处理后,文件系统客户端10接收文件系统服务端20返回的目标请求处理结果。
63.其中,待处理文件操作请求是用户通过应用程序写入的需要处理的文件操作请求。文件系统客户端10在获取到该待处理文件操作请求后,可以将其转化为待处理网络fuse请求,然后将该待处理网络fuse请求发送至文件系统服务端20。
64.从图1得知,文件系统客户端10可以包括:虚拟文件系统101、fuse请求写入模块102和发送队列103。所以,作为本发明的可参考实施例,步骤s301的文件系统客户端10接收写入的待处理文件操作请求,将待处理文件操作请求转化为待处理网络fuse请求,将待处理网络fuse请求发送至文件系统服务端20,可以包括:虚拟文件系统101接收写入的待处理文件操作请求,将待处理文件操作请求下发至fuse请求写入模块102;fuse请求写入模块102将虚拟文件系统101下发的待处理文件操作请求转化为待处理网络fuse请求,并将待处理网络fuse请求放入发送队列103中;发送队列103将待处理网络fuse请求发送至文件系统服务端20。
65.考虑到请求的形式可以包括指令请求和数据请求。针对不同请求,可以采用不同的发送方式,所以发送队列103可以包括:用于存放指令请求的第一指令队列1031和用于存放数据请求的第一数据缓冲器1032。因此,作为本发明的可参考实施例,在将待处理网络fuse请求放入发送队列中之前,请求处理方法还可以包括:步骤b1,fuse请求写入模块102将待处理网络fuse请求中的待处理指令请求放入第一指令队列1031中;步骤b2,fuse请求写入模块102判断待处理网络fuse请求是否包括待处理数据请求;步骤b3,若待处理网络fuse请求包括待处理数据请求,则将待处理数据请求放入第一数据缓冲器1032中。
66.需要注意的是,由于待处理网络fuse请求可以不包含具体的数据部分,比如读操作请求中不包含数据部分,即待处理网络fuse请求可以不包含数据请求。所以在步骤b2中,需要判断待处理网络fuse请求是否包括待处理数据请求,若待处理网络fuse请求不包括待处理数据请求,则不需要将请求放入第一数据缓冲器1032中。还有,在将待处理指令请求放入第一指令队列1031后,第一指令队列1031可以将待处理指令请求发送至文件系统服务端20中的第二指令队列201;在将待处理数据请求放入第一数据缓冲器1032后,第一数据缓冲器1032可以将待处理数据请求发送至文件系统服务端20中的第二数据缓冲器202。
67.图4是根据本发明一个实施例的基于网络文件系统的请求处理方法的主要流程的示意图。图4所示的请求处理方法应用于文件系统客户端10,其主要流程可以包括:
68.步骤s401,虚拟文件系统101接收写入的待处理文件操作请求,将待处理文件操作请求下发至fuse请求写入模块102;
69.步骤s402,fuse请求写入模块102将虚拟文件系统101下发的待处理文件操作请求转化为待处理网络fuse请求;
70.步骤s403,fuse请求写入模块102将待处理网络fuse请求中的待处理指令请求放入第一指令队列1031中;
71.步骤s404,第一指令队列1031将待处理指令请求发送至文件系统服务端20中的第二指令队列201;
72.步骤s405,fuse请求写入模块102判断待处理网络fuse请求中是否包括待处理数据请求,若是,则执行步骤s406;
73.步骤s406,fuse请求写入模块102将待处理数据请求放入第一数据缓冲器1032中;
74.步骤s407,第一数据缓冲器1032将待处理数据请求发送至文件系统服务端20中的第二数据缓冲器202。
75.需要注意的是,图4所示的仅为一个具体的实施例,步骤s403和步骤s405这两步的执行顺序可以根据实际情况调整,步骤s403至步骤s407的目的为:fuse请求写入模块102将待处理网络fuse请求中的待处理指令请求放入第一指令队列1031中,以便第一指令队列1031将待处理指令请求发送至第二指令队列201;以及,fuse请求写入模块102将待处理网络fuse请求中的待处理数据请求放入第一数据缓冲器1032中,以便第一数据缓冲器1032将待处理数据请求发送至第二数据缓冲器202。
76.图5是根据本发明另一实施例的基于网络文件系统的请求处理方法的主要步骤的示意图。图5所示的请求处理方法应用于文件系统服务端20,该请求处理方法的主要步骤可以包括:
77.步骤s501,在文件系统服务端20的内核空间获取文件系统客户端10发送的待处理fuse请求;
78.步骤s502,在文件系统服务端20的用户空间处理待处理网络fuse请求,获得目标请求处理结果;
79.步骤s503,向文件系统客户端10返回目标请求处理结果。
80.首先文件系统服务端20获取到文件系统客户端10发送的内核态的待处理fuse请求,然后在文件系统服务端20的用户空间处理该待处理fuse请求,得到目标请求处理结果,最后将该目标请求处理结果返回至文件系统客户端10。
81.图1中,文件系统服务端20可以包括:通信媒介203和获取请求模块204,且通信媒介203和获取请求模块204均位于文件系统服务端20的内核空间。作为本发明的可参考实施例,步骤s501在文件系统服务端20的内核空间获取文件系统客户端10发送的待处理fuse请求,可以包括:通信媒介203捕获文件系统客户端10发送的待处理指令请求,将待处理指令请求发送至获取请求模块204;获取请求模块204接收待处理指令请求,判断待处理指令请求是否需要对应的数据;若是,则获取请求模块204获取文件系统客户端10发送的待处理指令请求对应的待处理数据请求,确定待处理指令请求和待处理数据请求为待处理fuse请求;若否,则获取请求模块204确定待处理指令请求为待处理fuse请求。
82.由于通信媒介203与文件系统服务端20的第二指令队列201对接,因此当文件系统客户端10的第一指令队列1031将待处理指令请求发送至第二指令队列201时,便会被通信媒介203的读接口捕获到,然后将捕获到的待处理指令请求发送至获取请求模块204。考虑到待处理网络fuse请求可以不包含具体的数据部分,比如读操作请求中不包含数据部分,即待处理网络fuse请求可以不包含数据请求。所以,获取请求模块204在接收到待处理指令请求后,需要判断接收到的待处理指令请求是否需要对应的数据。
83.(一)如果接收到的待处理指令请求需要对应的数据,则获取请求模块204获取文件系统客户端10发送的待处理指令请求对应的待处理数据请求。图1所示的文件系统服务端20包括位于内核空间的第二数据缓冲器202,且第二数据缓冲器202可以接收第一数据缓
冲器1032发送的数据请求,所以获取请求模块204可以从第二数据缓冲器202中获取待处理数据请求。此情况下,待处理网络fuse请求由待处理指令请求和待处理数据请求组成。
84.(二)如果接收到的待处理指令请求不需要对应的数据,则获取请求模块204获取的待处理指令请求为待处理fuse请求。
85.图1中,文件系统服务端20还包括位于用户空间的用户态文件系统205,该用户态文件系统205可以包括:读取请求模块2051、处理请求模块2052和文件写入模块2053。本发明的可参考实施例中,步骤s502在文件系统服务端的用户空间处理待处理网络fuse请求,获得目标请求处理结果,可以包括:读取请求模块2051在文件系统服务端20的用户空间获取网络fuse请求,将获取的网络fuse请求发送至处理请求模块2052;处理请求模块2052处理读取请求模块2051获取的网络fuse请求,获得请求处理结果;文件写入模块2053将请求处理结果写入存储介质中。
86.图6是根据本发明另一实施例的基于网络文件系统的请求处理方法的主要流程的示意图。图6所示的请求处理方法应用于文件系统服务端20,其主要流程可以包括:
87.步骤s601,通信媒介203捕获文件系统客户端10发送的待处理指令请求,将待处理指令请求发送至获取请求模块204;
88.步骤s602,获取请求模块204接收待处理指令请求,判断待处理指令请求是否需要对应的数据,若是,则执行步骤s603,若否,则执行步骤s605;
89.步骤s603,获取请求模块204从第二数据缓冲器202中获取待处理指令请求对应的待处理数据请求;
90.步骤s604,确定待处理指令请求和待处理数据请求为待处理fuse请求;
91.步骤s605,获取请求模块204获取的待处理指令请求为待处理fuse请求;
92.步骤s606,读取请求模块2051在文件系统服务端20的用户空间获取网络fuse请求,将获取的网络fuse请求发送至处理请求模块2052;
93.步骤s607,处理请求模块2052处理读取请求模块2051获取的网络fuse请求,获得请求处理结果;
94.步骤s608,文件写入模块2053将请求处理结果写入存储介质中;
95.步骤s609,处理请求模块2052向文件系统客户端10返回目标请求处理结果。
96.其中,步骤s609的处理请求模块2052向文件系统客户端10返回目标请求处理结果的过程在上文步骤a1至a5中已详细说明,此处不再累述。
97.根据本发明实施例的基于网络文件系统的请求处理方法,将fuse通信协议作为文件系统客户端与文件系统服务端之间的协议方式,达到客户端使用方便、以及文件系统服务端开发简单的有益效果,解决fuse没有网络访问能力以及现有nfs实现较为复杂的问题。此外,利用fuse请求写入模块将用户态的请求转化为内核态的请求,使得文件系统客户端与文件系统服务端可以按照fuse通信协议进行信息交互。还有,第一指令队列采用低延迟的队列发送指令请求,从而提高发送速度,第一数据缓冲器采用高吞吐队列发送数据请求,从而增加发送带宽。
98.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围
之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献