专利详情

标题基于客户端持久缓存的远程文件系统镜像方法及系统
[标]当前申请(专利权)人南开大学
申请日2013年1月28日
申请号CN201310032480.5
公开(公告)日2015年9月30日
公开(公告)号CN103116618B
授权日-
法律状态/事件授权
专利类型授权发明
发明人李旭东 | 史宝旭
受理局中国
当前申请人(专利权)地址300071 天津市南开区卫津路94号 (天津,天津,南开区)
IPC分类号G06F17/30 | G06F11/14 | G06F9/455 | H04L29/08
国民经济行业分类号I6550 | I6421 | I6511 | I6422 | I6513 | I6512 | I6429 | I6519
代理机构天津佳盟知识产权代理有限公司
代理人侯力
被引用专利数量-
专利价值$ 230,000

摘要

本发明是在网络环境下在客户计算设备上利用本地磁盘文件系统作为持久缓存空间的实现远程文件系统的本地化镜像方法及其系统。应用在客户计算设备上通过访问“本地化镜像客户端系统”来透明访问远程文件系统。“本地化镜像客户端系统”通过“本地磁盘文件系统”来持久缓存远程文件系统的部分文件及文件的部分数据,并负责维护本地持久缓存远程文件系统的一致性。本发明采用块粒度为最小单位来实现本地与远程文件系统的文件上传下载、以及本地持久缓存中文件的读写操作,并支持对文件的部分块数据进行持久缓存。本发明将有效提高“用户应用程序”对远程文件系统的访问效率从而提高用户体验,并大大节省网络流量。

1.基于客户端持久缓存的远程文件系统镜像系统,其特征在于,该系统包括远程文件系统服务器装置和客户计算机装置,二者通过网络互联;

远程文件系统服务器装置,主要包括远程文件系统服务模块,简称“远程文件系统服务系统”,通过常见的网络文件协议为网络其它计算机提供文件系统服务;

客户计算机装置,主要包括远程文件系统的本地化镜像客户端系统模块,简称“本地化镜像客户端系统”;本地具有持久存储能力的磁盘文件系统模块,简称“本地磁盘文件系统”;本地“虚拟文件系统”服务模块;本地计算设备上运行的各种“用户应用程序”,简称“应用”;本地内存模块;

本地“虚拟文件系统”为各种“应用”提供统一的透明文件服务,无论是访问“本地磁盘文件系统”还是访问“远程文件系统服务系统”;而本地“虚拟文件系统”实现访问“远程文件系统服务系统”的功能,具体是由“本地化镜像客户端系统”来实现的;同时“本地化镜像客户端系统”将使用“本地磁盘文件系统”部分空间作为持久缓存“远程文件系统服务系统”部分文件及元数据的空间;

所述的“本地化镜像客户端系统”由“本地化镜像客户端核心管理系统”子模块、内存缓存管理子模块、网络文件系统驱动子模块、和本地磁盘缓存管理子模块组成;其中内存缓存管理子模块负责内存中“元数据管理区”和“文件数据缓存区”的管理;网络文件系统驱动子模块负责与各种协议的网络文件系统连接和文件数据传输及控制,各种网络协议包括NFS、FTP、HTTP、SSH和Hadoop协议;本地磁盘缓存管理子模块负责管理“本地磁盘文件系统”上的持久缓存目录及元数据管理;“本地化镜像客户端核心管理系统”子模块通过网络文件系统驱动子模块与远程网络文件系统进行文件传输及控制,“本地化镜像客户端核心管理系统”也负责完成本地“虚拟文件系统”传过来的文件访问操作,并进一步将所网络下载的文件数据及本地“应用”修改的文件数据和控制操作统一缓存在客户计算机装置上内存缓存区和“本地磁盘文件系统”持久缓存目录中。

2.根据权利要求1所述的系统,其特征在于,“本地化镜像客户端系统”内存中主要数据结构包括:内存元数据区、内存文件数据缓存区、内存缓存映射表、内存网络任务表;“本地化镜像客户端系统”在“本地磁盘文件系统”持久存储的主要数据文件包括:元数据文件、网络任务文件、数据缓存文件;“本地磁盘文件系统”的指定持久缓存目录的空间大小仅受限于该“本地磁盘文件系统”的空间大小,或者由“本地化镜像客户端系统”的参数来设定具体的持久缓存目录的空间大小,即“本地磁盘文件系统”的指定持久缓存目录的实际使用空间不能超过参数设定值,并且在“本地化镜像客户端系统”运行期间能够动态改变具体的持久缓存目录的空间大小。

3.基于客户端持久缓存的远程文件系统镜像方法,其特征在于,该方法的具体步骤如下:

第1、启动“远程文件系统服务器”,并正常开启网络文件系统服务;

第2、启动客户计算机装置上操作系统的本地“虚拟文件系统”服务;

第3、启动客户计算机装置上的“本地化镜像客户端系统”,“本地化镜像客户端系统”分别与“远程文件系统服务器”、本地“虚拟文件系统”以及“本地磁盘文件系统”进行连接和通信,从而通过本地“虚拟文件系统”为客户计算机装置上的“应用”提供透明访问“远程文件系统服务器”的文件服务,具体步骤包括如下:

第3.1、“本地化镜像客户端系统”读取参数配置文件,获取相关运行参数,运行参数包括“远程文件系统”认证信息和登录目录、“本地虚拟文件系统”的挂载目录和访问权限信息、“本地磁盘文件系统”上的持久缓存目录和元数据文件信息、运行性能与安全参数;

第3.2、“本地化镜像客户端系统”在客户计算机装置的内存建立并初始化“元数据管理区”和“文件数据缓存区”;

第3.3、“本地化镜像客户端系统”读取“本地磁盘文件系统”上的持久缓存目录及元数据文件,进一步读取已在本地持久缓存目录中缓存的远程文件系统目录和文件数据到“本地化镜像客户端系统”内存中的“文件数据缓存区”中,并修改相应的元数据管理区;

第3.4、“本地化镜像客户端系统”连接“远程文件系统服务器”,提交“远程文件系统服务器”所需要的用户名和口令给“远程文件系统服务器”,经过“远程文件系统服务器”认证通过后,读取远程文件系统相应目录及其部分子目录和文件并合并到“本地化镜像客户端系统”的内存空间的文件数据缓存区中,并修改“本地化镜像客户端系统”内存中的“元数据管理区”;

第3.5、“本地化镜像客户端系统”向“本地虚拟文件系统”注册并挂载到指定的挂载目录上,开始提供透明访问“远程文件系统服务器”的文件服务;

第3.6、本地计算设备上运行的“应用”通过标准的本地“虚拟文件系统”访问“本地化镜像客户端系统”所提供的文件服务,从而透明地访问“远程文件系统”;

第3.7、“本地化镜像客户端系统”正常运行期间,利用“本地磁盘文件系统”中指定的持久缓存目录,动态地管理“应用”访问“远程文件系统服务器”的文件数据,包括下载和上传文件及目录数据,以保持本地“磁盘文件系统”中持久缓存数据和远程文件系统数据的一致性;并动态维护“本地化镜像客户端系统”内存中的“元数据管理区”和“文件数据缓存区”信息,以及保持“本地化镜像客户端系统”内存数据和本地磁盘文件系统中持久缓存数据的一致性;

第4、当停止“本地化镜像客户端系统”时,“本地化镜像客户端系统”将撤销与本地“虚拟文件系统”的注册,“本地化镜像客户端系统”将内存中“元数据管理区”和“文件数据缓存区”保存到本地磁盘文件系统中指定的持久缓存的目录中,并关闭与远程文件系统服务器的连接。

4.根据权利要求3所述的方法,其特征在于,“本地化镜像客户端系统”采用块粒度为最小单位实现本地与远程文件系统的文件上传下载、以及本地持久缓存中文件的读写操作,以及对“远程文件系统服务器”中文件的持久缓存;在“本地磁盘文件系统”中的指定持久缓存目录中缓存远程文件系统中的全部文件,或者缓存远程文件系统中的部分文件,或者缓存远程文件系统中的单个文件的部分数据块;“本地化镜像客户端系统”对持久缓存文件的元数据管理采用块粒度为最小单位,而不是文件粒度。

5.根据权利要求3所述的方法,其特征在于,“本地化镜像客户端系统”负责本地客户计算设备中内存缓存的维护,包括删除文件块数据缓存、创建文件块数据缓存、维护内存文件块数据索引、修改文件块数据缓存信息;“本地化镜像客户端系统”也负责本地磁盘文件系统中指定持久缓存目录中的数据管理,包括删除不用的缓存文件、创建新的缓存文件、或修改已有的缓存文件、对已有缓存文件进行索引。

6.根据权利要求3所述的方法,其特征在于,“本地化镜像客户端系统”正常运行期间,当“应用”试图访问“远程文件系统服务器”的文件数据时,“本地化镜像客户端系统”将首先在内存中的“元数据管理区”和“文件数据缓存区”信息查找内存中是否有所欲访问的文件数据的缓存,若内存中有所述文件数据缓存,则直接返回给“应用”所欲访问的文件数据,不需真正访问“远程文件系统服务器”;若内存中没有所欲访问的文件数据的缓存,则进一步查找本地“磁盘文件系统”中持久缓存数据是否有所欲访问的文件数据的缓存,若本地“磁盘文件系统”中有所述文件数据缓存,则直接返回给“应用”所欲访问的文件数据,不需真正访问“远程文件系统服务器”;否则“本地化镜像客户端系统”访问“远程文件系统服务器”中所欲访问的文件数据,更新本地客户计算设备中内存以及本地“磁盘文件系统”中缓存信息,最后返回给“应用”所欲访问的文件数据。

