CN103077243B - 文件系统访问的处理方法及系统 - Google Patents

文件系统访问的处理方法及系统 Download PDF

Info

Publication number
CN103077243B
CN103077243B CN201310016781.9A CN201310016781A CN103077243B CN 103077243 B CN103077243 B CN 103077243B CN 201310016781 A CN201310016781 A CN 201310016781A CN 103077243 B CN103077243 B CN 103077243B
Authority
CN
China
Prior art keywords
irp
file system
operation requests
client layer
fsd
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.)
Active
Application number
CN201310016781.9A
Other languages
English (en)
Other versions
CN103077243A (zh
Inventor
姜汉龙
石坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sumavision Technologies Co Ltd
Original Assignee
Sumavision Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sumavision Technologies Co Ltd filed Critical Sumavision Technologies Co Ltd
Priority to CN201310016781.9A priority Critical patent/CN103077243B/zh
Publication of CN103077243A publication Critical patent/CN103077243A/zh
Application granted granted Critical
Publication of CN103077243B publication Critical patent/CN103077243B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种文件系统访问的处理方法及系统。其中,该方法包括:文件过滤驱动接收输入输出管理器转发的来自用户的操作请求消息,其中,文件过滤驱动是预先设置在输入输出管理器和文件系统驱动之间的;文件过滤驱动判断操作请求消息是否符合预定的过滤条件,在判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。通过本发明,达到了提高系统性能、减小额外时间开销以及增强系统兼容性的效果。

Description

文件系统访问的处理方法及系统
技术领域
本发明涉及通信领域,具体而言,涉及一种文件系统访问的处理方法及系统。
背景技术
云存储指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。
目前较为简洁的访问云存储的方式就是将远程的云存储位置通过某种方式映射为客户端本地的一个虚拟文件系统,并提供兼容的文件访问接口,这样对于应用程序而言就可以不作任何更改地(透明地)访问该存储资源。
文件系统访问重定向往往基于虚拟文件系统(VirtualFileSystem,简称为VFS)进行,但是文件系统开发往往被认为是一项复杂耗时的工作,这是因为:一方面文件系统自身涉及到设备空间管理、名字空间管理、访问控制等多种技术难点;另一方面需要大量的操作系统内核态编程,其难以调试等特点使开发工作更为困难。例如,虽然各类操作系统上分别提供了层次化的文件系统开发接口,如Linux系统下的VFS以及Windows系统下的可安装文件系统(InstallableFileSystem,简称为IFS),但因为这些接口仍工作在内核态,实现难度还是很大。
用户层文件系统的出现在很大程度上解决了这一问题,具有代表性的示例之一就是用户空间文件系统(FilesysteminUserspace,简称为FUSE),使用者可以在用户层编写代码并与FUSE库连接,从而实现目标文件系统。虽然FUSE在性能上有所不足,但其便于开发与调试的特点吸引了大批开发者实现了多种多样的文件系统。
但FUSE不支持Windows系统,原因在于:一方面,Windows文件系统的语义与接口不同于Unix系统(包括类Unix系统,如Linux);另一方面,Windows自身实现的透明性不足也阻碍了第三方开发此类文件系统框架。DaniloAlmeida在1999年提出了一个FIFS的框架,该框架旨在提供一个简单的用户层下的WindowsNT文件系统开发环境。FIFS通过一个操作系统内所包含的通用网络文件系统(CommonInternetFileSystem,简称为CIFS)的回送服务器,和NT的可安装文件系统(IFS)体系结合,能够提供完整的NT远程文件系统语义。但是FIFS由于开发的时间较早,且使用了未公开的Windows内核信息,其和现在流行的WindowsXP,WindowsVista操作系统并不兼容。
由此可见,用户层文件系统具代表性的有FUSE系统和FIFS系统分别存在以下缺陷:
对于FUSE系统而言:1、性能上有所不足;2、不支持Windows系统。
对于FIFS系统而言:由于开发的时间较早,且使用了未公开的Windows内核信息,其和现在流行的WindowsXP,WindowsVista操作系统并不兼容。
针对相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,目前尚未提出有效的解决方案。
发明内容
本发明提供了一种文件系统访问的处理方法及系统,以至少解决上述问题。
根据本发明的一个方面,提供了一种文件系统访问的处理方法,包括:文件过滤驱动接收输入输出管理器转发的来自用户的操作请求消息,其中,文件过滤驱动是预先设置在输入输出管理器和文件系统驱动之间的;文件过滤驱动判断操作请求消息是否符合预定的过滤条件,在判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。
优选地,输入输出管理器、文件系统驱动以及文件过滤驱动均位于内核空间。
优选地,操起请求消息包括:输入输出请求包IRP和对应于IRP的完成例程,其中,完成例程包括以下至少之一:设备控制DeviceControlIRP、创建CreateIRP、清除/关闭Cleanup/CloseIRP、目录控制DirectoryControlIRP、询问信息QueryInfoIRP、读取ReadIRP、写入WriteIRP。
优选地,当完成例程为CreateIRP时,将操作请求消息发送给用户层代理程序进行处理包括:CreateIRP调用ObQueryNameString获取IRP的完整路径名;CreateIRP通过将完整路径名与元数据信息进行对比的方式判断IRP是否属于预先设置的欲截获对象,在属于欲截获对象的情况下,将IRP的地址存储在内部无用信息表中且将IRP发送给用户层代理程序进行处理。
优选地,当完成例程为ReadIRP或WriteIRP时,将操作请求消息发送给用户层代理程序进行处理包括:ReadIRP或Write判断IRP是否属于预先设置的欲截获对象,在属于欲截获对象的情况下,将IRP存储在从DeviceControlIRP的队列头中取出的一个IPR结构中,并通过调用IOCompleteIRP通知用户层代理程序接收IRP。
优选地,Cleanup/CloseIRP用于通知用户层代理程序当前访问流程结束,并清空当前访问的队列资源。
优选地,DeviceControlIRP用于传输用户层代理程序与文件过滤驱动之间的数据。
优选地,DirectoryControlIRP用于获取IRP请求的目标文件目录下的所有文件与目标列表,并将启动时获得的元数据信息返回到输入输出管理器。
根据本发明的另一方面,提供了一种文件系统访问的处理系统,包括:输入输出管理器、文件系统驱动、用户层代理程序,以及位于输入输出管理器和文件系统驱动之间的文件过滤驱动,其中,文件过滤驱动包括:接收模块,用于接收输入输出管理器转发的来自用户的操作请求消息;判断模块,用于判断操作请求消息是否符合预定的过滤条件;执行模块,用于在判断模块的判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。
优选地,操起请求消息包括:输入输出请求包IRP和对应于IRP的完成例程,其中,完成例程包括以下至少之一:设备控制DeviceControlIRP、创建CreateIRP、清除/关闭Cleanup/CloseIRP、目录控制DirectoryControlIRP、询问信息QueryInfoIRP、读取ReadIRP、写入WriteIRP。
通过本发明,采用在输入输出管理器和文件系统驱动之间预先设置文件过滤驱动,并使用该文件过滤驱动对用户的IRP(输入输出请求包)进行拦截并对IRP进行分析后再分类发送给用户层代理程序或文件系统驱动的方式,解决了相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,进而达到了能够使使用者(包括应用程序)可以像访问本机文件那样访问远程服务器上的文件或数据,同时可以在远程服务器上区分不同用户的修改数据的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的文件系统访问的处理方法流程图;
图2是根据本发明优选实施例的工作流程示意图;
图3是根据本发明优选实施例的文件系统访问的处理流程图;
图4是根据本发明优选实施例的对用户个性化数据进行新建、修改以及删除处理的示意图;
图5是根据本发明实施例的文件系统访问的处理系统的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1是根据本发明实施例的文件系统访问的处理方法流程图,如图1所示,该方法主要包括以下步骤(步骤S102-步骤S104):
步骤S102,文件过滤驱动接收输入输出管理器转发的来自用户的操作请求消息,其中,文件过滤驱动是预先设置在输入输出管理器和文件系统驱动之间的;
步骤S104,文件过滤驱动判断操作请求消息是否符合预定的过滤条件,在判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。
在本实施例中,输入输出管理器、文件系统驱动以及文件过滤驱动均位于内核空间。
优选地,操起请求消息可以包括:输入输出请求包IRP和对应于IRP的完成例程,其中,完成例程包括以下至少之一:设备控制DeviceControlIRP、创建CreateIRP、清除/关闭Cleanup/CloseIRP、目录控制DirectoryControlIRP、询问信息QueryInfoIRP、读取ReadIRP、写入WriteIRP。
在本实施例中,当完成例程为CreateIRP时,将操作请求消息发送给用户层代理程序进行处理包括:CreateIRP调用ObQueryNameString获取IRP的完整路径名;CreateIRP通过将完整路径名与元数据信息进行对比的方式判断IRP是否属于预先设置的欲截获对象,在属于欲截获对象的情况下,将IRP的地址存储在内部无用信息表中且将IRP发送给用户层代理程序进行处理。
在本实施例中,当完成例程为ReadIRP或WriteIRP时,将操作请求消息发送给用户层代理程序进行处理包括:ReadIRP或Write判断IRP是否属于预先设置的欲截获对象,在属于欲截获对象的情况下,将IRP存储在从DeviceControlIRP的队列头中取出的一个IPR结构中,并通过调用IOCompleteIRP通知用户层代理程序接收IRP。
在本实施例中,Cleanup/CloseIRP用于通知用户层代理程序当前访问流程结束,并清空当前访问的队列资源。DeviceControlIRP用于传输用户层代理程序与文件过滤驱动之间的数据。DirectoryControlIRP用于获取IRP请求的目标文件目录下的所有文件与目标列表,并将启动时获得的元数据信息返回到输入输出管理器。
下面结合图2至图4优选实施例对上述实施例提供的文件系统访问的处理方法进行更加详细的描述。
首先,对上述实施例提供的文件系统访问的处理方法的思路进行简要介绍:使用Windows系统下的用户层文件系统框架,将远程服务器上的文件或者数据映射为客户端的某个本地驱动器,这样在使用者(包括应用程序)看来,访问远程的数据就如访问本地文件一样(尤其对于云游戏系统而言),这是因为用户层文件系统框架能够实现任何应用程序访问虚拟驱动器的操作请求的截获(位于用户层),这就意味着可以截获所有的文件系统访问,从而识别写入\修改\创建等操作,进而对于这些数据(用户个性化数据就包含在其中)进行特殊处理,包括区分各个用户后分别存储以及读取。
图2是根据本发明优选实施例的工作流程示意图,如图2所示,用户层文件系统的工作流程具体为:
在内核空间(也可称为内核态)设置一个文件过滤驱动(位于I/O管理器和文件系统驱动之间),任何文件系统的I/O请求包(IORequestPackage,简称为IRP)必须经过该文件过滤驱动的过滤才能达到相关的底层驱动。其中,该文件过滤驱动能够监视、检查、修改以及截获所有的I/O请求包。正常情况下,当用户访问Windows系统的本机文件时,系统把对磁盘的操作请求层层传递下去,I/O管理器以IRP的形式向文件系统驱动发送该操作请求。
在本发明的一个优选实施方式中,文件过滤驱动将相关的IRP(其中携带操作请求)截获之后,将其中符合过滤条件(也可称为截获条件)然后再传递给用户层代理程序(即图2中的注册函数(RegisteredFunctions)),由RegisteredFunctions完成实际功能并返回,或者,文件过滤驱动将不符合过滤条件的IRP仍然发送给下一层的文件系统驱动处理。进一步地,用户层代理程序完成对于远程数据的访问,以及“识别写入\修改\创建”等操作,进而对于这些数据(用户个性化数据就包含在其中)进行特殊处理,包括区分各个用户后对各个用户的个性化数据进行分别存储以及读取。
对于文件过滤驱动的实现而言,文件过滤驱动的过滤对象拥有一组分派函数(dispatchfunctions)指针,每个分派函数都对应处理一个或几个种类的IRP。文件过滤驱动驱动的程序的主要功能就是在不同功能的分派函数中实现的。在IRP的分派函数中,除了将IRP直接传递给下层驱动,还可以为这个IRP设置一个完成例程,该完成例程通常是一个自定义的函数,函数地址存放在下一层驱动的I/O栈中。
在本发明的一个优选实施方式中,文件过滤驱动程序主要实现了设备控制DeviceControlIRP、创建CreateIRP、清除/关闭Cleanup/CloseIRP、目录控制DirectoryControlIRP、询问信息QueryInfoIRP、读取ReadIRP、写入WriteIRP等完成例程,这些完成例程将对指定目标文件的访问进行拦截,并将访问交由用户层代理程序具体执行。
其中,各个IRP完成例程(结合用户层代理程序)完成的功能详细如下:
(1)CREATEIRP:在任何一个文件或者目录被访问之前,都会发送这类IRP(即访问序列中的第一个),该完成例程中可以调用ObQueryNameString来获得其完整路径名,通过与启动时获得的元数据信息进行对照判断该IRP是否符合截获对象,如果判断IRP是一个欲截获对象,则该IRP的地址存储在一个内部hash表中。
(2)DIRECTORYCONTROLIRP:主要处理IRP_MN_QUERY_DIRECTORY请求,其功能是获得目标目录下的所有文件与目录列表,其中,启动时获得的相应的元数据信息可以直接被返回。
(3)QUERYINFOIRP:获得目标文件的元数据,其中,启动时获得的相应的元数据信息可以直接被返回。
(4)READIRP:首先,IRP完成例程根据输入的对象查询是否是需要截获的,如果不是,则传给下层驱动;如果是,则将该请求放入内部的等待队列,同时从其维护的DeviceControlIRP队列头取出通过一个IRP,并将请求的数据拷贝入此IRP结构,并通过调用IOCompleteIRP来通知用户层代理程序接收此请求。用户层代理程序完成请求的接收后,会通过DeviceIoControl发回欲读取的数据,IRP完成例程将读取的数据拷贝到请求所在的IRP结构中,完成此IO请求。这里,请详细参考图3(图3是根据本发明优选实施例的文件系统访问的处理流程图)
(5)WRITEIRP:与ReadIRP类似,通过DeviceControlIRP队列将其传输到用户层。
(6)CLEANUP\CLOSEIRPs:是一个访问序列的最后两个IRP,完成例程会通知用户层代理程序当前访问的文件流程结束,并且清空相关的队列资源。
(7)DEVICECONTROLIRP:主要用于用户层与文件过滤驱动的通信,文件过滤驱动和应用程序互传数据都是通过Win32函数DeviceIoControl完成的。
这里需要注意的是,如果是应用程序向驱动单向传输,则可以直接使用调用DeviceIoControl,DeviceIoControl会向文件过滤驱动发出一个对应的DeviceControlIRP,文件过滤驱动可以截获这个IRP,从而进行分类处理。在实际应用中,这类传输一方面是用于系统启动后,用户层向文件过滤驱动传输用户层文件系统元数据信息时所使用的;另一方面则是用户层完成文件过滤驱动传过来的IRP请求的信息之后后,向文件过滤驱动发送结果时所使用的。
在实际应用中,如何实现过滤驱动如何向用户层发送IRP请求信息也是一个需要考虑的因素。本优选实施例仍旧使用DeviceIoControl向用户层发送IRP请求信息,在系统启动后,用户层会主动以异步方式向文件过滤驱动发送一系列的DeviceControlIRP,这些IRP从0编号到N-1,然后采用WaitforSinlgeObject函数来等待0号IRP完成,然后是1号,2号直至N-1。文件过滤驱动在收到这样的DeviceControlIRP时,并不立即处理它,而是把它放入一个动态维护的内部私有队列里(顺序也从0到N-1);在拦截到一个需要处理的请求时,才将该请求拷贝到队列头上的IRP中,并使用IoCompleteIRP将其传递给用户层。此时,用户层等待函数就可以返回,并调用GetOverlappedResult函数得到文件过滤驱动输出的请求信息,进而获取与请求信息对应的文件数据,或进行与请求信息相关的文件操作,最后再使用DeviceIoControl将完成的结果传回给文件过滤驱动。
基于上述机制,可以在用户层代理程序内实现对于主要的windows文件系统操作的API的截获,包括:CreateFile、WriteFile、ReadFile、FindFirstFile/FindNextFile、CloseFile、OpenDirectory、SetFileAttributes/GetFileAttributes。
图4是根据本发明优选实施例的对用户个性化数据进行新建、修改以及删除处理的示意图,如图4所示,文件过滤驱动对用户个性化数据(任何一个存储于户层虚拟文件系统之上的文件都被赋予一个属性)的处理主要包括:
(1)Remote:该文件存于远程服务端;
(2)New:该文件是新建的或者是被修改过的;
(3)Deleted:已被删除。
在本发明的一个优选实施方式中,当某个用户的文件系统第一次被启动时,所有的文件与目录都被认为具有Remote属性(即存储在服务端)。在运行过程中,当任何文件/目录被删除时,这些文件/目录属性会被设为Deleted(而不是物理上被删除)。任何修改或者新创建的文件则会被至为New。特别的,当某一远程文件被修改时,它会首先被下载到本地缓存,后续操作将针对此本地版本进行,文件状态转换流程请参考图3。
下面结合图3对用户层虚拟文件系统的整个运行过程做进一步描述:
(1)系统初始化
用户在选择某一软件部署后,虚拟文件系统的用户层代理程序会首先下载这个按需软件的元数据包,该元数据包主要包括:该按需软件的所有文件、目录的层次结构信息、路径名、以及文件属性(大小、访问权限、时间戳等),这是因为服务端实际上是个只读存储,这类元数据包可以事先在服务端压缩好,以便可以随时被访问。
下载完成后,用户层代理程序会在本地某个事先指定的位置创建一个“锚文件目录”(anchorfolders):在这一目录下,按需软件所有的文件(包括目录)均会被创建,其目录结构、名字、文件属性均与服务端的一样;唯一的区别在于所有的“锚文件”都是空的。
这样做的好处在于所有与文件元数据相关的操作(如SetFileAttributes/GetFileAttributes/SetFileTime/FindxxxFile等)可以直接在“锚文件系统”上完成,使得虚拟文件系统程序专注于处理数据操作;同时,“锚文件”也可以直接作为相应文件的缓存以简化其管理。
(2)运行过程
在运行过程中,服务端的内容为只读;客户端采用Copy-on-write机制,即任何用户使用软件过程中的修改都存于本地的锚文件系统,包括新文件/新目录以及修改的原有远程文件。
(3)系统退出
用户层文件系统退出时,所有的“锚文件系统”内容以及所有的文件属性都会被保存到一个独立的服务器上,以便下次启动时再从该服务器上下载,从而能够体现最新的数据修改。
(4)多用户处理
用户层代理程序启动时可以要求用户输入其用户名与密码,认证通过后即可确认该用户身份。相应的,每个用户在服务端拥有一个以其用户名识别的存储目录,用以存储其修改过的数据(包括新创建的),这样就可以区分不同用户,同时对于未修改的应用文件数据则可以只存一份。在实际应用中,本优选实施例可以采用如下的配置:客户端为一台安装有WindowsXPSP2的个人电脑,配置2GBytesDDR2内存,一个IntelPentium1.6G处理器,本地硬盘为HitachiIC25N030ATMR04Travelstar驱动器,NTFS文件系统。服务器即为普通的PC服务器,两者间以百兆以太网互连。所使用的三个安装文件为winDbg安装文件(大小为8809KB),Visio补丁安装文件(32605KB)与iTune安装文件(53058KB)。
通过实验记录表明,用户层文件系统引入的平均每次文件系统读写操作的时间开销不超过1ms,其中,具体的时间开销计算方法是记录上述程序在用户层文件系统之上的执行时间,以及直接在本地文件系统上的执行时间,两者的差值除以总共的文件系统读写操作次数,就是平均每次的额外开销。
在实际应用中,将局域网内服务器上的一个目录映射为本地的一个虚拟目录,然后在此虚拟目录下进行若干实用操作,例如自解压安装文件的运行,同时记录用户层虚拟文件系统自身(不包括远程数据读取的开销)引入的额外时间开销。
通过本优选实施例,使用Windows系统下的用户层文件系统框架,能够将远程服务器上的文件或者数据映射为客户端的某个本地驱动器,对于使用者(包括应用程序)而言,访问远程的数据就如访问本地文件一样,可以同时在远程服务器上区分不同用户的修改数据。进一步的,对于云游戏系统而言,因为用户层文件系统框架实现了任何应用程序访问虚拟驱动器的操作截获(位于用户层),这就意味着可以截获所有的文件系统访问,从而识别写入\修改\创建等操作,进而对于这些数据(用户个性化数据就包含在其中)进行特殊处理,包括区分各个用户后分别存储以及读取。
进一步地,还具有以下优点:(1)能够使用户层文件系统在性能上有很大提高,用户层虚拟文件系统自身(不包括远程数据读取的开销)引入的额外时间开销平均不超过1ms;(2)兼容性好,可用于目前主流的Windows系统。
采用上述实施例提供的文件系统访问的处理方法,解决了相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,能够使使用者(包括应用程序)可以像访问本机文件那样访问远程服务器上的文件或数据,同时可以在远程服务器上区分不同用户的修改数据,进而达到了提高系统性能、减小额外时间开销以及增强系统兼容性的效果。
图5是根据本发明实施例的文件系统访问的处理系统的结构框图,该系统用以实现上述实施例提供的文件系统访问的处理方法,如图5所示,该系统包括:输入输出管理器10、文件系统驱动20、用户层代理程序30,以及位于输入输出管理器和文件系统驱动之间的文件过滤驱动40。其中,文件过滤驱动40包括:接收模块42,用于接收输入输出管理器转发的来自用户的操作请求消息;判断模块44,连接至接收模块42,用于判断操作请求消息是否符合预定的过滤条件;执行模块46,连接至判断模块44,用于在判断模块的判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。
在本优选实施例中,操起请求消息包括:输入输出请求包IRP和对应于IRP的完成例程,其中,完成例程包括以下至少之一:设备控制DeviceControlIRP、创建CreateIRP、清除/关闭Cleanup/CloseIRP、目录控制DirectoryControlIRP、询问信息QueryInfoIRP、读取ReadIRP、写入WriteIRP。
采用上述实施例提供的文件系统访问的处理系统,解决了相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,能够使使用者(包括应用程序)可以像访问本机文件那样访问远程服务器上的文件或数据,同时可以在远程服务器上区分不同用户的修改数据,进而达到了提高系统性能、减小额外时间开销以及增强系统兼容性的效果。
从以上的描述中,可以看出,本发明实现了如下技术效果:通过在输入输出管理器和文件系统驱动之间预先设置文件过滤驱动,并使用该文件过滤驱动对用户的IRP(输入输出请求包)进行拦截并对IRP进行分析后再分类发送给用户层代理程序或文件系统驱动的方式,解决了相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,能够使使用者(包括应用程序)可以像访问本机文件那样访问远程服务器上的文件或数据,同时可以在远程服务器上区分不同用户的修改数据,进而达到了提高系统性能、减小额外时间开销以及增强系统兼容性的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种文件系统访问的处理方法,其特征在于,包括:
文件过滤驱动接收输入输出管理器转发的来自用户的操作请求消息,其中,所述文件过滤驱动是预先设置在所述输入输出管理器和文件系统驱动之间的;
所述文件过滤驱动判断所述操作请求消息是否符合预定的过滤条件,在判断结果为是的情况下,将所述操作请求消息发送给用户层代理程序进行处理,否则,将所述操作请求消息发送给所述文件系统驱动进行处理;
其中,所述操作请求消息包括:输入输出请求包IRP和对应于所述IRP的完成例程,其中,所述完成例程包括以下至少之一:设备控制DeviceControlIRP、创建CreateIRP、清除/关闭Cleanup/CloseIRP、目录控制DirectoryControlIRP、询问信息QueryInfoIRP、读取ReadIRP、写入WriteIRP;
其中,当所述完成例程为所述CreateIRP时,将所述操作请求消息发送给所述用户层代理程序进行处理包括:所述CreateIRP调用目标询问名称串ObQueryNameString获取所述IRP的完整路径名;所述CreateIRP通过将所述完整路径名与元数据信息进行对比的方式判断所述IRP是否属于预先设置的欲截获对象,在属于所述欲截获对象的情况下,将所述IRP的地址存储在内部无用信息表中且将所述IRP发送给所述用户层代理程序进行处理。
2.根据权利要求1所述的方法,其特征在于,所述输入输出管理器、所述文件系统驱动以及所述文件过滤驱动均位于内核空间。
3.根据权利要求1所述的方法,其特征在于,当所述完成例程为所述ReadIRP或所述WriteIRP时,将所述操作请求消息发送给用户层代理程序进行处理包括:
所述ReadIRP或所述WriteIRP判断所述IRP是否属于预先设置的欲截获对象,在属于所述欲截获对象的情况下,将所述IRP存储在从所述DeviceControlIRP的队列头中取出的一个IRP结构中,并通过调用IOCompleteIRP通知所述用户层代理程序接收所述IRP。
4.根据权利要求1所述的方法,其特征在于,所述Cleanup/CloseIRP用于通知所述用户层代理程序当前访问流程结束,并清空所述当前访问的队列资源。
5.根据权利要求1所述的方法,其特征在于,所述DeviceControlIRP用于传输所述用户层代理程序与所述文件过滤驱动之间的数据。
6.根据权利要求1所述的方法,其特征在于,所述DirectoryControlIRP用于获取所述IRP请求的目标文件目录下的所有文件与目标列表,并将启动时获得的元数据信息返回到所述输入输出管理器。
7.一种文件系统访问的处理系统,其特征在于,包括:输入输出管理器、文件系统驱动、用户层代理程序,以及位于所述输入输出管理器和所述文件系统驱动之间的文件过滤驱动,其中,所述文件过滤驱动包括:
接收模块,用于接收所述输入输出管理器转发的来自用户的操作请求消息;
判断模块,用于判断所述操作请求消息是否符合预定的过滤条件;
执行模块,用于在所述判断模块的判断结果为是的情况下,将所述操作请求消息发送给所述用户层代理程序进行处理,否则,将所述操作请求消息发送给所述文件系统驱动进行处理;
其中,所述操作请求消息包括:输入输出请求包IRP和对应于所述IRP的完成例程,其中,所述完成例程包括以下至少之一:设备控制DeviceControlIRP、创建CreateIRP、清除/关闭Cleanup/CloseIRP、目录控制DirectoryControlIRP、询问信息QueryInfoIRP、读取ReadIRP、写入WriteIRP;
其中,所述执行模块还用于当所述完成例程为所述CreateIRP时,所述CreateIRP调用目标询问名称串ObQueryNameString获取所述IRP的完整路径名;所述CreateIRP通过将所述完整路径名与元数据信息进行对比的方式判断所述IRP是否属于预先设置的欲截获对象,在属于所述欲截获对象的情况下,将所述IRP的地址存储在内部无用信息表中且将所述IRP发送给所述用户层代理程序进行处理。
CN201310016781.9A 2013-01-16 2013-01-16 文件系统访问的处理方法及系统 Active CN103077243B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310016781.9A CN103077243B (zh) 2013-01-16 2013-01-16 文件系统访问的处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310016781.9A CN103077243B (zh) 2013-01-16 2013-01-16 文件系统访问的处理方法及系统

Publications (2)

Publication Number Publication Date
CN103077243A CN103077243A (zh) 2013-05-01
CN103077243B true CN103077243B (zh) 2016-03-09

Family

ID=48153773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310016781.9A Active CN103077243B (zh) 2013-01-16 2013-01-16 文件系统访问的处理方法及系统

Country Status (1)

Country Link
CN (1) CN103077243B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544287B (zh) * 2013-10-28 2017-04-19 中国软件与技术服务股份有限公司 一种文件私有缓存建立方法和装置
CN104360869B (zh) * 2014-12-03 2017-05-10 飞天诚信科技股份有限公司 一种防止底层驱动拦截消息的方法
CN104461709B (zh) * 2014-12-12 2018-07-17 北京国双科技有限公司 任务计划的控制方法和装置
CN106407821A (zh) * 2016-09-10 2017-02-15 北京力鼎创软科技有限公司 一种磁盘隔离方法和系统
CN107292196A (zh) * 2017-06-27 2017-10-24 北京华云网际科技有限公司 Io数据的读写方法和装置
CN107479826B (zh) * 2017-07-06 2020-08-28 北京北信源软件股份有限公司 一种数据写入方法及装置
CN109240983A (zh) * 2018-08-06 2019-01-18 北京小米智能科技有限公司 信息存储方法及装置
CN111367868B (zh) * 2018-12-26 2023-12-29 三六零科技集团有限公司 一种文件获取请求的处理方法和装置
CN110300178B (zh) * 2019-07-02 2021-07-20 迈普通信技术股份有限公司 通信设备、业务卡、主控卡、文件访问方法及装置
CN114090096B (zh) * 2022-01-21 2022-04-15 成都云祺科技有限公司 一种网络虚拟文件系统实现方法、系统及存储介质
WO2023201638A1 (zh) * 2022-04-21 2023-10-26 宇龙计算机通信科技(深圳)有限公司 文件的操作方法、装置、计算机设备和可读存储介质
CN116049131B (zh) * 2022-06-10 2023-10-13 荣耀终端有限公司 文件管理方法、系统、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1598764A (zh) * 2003-09-15 2005-03-23 联想(北京)有限公司 一种计算机文件保护方法
CN101459697A (zh) * 2009-01-07 2009-06-17 清华大学 一种共享文件的访问方法和装置
CN101916349A (zh) * 2010-07-30 2010-12-15 中山大学 基于过滤驱动的文件访问控制方法、系统及过滤器管理器
CN102118442A (zh) * 2011-02-21 2011-07-06 清华大学 一种访问Web资源的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647308B2 (en) * 2006-11-08 2010-01-12 Mcafee, Inc. Method and system for the detection of file system filter driver based rootkits

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1598764A (zh) * 2003-09-15 2005-03-23 联想(北京)有限公司 一种计算机文件保护方法
CN101459697A (zh) * 2009-01-07 2009-06-17 清华大学 一种共享文件的访问方法和装置
CN101916349A (zh) * 2010-07-30 2010-12-15 中山大学 基于过滤驱动的文件访问控制方法、系统及过滤器管理器
CN102118442A (zh) * 2011-02-21 2011-07-06 清华大学 一种访问Web资源的方法及装置

Also Published As

Publication number Publication date
CN103077243A (zh) 2013-05-01

Similar Documents

Publication Publication Date Title
CN103077243B (zh) 文件系统访问的处理方法及系统
CN111338854B (zh) 基于Kubernetes集群快速恢复数据的方法及系统
CN100520721C (zh) 虚拟化窗口信息的方法和设备
US8285817B1 (en) Migration engine for use in a logical namespace of a storage system environment
US5623666A (en) Distributed computing system
US5920873A (en) Data management control system for file and database
JP5183802B2 (ja) 仮想化された計算機システム用の分散仮想スイッチ
US7783737B2 (en) System and method for managing supply of digital content
CN113204307A (zh) 一种在Linux上兼容运行Android系统的文件发送方法及装置
CN110088733A (zh) 虚拟机迁移的基于存储层的编排
CN107992355B (zh) 一种部署应用软件的方法、装置及虚拟机
US20150006487A1 (en) Method and apparatus for checkpointing and restarting container status
US20080294764A1 (en) Storage medium bearing hba information provision program, hba information provision method and hba information provision apparatus
CN109643302A (zh) 针对文件的存储虚拟化
JP2007122432A (ja) 仮想ボリュームを識別する情報を引き継ぐ方法及びその方法を用いたストレージシステム
US6633977B1 (en) System and method for computer system duplication
CN109923547B (zh) 程序行为监控设备、分布式对象生成管理设备、存储介质、以及程序行为监视系统
US20230315584A1 (en) Backing up data for a namespace assigned to a tenant
CN101459697A (zh) 一种共享文件的访问方法和装置
CN114270315A (zh) 应用的水合
US9910662B2 (en) Selectively migrating applications during an operating system upgrade
JP2001175460A (ja) プログラム配付管理システム
US20090138548A1 (en) Apparatus, method, and computer program product for processing information
CN110134489A (zh) 应用迁移方法及装置、系统、存储介质、应用上云工具
US11010408B2 (en) Hydration of a hierarchy of dehydrated files

Legal Events

Date Code Title Description
C06 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