用户空间文件系统的文件操作方法及用户空间文件系统技术方案

技术编号:33251318 阅读:17 留言:0更新日期:2022-04-27 18:14
本发明专利技术公开了一种用户空间文件系统的文件操作方法及用户空间文件系统,方法包括:虚拟文件系统接收应用程序发送的对用户空间文件系统中的目标文件的文件操作请求,并将文件操作请求发送至用户空间文件系统对应的目标驱动模块;目标驱动模块开启扩展过滤器,以调用与文件操作请求相对应的插桩函数来对底层文件系统执行相应的文件操作,并根据操作结果对内核中的共享数据区域进行数据更新;以及用户空间守护进程从共享数据区域获取数据更新结果,并将数据更新结果发送至应用程序。根据本发明专利技术的技术方案,能够有效降低用户空间与内核之间的数据交互频次,有利于降低系统开销。有利于降低系统开销。有利于降低系统开销。

【技术实现步骤摘要】
用户空间文件系统的文件操作方法及用户空间文件系统


[0001]本专利技术涉及文件系统
,尤其涉及一种用户空间文件系统的文件操作方法、用户空间文件系统及计算设备。

技术介绍

[0002]FUSE(Filesystem in Userspace,用户空间文件系统)是一个实现在用户空间的文件系统框架,其中包括FUSE内核模块、用户空间库Libfuse以及用户程序模块。基于FUSE内核模块的支持,开发者只需要根据FUSE提供的接口实现具体的文件操作就可以实现一个文件系统。
[0003]由于FUSE的主要实现代码位于用户空间,不需要重新编译内核,从而给开发者带来了众多便利。但,FUSE在性能上的开销较大。同样的文件操作(例如文件查找、打开、读取、写入等操作)在本地系统的开销和延时度远远小于FUSE文件系统,这是由于FUSE本身的机制决定的。
[0004]根据现有技术中的FUSE文件系统的实现方案,在FUSE文件系统中内核更多是作为一个中转的角色,其接收用户操作的类型、文件名、设备编号,然后将这些参数发送给Fuse Daemon继续执行对应的操作。由于FUSE文件系统在很多情况下会引起不必要的用户空间与内核空间之间的通信,造成了低吞吐量和高延时从而影响了FUSE文件系统的整体性能。而产生这一问题的根本原因是FUSE将操作的自由度留在了用户空间,而内核空间对Fuse Daemon实现的打开、读取、写入等文件操作完全不知。因此,在用户空间每调入一次请求时都需要在内核进行一次中转,再提供给用户空间继续执行具体操作。这种换入换出过程导致对系统的开销较大,同样的文件操作在FUSE上运行的各项时间都比在本地文件系统运行的时间长。
[0005]为此,需要一种用户空间文件系统的文件操作方法,以解决上述方案中存在的问题。

技术实现思路