7.根据权利要求3所述的方法,其特征在于,“本地化镜像客户端系统”正常运行期间,当“应用”试图在“远程文件系统服务器”中建立、修改以及删除文件操作时,“本地化镜像客户端系统”首先将建立和修改文件及控制信息缓存在本地“磁盘文件系统”中持久缓存目录中,并更新本地“磁盘文件系统”中元数据信息,然后返回给“应用”操作结果,最后在本地客户计算设备负载允许情况下同步或者异步方式将“应用”对“远程文件系统服务器”的修改以及删除文件操作从本地“磁盘文件系统”中持久缓存读取并提交给“远程文件系统服务器”。

8.根据权利要求3所述的方法,其特征在于,“本地化镜像客户端系统”负责与“远程文件系统服务器”进行连接、认证以及文件上传下载服务;若“本地化镜像客户端系统”不能正确连接和访问“远程文件系统服务器”,或“本地化镜像客户端系统”和“远程文件系统服务器”正常工作中突然断开连接时,“本地化镜像客户端系统”仍能够继续运行并为本地计算设备上运行的“应用”提供文件服务,此时仅提供在“本地磁盘文件系统”中的指定持久缓存目录中已有缓存的相关文件服务;“本地化镜像客户端系统”异步地稍后再尝试连接和访问“远程文件系统服务器”,当再次恢复对“远程文件系统服务器”的连接和访问时,提供正常的“远程文件系统服务器”的文件服务。

技术领域

[0001]本发明属于计算机领域,借助于本地磁盘文件系统作为持久缓存下,为本地客户计算设备上运行的应用提供高效透明访问远程文件系统镜像的系统与方法。

背景技术

[0002]目前的远程文件系统主要可分为两种类型:

[0003]1.实时在线类型的远程文件系统,例如NFS、CIFS、SSHFS、,HDFS(Hadoop分布式文件系统),GFS(Google文件系统)等。此类远程文件系统必须实时与远程文件系统连接,并本地计算设备上运行的应用提供远程文件系统实时访问的文件服务。其主要缺点:一、必须实时联网,一旦断线,则所有操作都将失效;二、当网络状况不稳定时(WIFI或手机2G网络),其用户体验很差。

[0004]2.离线类型的远程文件系统,例如等DropBox、SkyDrive、BT等。此类远程文件系统将所有远程文件及文件目录存储在用户本地,因此本地计算设备上的应用可以在离线状态下使用此文件系统。其主要缺点:一、必须先完整下载所要访问的远程文件然后才能对其进行访问;二、受到本地临时存储空间限制,无法提供大于本地存储空间的文件访问服务。

[0005]以上这两类都不能满足将远程文件系统上部分文件数据缓存在本地存储设备上、并为本地计算设备上运行的应用提供远大于本地存储设备的存储空间的需求,这正是本发明所要解决的具有很高的实用价值的问题。

[0006]当前针对基于本地磁盘文件系统作为持久缓存、为本地计算设备上运行的应用提供远程文件系统透明文件服务方法的研究目前成果比较少,主要有2个代表性的研究论文:

[0007]论文1(1.Muthitacharoen,A.,Chen,B.,&Mazières,D(2001).A low-bandwidth network file system.Proceedings of the eighteenth ACM symposium on Operating systems principles-SOSP'01,174-14.doi:10.1145/502034.502052)重点研究了通过如何比较本地计算设备上缓存和远程文件系统上相同文件的多个版本数据的相似度从而减少本地与远程计算机之间文件传输的数据量。

[0008]但是论文1没有给出本地计算设备上文件缓存的管理具体方法,也没有给出基于块粒度的文件传输与文件缓存方法。

[0009]论文2(2.Michael Vrable,Stefan Savage,and Geoffrey M.Voelker.A Cloud-Backed File System for the Enterprise.Proceedings of the 7th USENIX Conference on File and Storage Technologies(FAST),San Jose,CA,February2012)研究通过为企业网中建立统一的远程文件系统访问代理,该代理部署在企业网与外网的网关上,从而实现企业网中计算机透明访问远程云存储,进而减少企业存储成本。

[0010]但是论文2并没有研究在本地计算设备上远程文件系统的缓存,而依然是在网络中的代理服务器上实现缓存。

发明内容

[0011]本发明目的是为了解决上述现有实现方式存在的问题,提供一种在客户计算设备上利用本地磁盘文件系统作为持久缓存空间的实现远程文件系统的本地化镜像方法及其系统。

[0012]“用户应用程序”在客户计算设备上通过访问“本地化镜像客户端系统”来透明访问远程文件系统。“本地化镜像客户端系统”通过“本地磁盘文件系统”来持久缓存远程文件系统的部分文件及元数据,并负责维护本地持久缓存远程文件系统的一致性。本发明采用块粒度为最小单位来实现本地与远程文件系统的文件上传下载、以及本地持久缓存中文件的读写操作,并支持对文件的部分块数据进行持久缓存。本发明将有效提高“应用”对远程文件系统的访问效率从而提高用户体验,并大大节省网络流量,同时提供远大于本地磁盘文件系统缓存空间大小的远程文件系统的文件空间。

[0013]1、本发明涉及的基于客户端持久缓存的远程文件系统镜像系统(如图1)包括远程文件系统服务器装置和客户计算机装置,二者通过网络互联。

[0014]远程文件系统服务器装置主要包括远程文件系统服务模块,简称“远程文件系统服务系统”,通过常见的网络文件协议为网络其它计算机提供文件系统服务。客户计算机装置主要包括远程文件系统的本地化镜像客户端系统模块,简称“本地化镜像客户端系统”;本地具有持久存储能力的磁盘文件系统模块,简称“本地磁盘文件系统”;本地“虚拟文件系统”服务模块;本地计算设备上运行的各种“应用”,简称“应用”;本地内存模块。本地“虚拟文件系统”为各种“应用”提供统一的透明文件服务,无论是访问“本地磁盘文件系统”还是访问“远程文件系统服务系统”;而本地“虚拟文件系统”实现访问“远程文件系统服务系统”的功能具体是由“本地化镜像客户端系统”来实现的;同时“本地化镜像客户端系统”将使用“本地磁盘文件系统”部分空间作为持久缓存“远程文件系统服务系统”部分文件及元数据的空间。

[0015]其中用户计算设备既包括PC计算机也包括智能移动手持设备以及企业级服务器。虚拟文件系统服务和远程文件系统服务器均为业界主流的标准协议和应用系统。

[0016]按照本发明提供的系统,所述的“本地化镜像客户端系统”由“本地化镜像客户端核心管理系统”子模块、内存缓存管理子模块、网络文件系统驱动子模块、和本地磁盘缓存管理子模块组成。其中内存缓存管理子模块负责内存中“元数据管理区”和“文件数据缓存区”的管理;网络文件系统驱动子模块负责与各种协议的网络文件系统连接与文件数据传输及控制,各种网络协议包括常见的NFS、FTP、HTTP、SSH、HDFS(Hadoop分布式文件系统)和GFS(Google文件系统)协议;本地磁盘缓存管理子模块负责管理“本地磁盘文件系统”上的持久缓存目录及元数据管理。“本地化镜像客户端核心管理系统”子模块通过网络文件系统驱动子模块与远程网络文件系统进行文件传输及控制,“本地化镜像客户端核心管理系统”也负责完成本地“虚拟文件系统”传过来的文件访问操作,并进一步将所网络下载的文件数据以及本地“应用”修改的文件数据及控制操作统一缓存在客户计算机装置上内存缓存区和“本地磁盘文件系统”持久缓存目录中。

[0017]按照本发明提供的系统,“本地化镜像客户端系统”中的子模块“本地化镜像客户端核心管理系统”,主要包括如下子模块(如图3):即IO请求响应子模块、缓存查询子模块、本地磁盘缓存处理子模块、本地内存缓存处理子模块、网络监控子模块、IO监控子模块、本地缓存整理子模块。IO请求响应子模块负责接收应用通过虚拟文件系统传来的文件操作和回应;缓存查询子模块负责调用底层“内存缓存管理”来检索、读取、修改文件缓存信息;网络监控子模块负责监控与远程网络文件系统的连接;IO监控子模块负责本地用户计算设备IO负载,当达到用户配置文件中设置的条件时,即根据用户设置的规则暂停或延缓某些网络任务的执行(数据下载、数据预取以及修改后数据的上传);本地缓存整理子模块负责管理本地磁盘文件系统中持久缓存。

[0018]按照本发明提供的系统,″本地化镜像客户端系统”内存中主要数据结构包括:内存元数据区、内存文件数据缓存区、内存缓存映射表、内存网络任务表;″本地化镜像客户端系统”在″本地磁盘文件系统”持久存储的主要数据文件包括:元数据文件、网络任务文件、数据缓存文件;″本地磁盘文件系统”的指定持久缓存目录的空间大小仅受限于该″本地磁盘文件系统”的空间大小,或者由″本地化镜像客户端系统”的参数来设定具体的持久缓存目录的空间大小,即″本地磁盘文件系统”的指定持久缓存目录的实际使用空间不能超过参数设定值,并且在″本地化镜像客户端系统”运行期间能够动态改变具体的持久缓存目录的空间大小。

[0019]“本地化镜像客户端系统”管理“本地磁盘文件系统”的指定持久缓存目录中持久缓存数据时,采用元数据管理方式管理文件以及文件和目录之间的关系,元数据本身也存放在本地磁盘文件系统中,称为“元数据文件”;“本地化镜像客户端系统”通过“元数据文件”可重构相应的远程文件系统目录结构以及在“本地磁盘文件系统”上的文件缓存状态;“本地化镜像客户端系统”运行时读取该元数据文件部分或全部内容到内存中的“元数据管理区”,并定时将内存中“元数据管理区”内容回写到“本地磁盘文件系统”中的元数据文件中,以保证远程文件数据的本地化持久存储。

[0020]所述的“本地化镜像客户端系统”为了更高效地提供文件访问服务,“本地化镜像客户端系统”运行时动态地将本地磁盘文件系统中的指定持久缓存目录中的持久缓存目录和文件的全部数据或部分数据装载到“本地化镜像客户端系统”内存中的“文件数据缓存区”,并定期将所述内存中“文件数据缓存区”内容回写到“本地磁盘文件系统”中的持久缓存中,以保证相应文件数据的本地化持久存储。

[0021]2、本发明涉及的基于客户端持久缓存的远程文件系统镜像方法具体步骤如下:

[0022]第1、启动“远程文件系统服务器”,并正常开启网络文件系统服务;

[0023]第2、启动客户计算机装置上操作系统的本地“虚拟文件系统”服务;

[0024]第3、启动客户计算机装置上的“本地化镜像客户端系统”,“本地化镜像客户端系统”分别与“远程文件系统服务器”、本地“虚拟文件系统”以及“本地磁盘文件系统”进行连接和通信,从而通过本地“虚拟文件系统”为客户计算机装置上的“应用”提供透明访问“远程文件系统服务器”的文件服务,具体步骤包括如下:

[0025]第3.1、“本地化镜像客户端系统”读取参数配置文件,获取相关运行参数,运行参数包括“远程文件系统”认证信息和登录目录、“本地虚拟文件系统”的挂载目录和访问权限信息、“本地磁盘文件系统”上的持久缓存目录和元数据文件信息、运行性能与安全参数;

[0026]第3.2、“本地化镜像客户端系统”在客户计算机装置的内存建立并初始化“元数据管理区”和“文件数据缓存区”;

[0027]第3.3、“本地化镜像客户端系统”读取“本地磁盘文件系统”上的持久缓存目录及元数据文件,进一步读取已在本地持久缓存目录中缓存的远程文件系统目录和文件数据到“本地化镜像客户端系统”内存中的“文件数据缓存区”中,并修改相应的元数据管理区;

[0028]第3.4、“本地化镜像客户端系统”连接“远程文件系统服务器”,提交“远程文件系统服务器”所需要的用户名和口令给“远程文件系统服务器”,经过“远程文件系统服务器”认证通过后,读取远程文件系统相应目录及其部分子目录和文件并合并到“本地化镜像客户端系统”的内存空间的文件数据缓存区中,并修改“本地化镜像客户端系统”内存中的“元数据管理区”;

[0029]第3.5、“本地化镜像客户端系统”向“本地虚拟文件系统”注册并挂载到指定的挂载目录上,开始提供透明访问“远程文件系统服务器”的文件服务;

[0030]第3.6、本地计算设备上运行的“应用”通过标准的本地“虚拟文件系统”访问“本地化镜像客户端系统”所提供的文件服务,从而透明地访问“远程文件系统”;

[0031]第3.7、“本地化镜像客户端系统”正常运行期间,利用“本地磁盘文件系统”中指定的持久缓存目录,动态地管理“应用”访问“远程文件系统服务器”的文件数据,包括下载和上传文件及目录数据,以保持本地“磁盘文件系统”中持久缓存数据和远程文件系统数据的一致性;并动态维护“本地化镜像客户端系统”内存中的“元数据管理区”和“文件数据缓存区”信息,以及保持“本地化镜像客户端系统”内存数据和本地磁盘文件系统中持久缓存数据的一致性;

[0032]第4、当停止“本地化镜像客户端系统”时,“本地化镜像客户端系统”将撤销与本地“虚拟文件系统”的注册,“本地化镜像客户端系统”将内存中“元数据管理区”和“文件数据缓存区”保存到本地磁盘文件系统中指定的持久缓存的目录中,并关闭与远程文件系统服务器的连接。

[0033]按照本发明提供的镜像方法,“本地化镜像客户端系统”采用块粒度为最小单位实现本地与远程文件系统的文件上传下载、以及本地持久缓存中文件的读写操作,以及对“远程文件系统服务器”中文件的持久缓存。在“本地磁盘文件系统”中的指定持久缓存目录中可以缓存远程文件系统中的全部文件,也可以缓存远程文件系统中的部分文件,也可以缓存远程文件系统中的单个文件的部分数据块。“本地化镜像客户端系统”对持久缓存文件的元数据管理采用块粒度为最小单位,而不是文件粒度。

[0034]“本地化镜像客户端系统”向本地计算设备上的应用提供块级别的文件服务,即应用请求读取某文件的任意偏移量开始的小于等于虚拟文件系统规定大小的连续数据即一个块数据时,“本地化镜像客户端系统”将按所述请求提供相应数据。

[0035]“本地化镜像客户端系统”对内存中文件数据缓存区中的管理是以块为单位,即提供块大小的缓存空间申请和释放,块大小可由“本地化镜像客户端系统”的参数配置文件指定。

[0036]如图2所示,用户计算设备中只有远程文件系统中部分文件的部分数据块。

[0037]按照本发明提供的镜像方法,“本地化镜像客户端系统”负责本地客户计算设备中内存缓存的维护,包括删除文件块数据缓存、创建文件块数据缓存、维护内存文件块数据索引、修改文件块数据缓存信息。“本地化镜像客户端系统”也负责本地磁盘文件系统中指定持久缓存目录中的数据管理,包括删除不用的缓存文件、创建新的缓存文件、或修改已有的缓存文件、对已有缓存文件进行索引。

[0038]“本地化镜像客户端系统”负责其内存中“文件数据缓存区”的管理,包括清理不用的文件数据缓存块、加载新的文件数据缓存块、对已有文件数据缓存块进行索引;当“文件数据缓存区”中的空闲数据块缓存空间没有时或少于由“本地化镜像客户端系统”运行参数规定的空闲数据块缓存空间数目时,“本地化镜像客户端系统”启动内存的“文件数据缓存区”清理工作,清理状态为“使用”的数据块;清理算法可由“本地化镜像客户端系统”运行参数指定,“本地化镜像客户端系统”提供接口机制,并支持用户自定义清理算法;若该“使用”状态的数据块未被修改,则直接设置为空闲状态并修改相应的元数据管理区;若该“使用”状态的数据块被修改,则进一步判断其所对应的文件在“本地磁盘文件系统”的持久缓存目录中是否存在,若该文件在“本地磁盘文件系统”的持久缓存目录中存在则直接将文件数据缓存区中该“使用”状态的数据块回写到“本地磁盘文件系统”的对应文件中,然后将内存文件数据缓存区中的该数据块状态设置为空闲状态并修改相应的元数据管理区;若该文件在“本地磁盘文件系统”的持久缓存目录中不存在则先在“本地磁盘文件系统”的持久缓存目录中建立该文件,然后直接将文件数据缓存区中该“使用”状态的数据块回写到“本地磁盘文件系统”的对应文件中,然后将内存“文件数据缓存区”中的该数据块状态设置为空闲状态并修改相应的元数据管理区。

[0039]“本地化镜像客户端系统”负责本地磁盘文件系统中指定持久缓存目录中的数据管理,包括删除不用的缓存文件、创建新的缓存文件、或修改已有的缓存文件、对已有缓存文件进行索引;对于那些在“本地磁盘文件系统”中指定持久缓存目录中的自最近一次修改以来尚未上传到“远程文件系统”中的文件及目录,“本地化镜像客户端系统”同步或者异步地将所述文件及目录上传到远程文件系统中,采用同步方式或异步方式由“本地化镜像客户端系统”运行参数决定,并修改“本地化镜像客户端系统”中相应的元数据。

[0040]“本地化镜像客户端系统”负责“本地磁盘文件系统”中指定持久缓存目录中的文件数据时,在删除本地磁盘文件系统中指定持久缓存目录中文件数据前,需要根据“本地化镜像客户端系统”的元数据管理区信息判断该欲删除的文件自最近一次修改以来是否已经上传到远程文件系统中,若尚未上传到远程文件系统则先生成上传任务表,并根据上传任务表将相关文件上传到远程文件系统的相应文件上。若上传该欲删除的文件失败,则取消在“本地磁盘文件系统”中指定持久缓存目录中删除该文件,否则在“本地磁盘文件系统”中指定持久缓存目录中删除该文件。

[0041]“本地化镜像客户端系统”负责本地磁盘文件系统中指定持久缓存目录中的磁盘空间大小管理;当“本地磁盘文件系统”中指定持久缓存目录中文件数据所占用的磁盘空间大小达到“本地化镜像客户端系统”的参数规定的大小时,“本地化镜像客户端系统”运行缓存文件淘汰算法,将指定的欲淘汰文件数据删除,从而保证“本地磁盘文件系统”中指定持久缓存目录中文件数据所占用的磁盘空间大小小于“本地化镜像客户端系统”的参数规定的大小;缓存文件淘汰算法可由“本地化镜像客户端系统”运行参数指定,“本地化镜像客户端系统”提供接口机制,并支持用户自定义缓存文件淘汰算法。

[0042]“本地化镜像客户端系统”负责透明地将远程文件系统指定目录所管辖的子目录和文件的全部或者部分数据下载到“本地磁盘文件系统”中指定持久缓存目录中;“本地化镜像客户端系统”根据运行参数规定的文件数据预取算法(例如优先预取最近IO文件所属相同目录下文件的算法)生成下载任务表,动态地将远程文件系统指定目录中所要预取的目录和文件下载到“本地磁盘文件系统”中指定持久缓存目录中,从而当本地设备上运行的“应用”访问这些已经提前下载到“本地磁盘文件系统”中指定持久缓存目录中的远程文件系统的文件时其将以本地磁盘文件系统的访问速度对该文件访问,而不是网络访问速度。

[0043]上传任务和下载任务统一为“网络任务表”,存在于“本地化镜像客户端系统”内存中,并由“本地化镜像客户端系统”定期将其写入到“本地磁盘文件系统”中指定持久缓存目录中的“网络任务文件”中,从而保证其持久存储,在“本地化镜像客户端系统”重新启动后加载“网络任务文件”到内存中的“网络任务表”,使“本地化镜像客户端系统”继续上次运行网络任务。

[0044]按照本发明提供的镜像方法,“本地化镜像客户端系统”正常运行期间,当“应用”试图访问“远程文件系统服务器”的文件数据时,“本地化镜像客户端系统”将首先在内存中的“元数据管理区”和“文件数据缓存区”信息查找内存中是否有所欲访问的文件数据的缓存,若内存中有所述文件数据缓存,则直接返回给“应用”所欲访问的文件数据,不需真正访问“远程文件系统服务器”;若内存中没有所欲访问的文件数据的缓存,则进一步查找本地“磁盘文件系统”中持久缓存数据是否有所欲访问的文件数据的缓存,若本地“磁盘文件系统”中有所述文件数据缓存,则直接返回给“应用”所欲访问的文件数据,不需真正访问“远程文件系统服务器”;否则“本地化镜像客户端系统”访问“远程文件系统服务器”中所欲访问的文件数据,更新本地客户计算设备中内存以及本地“磁盘文件系统”中缓存信息,最后返回给“应用”所欲访问的文件数据。

[0045]当本地计算设备上的“应用”对通过由“本地化镜像客户端系统”提供文件服务的挂载目录所辖的子目录和文件进行读操作时,“本地化镜像客户端系统”首先查询其内存“元数据管理区”看应用所请求的文件和其数据块是否存在于内存中的“文件数据缓存区”,若存在则直接将相应数据拷贝给应用;若不存在内存中的“文件数据缓存区”,则进一步查看是否在本地磁盘文件系统中指定持久缓存目录中,若存在于本地持久缓存目录中,则将相应数据读取到内存的文件数据缓存区,再进一步拷贝给应用;若也不在本地磁盘文件系统中指定的持久缓存目录中,则向“远程文件系统服务器”发起请求读取相应的文件和数据块到本地内存的文件数据缓存区,再进一步拷贝给应用;若向“远程文件系统服务器”发起请求读取相应的文件和数据块操作失败,则直接返回错误给应用;最终“本地化镜像客户端系统”修改其内存“元数据管理区”和“文件数据缓存区”。

[0046]按照本发明提供的镜像方法,“本地化镜像客户端系统”正常运行期间,当“应用”试图在“远程文件系统服务器”中建立、修改以及删除文件操作时,“本地化镜像客户端系统”首先将建立和修改文件及控制信息缓存在本地“磁盘文件系统”中持久缓存目录中,并更新本地“磁盘文件系统”中元数据信息,然后返回给“应用”操作结果,最后在本地客户计算设备负载允许情况下同步或者异步地将“应用”对“远程文件系统服务器”的修改以及删除文件操作从本地“磁盘文件系统”中持久缓存读取并提交给“远程文件系统服务器”。

[0047]当本地计算设备上的“应用”对通过由“本地化镜像客户端系统”提供文件服务的挂载目录所辖的子目录和文件进行写操作时,“本地化镜像客户端系统”首先查询其内存“元数据管理区”并判断应用所请求的文件和数据块是否存在于内存中的“文件数据缓存区”,若存在则直接将应用提供的写入数据拷贝到对应的内存“文件数据缓存区”中;若不在本地内存的“文件数据缓存区”,则在先本地内存的“文件数据缓存区”申请相应大小的内存空间,然后将应用提供的写入数据拷贝到对应的本地内存“文件数据缓存区”中。若在本地内存的“文件数据缓存区”申请一块内存空间失败,则先进行内存的“文件数据缓存区”清理,然后再重新申请内存空间,重复上述操作。最终“本地化镜像客户端系统”修改其内存”修改其内存“元数据管理区”和“文件数据缓存区”。

[0048]按照本发明提供的镜像方法,“本地化镜像客户端系统”负责与“远程文件系统服务器”进行连接、认证以及文件上传下载服务;若“本地化镜像客户端系统”不能正确连接和访问“远程文件系统服务器”,或“本地化镜像客户端系统”和“远程文件系统服务器”正常工作中突然断开连接时,“本地化镜像客户端系统”仍可继续运行并为本地计算设备上运行的“应用”提供文件服务,此时仅提供在“本地磁盘文件系统”中的指定持久缓存目录中已有缓存的相关文件服务;“本地化镜像客户端系统”可异步地稍后再尝试连接和访问“远程文件系统服务器”,当再次恢复对“远程文件系统服务器”的连接和访问时,提供正常的“远程文件系统服务器”的文件服务。

[0049]“本地化镜像客户端系统”支持与多种类型的远程文件系统服务器连接和访问,“本地化镜像客户端系统”根据配置参数来自动地维护与远程文件系统服务器连接;当网络出现故障或与“远程文件系统服务器”连接失败时,“本地化镜像客户端系统”可以暂时不连接“远程文件系统服务器”,而只利用“本地磁盘文件系统”指定的缓存目录中的缓存文件数据为本地计算设备上的“应用”提供文件服务;

[0050]所述的“本地化镜像客户端系统”通过向本地计算设备上操作系统中的“虚拟文件系统”注册并挂载到指定挂载目录,本地计算设备上运行的应用访问“虚拟文件系统”的该指定挂载目录时,该应用透明地由“本地化镜像客户端系统”提供文件服务;

[0051]本发明所涉及的具体内容及所述术语的含义是:

[0052](1)“远程文件系统服务器”:指提供访问远程计算机上文件系统的服务系统,例如FTP服务器、SSH文件服务器、CIFS文件服务器、,HDFS(Hadoop分布式文件系统)文件服务器,GFS(Google文件系统)文件服务器等。而远程计算机上的具体文件系统可以为任何已有的磁盘文件系统(如下述2所述)。

[0053](2)“本地磁盘文件系统”:指各种已有的建立在磁盘上的文件系统,例如FAT32、NTFS、Ext2、Ext3、XFS、CDFS等。

[0054](3)本地“虚拟文件系统”:指本地计算设备中操作系统上运行的虚拟文件系统服务,其为各种本地磁盘上具体的文件系统和远程文件系统客户代理提供统一的抽象的文件系统服务接口,本地计算设备上运行的应用通过该虚拟文件系统透明地访问本地磁盘上具体的文件系统和远程文件系统,例如类UNIX系统中的VFS、以及Windows中的FSD。

[0055](4)本地计算设备上运行的“应用”(简称“应用”):指运行在本地计算设备上操作系统用户态中的任意应用程序。

[0056](5)“远程文件系统登陆目录”:指“远程文件系统服务器”暴露给用户的可用文件及子文件夹组成的目录。

[0057](6)“持久缓存目录”:在用户计算设备上存储持久性缓存的存储位置,其实现可以为“远程文件系统登陆目录”类似的文件、文件夹形式,也可以为单一文件形式存储。

[0058](7)“本地挂载目录”:在用户计算设备上用户最终用于访问远程文件系统的节点,表现为拥护计算设备上的一个虚拟磁盘或者一个目录。

[0059](8)远程文件系统的“本地化镜像客户端系统”:其属于前述(3)中所述的一种远程文件系统的本地计算设备上的客户代理程序,本地计算设备上运行的“应用”通过本地“虚拟文件系统”并进而访问“本地化镜像客户端系统”(或直接访问“本地化镜像客户端系统”)来最终实现对远程文件系统的文件访问。本发明所给出的远程文件系统的“本地化镜像客户端系统”,其典型特点就是利用本地计算设备上本地存储设备文件系统作为持久缓存空间,并为“应用”提供透明的块级别远程文件系统文件访问服务,其极大地提高了“应用”访问远程文件系统的性能和用户体验效果。

[0060](8.1)“本地化镜像客户端系统”中的“核心管理系统模块”:加载用户配置文件信息,包括远程文件服务器地址及端口、最大并发下载连接数、最大并发上传连接数、默认上传模式(分为同步、异步等)、网络流量限制、本地资源使用限制(包括但不限于CPU,内存,硬盘以及其他存储设备)等设置。在加载完成后依据配置文件调用“内存驱动”、“网络驱动”以及“本地磁盘文件系统驱动”三个模块配合完成连接远程服务器,载入文件系统缓存,文件上传下载等操作。

[0061]“核心管理系统模块”包括内存“元数据管理区”、“元数据文件”、内存“文件数据缓存区”、“文件数据缓存文件”、“缓存查询模块”、“缓存映射表模块”、“网络任务生成模块”、“网络任务表模块”、“I/O监控模块”、“本地内存缓存处理模块”、“本地磁盘缓存处理模块”、“I/O请求响应模块”、“本地缓存整理模块”、“网络监控模块”等。

[0062]内存“元数据管理区”:用于管理元数据的保存、处理、载入等操作。此“元数据管理区”由“核心管理系统模块”中的“缓存查询模块”、“缓存映射表模块”、“本地内存缓存处理模块”、“本地磁盘缓存处理模块”组成。当“缓存查询模块”调用“缓存映射表”进行查询时即对元数据进行处理。此处元数据指非文件数据的信息,即文件名、文件大小、创建时间、修改时间、访问权限等内容。其数据组织可见图4。

[0063]“元数据文件”:存放在“本地磁盘文件系统”缓存目录下,用来记录远程文件系统中目录和文件的组织关系,以及记录在“本地磁盘文件系统”缓存目录的文件数据缓存状态。“本地化镜像客户端系统”运行期间将加载其全部或者部分内容到内存“元数据管理区”。

[0064]内存“文件数据缓存区”:用于管理文件数据的保存、处理、载入等操作。此“文件数据缓存区”由“核心管理系统模块”中的“缓存查询模块”、“缓存映射表模块”、“本地内存缓存处理模块”、“本地磁盘缓存处理模块”组成。其数据组织可见图5。

[0065]“文件数据缓存文件”:存放在“本地磁盘文件系统”缓存目录下,作为远程文件系统中相应文件的本地化缓存文件。“本地化镜像客户端系统”运行期间将加载其全部或者部分内容到内存“文件数据缓存区”。

[0066]“缓存查询模块”:此模块接受用户(应用)发送的I/O请求,将其转换为“核心管理系统模块”内部处理格式后对“缓存映射表模块”进行查询,根据所需获取的文件块的映射情况(处于本地磁盘缓存、处于本地内存缓存或处于远程服务器)调用对应的“本地磁盘缓存处理模块”、“本地内存缓存处理模块”或“网络任务生成模块”进行对数据的获取操作。同时,当预取功能处于开启状态时,此模块会依照规则向“网络任务生成模块”发送请求进行预取任务的生成。

[0067]“缓存映射表模块”:此模块用于缓存远程文件系统的所有文件及文件目录的块级别的映射信息以及元数据信息,并且可以响应其他模块产生的对映射信息的调用以及修改。缓存组织形式见图4。“缓存映射表模块”的数据并不全部保存在内存中,而是分布在内存缓存以及硬盘的持久缓存中,当查询文件的映射信息不在内存中时,通过调用“本地磁盘缓存处理模块”将元数据拷贝到内存供“缓存查询模块”进行查询调用。当内存缓存中的元数据达到用户定义最大大小时,将调用“本地缓存整理模块”、“本地磁盘缓存处理模块”以及“本地内存缓存处理模块”将内存缓存中一定时间(用户定义)未被使用的元数据从内存缓存移除并转存到本地磁盘持久缓存中。

[0068]“网络任务生成模块”:此模块根据“缓存查询模块”发送的请求构造上传或下载的网络任务,并插入到“网络任务表模块”中等待执行。“网络任务生成模块”生成的任务包含请求文件的标识(对应远程文件系统中的i节点号或者文件路径)、请求的类型(元数据信息或数据信息)、请求文件的偏移量、请求的数据大小、请求的状态(即时获取,等待系统空闲获取等用户定义的状态。此处的状态对应“网络任务表模块”中的不同任务队列)等信息。

[0069]“I/O监控模块”:此模块用于监控当前系统负载,当达到用户配置文件中设置的条件时,即根据用户设置的规则暂停或延缓某些网络任务的执行(数据下载、数据预取以及修改后数据的上传)。

[0070]“网络任务表模块”:此模块用于存储“网络任务生成模块”生成的任务,并接受“I/O监控模块”的调度调整。此模块中按照用户定义的网络任务优先级(例如即时获取或等待系统空闲时获取)构造不同的任务队列表,按照“网络任务生成模块”生成任务的不同优先级插入不同的队列表,同时队列表的任务处理模式同样可以由用户指定为队列模式(先来先服务)或堆模式(后来先服务)。此模块将自身存储的任务按照当前用户定义的传输协议(由远程文件系统服务器决定)构造数据包,并传送给“网络驱动模块”进行处理。每个任务处理完成后会将相关信息(例如文件数据块映射信息)更新至“缓存映射表模块”。“网络任务表”模块构造的数据包一般包括数据包大小、任务编号、请求文件的标识(对应远程文件系统中的i节点号或者文件路径)、请求的类型(元数据信息或数据信息)、请求文件的偏移量、请求的数据大小等信息(根据使用协议的不同其数据包内容会有变动)。“网络任务表”模块接收的返回数据包一般包括数据包大小、任务编号、返回数据以及返回数据长度(根据使用协议的不同其数据包内容会有变动)。

[0071]“本地内存缓存处理模块”:此模块用于将“缓存查询模块”发送的I/O请求转换为当前系统支持的读取模式(当使用内存表的时候,将I/O请求转换为对应的内存块起始号以及连续块数;当使用内存池的时候,将I/O请求转换为对应的内存地址以及数据大小),并将此信息发送至“内存驱动模块”获取对应的数据。“本地内存缓存处理模块”将内存缓存分为元数据区以及文件数据区,根据“缓存查询模块”发送的不同请求从对应的内存区域获取数据返回给“缓存查询模块”或者“I/O请求相应模块”。

[0072]“本地磁盘文件系统上缓存处理模块”:此模块用于将“缓存查询模块”发送的I/O请求转换为当前系统支持的读取模式,并且发送到“本地磁盘文件系统驱动模块”并获取对应的数据信息。

[0073]“I/O请求响应模块”:此模块用于接收“本地磁盘文件系统上缓存处理模块”、“本地内存缓存处理模块”以及“网络任务表模块”传输的具体数据信息经过修改后返回给应用。

[0074]“本地缓存整理模块”:定期对内存以及本地磁盘文件系统上持久缓存目录使用用户定义的算法(默认为LRU算法)进行整理,通过“内存驱动模块”、“本地磁盘文件系统驱动模块”将过期内存数据转移到“本地磁盘文件系统”持久缓存目录中,并将过期持久缓存文件清除。同时利用“本地磁盘文件系统驱动模块”提前取出将会使用的数据块缓存至内存。以上提到的清理操作仅在用户设定最大“本地磁盘文件系统”持久缓存大小,并且当前实际大小达到此值(若不设定最大持久缓存的数值,当则磁盘剩余空间不足以存储新的持久缓存时)时候才会对数据进行清除操作。此外,当“本地化镜像文件系统”启动时,“本地缓存整理模块”会将持久缓存数据选择部分最常用的载入到内存中,构造“缓存映射表模块”的数据供查询使用。

[0075]“网络监控模块”:负责提供网络状态的监控处理。当网络断开时,“本地化镜像客户端系统”进入离线模式,若用户(应用)访问已经缓存的数据内容则正常返回,若访问本机未进行缓存的数据内容,则根据用户的设置决定是立刻返回错误提示或者阻塞至网络重新连接并接受所需数据后返回。同时,当网络断开时,“网络监控模块”会定时尝试重新连接网络,当网络重新建立后则跳出离线模式。

[0076](8.2)“网络文件系统驱动模块”:根据“核心管理系统模块”载入的配置文件信息,向服务器发出连接请求,与指定的远程文件服务器建立连接。当连接建立后,负责处理“核心管理系统模”要求的上传及下载任务。

[0077](8.3)“内存缓存管理驱动模块”:根据“核心管理系统模块”载入的配置文件信息,负责初始化对应的元数据区和文件数据区,并且对内存缓存区进行数据的读取修改删除等操作。

[0078](8.4)“本地磁盘文系统驱动模块”:根据“核心管理系统模块”载入的配置文件信息,负责处理磁盘持久缓存数据。此模块使用多种方式(洞文件、单一文件以及多个小文件)对文件的部分内容进行持久存储。

[0079]本发明的优点和积极效果:

[0080]相对于传统的需要持久连线的远程文件系统或本地完全缓存的远程文件系统,本发明具有以下优势:

[0081]本发明使用本地磁盘文件系统持久缓存,以接近本地磁盘文件系统的访问速度来访问远程文件系统,因此提高了用户的体验,减少了用户(应用)获取数据时对网络的依赖,提高了响应速度;

[0082]本发明采用块粒度为最小单位来实现本地与远程文件系统的文件上传下载、以及本地持久缓存中文件的读写操作,并支持对文件的部分块数据进行持久缓存。

[0083]本发明由于使用本地磁盘文件系统持久缓存,当网络断开的情况也也可以支持一部分用户(应用)的正常使用;

[0084]本发明使用本地持久缓存,当所需内容处于本地时会直接从本地读取,从而减少了不必要的网络流量;

[0085]本发明使用本地磁盘文件系统建立了持久缓存,此持久缓存仅保存远程文件系统中部分文件的部分数据,因此远程文件系统的可用逻辑空间可以大于本地存储设备的空间。

附图说明

[0086]图1是本发明的物理架构图,从该图可以容易看出本发明的适用场景。各种用户计算设备20均可以通过安装远程文件系统本地化镜像客户端系统220来连接远程文件系统服务器10。远程文件系统本地化镜像客户端系统220通过虚拟文件系统240挂载到用户计算设备20中,并与用户及应用230进行交互。在远程文件系统本地化镜像客户端系统220中核心管理系统221负责调用内存驱动222,网络驱动223以及本地磁盘文件系统驱动224来完成各种任务。同时,网络驱动223通过内部置入不同的通信协议(NFS301SSHFS302)的方式来与多种远程文件系统服务器进行交互。

[0087]图2是本发明的本地磁盘文件系统中持久缓存文件数据与远程文件系统的文件数据映射关系的示意图。

[0088]图3是本发明的逻辑架构图。该图完整给出了核心管理系统221,内存驱动222,网络驱动223以及本地磁盘文件系统驱动224的内部逻辑功能模块的交互关系。

[0089]图4是本发明的元数据的组织图,此图完整给出了缓存映射表模块2218中对文件及文件夹元数据信息的组织方式以及映射表的存储方式。

[0090]图5是本发明核心管理系统中文件数据的组织结构图,此图完整给出了缓存映射表模块2218中文件数据的组织方式。

[0091]图6是本发明中“本地化镜像客户端系统”网络监控模块连接“远程文件系统服务”的流程图,当网络断开时进入离线模式,若用户(应用)访问已经缓存的数据内容则正常返回,若访问本机未进行缓存的数据内容,则根据用户的设置决定是立刻返回错误提示或者阻塞至网络重新连接并接受所需数据后返回。同时,当网络断开时,“网络监控模块”会定时尝试重新连接网络,当网络重新建立后则跳出离线模式。

[0092]图7是应用实例1的工作流程图。

[0093]图8是应用实例1元数据组织示意图。

[0094]图9是应用实例1文件数据组织示意图。

具体实施方式

[0095]本发明提供了一种在客户计算设备上利用本地磁盘文件系统作为持久缓存空间的实现远程文件系统的本地化镜像方法及其系统。

[0096]实施例1、基于客户端持久缓存的远程文件系统镜像系统

[0097]本发明涉及的基于客户端持久缓存的远程文件系统镜像系统(如图1)包括远程文件系统服务器装置和客户计算机装置,二者通过网络互联。远程文件系统服务器装置主要包括远程文件系统服务模块,简称“远程文件系统服务系统”,通过常见的网络文件协议为网络其它计算机提供文件系统服务。客户计算机装置主要包括远程文件系统的本地化镜像客户端系统模块,简称“本地化镜像客户端系统”;本地具有持久存储能力的磁盘文件系统模块,简称“本地磁盘文件系统”;本地“虚拟文件系统”服务模块;本地计算设备上运行的各种“用户应用程序”,简称“应用”;本地内存模块。本地“虚拟文件系统”为各种“应用”提供统一的透明文件服务,无论是访问“本地磁盘文件系统”还是访问“远程文件系统服务系统”;而本地“虚拟文件系统”实现访问“远程文件系统服务系统”的功能具体是由“本地化镜像客户端系统”来实现的;同时“本地化镜像客户端系统”将使用“本地磁盘文件系统”部分空间作为持久缓存“远程文件系统服务系统”部分文件及元数据的空间。

[0098]其中用户计算设备既包括PC计算机也包括智能移动手持设备以及企业级服务器。虚拟文件系统服务和远程文件系统服务器均为业界主流的标准协议和应用系统。

[0099]实施例2、基于客户端持久缓存的远程文件系统镜像方法

[0100]本发明涉及的基于客户端持久缓存的远程文件系统镜像方法具体步骤如下:

[0101]第1、启动“远程文件系统服务器”,并正常开启网络文件系统服务;

[0102]第2、启动客户计算机装置上操作系统的本地“虚拟文件系统”服务;

[0103]第3、启动客户计算机装置上的“本地化镜像客户端系统”,“本地化镜像客户端系统”分别与“远程文件系统服务器”、本地“虚拟文件系统”以及“本地磁盘文件系统”进行连接和通信,从而通过本地“虚拟文件系统”为客户计算机装置上的“应用”提供透明访问“远程文件系统服务器”的文件服务,具体步骤包括如下:

[0104]第3.1、“本地化镜像客户端系统”读取参数配置文件,获取相关运行参数,运行参数包括“远程文件系统”认证信息和登录目录、“本地虚拟文件系统”的挂载目录和访问权限信息、“本地磁盘文件系统”上的持久缓存目录和元数据文件信息、运行性能与安全参数;

[0105]第3.2、“本地化镜像客户端系统”在客户计算机装置的内存建立并初始化“元数据管理区”和“文件数据缓存区”;

[0106]第3.3、“本地化镜像客户端系统”读取“本地磁盘文件系统”上的持久缓存目录及元数据文件,进一步读取已在本地持久缓存目录中缓存的远程文件系统目录和文件数据到“本地化镜像客户端系统”内存中的“文件数据缓存区”中,并修改相应的元数据管理区;

[0107]第3.4、“本地化镜像客户端系统”连接“远程文件系统服务器”,提交“远程文件系统服务器”所需要的用户名和口令给“远程文件系统服务器”,经过“远程文件系统服务器”认证通过后,读取远程文件系统相应目录及其部分子目录和文件并合并到“本地化镜像客户端系统”的内存空间的文件数据缓存区中,并修改“本地化镜像客户端系统”内存中的“元数据管理区”;

[0108]第3.5、“本地化镜像客户端系统”向“本地虚拟文件系统”注册并挂载到指定的挂载目录上,开始提供透明访问“远程文件系统服务器”的文件服务;

[0109]第3.6、本地计算设备上运行的“应用”通过标准的本地“虚拟文件系统”访问“本地化镜像客户端系统”所提供的文件服务,从而透明地访问“远程文件系统”;

[0110]第3.7、“本地化镜像客户端系统”正常运行期间,利用“本地磁盘文件系统”中指定的持久缓存目录,动态地管理“应用”访问“远程文件系统服务器”的文件数据,包括下载和上传文件及目录数据,以保持本地“磁盘文件系统”中持久缓存数据和远程文件系统数据的一致性;并动态维护“本地化镜像客户端系统”内存中的“元数据管理区”和“文件数据缓存区”信息,以及保持“本地化镜像客户端系统”内存数据和本地磁盘文件系统中持久缓存数据的一致性;

[0111]第4、当停止“本地化镜像客户端系统”时,“本地化镜像客户端系统”将撤销与本地“虚拟文件系统”的注册,“本地化镜像客户端系统”将内存中“元数据管理区”和“文件数据缓存区”保存到本地磁盘文件系统中指定的持久缓存的目录中,并关闭与远程文件系统服务器的连接。

[0112]本发明的具体实现如下:

[0113]一、所述的“本地化镜像客户端系统”主要包括如下模块:即“核心管理系统”模块,“内存缓存管理驱动”模块、“网络文件系统驱动”模块、“本地磁盘文件系统驱动”模块。“核心管理系统”模块负责“本地化镜像客户端系统”的上层主要业务功能,其它模块负责具体的底层操作。

[0114]“本地化镜像客户端系统”中的“核心管理系统”模块主要包括如下子模块:即IO请求响应子模块、缓存查询子模块、本地磁盘缓存处理子模块、本地内存缓存处理子模块、网络监控子模块、IO监控子模块、本地缓存整理子模块。

[0115]二、“本地化镜像客户端系统”内存中主要数据结构包括:内存元数据区、内存文件数据缓存区、内存缓存映射表、内存网络任务表;“本地化镜像客户端系统”在“本地磁盘文件系统”持久存储的主要数据文件包括:元数据文件、网络任务文件、数据缓存文件。

[0116]三、“本地化镜像客户端系统”在“本地磁盘文件系统”中的指定持久缓存目录中建立远程文件系统数据的本地化持久缓存。远程文件系统中的文件及目录在“本地磁盘文件系统”的指定持久缓存目录中有对应的文件来持久缓存其全部数据(也可以持久缓存其部分数据),由“本地化镜像客户端系统”负责管理上述本地化持久缓存数据。由图2可以看出“本地磁盘文件系统”持久缓存目录中只缓存存储了远程文件系统中的部分文件,若“本地磁盘文件系统”持久缓存目录空间允许也可缓存存储了远程文件系统中文件及目录的全部数据。此持久缓存文件数据为元数据及文件数据,其组织方式见图4及图5。

[0117]图4为本地磁盘文件系统持久缓存中元数据的结构图,此结构图中可以看出本发明的元数据组织结构:每个“远程文件系统服务器”上“远程文件系统登陆目录”下的文件或文件夹均有一个对应的文件元素9100。此文件元素由一个唯一识别的i结点编号9101、“远程文件系统登陆目录”下的i结点编号9102、对应的文件元数据属性9103、父目录9104、子元素9105、传输状态(上传状态9106,表示是否已经将修改后的数据块上传完全;接收状态9107,表示是否将数据块接受完全;载入状态9108,表示是否将子元素9105的数据载入完全;磁盘缓存状态9109,表示是否有磁盘持久缓存)、时间戳9110(表示本地元数据最后更新时间)以及文件数据块映射表9111等信息组成;通过映射表集合9600来存储具体的映射表9601,每个映射表9700信息对应着相关的存储文件数据的缓存元素9800(内存地址或磁盘持久缓存文件及偏移量等)、块编号9701、块类型9702、块大小9703、等信息;此外,通过全局控制器9000存储索引元数据使用的根节点9002,文件元素表9003以及文件元素工作表9004等信息。通过访问根节点9002以及结合文件元素9100内部的父目录9104子元素9105信息,可以实现树状索引,通过对文件元素工作表9004和文件元素表9003的查询,可以实现常用文件的索引,提高访问速度。

[0118]图5为文件数据缓存区的数据组织结构图。此结构图中可以看出本发明的文件数据组织方式:本发明通过使用基于块的文件数据索引,可以实现单一文件的不同块分别存在于“远程文件系统登陆目录”、本地内存缓存以及本地磁盘持久缓存上;当文件映射块表示对应文件块存在于远端的时候,块映射8100不存储任何额外信息;当文件映射块对应的文件块存在于内存缓存的时候,块映射8200存储额外的块长度8203,块内存地址偏移量8202以及是否与前后文件块连续8204等信息;当文件映射块对对应的文件块存在于本地磁盘持久缓存的时候,块映射8300额外存储此文件块所在的缓存文件8304、块长度8304、偏移位置8303、是否与前后文件块连续8305等信息。

[0119]四、“本地磁盘文件系统”的指定持久缓存目录的空间大小可以是无限大(即仅受限于该“本地磁盘文件系统”的空间大小),也可以由“本地化镜像客户端系统”的参数来设定具体的持久缓存目录的空间大小(即“本地磁盘文件系统”的指定持久缓存目录的实际使用空间不能超过参数设定值),并且在“本地化镜像客户端系统”运行期间可以动态改变具体的持久缓存目录的空间大小。当持久缓存目录已使用空间达到空间大小上限时,“本地化镜像客户端系统”启动预先定义的算法(例如LRU)对过期缓存文件进行清理。

[0120]五、“本地磁盘文件系统”上持久缓存目录中存储的数据为“元数据文件”及“缓存文件”。“本地化镜像客户端系统”将文件的数据以及文件的元数据分别存放。“元数据文件”用来持久存储远程文件系统登录目录(以及其所辖子目录和文件)的信息关系,以及记录在“本地磁盘文件系统”上文件数据缓存状态。“缓存文件”则持久缓存远程文件系统中特定文件数据到“本地磁盘文件系统”上的持久缓存目录中的文件。“本地化镜像客户端系统”通过“元数据文件”可重构相应的远程文件系统目录结构以及在“本地磁盘文件系统”上的文件缓存状态。“本地化镜像客户端系统”运行时读取该元数据文件部分或全部内容到内存中的“元数据管理区”,以及读取“缓存文件”部分或者全部内容到内存中的“文件缓存数据区”。“本地化镜像客户端系统”定时将内存中“元数据管理区”内容回写到“本地磁盘文件系统”中的元数据文件中,以及将内存中的“文件缓存数据区”回写到“本地磁盘文件系统”中的相对应的“缓存文件”,以保证远程文件数据的本地化持久存储;

[0121]如图3所示,通过“本地化镜像客户端系统”中的“缓存查询模块”2211进行对“缓存映射表模块”2218进行查询后若发现对应的元数据存储在本地磁盘文件系统缓存目录上,则调用“本地磁盘缓存处理模块”2214通过“本地磁盘文件系统驱动”224读取相应的元数据信息,并更新“缓存映射表模块”2218(表现为增加新的文件元素9100并写入相关信息),之后通知“缓存查询模块”2211通过新生成的文件元素9100进行文件数据映射的查询。若需要获取的数据存在于本地磁盘文件系统缓存目录上,则通过“本地磁盘缓存处理模块2214”调用“本地磁盘文件系统驱动”224根据缓存元素9800内部所记录的存储文件名、偏移量、长度等信息读取相应的数据到内存缓存,并更新缓存元素9800为内存缓存,记录内存中偏移量等内容。最后由“本地内存缓存处理模块”2213响应“I/O请求响应模块”2217构造返回数据返回给应用230。同时“I/O监控模块”2216定时清理“内存缓冲区”将过期元数据及文件数据写入本地磁盘文件系统缓存目录。

[0122]六、“本地化镜像客户端系统”向本地计算设备上的应用提供块级别的文件服务,即应用请求读取某文件的任意偏移量开始的小于等于虚拟文件系统规定大小的连续数据(即一个块数据)时,“本地化镜像客户端系统”将按其请求提供相应数据;“本地化镜像客户端系统”对内存中文件数据缓存区中的管理是以块为单位,即提供块大小的缓存空间申请和释放,块大小可由“本地化镜像客户端系统”的参数配置文件指定。

[0123]七、“本地化镜像客户端系统”通过将自身挂载到用户计算设备的“虚拟文件系统”,通过实现“虚拟文件系统”的标准访问接口的方式来提供文件服务。用户可以通过访问指定的挂载目录来进行文件操作。

[0124]八、“本地化镜像客户端系统”支持与多种类型的远程文件系统服务器连接和访问,“本地化镜像客户端系统”根据配置参数来自动地维护与远程文件系统服务器连接。当网络出现故障或与“远程文件系统服务器”连接失败时,“本地化镜像客户端系统”可以暂时不连接“远程文件系统服务器”,而只利用“本地磁盘文件系统”指定的缓存目录中的缓存文件数据为本地计算设备上的“应用”提供文件服务。

[0125]如图6所示,“本地化镜像客户端系统”网络监控模块连接“远程文件系统服务”的流程图,当网络断开时进入离线模式,若用户(应用)访问已经缓存的数据内容则正常返回,若访问本机未进行缓存的数据内容,则根据用户的设置决定是立刻返回错误提示或者阻塞至网络重新连接并接受所需数据后返回。同时,当网络断开时,“网络监控模块”会定时尝试重新连接网络,当网络重新建立后则跳出离线模式。

[0126]九、当本地计算设备上的“应用”对通过由“本地化镜像客户端系统”提供文件服务的挂载目录所辖的子目录和文件进行读操作时,本地化镜像客户端系统首先查询其内存“元数据管理区”看应用所请求的文件和其数据块是否存在于内存中的“文件数据缓存区”,若存在则直接将相应数据拷贝给应用;若不存在内存中的“文件数据缓存区”,则进一步查看是否在本地磁盘文件系统中指定持久缓存目录中,若存在于本地持久缓存目录中,则将相应数据读取到内存的文件数据缓存区,再进一步拷贝给应用;若也不在本地磁盘文件系统中指定的持久缓存目录中,则向“远程文件系统服务器”发起请求读取相应的文件和数据块到本地内存的文件数据缓存区,再进一步拷贝给应用;若向“远程文件系统服务器”发起请求读取相应的文件和数据块操作失败,则直接返回错误给应用。最终“本地化镜像客户端系统”修改其内存“元数据管理区”和“文件数据缓存区”。

[0127]如图3所示,通过“本地化镜像客户端系统”中的“缓存查询模块”2211进行对“缓存映射表模块”2218进行查询后若发现对应的元数据存储在本地磁盘文件系统缓存目录上,则调用“本地磁盘缓存处理模块”2214通过“本地磁盘文件系统驱动”224读取相应的元数据信息,并更新“缓存映射表模块”2218(表现为增加新的文件元素9100并写入相关信息),之后通知“缓存查询模块”2211通过新生成的文件元素9100进行文件数据映射的查询;若存在于本地内存缓存,则通过“本地内存缓存处理模块”2213调用“内存驱动”222获取元数据信息;若存在于远端文件系统登陆目录处,则通过“网络任务生成模块”2212构造网络任务传输给“网络任务表模块”2215,2215将使用“网络驱动”223与远端进行通信完成数据获取操作,若获取操作失败或当前处于网络离线模式,则返回错误代码。若需要获取的文件数据存在于本地磁盘文件系统缓存目录上,则通过“本地磁盘缓存处理模块2214”调用“本地磁盘文件系统驱动”224根据缓存元素9800内部所记录的存储文件名、偏移量、长度等信息读取相应的数据到内存缓存,并更新缓存元素9800为内存缓存,记录内存中偏移量等内容。最后由“本地内存缓存处理模块”2213响应“I/O请求响应模块”2217构造返回数据返回给应用230;若所需获取的文件数据存在于内存缓存,则直接通过“本地内存缓存处理模块”2213响应“I/O请求响应模块”2217构造返回数据返回给应用230;若所需获取的文件数据存在于远端文件系统登陆目录,则通过“网络任务生成模块”2212产生包括远程节点号9102,偏移量9804和大小9803的网络任务传递给“网络任务表模块”2215,其通过“网络驱动”223与远程交互获得所需数据,之后更新缓存元素9800为内存缓存,记录偏移量等信息,若获取操作失败或当前处于网络离线模式,则返回错误代码。最后使用“本地内存缓存处理模块”2213响应“I/O请求响应模块”2217构造返回数据返回给应用230。

[0128]十、当本地计算设备上的“应用”对通过由“本地化镜像客户端系统”提供文件服务的挂载目录所辖的子目录和文件进行写操作时,“本地化镜像客户端系统”首先查询其内存“元数据管理区”并判断应用所请求的文件和数据块是否存在于内存中的“文件数据缓存区”,若存在则直接将应用提供的写入数据拷贝到对应的内存“文件数据缓存区”中;若不在本地内存的“文件数据缓存区”,则在先本地内存的“文件数据缓存区”申请相应大小的内存空间,然后将应用提供的写入数据拷贝到对应的本地内存“文件数据缓存区”中。若在本地内存的“文件数据缓存区”申请一块内存空间失败,则先进行内存的“文件数据缓存区”清理,然后再重新申请内存空间,重复上述操作。最终“本地化镜像客户端系统”修改其内存的“元数据管理区”和“文件数据缓存区”。

[0129]如图3所示,通过“本地化镜像客户端系统”中的“缓存查询模块”2211进行对“缓存映射表模块”2218进行查询后若发现对应的元数据存储在本地内存缓存中,则通知“缓存查询模块”2211通过文件元素9100进行文件数据映射的查询;若需要获取的文件数据存在于本地磁盘文件系统缓存目录上,则通过“本地磁盘缓存处理模块2214”调用“本地磁盘文件系统驱动”224根据缓存元素9800内部所记录的存储文件名、偏移量、长度等信息读取相应的数据到内存缓存,并更新缓存元素9800为内存缓存,记录内存中偏移量等内容。此时若内存缓存已经达到用户规定的最大大小,则通过“本地缓存整理模块”2219将过期的数据块通过“本地磁盘缓存处理模块”2214利用“本地磁盘文件系统驱动”224存储到本地磁盘的持久缓存区,然后通过“本地内存缓存处理模块”2213利用“内存驱动”222将这些过期数据块移除,此操作会多次进行直到内存缓存小于用户规定的最大大小。最后由“本地内存缓存处理模块”2213响应“I/O请求响应模块”2217构造返回数据返回给应用230;若所需获取的文件数据存在于内存缓存,则直接通过“本地内存缓存处理模块”2213响应“I/O请求响应模块”2217构造返回数据返回给应用230。

[0130]十一、“本地化镜像客户端系统”负责其内存中“文件数据缓存区”的管理(包括清理不用的文件数据缓存块、加载新的文件数据缓存块、对已有文件数据缓存块进行索引)。当“文件数据缓存区”中的空闲数据块缓存空间没有时或少于由“本地化镜像客户端系统”运行参数规定的空闲数据块缓存空间数目时,“本地化镜像客户端系统”启动内存的“文件数据缓存区”清理工作,清理状态为“使用”的数据块。清理算法可由“本地化镜像客户端系统”运行参数指定,“本地化镜像客户端系统”提供接口机制,并支持用户自定义清理算法。若该“使用”状态的数据块未被修改,则直接设置为空闲状态并修改相应的元数据管理区。若该“使用”状态的数据块被修改,则进一步判断其所对应的文件在“本地磁盘文件系统”的持久缓存目录中是否存在,若该文件在“本地磁盘文件系统”的持久缓存目录中存在则直接将文件数据缓存区中该“使用”状态的数据块回写到“本地磁盘文件系统”的对应文件中,然后将内存文件数据缓存区中的该数据块状态设置为空闲状态并修改相应的元数据管理区;若该文件在“本地磁盘文件系统”的持久缓存目录中不存在则先在“本地磁盘文件系统”的持久缓存目录中建立该文件,然后直接将文件数据缓存区中该“使用”状态的数据块回写到“本地磁盘文件系统”的对应文件中,然后将内存“文件数据缓存区”中的该数据块状态设置为空闲状态并修改相应的元数据管理区。

[0131]具体运行机制如下:“本地缓存整理模块”2219定时监控当前缓存状态,若本地内存缓存达到用户定义的最大大小,开始执行清理操作。首先通过“缓存映射表模块”2218查询在内存中的文件元素9100,判断上传状态9106,若所有被修改模块已经上传完毕,并且当前没有被使用,则将映射表集合9600中映射表9700对应的缓存元素9800通过“本地磁盘缓存处理模块”2214利用“本地磁盘文件系统驱动”224存储到本地持久缓存中,并更新缓存元素9800以及映射表9700中的块类型9702;若本地磁盘缓存达到用户定义的最大大小,开始执行清理操作。首先通过“本地缓存处理模块”获取本地磁盘持久缓存中的元数据信息,查看文件元素9100,按时间戳9110排序,若上传状态9106为0,即表示所有修改已经上传到远程文件系统服务器,则可以将映射表集合9600中映射表9700对应的缓存元素9800从磁盘缓存中清除。

[0132]十二、“本地化镜像客户端系统”负责本地磁盘文件系统中指定持久缓存目录中的数据管理(包括删除不用的缓存文件、创建新的缓存文件、或修改已有的缓存文件、对已有缓存文件进行索引)。对于那些在“本地磁盘文件系统”中指定持久缓存目录中的自最近一次修改以来尚未上传到“远程文件系统”中的文件及目录,“本地化镜像客户端系统”同步或者异步地将其上传到远程文件系统中(采用同步方式或异步方式由“本地化镜像客户端系统”运行参数决定),并修改“本地化镜像客户端系统”中相应的元数据。

[0133]十三、“本地化镜像客户端系统”负责本地磁盘文件系统中指定持久缓存目录中的磁盘空间大小管理。当“本地磁盘文件系统”中指定持久缓存目录中文件数据所占用的磁盘空间大小达到“本地化镜像客户端系统”的参数规定的大小时,“本地化镜像客户端系统”运行缓存文件淘汰算法,将指定的欲淘汰文件数据删除,从而保证“本地磁盘文件系统”中指定持久缓存目录中文件数据所占用的磁盘空间大小小于“本地化镜像客户端系统”的参数规定的大小。缓存文件淘汰算法可由“本地化镜像客户端系统”运行参数指定,“本地化镜像客户端系统”提供接口机制,并支持用户自定义缓存文件淘汰算法。

[0134]十四、“本地化镜像客户端系统”负责“本地磁盘文件系统”中指定持久缓存目录中的文件数据时,在删除本地磁盘文件系统中指定持久缓存目录中文件数据前,需要根据“本地化镜像客户端系统”的元数据管理区信息判断该欲删除的文件自最近一次修改以来是否已经上传到远程文件系统中,若尚未上传到远程文件系统则先生成上传任务表,并根据上传任务表将相关文件上传到远程文件系统的相应文件上。若上传该欲删除的文件失败,则取消在“本地磁盘文件系统”中指定持久缓存目录中删除该文件,否则在“本地磁盘文件系统”中指定持久缓存目录中删除该文件。

[0135]十五、“本地化镜像客户端系统”负责透明地将远程文件系统指定目录所管辖的子目录和文件的全部或者部分数据下载到“本地磁盘文件系统”中指定持久缓存目录中。“本地化镜像客户端系统”根据其运行参数规定的文件数据预取算法(例如优先预取最近IO文件所属相同目录下文件的算法)生成下载任务表,动态地将远程文件系统指定目录中所要预取的目录和文件下载到“本地磁盘文件系统”中指定持久缓存目录中,从而当本地设备上运行的“应用”访问这些已经提前下载到“本地磁盘文件系统”中指定持久缓存目录中的远程文件系统的文件时其将以本地磁盘文件系统的访问速度对该文件访问,而不是网络访问速度。

[0136]十六、“本地化镜像客户端系统”负责透明地将“本地磁盘文件系统”中指定持久缓存目录中在本地计算设备上已经修改的文件和新创建的文件以及删除文件等操作异步地或者同步地提交到远程文件系统指定目录中,具体采用异步模式还是同步模式取决于“本地化镜像客户端系统”运行参数。

[0137]十七、“本地化镜像客户端系统”中的上传任务和下载任务统一为“网络任务表”,其存在于“本地化镜像客户端系统”内存中,并由“本地化镜像客户端系统”定期将其写入到“本地磁盘文件系统”中指定持久缓存目录中的“网络任务文件”中,从而保证其持久存储,在“本地化镜像客户端系统”重新启动后加载“网络任务文件”到内存中的“网络任务表”,使“本地化镜像客户端系统”继续上次运行网络任务。

[0138]十八、“本地化镜像客户端系统”的“I/O监控模块”负责用于监控本地计算设备当前操作系统负载,当达到运行参数中设置的条件时,即根据用户设置的规则暂停或延缓某些网络任务的执行(数据下载、数据预取以及修改后数据的上传)。

[0139]为能进一步了解本发明的技术内容、特点及功效,兹列举以下应用实例,并配合附图详细说明如下:

[0140]应用实例1

[0141]在传统的远程文件系统使用场景中,通常需要不间断的网络连接来保证远程文件系统的正常使用,此时若用户处在不稳定的网络环境下,由于网络断开等原因导致无法正常使用远程文件系统。

[0142]在应用实例1中,应用可以使用本发明连接其远程文件系统,通过本地磁盘文件系统持久缓存机制,有效提高应用访问远程文件系统的速度,大大节省网络流量,同时保障不稳定网络环境下的正常使用。

[0143]图7展示应用实例1的工作流程。

[0144]首先,启动安装了“本地化镜像客户端”的用户计算设备。实例1使用安装Linux2.6内核的PC机,“远程文件系统服务器端”可以使用普通PC机也可使用现有商业云。“远程文件系统服务器”在实例1中使用SSH Server。“本地化镜像客户端”与“远程文件系统服务器”的连接可以使用以太网或无线网络。在实例1中采用无线网络IEEE802.11b/g连接。

[0145]其次,开启“本地化镜像客户端”,此时“本地文件系统驱动”、“内存缓存管理”、“网络文件系统驱动”以及“网络监控模块”作为“本地化镜像客户端”进程的子线程启动,“网络文件系统驱动”模块负责建立TCP连接,“网络监控模块”开始监控网络连接状况并开始尝试连接服务器。同时“本地缓存整理模块”通过调用“本地磁盘缓存处理模块”开始载入本地持久缓存中的元数据信息,并构造“缓存映射表模块”的数据。

[0146]登陆成功之后,用户(应用)请求的数据若在本地无缓存,则通过“网络任务生成模块”、“网络任务模块”和“网络文件系统驱动”向“远程文件系统服务器”请求数据。若请求的数据在本地有缓存,则通过“本地磁盘文件系统驱动”、“本地磁盘缓存处理模块”、“本地内存缓存处理模块”、“内存缓存管理”进行数据的获取。

[0147]网络断开后,“本地化镜像客户端”将会由“网络监控模块”转换为离线模式,此时如果用户(应用)请求的数据在本地有缓存,则直接返回,否则将会返回错误信息。

[0148]此时具体数据读取流程参照图7、8、9给出。

[0149]如图8所示,“缓存映射表模块”2218中载入了“/”、“.vimrc”、“manuscripts”、“paper.tex”、“slides”几个文件元素9100,同时在磁盘中有未载入的文件元素9100“.bashrc”、“VMware”。若此时尝试获取.bashrc的文件元数据信息,那么通过“本地化镜像客户端系统”中的“缓存查询模块”2211进行对“缓存映射表模块”2218中“.bashrc”查询后发现对应的元数据存储在本地磁盘文件系统缓存目录上,调用“本地磁盘缓存处理模块”2214通过“本地磁盘文件系统驱动”224读取.bashrc的元数据信息,并更新“缓存映射表模块”2218(表现为增加新的文件元素9100并写入相关信息)。若此时尝试读取.vimrc的元数据,那么通过“本地化镜像客户端系统”中的“缓存查询模块”2211进行对“缓存映射表模块”2218中“.bashrc”查询后发现对应的元数据存储在本地内存缓存中,则调用“本地内存缓存处理模块”2213使用“内存驱动”222读取.bashrc的元数据信息。

[0150]如图9所示,文件数据的状况如下:Vim.rc文件共4块数据块,其中0、1号数据块存在于内存缓存,2、3号数据块存在于磁盘缓存,4号数据块本地无缓存;VMware文件共有700块数据块,0到500块存在于内存缓存,501到529本地无缓存,530到700存在于磁盘缓存。若此时尝试用文本编辑器打开vim.rc文件,由于文本编辑器默认载入文件的全部内容,所以应用230向“MFS核心管理系统”221请求全部五块数据。此时“缓存查询模块”2211从“缓存映射表模块”2218通过遍历根节点9002及父目录9104子元素9105的方式(树状遍历)或者查询文件元素工作表9200及文件元素表9300的方式(根据用户设定参数不同而选择,默认先查询文件元素工作表,再查询文件元素表,最后进行树状遍历)获取vim.rc对应的文件元素9100,通过块映射表9111找到块映射表集合9600,通过遍历映射表9601获得映射表9700,根据9700中块类型9702选择文件的读取方式(使用“本地磁盘缓存处理模块”2214、“本地内存缓存处理模块”2213或者“网络任务生成模块”2212)。

[0151]此实例中,首先通过“本地内存缓存处理模块”2213获取0、1号数据块。然后通过“本地磁盘缓存处理模块2214”调用“本地磁盘文件系统驱动”224根据缓存元素9800内部所记录的存储文件名、偏移量、长度等信息读取2、3号数据块到内存缓存,并更新缓存元素9800为内存缓存,记录内存中偏移量等内容。最后,若当前网络为离线模式,则返回对应的错误代码;若当前网络正常,则通过“网络任务生成模块”2212产生包括远程节点号9102,偏移量9804和大小9803的网络任务传递给“网络任务表模块”2215,其通过“网络驱动”223与远程交互获得所需数据,之后更新缓存元素9800为内存缓存,记录偏移量等信息,若获取操作失败或当前处于网络离线模式,则返回错误代码。最后使用“本地内存缓存处理模块”2213响应“I/O请求响应模块”2217构造返回数据返回给应用230。此读取实例下,当网络离线模式时由于应用的特性,无法正常访问此文件。若此时尝试用虚拟机软件载入虚拟硬盘VMware,此时应用仅请求需要的文件数据而不是全部文件数据,所以当501到509号数据未被使用时,此虚拟机可以正常运行在离线模式下。

[0152]考虑到在此公开的对本发明的描述和特例的实施例,本发明的其他实施例对于本领域的技术人员来说是显而意见的。这些说明和实施例仅作为例子来考虑,它们都属于由所附权利要求所指示的本发明的保护范围和精神之内。