一种透明扩充文件系统功能的方法技术方案

技术编号:2867620 阅读:199 留言:0更新日期:2012-04-11 18:40
一种透明扩充文件系统功能的方法,其文件系统包括虚拟文件系统VFS和底层文件系统,其特征在于,在VFS层标准调用接口和底层文件系统接口之间,还设置一个夹层文件系统(Interlayer File System),当一个应用程序发出一个文件系统的请求时,系统调用接口先将该请求提交给VFS层处理函数;VFS通过标准调用接口将请求提交给所述夹层文件系统;由该夹层文件系统进行特殊事务处理后,再将事务提交给底层的具体文件系统;最后,由底层文件系统来实现实际的数据存取或输入输出。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种增强文件系统功能的方法,特别是涉及一种能透明地扩充文件系统功能的方法,所谓“透明”指的是用户和用户态程序无法干预。
技术介绍
所有的计算机程序都要存储信息和检索信息。对于长期存储的信息,有以下三个要求一是要有足够的空间存储信息。二是在使用信息的进程终止时,信息必须保存下来。三是多个进程可以并发存取信息。满足以上三个要求的常用方法是把信息以一种称之为“文件”的单元保存在磁盘或其他的外部存储介质上。文件是由操作系统来管理的。文件的命名、存储空间的分配、文件的存取和使用等都是由操作系统中的“文件系统”管理单元来管理的。文件系统可以被看成是一个多功能的管理器,它既是空间管理器、I/O管理器、目录管理器,对于特殊的日志文件系统它还是事务管理器。一种操作系统可以支持多种不同的文件系统,例如Linux操作系统可以支持的文件系统有ext2、ext3、jfs、Reiserfs、xfs等。为了支持各种不同的文件系统,很多操作系统在设计之初就考虑到了兼容性,UFS就是UNIX的标准文件系统界面,只要符合这个标准的文件系统都可以在UNIX上运行。这样就诞生了一个内核的子系统-VFS(Virtual File System)虚拟文件系统层,它作为一个转换开关来支持各种不同的文件系统。VFS提供了一系列标准的操作集合来管理和操作文件,这些操作集合都是由相关的函数指针来定义的。操作系统将各种不同的对文件系统的请求通过系统调用接口提交到VFS层。VFS层经过判断,来决定这个请求由哪个底层文件系统来实现,从而调用相应文件系统的操作处理函数。各种文件系统都有自己的特长,有的文件系统写大文件的性能高;有些文件对小文件的处理能力强;日志文件系统可以将改变文件系统的各个操作,记录到日志中去,一旦系统崩溃,可以按照日志快速恢复文件系统的一致性。但是无论什么文件系统,它提供给用户的功能大体相同,无外乎对文件的存取和目录的管理等。如果用户希望文件系统提供额外的附加功能,通常的方法是修改具体文件系统的实现函数,按照用户的需求,添加对事务的处理。但是这种做法有两个缺点,其一就是如果用户希望多种文件系统都提供它所需要的功能,就必须逐一修改具体文件系统的代码,这样做的结果既不利于原来文件系统代码的完整性,同时兼容性也很差。有人提出了修改VFS层的建议来解决兼容性的问题,但是这样做的代价就是破坏了VFS层的标准,同时依然解决不了另外一个问题。另外一个问题就是,这样对文件系统修改,满足不了用户随时增加或撤销对特殊事务处理的要求,灵活性很差。
技术实现思路
本专利技术的目的在于,按照不同用户的特殊需求,提供。本专利技术还可以使用户随时根据需要启动或者关闭对文件系统的特殊事务处理,而不影响原有的底层文件系统。本专利技术所述的,其文件系统包括虚拟文件系统VFS和底层文件系统,在VFS层标准调用接口和底层文件系统接口之间,还包括一个夹层文件系统(Interlayer File System),当一个应用程序发出一个文件系统的请求时,系统调用接口先将该请求提交给VFS层处理函数,VFS通过标准调用接口将请求提交给夹层文件系统,由该夹层文件系统进行特殊事务处理后,例如对数据加密,压缩或者读/写的重定向等,再将事务提交给底层的具体文件系统,最后,由底层文件系统来实现实际的数据存取或输入输出。如上所述的一种透明的扩充文件系统功能的方法,所述夹层文件系统为一个可随时装载或卸除装载的模块,当模块装载后,夹层文件系统截获VFS向下提交的请求;卸载模块后,则恢复原来的操作流程,VFS层直接将请求提交底层文件系统,由底层文件系统具体实现各种请求。本专利技术所述方法可以在原有的已经实现的多种文件系统基础上,截获文件系统的请求,封装自己的处理,增强文件系统的功能,并且不破坏VFS层的标准接口和具体文件系统的代码完整性,实现各种特殊的应用。附图说明图1为夹层文件系统结构图;图2为系统调用写事务write的处理流程;图3为夹层文件系统操作集合的数据结构关系图;图4为夹层文件系统读超级块interlayer_read_super.的操作流程图;图5为创建内存inode的操作函数interlayer_read_inode流程图;图6为夹层文件系统写操作interlayer_write流程图。具体实施例方式下面结合附图对本专利技术再作进一步详细的说明。本专利技术提出的夹层文件系统的概念是受了VFS的启发,而VFS就是一个不可装载的并且已经成为标准的夹层文件系统。如果修改了VFS层的话,必将要求所有的文件系统都经过特殊事务的处理,并且装载的灵活性受到了限制。因此在VFS和具体文件系统(例如ext2,jfs,xfs等)的基础上,本专利技术提出了夹层文件系统的概念。如图1所示,本专利技术并不是真正的实现一个具体的文件系统,而是在VFS层和具体文件系统之间封装的标准调用接口,以实现扩展文件系统的功能。在装载了夹层文件系统的情况下,当一个应用程序发出一个文件系统的请求时,系统调用接口将该请求先提交给VFS层处理函数,VFS通过标准调用接口将请求提交给夹层文件系统,由该夹层文件系统进行特殊事务处理后,如对数据加密,压缩或者读/写的重定向等,再将事务提交给底层的具体文件系统,最后,由底层文件系统来实现实际的数据存取或I/O。VFS层提供的标准调用接口,包括四个操作函数集合关于超级块的操作集合(super_operations);关于i节点的操作集合(inode_operations);关于文件的操作合集(file_operations);关于地址空间的操作集合(address_space_operations)。其中inode_operations、file_operations和address_space_operations直接挂在文件系统的基本对象i节点上;而super_operations直接挂接在文件系统的超级块上;同时i节点上保存有超级块的指针,因此通过i节点可以间接访问到per_operations。这四个操作集合都是由不同的函数指针组成的结构,而这些函数指针则指向了具体的文件系统所实现的操作函数。VFS层就是将各种文件系统的请求通过这四个操作集的调用提交给具体文件系统的。因此,只需要实现这四个操作集合,并且将自己实现的操作集合覆盖到i节点和超级块上的函数指针,就可以截获VFS向下提交的请求了。另外,为了增加系统的灵活性,根据操作系统提供的可装载模块的实现规则,通过将夹层文件系统实现为可装载模块,随时可以根据用户的需求动态的装载和卸载夹层文件系统到操作系统的内核中,来实现启动和关闭对文件系统的特殊事务的处理过程。图2用系统调用写操作的处理流程来进一步说明上述的体系结构。首先当应用程序请求写操作时,操作系统将写请求通过系统调用接口传递给虚拟文件系统的处理函数,虚拟文件系统转发写请求给夹层文件系统,夹层文件系统再通过对写请求的数据块压缩/加密后重新组织写磁盘的数据内容,最后将新的数据内容作为参数提交给底层文件系统JFS(日志文件系统)进行真正写事务处理。下面具体地以本专利技术应用于压缩文件系统和加密文件系统为例,说明基于JFS(Journal File System)日志文件系统,是如何利用夹层文件系统实现文件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:吴江唐杰李丽虹
申请(专利权)人:联想北京有限公司
类型:发明
国别省市:

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

1