专利名称:一种分布式文件存取方法
技术领域:
本发明涉及分布式处理系统中文件的存取方法,具体涉及一种使得在分布式处理系统中的任何处理节点上对文件的存取如同存取本地文件一样的存取方法,使用该方法进行文件存取的处理应用无需关心文件的实际存放地点。同时该方法提供灵活的存取方式,将分布式系统中纳入该方法管理的文件统一组织成为一个文件目录结构实现与集中式文件系统相同的文件管理。
背景技术:
对于任何分布式处理系统来说,文件系统都是其中的一个关键组成部分。文件系统的主要功能就是提供对文件的存取能力,而DFS(DistributedFile System分布式文件系统)需要提供存取系统中分散在不同物理节点上文件的能力。一个好的分布式文件系统可以做到无需应用关心文件的实际存储位置,同时在应用的运行地点发生变化的情况下,无需修改本地文件系统的结构,仍能保证应用正确的存取文件。
目前的分布式文件系统基本是采用文件服务器和目录服务器的形式提供统一文件系统的实现,如在专利号6,219,693的美国专利公开的一种具有分布在数据处理平台上的文件系统的文件阵列体系结构(File arraystorage architecture having file system distributed across a dataprocessing platform)中,当一个应用请求分布式文件系统中的一个文件时,客户端向目录服务器请求该文件的查找,同时在客户端本地将目录信息缓存,然后向文件服务器请求文件。因此客户端逐渐建立的一个目录信息的映象,而目录信息的组织一种特殊的命名方式完成,通常该目录信息中带有实际网络节点的信息。同时一个不可忽视的因素就是,分布式文件系统与本地文件系统的共存问题,任何一个分布式文件系统都需要通过本地文件系统来实现真正的文件存取,那些非本机的目录结构通常是通过一定的方法挂接到本地的文件系统之中,如著名的SUN(太阳微系统公司)公司提供的NFS(Network File System网络文件系统)。这种挂接方式给应用在分布式系统中的部署带来了一定的制约,当应用从一个节点移动到另一个节点中,文件系统可能会发生一定的变化,则需要对本地文件系统的挂接进行一定的调整,而这种调整是与应用本身相关的,这显然违反了分布式系统为其上的应用提供一个与实际物理分布无关的运行系统的这一原则。专利号为6,078,929的美国专利互连网文件系统(Internet filesystem)同样存在这样的问题,它使用统一的文件定位描述,但是该描述中含有分布式节点的物理信息,因此一旦文件的位置发生了变化,统一文件定位信息也必然发生变化,使得访问该文件的应用必须了解这一变化,显示并调整其对该文件的访问。将文件服务器和目录服务器分布在所有节点中,文件请求客户端同时又是服务器,这种结构在一定程度上解决了文件分布与应用的关联,但并未彻底解决。同时远程文件系统与本地文件系统之间的文件操作,如文件的拷贝,移动等等,也存在一定的不兼容性,这种不兼容性要求应用参与管理,这也违背了应用程序与分布式文件系统本身的隔离性。
目前的分布式应用对于应用运行位置相对固定,系统本身用于系统负荷的分担,可以比较好的使用;但对于应用移动频繁的场合则有待发展。总之,目前的分布式文件系统在文件和分布式应用位置相对固定的场合可以很好的完成文件的分布式存取,但是文件位置或是分布式应用本身发生位置上的变化,则文件的存取则很难做到与应用的运行逻辑无关,应用必须介入对这种变化的调整。
发明内容
本发明要解决的技术问题在于,提供一种分布式文件存取方法,该方法克服了目前分布式文件系统对于需要经常性移动运行位置应用而调整文件系统部署的缺点,在上层应用改变其运行位置时,仍然可以正确读写分布式文件系统中的文件,而无需关心文件实际存放位置。同时,该方法在存取文件的同时可以做到实时的文件目录信息更新,保证文件系统的一致性。
本发明上述技术问题这样解决,针对应用移动可能性较大,为文件目录信息较为统一的分布式系统提供一种分布式文件存取方法。该方法采用实时的分布式目录信息管理,文件客户端和服务器对等的方式完成文件的分布式存取。
文件的存取主要包括文件的打开/创建,文件的读取/写入,文件的复制/移动,文件的删除,文件的关闭,本方法为这些文件存取方法提供在分布式文件系统中的存取能力。需要指出的是,分布式文件系统是分布式处理系统的一个部分,它为分布式处理系统提供文件相关的服务,在文件处理过程中的一些手段是通过分布式处理系统中已有的机制进行的,如通讯,远程过程调用等,这些手段不属于本方法的范畴。
本方法采用以下步骤来实现上述功能1.初始文件信息构造分布式文件系统需要维护一个统一的文件目录信息,本方法同样需要这一信息。在系统初始化的时候,系统中各个节点进行本地文件目录信息的构造,该信息保存在一个特殊的本地文件中,称为文件信息库,系统将该文件映射到系统内存中,以后对该映射内存的操作,同时实时反映在该文件中,实现信息的持久化。
该文件初始存储本地参与分布式文件系统的文件和目录信息。如果本地初始没有文件参与分布式文件存取,该文件内容可以为空。
2.文件存取请求接收本方法提供文件的存取接口,应用通过调用这些接口将文件存取的请求发送到分布式文件系统的处理单元中,处理单元为每个处理请求生成一个处理子单元,子单元实施具体的文件存取请求,并将处理结果返回给应用。文件存取接口可以是同步的,也可以是异步的,则取决于分布式处理系统本身提供的机制,如远程过程调用等。
3.文件信息获取文件存取请求的处理子单元接收到请求后,根据请求的种类,决定是否需要获取文件信息。如果需要文件信息,则首先在本地的内存映象中查找,如果本地没有该文件信息,则通过分布式处理系统的通讯机制,向其他处理节点进行查询,并等待信息反馈。如果获得请求的文件信息,则进行下一步操作,否则向应用返回失败。
4.文件定位一旦获取文件信息,则可以得到文件的具体位置,为下一步操作做好准备;文件的定位信息包含文件相对于分布式文件系统根的相对路径,以及节点信息。
5.文件操作根据文件存取请求的种类以及文件的具体位置,对文件的操作可以分为四种,本地文件操作,远地文件操作,远地文件的本地映像操作,映像文件的远地映像。本地文件操作,则在本地文件信息映象中进行文件的状态修改,并使用本地文件系统提供的文件存取方法对文件进行操作,本地文件的后续操作完全本地化。远地文件操作,则有本地的处理子单元向文件所在节点发起文件存取请求,此时本地存取子单元处于文件存取发起者的地位,远地处理单元接收到该请求与其本身接收到本地应用的文件存取请求一样进行处理。如果文件在远地节点,但文件必须在本地完成操作,本方法的大部分文件存取均需要如此完成,详见表一的说明,此时就需要进行远地文件的本地映像。当映像文件在操作过程中被改变,则在文件操作完成后,需要将映象文件映像回原文件,这种操作称为映像文件的远地映像。
6.文件本地映像文件的本地映像就是将远地节点映射到本地,并将后续的文件操作在本地完成。文件的本地映像同样是通过操作请求进行的,由本地操作子单元向远地操作单元发起,该请求是分布式文件系统中的内部请求不向上层应用提供。该请求结合本地原文件存取请求的种类,在接收该文件映像请求后,修改其文件信息的内存映象状态,并增加该文件的访问计数。当对本地映像文件操作完成后,如果文件发生改变,本地处理子单元需要将操作后的文件同步回原节点(相当于文件的逆映像)。
7.文件信息同步在上述文件的操作过程中,每个操作动作都被记录在本地的文件信息内存映象中,同时在文件信息库中实时持久化。每一次记录操作,都需要向相关分布节点进行同步,以保证整个分布式文件系统的一致性。由于文件信息是在文件存取操作同时更新和持久化,因此本方法提供的分布式文件存取是属于整体文件系统持久化级别的,单个节点的故障不会影响整个文件系统的完整性,单个节点本地文件系统的损坏,只会影响部分文件,甚至可以通过已映像的文件恢复。
实施本发明提供的方法,与现有的分布式文件系统中使用的文件存取方法相比,具有如下优点着重考虑了应用在分布式系统中移动时对分布式文件系统带来的影响,原有方法在这种情况下,一般都需要调整文件系统的组织,或者应用本身进行一致性协调。本方法杜绝了这种文件组织结构的调整,不管应用在分布式系统中如何移动,对应用本身文件系统是不会改变的,本方法采用实时的分布式目录信息管理,文件客户端和服务器对等的方式完成文件的分布式存取。从而真正向应用提供了与实际运行环境无关的文件存取方法。
图1是分布式文件系统的结构图;图2是目录结构中节点1的本地目录结构图;图3的目录结构中节点2的本地目录结构图;图4是分布式系统的虚拟目录结构图(单机和综合);图5是文件操作种类表;图6是本发明分布式文件存取方法流程框图。
具体实施例方式
图1示出了分布式文件系统的整体管理结构,分布式文件系统通过位于分布式系统每个节点上的控制进程进行文件的管理,每个节点上存在一个分布式文件系统的结构的内存映像DFS,该内存映像保存着图2中所示的总体虚拟目录。每个节点上的应用进程通过分布式文件系统提供的文件访问接口,与本节点的DFS控制进程交互,完成文件的操作。DFS控制进程通过分布式系统的通讯机制,完成对整个分布式文件系统的文件访问、查找和映像等操作。
图2、3和4示出了两个节点的分布式文件系统的文件目录结构,每个节点都存在着一个分布式文件系统的根目录,该目录可以是节点本地目录中的任意目录,在根目录以下的所有目录都可以纳入分布式文件系统的管理。节点1,2的本地目录分别如图2、图3所示,而整个分布式文件目录则如图4所示,它将图2和图3的目录进行了或操作,将相同的目录归并,将不同的目录互相增加。
图5为分布式文件系统中所有文件存取接口使用到的本文定义的文件操作方法。图5中提到的文件存在于何处,均是指文件原拷贝的存放地点。分别说明如下1、文件的创建如果文件在DFS中不存在,则在本地创建该文件;如果文件在DFS中存在,且在本地存在,则根据文件创建的要求和当前文件的使用情况,决定文件创建的成功与否,如果允许创建,则在覆盖本地文件或是打开本地文件。如果文件存在于远地,则在远地进行文件创建允许的判断,如果允许创建,则将文件映像至本地。
2、文件打开如果文件原拷贝在本地,则进行本地操作;如果映像文件在本地,则属于本地映像操作如果文件在远地,则将文件本地映像后,在进行操作。
3、文件关闭文件原拷贝在本地关闭后,如果存在其他远地映像,则需要进行远地映像操作;如果关闭的是本地映像文件,并且待关闭文件内容已改变,则需要进行文件的远地映像。
4、文件拷贝对于本地文件的拷贝,只涉及到本地的文件操作;如果拷贝远地文件,则需要在远地完成文件拷贝后,将新文件映射到本地。
5、文件移动文件的移动不管是在本地还是在远地,由于源文件发生了位置的变化,均需要在所有存在该文件映像的节点实行文件的删除。
6、文件删除文件的删除不管文件在本地还是在远地,文件删除后,都需要在DFS的相关节点中进行通知,进行同步。
7、文件显式映像文件的显式映像就是将远地文件映射至本地。该操作主要是在与非DFS系统交互时使用。
8、文件读写由于文件的读写总是在文件打开或是创建后进行,前面的操作完成了文件的映像(如有需要),则文件的读写总是针对本地文件进行。
图6为采用本发明方法进行一次分布式文件存取过程的流程示意图,首先分布式文件处理单元在启动时进行初始文件信息的构造和同步,形成文件信息库,然后处于文件存取请求的等待状态,当有文件存取请求到达时,则处理单元在文件信息库中获取文件信息,从而完成文件定位,进而确定是否需要进行文件的映像,如果需要则将原地文件映像至本地,接着实际的文件存取操作得以实施,当本次文件存取操作完成后,要将修改后的文件和文件信息进行同步。
权利要求
1.一种分布式文件存取方法,其特征在于,包括如下步骤1)在分布式文件系统中构造初始文件信息,建立文件信息库;2)提供文件存取接口,通过存取接口提出文件存取请求;3)获取文件信息;4)按获取的文件信息,确定文件的具体位置;5)根据文件存取请求的种类以及文件的具体位置进行文件存取操作;6)将远地节点文件进行本地映像;7)对操作过程中的文件信息同步;在文件信息库中实时持久化。
2.根据权利要求1所述存取方法,其特征在于,所述建立文件信息库包括如下步骤在进行系统初始化的时,对系统中各个节点构造本地文件目录信息,并将该目录信息保存在一个本地文件信息库中,系统将该文件映射到系统内存中,将对该映射内存的任何操作同时实时反映在该文件中。
3.根据权利要求1所述存取方法,其特征在于,所述提供文件存取接口,通过存取接口提出文件存取请求,包括如下步骤应用通过调用存取接口将文件存取的请求发送到分布式文件系统的处理单元中,处理单元为每个处理请求生成一个用于实施具体文件存取请求的处理子单元,并将处理结果返回给应用。
4.根据权利要求3所述存取方法,其特征在于,所述获取文件信息包括如下步骤文件存取请求的处理子单元接收到请求后,根据请求的种类,决定是否需要获取文件信息,如果需要文件信息,则首先在本地的内存映象中查找,如果本地内存映象中没有该文件信息,说明各分布式结点中的文件信息可能发生不一致,则通过分布式处理系统的通讯机制,向其他处理节点进行查询,并等待信息反馈;如果获得请求的文件信息,则进行下一步操作,否则向应用返回失败。
5.根据权利要求1所述存取方法,其特征在于,所述获取文件信息包括获取包含文件相对于分布式文件系统根的相对路径和(或)节点信息的定位信息。
6.根据权利要求1-5任何一项所述存取方法,其特征在于,所述进行文件存取操作包括有本地文件操作、远地文件操作和远地文件的本地映像操作。
7.根据权利要求6所述存取方法,其特征在于,所述本地文件操作是在本地文件信息映象中进行文件状态修改,并使用本地文件系统提供的文件存取方法对文件进行操作,本地文件的后续操作完全本地化;还包括在本地完成的对在远地结点的文件的操作。
8.根据权利要求6所述存取方法,其特征在于,所述远地文件操作是由本地的处理子单元向文件所在节点发起文件存取请求,此时本地存取子单元处于文件存取发起者的地位,远地处理单元接收到该请求与其本身接收到本地应用的文件存取请求一样进行处理。
9.根据权利要求6所述存取方法,其特征在于,所述本地映像文件的远地逆映像操作包括如下步骤是当映像文件在操作过程中被改变,则在文件操作完成后,将映象文件同步回远地的原文件。
10.根据权利要求1所述存取方法,其特征在于,所述将远地节点文件进行本地映像,包括如下步骤将远地节点中的文件映象到本地,并将后续的文件操作在本地完成;文件的本地映像通过操作请求进行的,由本地操作子单元向远地操作单元发起,该请求是分布式文件系统中的内部请求不向上层应用提供;该请求结合本地原文件存取请求的种类,在接收该文件映像请求后,修改其文件信息的内存映象状态,并增加该文件的访问计数;当对本地映像文件操作完成后,如果文件发生改变,则本地处理子单元将操作后的文件同步回原节点。
11.根据权利要求1所述存取方法,其特征在于,所述文件信息的同步,包括如下步骤在文件的存取操作过程中,每个操作动作都被记录在本地的文件信息内存映象中,同时在文件信息库中实时持久化;每一次记录操作,都向相关分布节点进行同步,以保证整个分布式文件系统的一致性。
全文摘要
一种分布式文件存取方法,包括在分布式文件系统中构造初始文件信息,建立文件信息库;提供文件存取接口,通过存取接口提出文件存取请求;获取文件信息;按获取的文件信息,确定文件的具体位置;根据文件存取请求种类以及文件的具体位置进行文件存取操作;将远地节点文件进行本地映像;对操作过程中的文件信息进行同步;在文件信息库中实时持久化;本发明方法杜绝了这种文件组织结构的调整,不管应用在分布式系统中如何移动,对于应用本身文件系统保持不变,本发明的方法采用实时的分布式目录信息管理,文件客户端和服务器对等的方式完成文件的分布式存取,从而真正向应用提供了与实际运行环境无关的文件存取方法。
文档编号G06F13/42GK1494023SQ0213779
公开日2004年5月5日 申请日期2002年10月31日 优先权日2002年10月31日
发明者谭震, 谭 震 申请人:深圳市中兴通讯股份有限公司