[0006]为此,本专利技术提供一种用户空间文件系统的文件操作方法及用户空间文件系统,以解决或至少缓解上面存在的问题。
[0007]根据本专利技术的一个方面,提供一种用户空间文件系统的文件操作方法,在计算设备中执行,所述计算设备的操作系统包括内核、布置在内核之上的用户空间,所述用户空间运行有应用程序、用户空间守护进程,所述内核中布置有虚拟文件系统以及用户空间文件系统对应的目标驱动模块,所述方法包括步骤:虚拟文件系统接收所述应用程序发送的对用户空间文件系统中的目标文件的文件操作请求,并将文件操作请求发送至所述目标驱动模块;目标驱动模块开启扩展过滤器,以调用与所述文件操作请求相对应的插桩函数来对底层文件系统执行相应的文件操作,并根据操作结果对内核中的共享数据区域进行数据更新;以及用户空间守护进程从所述共享数据区域获取数据更新结果,并将所述数据更新结
果发送至所述应用程序。
[0008]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,在调用与所述文件操作请求相对应的插桩函数之前,包括步骤:通过用户空间守护进程实现相应的文件操作函数结构体,并对所述文件操作函数结构体进行解析以得到相应的一个或多个插桩函数;基于所述插桩函数在内核中进行插桩,其中,每个插桩函数对应一种文件操作。
[0009]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,对所述文件操作函数结构体进行解析以得到相应的一个或多个插桩函数之后,还包括步骤:为每个插桩函数分配一个函数编号;在内核中建立插桩函数与函数编号之间的映射关系,生成函数映射表。
[0010]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,所述共享数据区域与用户空间守护进程进行了绑定。
[0011]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,在通过目标驱动模块开启扩展过滤器之后,还包括步骤:在内核中创建共享数据区域,经由用户空间库将所述共享数据区域与用户空间守护进程进行绑定。
[0012]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,所述共享数据区域采用Map数据结构来建立和存储每个文件的文件描述符与文件属性信息的映射关系。
[0013]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,用户空间守护进程从共享数据区域获取数据更新结果的步骤包括:用户空间守护进程轮询共享数据区域以检测所述共享数据区域的数据是否更新,如果是,则从所述共享数据区域获取数据更新结果。
[0014]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,在调用与文件操作请求相对应的插桩函数来对底层文件系统执行相应的文件操作之后,还包括步骤:将操作完成信号经由虚拟文件系统发送至应用程序。
[0015]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,所述文件操作包括文件打开操作、文件读取操作、文件写入操作、文件删除操作中的一种或多种。
[0016]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,对所述文件操作函数结构体进行解析以得到相应的一个或多个插桩函数包括:调用用户空间库中的fuse_main_real函数对所述文件操作函数结构体进行解析,以得到相应的一个或多个插桩函数。
[0017]可选地,在根据本专利技术的用户空间文件系统的文件操作方法中,所述扩展过滤器为eBPF。
[0018]根据本专利技术的一个方面,提供一种用户空间文件系统,包括:部署在计算设备中,所述计算设备的操作系统包括内核、布置在内核之上的用户空间,所述用户空间文件系统包括:运行在用户空间的应用程序、用户空间守护进程;布置在内核中的共享数据区域;布置在内核中的虚拟文件系统,适于接收所述应用程序发送的对目标文件的文件操作请求,并将文件操作请求发送至内核中的目标驱动模块;布置在内核中的目标驱动模块,适于开启扩展过滤器,以调用与所述文件操作请求相对应的插桩函数对底层文件系统执行相应的文件操作,并根据操作结果对内核中的共享数据区域进行数据更新;其中,所述用户空间守护进程适于从所述共享数据区域获取数据更新结果,并将所述数据更新结果发送至所述应用程序。
Daemon)。用户空间还布置有用户空间库115(Libfuse)。
[0028]内核120中布置有虚拟文件系统121、一个或多个驱动模块,其中,一个或多个驱动模块中包括与用户空间文件系统相对应的目标驱动模块122。这里,与用户空间文件系统相对应的目标驱动模块122即是Fuse Driver,虚拟文件系统即VFS(Virtual Filesystem)。
[0029]内核120中还运行有扩展过滤器123,基于扩展过滤器可以在内核中进行插桩,以便在内核中运行用户空间指定的操作函数,扩展内核功能。在一种实现方式中,扩展过滤器123例如可以实现为eBPF(Extended Berkeley Packet Filter,扩展伯克利包过滤器)。在本专利技术的一个实施例中,当应用程序111请求对用户空间文件系统中的目标文件执行文件操作时,内核中的虚拟文件系统121接收应用程序发送的对用户空间文件系统中的目标文件的文件操作请求,查找内核中与用户空间文件系本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用户空间文件系统的文件操作方法,在计算设备中执行,所述计算设备的操作系统包括内核、布置在内核之上的用户空间,所述用户空间运行有应用程序、用户空间守护进程,所述内核中布置有虚拟文件系统以及用户空间文件系统对应的目标驱动模块,所述方法包括步骤:虚拟文件系统接收所述应用程序发送的对用户空间文件系统中的目标文件的文件操作请求,并将文件操作请求发送至所述目标驱动模块;目标驱动模块开启扩展过滤器,以调用与所述文件操作请求相对应的插桩函数来对底层文件系统执行相应的文件操作,并根据操作结果对内核中的共享数据区域进行数据更新;以及用户空间守护进程从所述共享数据区域获取数据更新结果,并将所述数据更新结果发送至所述应用程序。2.如权利要求1所述的方法,其中,在调用与所述文件操作请求相对应的插桩函数之前,包括步骤:通过用户空间守护进程实现相应的文件操作函数结构体,并对所述文件操作函数结构体进行解析以得到相应的一个或多个插桩函数;基于所述插桩函数在内核中进行插桩,其中,每个插桩函数对应一种文件操作。3.如权利要求2所述的方法,其中,对所述文件操作函数结构体进行解析以得到相应的一个或多个插桩函数之后,还包括步骤:为每个插桩函数分配一个函数编号;在内核中建立插桩函数与函数编号之间的映射关系,生成函数映射表。4.如权利要求1

3中任一项所述的方法,其中,所述共享数据区域与用户空间守护进程进行了绑定。5.如权利要求1

3中任一项所述的方法,其中,在通过目标驱动模块开启扩展过滤器之后,还包括步骤:在内核中创建共享数据区域,经由用户空间库将所述共享数据区域与用户空间守护进程进行绑定。6.如权利要求1

3中任一项所述的方法,其中,所述共享数据区域采用Map数据结构来建立和存储每个文件的文件描述符与文件属性信息的映射关系。7.如权利要求1

3中任一项所述的方法,其中,用户空间守护进程从共享数据区域获取数据更新结果的步骤包括:用户空间守护进程轮询共享数据区域以检测所述共享数据区域的数据是否更...

【专利技术属性】
技术研发人员:刘欢
申请(专利权)人:广东统信软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1