CN103617039A - 一种访问用户空间文件系统的方法及装置 - Google Patents
一种访问用户空间文件系统的方法及装置 Download PDFInfo
- Publication number
- CN103617039A CN103617039A CN201310625947.7A CN201310625947A CN103617039A CN 103617039 A CN103617039 A CN 103617039A CN 201310625947 A CN201310625947 A CN 201310625947A CN 103617039 A CN103617039 A CN 103617039A
- Authority
- CN
- China
- Prior art keywords
- file system
- access
- dynamic base
- application program
- user
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种访问用户空间文件系统的方法及装置,所述方法包括:通过动态库拦截应用程序用于访问文件系统的访问指令;如果通过所述动态库根据所述访问指令的内容,识别出访问的文件系统为用户空间文件系统,则调用所述用户空间文件系统的应用程序编程接口,访问所述用户空间文件系统。对应地,动态库包括:指令拦截模块、接口调用模块等,应用本发明提供的一种访问用户空间文件系统的方法及动态库,实现了全程在用户态下访问用户空间文件系统的方法,提高了对用户态文件系统的访问效率。
Description
技术领域
本发明涉及应计算机数据处理技术领域,尤其涉及一种访问用户空间文件系统的方法及装置。
背景技术
用户空间文件系统(Filesystem in Userspace,简称FUSE),是操作系统中的概念,指完全在用户态实现的文件系统。目前内核系统,例如Linux通过内核模块对此进行支持,一些文件系统如ZFS,glusterfs和luster都属于用户空间文件系统。
Linux对所有的文件系统采用统一的文件界面,用户通过该文件界面来实现对不同文件系统的操作。对于用户来说,不需要清楚不同文件系统的具体操作过程,而只是对一个虚拟的文件操作界面来进行操作,这个操作界面就是Linux的虚拟文件系统(Virtual File Systems,简称VFS)。
现有技术如图1所示,应用程序访问一个用户空间文件系统时,需要首先访问VFS,VFS判断应用程序访问的文件系统类型为FUSE,再把指令传递给内核功能模块,用户空间文件系统读取数据,并对该数据加工处理后把结果沿反方向传递直至应用程序。所以应用程序应用该方法访问用户空间文件系统时,必然会引入额外的内核态/用户态切换带来的开销,降低了访问效率。
发明内容
本发明实施例提供了一种访问用户空间文件系统的方法及装置,以提高对用户态文件系统的访问效率。
本发明实施例提供了一种访问用户空间文件系统的方法,包括:
通过动态库拦截应用程序用于访问文件系统的访问指令;
如果通过所述动态库根据所述访问指令的内容,识别出访问的文件系统为用户空间文件系统,则调用所述用户空间文件系统的应用程序编程接口,访问所述用户空间文件系统。
本发明实施例还提供了一种访问用户空间文件系统的装置,包括:
指令拦截模块,用于通过动态库拦截应用程序用于访问文件系统的访问指令;
接口调用模块,用于当通过所述动态库根据所述访问指令的内容,识别出应用程序访问的文件系统为用户空间文件系统时,调用所述用户空间文件系统的应用程序编程接口,访问所述用户空间文件系统。
应用本发明提供的一种访问用户空间文件系统的方法及装置,通过使用动态库拦截应用程序用于访问文件系统的访问指令、调用用户空间文件系统的应用程序编程接口等步骤实现了全程在用户态下访问用户空间文件系统的方法,提高了对用户态文件系统的访问效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是背景技术中对用户空间文件系统的访问方法示意图;
图2是本发明实施例提供的一种访问用户空间文件系统的方法流程图;
图3是本发明实施例提供的一种访问用户空间文件系统的装置结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
实施例一
如图2所示,本实施例提供一种访问用户空间文件系统的方法,该方法由访问用户空间文件系统的装置来实现,该装置可以由软件或硬件来实现,该方法具体包括:
步骤21,通过动态库拦截应用程序用于访问文件系统的访问指令;
步骤22,如果通过所述动态库根据所述访问指令的内容,识别出访问的文件系统为用户空间文件系统,则调用所述用户空间文件系统的应用程序编程接口,访问所述用户空间文件系统。
本发明所述的动态库,是指可以动态链接的库,例如Windows系统中的动态链接库(dynamic link library,简称DLL)文件、UNIX或Linux系统中的共享对象(shared object,简称so)文件。库文件是预先编译链接好的可执行文件,存储在计算机的硬盘上。大多数情况下,同一时间多个应用程序可以使用一个库的同一份拷贝,而操作系统不需要加载这个库的多个实例。
应用程序与动态库的连接属于一种动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载动态库。应用程序会在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库时确定的库的地址更新可执行程序。可执行程序根据更新后的库信息调用库中的函数或引用库中的数据,这种类型的动态加载即装载时加载,被Windows和Linux等多数系统采用。
利用这种加载动态库的方式,本发明提供的方法是在应用程序中指定加载一个动态库,用于访问文件系统,应用程序访问文件系统中的数据时,会发出访问指令,具体表现为调用一些访问函数,例如open、close、write、read等函数,来实现对文件系统中具体数据的操作,这些访问指令将不会被直接发送到VFS中,而是用所述动态库将应用程序发出的访问指令拦截,并根据指令内容判断应用程序要访问的目标文件系,在一个操作系统中可能存在多种文件系统,如Linux系统支持ext、ext2、fat32、ntfs等多种文件系统,并且有一些文件系统属于用户空间文件系统,如果动态库判断出应用程序访问的文件系统类型是用户空间文件系统,那么动态库将调用该用户空间文件系统应用程序编程接口(Application Programming Interface,简称API),应用程序直接使用该API访问所述用户空间文件系统,这个访问的过程全程保持在用户态下进行,避免了现有技术中内核态与用户态的频繁切换工作,节约了系统的开销,提高了访问效率。
示例性的,通过动态库拦截应用程序用于访问文件系统的访问指令后,所述方法还包括:
如果所述动态库根据所述访问指令的内容,识别出访问的文件系统为内核态文件系统,则通过所述动态库调用标准函数库,通过访问虚拟文件系统来访问内核态文件系统。
当动态库拦截了应用程序发出的访问指令,根据指令内容判断出应用程序所访问的文件系统是一种内核态文件系统,则直接调用标准的库函数通过访问虚拟文件系统来访问该文件系统,因为访问此类内核态文件系统不需要进行内核态/用户态的切换,直接使用标准的函数库中的函数访问即可。
示例性的,通过动态库拦截应用程序用于访问文件系统的访问指令之前,还包括:
将所述动态库的路径存入内核系统的初始化程序配置文件中;
在内核系统初始化时,通过执行所述配置文件,按照所述动态库的路径加载所述动态库。
本发明提供的方法还具备一个加载所述动态库的步骤,以Linux系统为例,Linux系统一般带有lib或usr/lib目录,该目录用于存放各类库文件,lib是库(Library)的简称,没有该目录则系统就无法正常运行。lib目录中存储着程序运行时使用的库,许多程序可以重复使用相同的代码,并且这些库可以存储在一个公共的位置上,因此能减小运行程序的大小,这个目录包含程序在链接时使用的各种库;Linux系统还提供一个etc目录,etc目录用于存储系统的配置文件,应用本发明提供的方法,可以将所述动态库文件放入lib目录中,例如一个动态库文件名称为A.so,放入lib目录后该动态库的路径为/lib/A.so,然后将此路径写入配置文件/etc/ld.so.preload中,通过执行该配置文件,则实现了为应用程序提前加载了一个动态库A.so。
实施例二
如图3所示,本实施例提供一种访问用户空间文件系统的装置31,包括:
指令拦截模块311,用于通过动态库拦截应用程序用于访问文件系统的访问指令;
接口调用模块312,用于当通过所述动态库根据所述访问指令的内容,识别出应用程序访问的文件系统为用户空间文件系统时,调用所述用户空间文件系统的应用程序编程接口,访问所述用户空间文件系统。
示例性的,所述装置还包括:
标准函数库调用模块,用于通过动态库拦截应用程序用于访问文件系统的访问指令后,当所述动态库根据所述访问指令的内容,识别出访问的文件系统为内核态文件系统时,通过所述动态库调用标准函数库,通过访问虚拟文件系统来访问内核态文件系统。
示例性的,所述装置还包括:
动态库加载模块,用于通过动态库拦截应用程序用于访问文件系统的访问指令之前,将所述动态库的路径存入内核系统的初始化程序配置文件中;在内核系统初始化时,通过执行所述配置文件,按照所述动态库的路径加载所述动态库。
本发明实施例所提供的访问用户空间文件系统的装置,可用于实现本发明任意实施例所提供的访问用户空间文件系统的方法,具备相应的功能模块,实现相同的有益效果。
上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (6)
1.一种访问用户空间文件系统的方法,其特征在于,包括:
通过动态库拦截应用程序用于访问文件系统的访问指令;
如果通过所述动态库根据所述访问指令的内容,识别出访问的文件系统为用户空间文件系统,则调用所述用户空间文件系统的应用程序编程接口,访问所述用户空间文件系统。
2.根据权利要求1所述的方法,其特征在于,通过动态库拦截应用程序用于访问文件系统的访问指令后,所述方法还包括:
如果所述动态库根据所述访问指令的内容,识别出访问的文件系统为内核态文件系统,则通过所述动态库调用标准函数库,通过访问虚拟文件系统来访问内核态文件系统。
3.根据权利要求1或2所述的方法,其特征在于,通过动态库拦截应用程序用于访问文件系统的访问指令之前,还包括:
将所述动态库的路径存入内核系统的初始化程序配置文件中;
在内核系统初始化时,通过执行所述配置文件,按照所述动态库的路径加载所述动态库。
4.一种访问用户空间文件系统的装置,其特征在于,包括:
指令拦截模块,用于通过动态库拦截应用程序用于访问文件系统的访问指令;
接口调用模块,用于当通过所述动态库根据所述访问指令的内容,识别出应用程序访问的文件系统为用户空间文件系统时,调用所述用户空间文件系统的应用程序编程接口,访问所述用户空间文件系统。
5.根据权利要求4所述的装置,其特征在于,还包括:
标准函数库调用模块,用于通过动态库拦截应用程序用于访问文件系统的访问指令后,当所述动态库根据所述访问指令的内容,识别出访问的文件系统为内核态文件系统时,通过所述动态库调用标准函数库,通过访问虚拟文件系统来访问内核态文件系统。
6.根据权利要求4或5所述的装置,其特征在于,还包括:
动态库加载模块,用于通过动态库拦截应用程序用于访问文件系统的访问指令之前,将所述动态库的路径存入内核系统的初始化程序配置文件中;在内核系统初始化时,通过执行所述配置文件,按照所述动态库的路径加载所述动态库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310625947.7A CN103617039B (zh) | 2013-11-28 | 2013-11-28 | 一种访问用户空间文件系统的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310625947.7A CN103617039B (zh) | 2013-11-28 | 2013-11-28 | 一种访问用户空间文件系统的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103617039A true CN103617039A (zh) | 2014-03-05 |
CN103617039B CN103617039B (zh) | 2017-02-01 |
Family
ID=50167742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310625947.7A Active CN103617039B (zh) | 2013-11-28 | 2013-11-28 | 一种访问用户空间文件系统的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103617039B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808977A (zh) * | 2014-12-30 | 2016-07-27 | Tcl集团股份有限公司 | 一种文件读操作、写操作的处理方法及装置 |
CN106776734A (zh) * | 2016-11-21 | 2017-05-31 | 深圳市深信服电子科技有限公司 | 一种应用层文件系统访问的方法及电子设备 |
CN110955631A (zh) * | 2018-09-26 | 2020-04-03 | 上海瑾盛通信科技有限公司 | 文件访问追踪方法、装置、存储介质及终端 |
CN111310231A (zh) * | 2020-02-17 | 2020-06-19 | 北京英赛虎信息技术有限责任公司 | 一种基于linux系统的文件安全应用管理方法及系统 |
CN114090072A (zh) * | 2022-01-21 | 2022-02-25 | 成都云祺科技有限公司 | Windows用户文件系统开发框架搭建方法、系统及其应用 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101252527A (zh) * | 2008-04-09 | 2008-08-27 | 腾讯科技(深圳)有限公司 | 一种网络中转的方法、网络中转服务器和内核管理模块 |
CN101382953A (zh) * | 2008-09-19 | 2009-03-11 | 中兴通讯股份有限公司 | 在用户空间访问文件系统的接口系统与文件读、写方法 |
US20090112950A1 (en) * | 2007-10-16 | 2009-04-30 | Buffalo Inc. | File management device and storage device |
CN102609486A (zh) * | 2012-01-20 | 2012-07-25 | 无锡众志和达存储技术有限公司 | 一种Linux文件系统的数据读写加速方法 |
CN103020257A (zh) * | 2012-12-21 | 2013-04-03 | 曙光信息产业(北京)有限公司 | 数据操作的实现方法和装置 |
-
2013
- 2013-11-28 CN CN201310625947.7A patent/CN103617039B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090112950A1 (en) * | 2007-10-16 | 2009-04-30 | Buffalo Inc. | File management device and storage device |
CN101252527A (zh) * | 2008-04-09 | 2008-08-27 | 腾讯科技(深圳)有限公司 | 一种网络中转的方法、网络中转服务器和内核管理模块 |
CN101382953A (zh) * | 2008-09-19 | 2009-03-11 | 中兴通讯股份有限公司 | 在用户空间访问文件系统的接口系统与文件读、写方法 |
CN102609486A (zh) * | 2012-01-20 | 2012-07-25 | 无锡众志和达存储技术有限公司 | 一种Linux文件系统的数据读写加速方法 |
CN103020257A (zh) * | 2012-12-21 | 2013-04-03 | 曙光信息产业(北京)有限公司 | 数据操作的实现方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808977A (zh) * | 2014-12-30 | 2016-07-27 | Tcl集团股份有限公司 | 一种文件读操作、写操作的处理方法及装置 |
CN106776734A (zh) * | 2016-11-21 | 2017-05-31 | 深圳市深信服电子科技有限公司 | 一种应用层文件系统访问的方法及电子设备 |
CN110955631A (zh) * | 2018-09-26 | 2020-04-03 | 上海瑾盛通信科技有限公司 | 文件访问追踪方法、装置、存储介质及终端 |
CN110955631B (zh) * | 2018-09-26 | 2023-01-03 | 上海瑾盛通信科技有限公司 | 文件访问追踪方法、装置、存储介质及终端 |
CN111310231A (zh) * | 2020-02-17 | 2020-06-19 | 北京英赛虎信息技术有限责任公司 | 一种基于linux系统的文件安全应用管理方法及系统 |
CN114090072A (zh) * | 2022-01-21 | 2022-02-25 | 成都云祺科技有限公司 | Windows用户文件系统开发框架搭建方法、系统及其应用 |
CN114090072B (zh) * | 2022-01-21 | 2022-04-26 | 成都云祺科技有限公司 | Windows用户文件系统开发框架搭建方法、系统及其应用 |
Also Published As
Publication number | Publication date |
---|---|
CN103617039B (zh) | 2017-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109906433B (zh) | 针对容器的存储隔离 | |
US10140461B2 (en) | Reducing resource consumption associated with storage and operation of containers | |
EP3036659B1 (en) | Redirecting local storage to cloud storage | |
Russinovich et al. | Windows internals, part 2 | |
Gilbert et al. | Pocket ISR: Virtual machines anywhere | |
US10353636B2 (en) | Write filter with dynamically expandable overlay | |
US11010355B2 (en) | Layer-based file access method and apparatus of virtualization instance | |
CN102279748A (zh) | 远程存储本地执行的软件使用方法、系统、服务器及客户端 | |
KR20110050592A (ko) | 휴대용 저장 장치를 위한 동적 파일 시스템 제약 | |
KR20060069791A (ko) | 공유된 읽기 전용 파일 시스템 내의 바이러스의 검출 및경고 | |
CN103617039A (zh) | 一种访问用户空间文件系统的方法及装置 | |
US20170068587A1 (en) | Data dump for a memory in a data processing system | |
CN105740413A (zh) | Linux平台上使用FUSE的文件移动方法 | |
US10831391B2 (en) | Method to serve restores from remote high-latency tiers by reading available data from a local low-latency tier in a deduplication appliance | |
CN112306638A (zh) | 获取docker容器资源信息的方法 | |
CN116628773A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US20190179803A1 (en) | Apparatus and method for file sharing between applications | |
US20100268921A1 (en) | Data collection prefetch device and methods thereof | |
US9921884B1 (en) | Local and remote access to virtual machine image filesystems | |
US8788785B1 (en) | Systems and methods for preventing heap-spray attacks | |
US10223378B2 (en) | Controlling reparse behavior associated with an intermediate directory | |
CN117807039B (zh) | 一种容器处理方法、装置、设备、介质及程序产品 | |
WO2023201648A1 (zh) | 文件的操作装置、计算机设备和操作设备 | |
US20230133971A1 (en) | Access control method, computer-readable recording medium storing access control program, and information processing apparatus | |
US11947495B1 (en) | System and method for providing a file system without duplication of files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |