CN103179185B - 一种分布式文件系统客户端缓存中文件创建方法及其系统 - Google Patents

一种分布式文件系统客户端缓存中文件创建方法及其系统 Download PDF

Info

Publication number
CN103179185B
CN103179185B CN201210570089.6A CN201210570089A CN103179185B CN 103179185 B CN103179185 B CN 103179185B CN 201210570089 A CN201210570089 A CN 201210570089A CN 103179185 B CN103179185 B CN 103179185B
Authority
CN
China
Prior art keywords
file
client
cache
data server
meta data
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.)
Expired - Fee Related
Application number
CN201210570089.6A
Other languages
English (en)
Other versions
CN103179185A (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.)
Tianjin Zhongke Bluewhale Information Technology Co ltd
Institute of Computing Technology of CAS
Original Assignee
Tianjin Zhongke Bluewhale Information Technology Co ltd
Institute of Computing Technology of CAS
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 Tianjin Zhongke Bluewhale Information Technology Co ltd, Institute of Computing Technology of CAS filed Critical Tianjin Zhongke Bluewhale Information Technology Co ltd
Priority to CN201210570089.6A priority Critical patent/CN103179185B/zh
Publication of CN103179185A publication Critical patent/CN103179185A/zh
Application granted granted Critical
Publication of CN103179185B publication Critical patent/CN103179185B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种分布式文件系统客户端缓存中文件创建方法及其系统,其中该方法包括:步骤1,客户端从元数据服务器获取目录写授权;步骤2,客户端在本地缓存中创建文件;步骤3,客户端异步提交所创建文件至元数据服务器。本发明方法解决了海量小文件应用场景中分布式文件系统现有技术无法有效减少文件创建时与元数据服务器同步网络交互开销的问题。

Description

一种分布式文件系统客户端缓存中文件创建方法及其系统
技术领域
本发明涉及分布式文件系统客户端与服务器端的交互技术,特别涉及一种分布式文件系统客户端缓存中文件创建方法及其系统。
背景技术
随着信息技术飞速发展,数据信息迅猛增长,非结构化数据越来越多。据Gartner统计,2010全球数据信息总量达到1.2ZB,并预计以每年至少50%的增长率持续高速增长,其中85%由各种非结构化数据组成,非结构化数据多以文件形式存储在文件系统中。在Web2.0、社交网络等新兴应用中,数据信息主要以小文件的形式存在,文件尺寸较小,然而小文件数量越来越多,迫切需要分布式文件系统有效管理海量小文件,提供高性能、低延时的小文件访问服务。
在大规模分布式文件系统中,元数据与数据服务分离结构已经成为了一种趋势。元数据服务器负责维护文件系统全局命名空间,管理文件逻辑位置与磁盘物理位置的映射关系,为文件分配物理存储资源。客户端文件数据访问不必通过元数据服务器,而是采用带外方式直接访问存储设备,从而获取较高的数据访问性能。分布式文件系统采用元数据和数据分离结构对于大文件访问十分有效。然而对于小文件访问的情况,数据访问比率减少,元数据访问比率增大,而每次客户端访问文件数据时,都需要通过网络交互同步获取元数据,导致单个小文件操作延迟过大。特别是小文件首次写情况下,客户端首先需要同步访问元数据服务器进行文件创建,然后同步获取文件布局,以进行数据的读写;最后需要同步关闭文件,以使得文件更新能够及时被其他客户端获取,这对于系统性能造成了很大影响。因此,在海量小文件应用环境中,尽量降低同步访问元数据网络交互开销,减少获取元数据的网络交互次数,可以大幅提升海量小文件应用性能。
针对客户端与元数据服务器同步网络交互开销大的问题,已经提出了一些解决方法。
小文件聚集方法把大量的小文件聚集成一个大文件,将分散的小粒度数据块聚合成一个大的块。在批量写入小文件的时候,不仅可以避免与元数据服务器的大量同步交互操作,同时通过批量回刷使得磁盘带宽利用率也得到较大提升。但是小文件聚集方法难以维护文件系统语义,需要对应用程序进行修改,通常需要定制开发,实现复杂度较高。
NFS v4的文件授权机制,保证客户端在文件关闭时,不必同步与元数据服务器交互,文件数据也不必同步刷新。NFS v4的文件授权机制是采用异步方式与元数据服务器交互,文件数据也采用异步刷新机制,有效隐藏网络交互延时,有效解决了文件关闭时的同步操作开销,提高了小文件访问性能。
客户端存储资源延迟分配方法,在客户端本地完成文件布局的存储资源分配,不必同步与元数据服务器交互创建文件布局信息,文件布局采用异步方式提交到元数据服务器,有效解决了在数据访问过程中同步获取文件布局的操作开销,提高了小文件访问性能。
然而,客户端在文件创建时,仍然必须同步与元数据服务器交互以创建元数据信息,对小文件访问性能影响较大。因此,针对现有技术的不足,本发明提出了一种分布式文件系统客户端缓存中文件创建方法和系统,能够有效降低文件创建时同步访问元数据服务器的网络交互开销,有效提升小文件访问性能。
发明内容
本发明的目的在于提供一种分布式文件系统客户端缓存中文件创建方法及其系统,用于解决海量小文件应用场景中分布式文件系统现有技术无法有效减少文件创建时与元数据服务器同步网络交互开销的问题。
为了实现上述目的,本发明提供一种分布式文件系统客户端缓存中文件创建方法,其特征在于,包括:
步骤1,客户端从元数据服务器获取目录写授权;
步骤2,客户端在本地缓存中创建文件;
步骤3,客户端异步提交所创建文件至元数据服务器。
所述的方法,其中,所述步骤1中,包括:
步骤11,客户端向元数据服务器发送获取目录写授权请求;
步骤12,元数据服务器接收目录写授权请求,授予客户端目录写授权;
步骤13,客户端记录所述目录写授权。
所述的方法,其中,所述步骤2中,包括:
步骤21,客户端检查目录下是否存在与所创建文件同名的文件;若不存在同名的文件,则执行后续步骤;
步骤22,客户端在缓存中进行目录下的文件创建,在缓存中为所创建文件分配临时索引节点inode,并为所述inode分配一索引节点编号ino,将所述inode添加到客户端本地inode缓存元数据中,将所创建文件的目录项dentry添加到客户端本地目录的读取目录内容缓存readdir cache中;
步骤23,为缓存中所述inode设置未完成标志位,表明所创建文件是在客户端缓存中创建的,还未提交到元数据服务器。
所述的方法,其中,所述步骤21中,包括:
步骤211,客户端检查本地目录的readdir cache是否具有一致标志,若不具有该一致标志,表示客户端本地目录的readdir cache信息与元数据服务器端不一致,客户端向元数据服务器发送目录读取请求,获取元数据服务器端所述目录最新的所有目录项信息,缓存在目录的readdir cache中,设置目录的readdircache的一致标志;
步骤212,遍历目录的readdir cache中的目录项,检查目录的readdir cache中是否有与所创建文件同文件名的目录项。
所述的方法,其中,所述步骤3中,包括:
步骤31,客户端进行后台异步提交,将客户端缓存中创建文件的元数据发送到元数据服务器端;
步骤32,元数据服务器端收到客户端文件提交请求后,进行文件的真正创建;在目录下创建所述文件的目录项dentry和inode,为所述文件分配真正的索引节点inode和编号ino,将客户端的inode元数据信息更新到元数据服务器真正的编号ino对应的inode结构中,并将所述文件真正的编号ino返回给客户端;
步骤33,客户端接收到真正的编号ino后,更新缓存中所述文件的inode,设置所述inode的编号为元数据服务器端返回的真正的编号ino,将所述文件的inode元数据设置完成标志位,表明客户端缓存中创建的文件已经提交到元数据服务器端,客户端的所述inode已经成为真正的inode。
为了实现上述目的,本发明还提供一种分布式文件系统客户端缓存中文件创建系统,其特征在于,包括:
客户端缓存文件创建模块,设置于客户端,用于获取目录写授权,在客户端缓存中进行文件创建,对于缓存中创建完成且没有提交到元数据服务器的文件进行本地读、写、删除处理,异步提交所创建文件;
元数据服务器管理模块,设置于元数据服务器,用于管理目录授权,管理客户端缓存中所创建文件的元数据,并与所述客户端缓存文件创建模块交互,向所述客户端缓存文件创建模块返回文件真正的inode编号,完成客户端缓存文件创建。
所述的系统,其中,所述客户端缓存文件创建模块进一步包括:
目录授权获取模块,用于检查客户端是否持有目录的写授权,如果没有则向所述元数据服务器管理模块发送获取目录写授权请求,目录写授权获取成功后记录获取的目录写授权;及
缓存文件创建模块,用于客户端缓存中文件的创建,如果目录下没有与创建文件同名的文件,则执行缓存中文件创建操作,在缓存中创建文件的元数据,设置创建文件的未完成标志位。
所述的系统,其中,所述客户端缓存文件创建模块进一步包括:
缓存文件删除模块,用于对客户端缓存中创建文件执行删除操作;如果文件是客户端缓存中创建的文件,且没有提交到所述元数据服务器管理模块,则在客户端缓存中删除所述文件;否则发送删除文件请求到所述元数据服务器管理模块,由所述元数据服务器管理模块完成所述文件的删除;和/或
缓存文件写模块,用于对客户端缓存中创建文件执行写操作;如果文件是客户端缓存中创建的文件,且没有提交到所述元数据服务器管理模块,则在客户端缓存中为所述文件分配布局,然后进行文件数据写操作;否则向元数据服务器管理模块发送请求获取布局或直接采用客户端存储资源延迟分配方法分配布局,然后进行文件数据写操作;和/或
缓存文件读模块,用于对客户端缓存中创建文件执行读操作;如果文件是客户端缓存中创建的文件,且没有提交到所述元数据服务器管理模块,则从本地缓存中获取文件布局,然后根据文件布局进行文件数据的读取;否则向所述元数据服务器管理模块发送RPC请求以获取文件布局,根据文件布局进行文件数据读取。
所述的系统,其中,所述客户端缓存文件创建模块进一步包括:
缓存异步提交模块,用于根据客户端缓存文件创建的写回策略,将客户端本地缓存中创建文件的元数据发送到所述元数据服务器管理模块,以实现后台异步提交,在收到元数据服务器管理模块返回的真正的inode编号后,更新inode编号为真正的inode编号,并设置文件创建完成标志位。
所述的系统,其中,所述元数据服务器管理模块进一步包括:
目录授权管理模块,用于接收获取目录写授权请求,根据目录写授权授予机制授予客户端目录写授权,记录目录授权授予情况;
元数据管理模块,用于管理客户端缓存中创建文件的元数据信息;收到客户端文件提交请求后,进行文件的真正创建,在目录下创建文件目录项,为文件分配真正的inode编号,将客户端的fake inode元数据信息更新到真正inode中,并将真正的inode编号返回给所述客户端缓存文件创建模块。
与现有技术相比,本发明的有益技术效果是:
本发明针对海量小文件应用场景中分布式文件系统现有技术无法有效减少文件创建时与元数据服务器同步网络交互开销的问题,提出了一种客户端缓存中文件创建的方法。客户端首先在缓存中创建文件,之后把新创建文件元数据信息异步提交到元数据服务器,不必同步与元数据服务器进行网络交互,避免了文件创建时的同步网络交互开销,有效降低了文件创建延时。并且,提供了一种在客户端缓存中进行文件创建的系统。
附图说明
图1是本发明分布式文件系统客户端缓存中文件创建方法流程图;
图2是本发明的一具体实施例;
图3是本发明分布式文件系统客户端缓存中文件创建系统结构图。
具体实施方式
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
如图1所示,是本发明分布式文件系统客户端缓存中文件创建方法流程图。该流程描述了在目录下创建文件的过程,具体步骤包括:
步骤101,客户端目录写授权获取步骤;
步骤102,客户端本地缓存中创建文件步骤;
步骤103,客户端异步提交步骤。
在上述技术方案中,进一步地,所述步骤101,具体包括如下步骤:
11)如果持有目录写授权,则不必执行后续步骤;如果未持有目录写授权,则执行后续步骤;
12)客户端通过RPC协议向元数据服务器发送获取目录写授权请求;
13)元数据服务器接收到获取目录写授权请求,根据目录写授权授予机制授予客户端目录写授权;
14)客户端记录获取目录写授权。
在上述技术方案中,进一步地,所述步骤13,具体包括如下步骤:
13.1)如果有其他客户端持有目录的冲突授权,则元数据服务器首先召回冲突授权;
13.2)元数据服务器授予客户端目录写授权,并记录目录授权情况;
在上述技术方案中,进一步地,所述步骤102,具体包括如下步骤:
21)客户端首先检查所述目录下是否存在与新创建文件同名的文件;
22)如果存在同名文件,则不必创建,只需要对已经存在的同名文件进行open操作即可。如果不存在同名文件,则执行后续步骤;
23)客户端执行缓存中文件创建操作,客户端在缓存中为新创建文件分配临时的索引节点,即fake inode,为该fake inode分配一个客户端唯一的索引节点编号ino。将fake inode添加到客户端本地inode缓存元数据中,将新创建文件的目录项dentry添加到客户端本地目录的读取目录内容缓存readdir cache中。
24)将缓存中新创建文件的fake inode设置未完成标志位uncompletion,表明该文件是在客户端的缓存中创建的,还未提交到元数据服务器端,后续可以对客户端的fake inode进行正常访问。
在上述技术方案中,进一步地,所述步骤21),具体包括如下步骤:
21.1)客户端检查本地目录的readdir cache是否最新,即目录readdir cache是否具有consistency一致标志;目录readdir cache在客户端首次获取目录的inode元数据信息时,由于还没有获取目录的所有目录项并将其缓存在本地的目录readdir cache中,因此设置目录readdir cache为unconsistency标志,表示客户端的目录readdir cache中的目录项与元数据服务器端的所述目录的目录项不一致。
21.2)如果目录readdir cache不具有consistency标志,表示客户端的目录readdir cache信息与元数据服务器端中的不一致,客户端向元数据服务器发送目录读取请求即readdir请求,获取元数据服务器端目录最新的所有目录项信息,缓存在客户端的目录readdir cache中,设置目录readdir cache的consistency标志;
21.3)遍历目录readdir cache中的目录项,检查目录readdir cache中是否有与新创建文件同名的文件目录项;
在上述技术方案中,进一步地,所述步骤103,具体包括如下步骤:
31)根据客户端缓存文件创建的写回策略,客户端在一定条件下将创建的一个或多个文件进行后台异步提交,通过协议将客户端本地缓存中创建文件的元数据发送到元数据服务器端。
32)元数据服务器端收到客户端文件提交请求后,进行文件的真正创建。在目录下创建文件目录项,为文件分配真正的索引节点inode和inode编号,将客户端的fake inode元数据信息更新到真正的inode中,并将文件真正的inode编号返回给客户端;
33)客户端接收到元数据服务器端的真正inode编号后,更新缓存中所述文件的fake inode,设置fake inode的inode编号为元数据服务器端返回的真正inode编号,将所述文件fake inode设置完成标志位completion,表明客户端缓存中创建的文件已经提交到元数据服务器端,客户端的fake inode已经成为真正的inode。
本发明还提出一种客户端缓存中文件删除方法,包括如下步骤:
(A1)客户端删除文件时,首先检查客户端缓存中所述文件inode的标志位。如果为uncompletion,则表明所述文件是客户端缓存中创建的文件,并且还没有提交到元数据服务器端。因此,客户端在缓存中删除该inode,删除客户端本地的目录readdir cache中的目录项即可,不需要与元数据服务器端进行RPC网络交互;
(A2)如果客户端缓存中所述文件inode标志位为completion,则表明所述文件信息已经提交到元数据服务器端。因此,客户端需要通过RPC发送删除所述文件请求到元数据服务器端,由元数据服务器端完成所述文件的删除;
本发明还提出了一种客户端缓存中文件的写方法,包括如下步骤:
(B1)客户端在写文件时,首先检查客户端缓存中所述文件inode的标志位。如果为uncompletion,则表明所述文件是客户端缓存中创建的文件,并且还没有提交到元数据服务器端。因此,采用客户端存储资源延迟分配方法在客户端缓存中为所述文件分配布局。然后进行文件数据写操作;
(B2)如果客户端缓存中所述文件inode标志位为completion,则表明所述文件信息已经提交到元数据服务器端。因此,客户端可以向元数据服务器发送请求获取布局,或者直接采用客户端存储资源延迟分配方法分配布局。然后进行文件数据写操作;
(B3)对于采用客户端存储资源延迟分配方法新创建的文件布局,需要根据策略异步提交到元数据服务器。如果所述文件inode标志位为uncompletion,则在提交所述文件布局之前,需要首先提交所述文件inode的元数据信息。保证元数据服务器接收到文件布局提交时,元数据服务器已经具有所述文件inode的元数据信息。
本发明还提出了一种客户端缓存中文件的读取方法,包括如下步骤:
(C1)客户端读取文件时,首先检查客户端缓存中所述文件inode的标志位。如果为uncompletion,则表明所述文件是客户端缓存中创建的文件,并且还没有提交到元数据服务器端。因此,客户端只需要从本地缓存中获取文件布局,然后根据文件布局进行文件数据的读取,而不需要向元数据服务器发送RPC请求来获取文件布局;
(C2)如果客户端缓存中所述文件inode标志位为completion,则表明所述文件信息已经提交到元数据服务器端。因此,客户端需要向元数据服务器发送RPC请求以获取文件布局。然后,根据文件布局进行文件数据读取。
删除、写、读是针对客户端缓存创建文件进行的相应后续操作,如果采用客户端文件创建,则对于所创建文件的删除、写、读操作需要按照上面所述的操作来执行。
如图2所示,是本发明的一具体实施例。该实施例描述了一种分布式文件系统客户端缓存中文件创建的方法。在图2中,客户端Client1期望在目录A下创建文件file1,目录A下已经存在文件file2、file3、file4;除Client1之外,还有另外的客户端Client2,元数据服务器是Server。具体包括如下步骤:
(一)、客户端目录写授权获取步骤
1.客户端检查是否拥有目录写授权。
(1)客户端Client1在接收到应用程序在目录A下创建文件file1的请求后,首先获取父目录A的inode。如果父目录A的inode已经在客户端本地缓存中存在,则直接获取即可;如果父目录A的inode没有在客户端本地缓存中,则向元数据服务器Server发送请求获取目录A元数据信息,然后客户端根据获取的目录A元数据信息在缓存中建立目录A的inode,并设置目录A的readdir cache为unconsistency标志;
(2)然后检查客户端Client1是否持有目录A的写授权。如果已经持有写授权,则直接使用已经持有的写授权即可;
2.客户端Client1向元数据服务器Server发送获取目录A写授权请求
如果客户端Client1没有持有目录A写授权,则需要向元数据服务器Server发送获取目录A写授权的GET_WRITE_DELEGATION请求。
3.元数据服务器端Server授予Client1目录A写授权
Server端接收到Client1发送的GET_WRITE_DELEGATION请求后,在目录授权链表Dir_delegation_list中检索是否存在目录A写授权给其他客户端的冲突。
(3.1)如果在Dir_delegation_list中没有检索到目录A写授权给其他客户端,则Server端把目录A写授权给Client1,并在Dir_delegation_list中添加记录。
(3.2)如果在Dir_delegation_list中检索到目录A的写授权给其他客户端的冲突,比如Client2,则Server端首先向Client2发送授权召回请求;Client2接收到授权召回请求后,把本地缓存中目录A下未提交的元数据和数据进行提交;提交完成后,释放目录A授权,返回给Server端目录A授权释放成功响应;Server端接收到Client2授权释放成功响应消息后,在Dir_delegation_list中撤销目录A写授权给Client2的记录。然后Server把目录A写授权给Client1,并在Dir_delegation_list中添加目录A授权给Clientl的记录。
4.客户端Client1记录获取的目录A写授权
客户端Client1收到Server返回的目录A写授权响应后,在目录A的inode中,设置持有写授权的标志位Dir_Delegation。
(二)、客户端缓存中创建文件file1步骤
1.客户端检查目录A下是否有与file1的重名文件
客户端缓存中创建文件之前,需要检查应用程序要创建的文件file1是否与目录A中的文件重名。
(1)客户端Client1获取目录A写授权后,首先检查本地目录A的readdircache是否已经更新到最新的状态,如果目录A的readdir cache具有consistency标志,则说明目录A的readdir cache获取了元数据服务器端目录A的最新目录项,已经是最新状态,即Client1中的目录A的readdir cache中包含file2、file3、file4的目录项,与元数据服务器端目录A下的目录项信息相同。
(2)如果目录A的readdir cache不具有consistency标志,则需要更新客户端本地readdir cache。客户端Client1向元数据服务器端发送readdir请求,将目录A及目录A中的所有目录项缓存到客户端Client1本地的readdir cache中,包括file2、file3、file4,并且设置目录A的readdircache的consistency标志,表明客户端缓存是最新状态,其获取的目录内容与元数据服务器端是一致的。
(3)客户端Client1遍历目录A下readdir cache中的目录项信息,判定目录A中是否存在与要创建文件file1同名的文件。
2.目录下存在同名文件
如果目录A下有与file1同名的文件,说明文件file1已经存在,则不必执行客户端缓存文件创建流程,文件file1的元数据已经缓存在客户端本地,只需要在客户端本地对文件file1进行open打开操作即可。
3.客户端缓存创建文件
如果目录A下没有与file1重名的文件,则执行客户端缓存中文件创建流程。
客户端Client1执行open创建操作,在缓存中创建目录A下的文件file1。客户端在内存中分配文件file1元数据信息,包括文件file1的inode、目录项等信息,该inode是客户端本地为文件file1暂时分配的,记为fake inode1,并且为fake inode1分配客户端唯一的inode编号ino1,将fake inode1添加到客户端inode缓存中,将file1目录项添加到目录A的readdir cache中。
4.设置客户端缓存中创建文件的标志位
客户端Client1将缓存中新创建的file1的fake inode1元数据设置标志位uncompletion,表明该文件是客户端缓存中创建的,还未提交到元数据服务器端,后续可以对客户端创建的file1的fake inode1进行正常访问。
(三)、客户端异步提交文件file1元数据步骤
1.客户端异步提交文件file1元数据信息
(1)客户端Client1根据提交策略,采用异步方式提交客户端缓存中创建文件file1的元数据信息。客户端在指定条件下,会触发异步提交文件file1元数据过程,比如当文件关闭后提交文件的元数据、当客户端缓存资源紧张后选择性的提交多个文件的元数据、当超过一定时间后提交多个文件的元数据等策略。
(2)客户端Client1向元数据服务器发送文件file1元数据信息提交的RPC请求消息,请求消息参数中包括目录A的inode元数据信息,file1的目录项元数据信息,file1的fake inode1元数据信息。
(3)作为一种优化的实现方法,客户端可以采用批量的方式,在一次网络交互操作中提交多个文件的元数据信息。
2.元数据服务器处理提交的file1元数据信息
(1)元数据服务器端Server收到客户端Client1提交文件file1元数据信息的消息后,对消息按照协议进行解析,解析出文件的元数据信息。
(2)元数据服务器在目录A下创建file1的目录项元数据,并且为file1分配真正的inode,为该inode分配在元数据服务器端的唯一标识inode编号,把从Client1请求消息中获取的file1的fake inode1元数据信息更新到file1的真正inode中。
(3)元数据服务器将真正inode的编号返回给客户端。
(4)作为一种优化的实现方式,元数据服务器可采用批量方式,通过一次网络交互把多个文件提交的响应消息返回给客户端。
3.客户端更新缓存中file1元数据信息
(1)客户端Client1接收到元数据服务器端返回的响应消息后,对响应消息按照协议进行解析,解析出file1的真正inode编号。
(2)客户端Client1将缓存中文件file1的inode元数据信息中inode编号更新为元数据服务器端分配的真正inode编号,并且修改客户端缓存中文件file1的inode元数据的标志位为completion,表明客户端缓存中创建的文件已经提交到元数据服务器端,并且客户端获取了文件file1真正的inode,文件创建已经完成。
结合图2所述的实施例,进一步描述客户端缓存删除文件的方法,包括如下步骤:
(A1)客户端Client1接收应用程序的删除文件file1请求后,首先检查客户端缓存中文件file1的inode元数据标志位,如果为uncompletion,则表明file1是客户端缓存创建的文件,并且没有提交到元数据服务器端,客户端在本地缓存中删除文件file1即可。不需要与元数据服务器端进行RPC网络交互,只需要进行客户端存储资源回收操作,包括释放file1的布局,释放file1的inode,在目录A的readdir cache中清除file1的目录项。
(A2)如果客户端Client1缓存中文件file1的inode元数据的标志位为completion,表明客户端缓存中创建的文件已经提交到元数据服务器端,需要发送请求到元数据服务器进行file1的删除。客户端Client1向元数据服务器发送file1删除请求消息,请求消息中参数包括目录A inode元数据信息,删除目标文件file1的目录项;元数据服务器端收到删除请求消息后,在目录A中删除file1的目录项,释放file1的布局,释放file1的inode。
结合图2所述的实施例,进一步描述客户端缓存中文件的写操作,包括如下步骤:
B1.客户端为文件file1分配文件布局
(1)客户端Client1接收到应用程序写文件file1的请求后,首先检查客户端缓存中文件file1的inode元数据标志位,如果为uncompletion,则表明file1是客户端缓存创建的文件,并且没有提交到元数据服务器端,采用客户端存储资源延迟分配方法分配文件布局。Client1首先采用批量方式从元数据服务器申请空闲存储资源,然后Client1在本地缓存中为file1分配所述空闲存储资源,并组装为文件布局。
(2)如果客户端Client1缓存中文件file1的inode元数据的标志位为completion,表明客户端缓存中创建的文件已经提交到元数据服务器端,需要向元数据服务器发送请求以获取文件布局,由元数据服务器完成文件布局的创建,并返回给Client1端。作为一种优化的实现,也可以采用客户端存储资源延迟分配方法在客户端缓存中分配文件布局。
B2.客户端写文件数据
客户端Client1根据file1已经分配的文件布局,把file1的文件数据写入到文件布局所描述的物理存储位置。
B3.客户端布局提交
在采用客户端存储资源延迟分配方法的文件布局创建后,当布局提交时,首先检查客户端Client1缓存中文件file1的inode元数据标志位,如果为uncompletion,则需要首先提交文件file1的元数据信息,再提交file1的文件布局信息。作为一种优化的实现方法,file1的文件布局可以和file1的元数据信息组装在一个RPC网络交互中同时提交。
结合图2所述的实施例,进一步描述客户端缓存文件的读取方法,包括如下步骤:
(C1)客户端Client1接收到应用程序读取文件file1的请求后,首先检查客户端Client1缓存中文件file1的inode元数据的标志位,如果为uncompletion,则表明客户端Client1缓存中创建的文件file1没有提交到元数据服务器端,需要直接在本地缓存中获取文件布局。如果客户端缓存中存在file1对应位置的文件布局,则直接使用该缓存布局;如果在客户端缓存中file1的对应读取位置没有文件布局,则直接表示所述读取位置没有分配过文件布局,而不必再请求元数据服务器获取文件布局;
(C2)如果客户端Client1缓存中文件file1元数据的标志位为completion,表明客户端缓存中创建的文件file1已经提交到元数据服务器端。如果客户端缓存中存在file1对应位置的文件布局,由于Client1持有目录授权,保证其他客户端不会对file1的文件布局进行修改,则直接使用该缓存布局;如果客户端缓存中不存在file1对应读取位置的文件布局时,由于客户端不知道元数据服务器端是否存在对应读取位置的文件布局,因此客户端还需要请求元数据服务器以获取对应位置的文件布局;
(C3)当获取文件布局后,客户端可以读取文件布局描述的物理存储位置,获取文件数据。
如图3所示,本发明还公开一种分布式文件系统客户端缓存中文件创建系统,该系统是与图1所述的方法、图2所述实施例中方法相对应的系统,该方法和实施例中的全部内容都适应于本系统,本系统包括:
客户端缓存文件创建模块10,设置于客户端,用于客户端获取目录授权,实现缓存中文件创建,对于缓存中创建完成且没有提交到元数据服务器的文件进行本地读、写、删除操作,最后进行创建文件的异步提交。
元数据服务器管理模块20,设置于元数据服务器,用于管理目录授权,管理客户端缓存中创建文件的元数据,并与客户端缓存文件创建模块10交互,向客户端缓存文件创建模块10返回文件真正的inode编号ino,完成客户端缓存文件创建。
进一步地,客户端缓存文件创建模块10包括:
目录授权获取模块110,用于检查客户端是否持有目录的写授权,如果没有则向元数据服务器管理模块20发送获取目录写授权请求,并记录获取的目录写授权。
缓存文件创建模块120,用于客户端缓存中文件的创建,如果目录下没有与创建文件同名的文件,则执行缓存中文件创建操作,在缓存中创建文件的元数据,设置创建文件的未完成标志位。
缓存文件删除模块130,用于对客户端缓存中创建文件执行删除操作;如果文件是客户端缓存中创建的文件,且没有提交到元数据服务器管理模块20,则在客户端缓存中删除文件元数据信息即可,不需要与元数据服务器管理模块20进行RPC网络交互;否则需要通过RPC发送删除所述文件请求到元数据服务器管理模块20,由元数据服务器管理模块20完成所述文件的删除。
缓存文件写模块140,用于对客户端缓存中创建文件执行写操作;如果文件是在客户端缓存中创建的文件,且没有提交到元数据服务器管理模块20,采用客户端存储资源延迟分配方法在客户端缓存中为所述文件分配布局,然后进行文件数据写操作;否则可以向元数据服务器管理模块20发送请求获取布局,或者直接采用客户端存储资源延迟分配方法分配布局,然后进行文件数据写操作。
缓存文件读模块150,用于对客户端缓存中创建文件执行读操作;如果文件是在客户端缓存中创建的文件,且没有提交到元数据服务器管理模块20,则从本地缓存中获取文件布局,然后根据文件布局进行文件数据的读取,而不需要向元数据服务器管理模块20发送RPC请求来获取文件布局;否则需要向元数据服务器管理模块20发送RPC请求以获取文件布局,根据文件布局进行文件数据读取。
缓存异步提交模块160,用于将在客户端缓存中创建的文件提交到元数据服务器管理模块20(即元数据管理模块220);根据客户端缓存文件创建的写回策略,在一定条件下将创建的一个或多个文件进行后台异步提交,通过协议将客户端本地缓存中创建文件的元数据发送到元数据服务器管理模块20,在收到元数据服务器管理模块20返回的真正inode编号ino后,更新inode编号为该真正的inode编号ino,并设置文件创建完成标志位。
进一步地,元数据服务器管理模块20包括:
目录授权管理模块210,用于接收获取目录写授权请求,根据目录写授权授予机制授予客户端目录写授权,记录目录授权授予情况;
元数据管理模块220,用于管理客户端缓存中创建文件的元数据信息;收到客户端文件提交请求后,进行文件的真正创建,在目录下创建文件目录项,为文件分配真正的inode编号ino,将客户端的fake inode元数据信息更新到真正inode中,并将文件真正的inode编号ino返回给客户端缓存文件创建模块10。
本发明针对在大规模分布式文件系统中现有技术无法有效减少客户端文件创建时与元数据服务器的同步网络交互开销的问题,提供了一种分布式文件系统客户端缓存中文件创建方法和系统,能够有效降低文件创建时同步访问元数据服务器的网络交互开销,有效提升小文件访问性能。其在客户端缓存中创建文件,然后把新创建文件元数据信息异步提交到服务器,避免了文件创建时的同步网络交互开销。此外,提供了客户端缓存中文件的删除、写入、读取方法。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (8)

1.一种分布式文件系统客户端缓存中文件创建方法,其特征在于,包括:
步骤1,客户端从元数据服务器获取目录写授权;
步骤2,客户端在本地缓存中创建文件;
步骤3,客户端异步提交所创建文件至元数据服务器;
所述步骤2中,包括:
步骤21,客户端检查目录下是否存在与所创建文件同名的文件;若不存在同名的文件,则执行后续步骤;
步骤22,客户端在缓存中进行目录下的文件创建,在缓存中为所创建文件分配临时索引节点inode,并为所述inode分配一索引节点编号ino,将所述inode添加到客户端本地inode缓存元数据中,将所创建文件的目录项dentry添加到客户端本地目录的读取目录内容缓存readdir cache中;
步骤23,为缓存中所述inode设置未完成标志位,表明所创建文件是在客户端缓存中创建的,还未提交到元数据服务器。
2.根据权利要求1所述的方法,其特征在于,所述步骤1中,包括:
步骤11,客户端向元数据服务器发送获取目录写授权请求;
步骤12,元数据服务器接收目录写授权请求,授予客户端目录写授权;
步骤13,客户端记录所述目录写授权。
3.根据权利要求1所述的方法,其特征在于,所述步骤21中,包括:
步骤211,客户端检查本地目录的readdir cache是否具有一致标志,若不具有该一致标志,表示客户端本地目录的readdir cache信息与元数据服务器端不一致,客户端向元数据服务器端发送目录读取请求,获取元数据服务器端所述目录最新的所有目录项信息,缓存在目录的readdir cache中,设置目录的readdir cache的一致标志;
步骤212,遍历目录的readdir cache中的目录项,检查目录的readdir cache中是否有与所创建文件同文件名的目录项。
4.根据权利要求1、2或3所述的方法,其特征在于,所述步骤3中,包括:
步骤31,客户端进行后台异步提交,将客户端缓存中创建文件的元数据发送到元数据服务器端;
步骤32,元数据服务器端收到客户端文件提交请求后,进行文件的真正创建;在目录下创建所述文件的目录项dentry和inode,为所述文件分配真正的索引节点inode和编号ino,将客户端的inode元数据信息更新到元数据服务器端真正的编号ino对应的inode结构中,并将所述文件真正的编号ino返回给客户端;
步骤33,客户端接收到真正的编号ino后,更新缓存中所述文件的inode,设置所述inode的编号为元数据服务器端返回的真正的编号ino,将所述文件的inode元数据设置完成标志位,表明客户端缓存中创建的文件已经提交到元数据服务器端,客户端的所述inode已经成为真正的inode。
5.一种分布式文件系统客户端缓存中文件创建系统,其特征在于,包括:
客户端缓存文件创建模块,设置于客户端,用于获取目录写授权,在客户端缓存中进行文件创建,对于缓存中创建完成且没有提交到元数据服务器的文件进行本地读、写、删除处理,异步提交所创建文件;
元数据服务器管理模块,设置于元数据服务器,用于管理目录授权,管理客户端缓存中所创建文件的元数据,并与所述客户端缓存文件创建模块交互,向所述客户端缓存文件创建模块返回文件真正的inode编号,完成客户端缓存文件创建;
所述客户端缓存文件创建模块进一步包括:
缓存文件删除模块,用于对客户端缓存中创建文件执行删除操作;如果文件是客户端缓存中创建的文件,且没有提交到所述元数据服务器管理模块,则在客户端缓存中删除所述文件;否则发送删除文件请求到所述元数据服务器管理模块,由所述元数据服务器管理模块完成所述文件的删除;和/或
缓存文件写模块,用于对客户端缓存中创建文件执行写操作;如果文件是客户端缓存中创建的文件,且没有提交到所述元数据服务器管理模块,则在客户端缓存中为所述文件分配布局,然后进行文件数据写操作;否则向元数据服务器管理模块发送请求获取布局或直接采用客户端存储资源延迟分配方法分配布局,然后进行文件数据写操作;和/或
缓存文件读模块,用于对客户端缓存中创建文件执行读操作;如果文件是客户端缓存中创建的文件,且没有提交到所述元数据服务器管理模块,则从本地缓存中获取文件布局,然后根据文件布局进行文件数据的读取;否则向所述元数据服务器管理模块发送RPC请求以获取文件布局,根据文件布局进行文件数据读取。
6.根据权利要求5所述的系统,其特征在于,所述客户端缓存文件创建模块进一步包括:
目录授权获取模块,用于检查客户端是否持有目录的写授权,如果没有则向所述元数据服务器管理模块发送获取目录写授权请求,目录写授权获取成功后记录获取的目录写授权;及
缓存文件创建模块,用于客户端缓存中文件的创建,如果目录下没有与创建文件同名的文件,则执行缓存中文件创建操作,在缓存中创建文件的元数据,设置创建文件的未完成标志位。
7.根据权利要求6所述的系统,其特征在于,所述客户端缓存文件创建模块进一步包括:
缓存异步提交模块,用于根据客户端缓存文件创建的写回策略,将客户端本地缓存中创建文件的元数据发送到所述元数据服务器管理模块,以实现后台异步提交,在收到元数据服务器管理模块返回的真正的inode编号后,更新inode编号为真正的inode编号,并设置文件创建完成标志位。
8.根据权利要求5、6或7所述的系统,其特征在于,所述元数据服务器管理模块进一步包括:
目录授权管理模块,用于接收获取目录写授权请求,根据目录写授权授予机制授予客户端目录写授权,记录目录授权授予情况;
元数据管理模块,用于管理客户端缓存中创建文件的元数据信息;收到客户端文件提交请求后,进行文件的真正创建,在目录下创建文件目录项,为文件分配真正的inode编号,将客户端的fake inode元数据信息更新到真正inode中,并将真正的inode编号返回给所述客户端缓存文件创建模块。
CN201210570089.6A 2012-12-25 2012-12-25 一种分布式文件系统客户端缓存中文件创建方法及其系统 Expired - Fee Related CN103179185B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210570089.6A CN103179185B (zh) 2012-12-25 2012-12-25 一种分布式文件系统客户端缓存中文件创建方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210570089.6A CN103179185B (zh) 2012-12-25 2012-12-25 一种分布式文件系统客户端缓存中文件创建方法及其系统

Publications (2)

Publication Number Publication Date
CN103179185A CN103179185A (zh) 2013-06-26
CN103179185B true CN103179185B (zh) 2015-07-08

Family

ID=48638804

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210570089.6A Expired - Fee Related CN103179185B (zh) 2012-12-25 2012-12-25 一种分布式文件系统客户端缓存中文件创建方法及其系统

Country Status (1)

Country Link
CN (1) CN103179185B (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902660B (zh) * 2014-03-04 2017-04-12 中国科学院计算技术研究所 机群文件系统中通过readdir++预取文件布局的系统及其方法
CN104021137B (zh) * 2014-04-21 2017-06-09 中国科学院计算技术研究所 一种基于目录授权的客户端本地开闭文件的方法及系统
CN104994164A (zh) * 2015-07-08 2015-10-21 浪潮(北京)电子信息产业有限公司 一种统计目录信息的方法和装置
CN106656904B (zh) * 2015-10-28 2020-03-03 北京京东振世信息技术有限公司 基于Quorum机制实现权限数据缓存同步的方法及装置
CN105740334A (zh) * 2016-01-22 2016-07-06 中国科学院计算技术研究所 一种文件系统中异步批量创建文件的系统及方法
CN107341114B (zh) * 2016-04-29 2021-06-01 华为技术有限公司 一种目录管理的方法、节点控制器和系统
CN106528866A (zh) * 2016-12-02 2017-03-22 郑州云海信息技术有限公司 一种更新元数据的方法、装置和系统
CN106603729A (zh) * 2017-02-23 2017-04-26 郑州云海信息技术有限公司 一种分布式文件系统多客户端同步方法及系统
CN106897440B (zh) * 2017-02-28 2020-06-26 郑州云海信息技术有限公司 一种分布式文件系统文件读写处理方法
CN107168651B (zh) * 2017-05-19 2020-09-25 苏州浪潮智能科技有限公司 一种小文件聚合存储处理方法
CN107357920B (zh) * 2017-07-21 2020-05-22 北京奇艺世纪科技有限公司 一种增量式的多副本数据同步方法及系统
CN107832423B (zh) * 2017-11-13 2020-05-15 中山大学 一种用于分布式文件系统的文件读写方法
CN107958034A (zh) * 2017-11-20 2018-04-24 郑州云海信息技术有限公司 分布式文件系统的inode号的分配方法、装置及介质
CN110659250B (zh) * 2018-06-13 2022-02-22 中国电信股份有限公司 文件处理方法和系统
CN109325000A (zh) * 2018-07-24 2019-02-12 郑州云海信息技术有限公司 一种文件创建的方法和装置
CN109144951A (zh) * 2018-08-01 2019-01-04 郑州云海信息技术有限公司 一种基于分布式文件系统的目录更新方法及元数据服务器
CN109165112B (zh) * 2018-08-16 2022-02-18 郑州云海信息技术有限公司 一种元数据集群的故障恢复方法、系统及相关组件
CN109302448B (zh) * 2018-08-27 2020-10-09 华为技术有限公司 一种数据处理方法及装置
CN109408474B (zh) * 2018-11-09 2021-11-19 郑州云海信息技术有限公司 一种文件创建方法及客户端
CN110765086B (zh) * 2019-10-25 2022-08-02 浪潮电子信息产业股份有限公司 一种小文件的目录读取方法、系统、电子设备及存储介质
CN111046001B (zh) * 2019-12-28 2023-03-14 浪潮电子信息产业股份有限公司 一种批量创建文件的方法、装置、设备及存储介质
CN111984592B (zh) * 2020-08-28 2022-07-19 苏州浪潮智能科技有限公司 一种元数据操作权限信息延迟同步恢复的方法、系统
CN112612751A (zh) * 2020-12-25 2021-04-06 北京浪潮数据技术有限公司 一种异步目录操作方法、装置、设备和系统
CN113010486B (zh) * 2021-02-05 2021-11-26 湖南国科亿存信息科技有限公司 用于无中心分布式文件系统的元数据分层缓存方法及装置
CN113590550B (zh) * 2021-07-30 2023-06-16 展讯通信(天津)有限公司 文件创建方法、装置和电子设备
CN113868605B (zh) * 2021-09-30 2024-03-22 新华三大数据技术有限公司 授权管理方法、装置及系统
CN117453643B (zh) * 2023-12-22 2024-04-02 柏科数据技术(深圳)股份有限公司 基于分布式文件系统的文件缓存方法、装置、终端及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102143215A (zh) * 2011-01-20 2011-08-03 中国人民解放军理工大学 一种基于网络的pb级云存储系统及其处理方法
CN102332016A (zh) * 2010-09-17 2012-01-25 微软公司 目录机会锁

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102332016A (zh) * 2010-09-17 2012-01-25 微软公司 目录机会锁
CN102143215A (zh) * 2011-01-20 2011-08-03 中国人民解放军理工大学 一种基于网络的pb级云存储系统及其处理方法

Also Published As

Publication number Publication date
CN103179185A (zh) 2013-06-26

Similar Documents

Publication Publication Date Title
CN103179185B (zh) 一种分布式文件系统客户端缓存中文件创建方法及其系统
US11593319B2 (en) Virtualized data storage system architecture
US8341118B2 (en) Method and system for dynamically replicating data within a distributed storage system
JP6619406B2 (ja) ログレコード管理
US9305069B2 (en) Method and system for uploading data into a distributed storage system
US8615485B2 (en) Method and system for managing weakly mutable data in a distributed storage system
JP5661188B2 (ja) ファイルシステム及びデータ処理方法
US9015131B2 (en) Information management method, and computer for providing information
US8874523B2 (en) Method and system for providing efficient access to a tape storage system
CN102035881B (zh) 一种云端存储系统的数据缓存方法
CN104618482B (zh) 访问云数据的方法、服务器、传统存储设备、系统
EP2534571B1 (en) Method and system for dynamically replicating data within a distributed storage system
CN104935648A (zh) 一种高性价比的cdn系统及文件预推、分片缓存的方法
CN102014158A (zh) 一种云存储服务客户端高效细粒度数据缓存系统与方法
CN102855239A (zh) 一种分布式地理文件系统
CN102750322B (zh) 一种机群文件系统分布式元数据一致性保证方法和系统
CN111177159B (zh) 一种数据处理的系统、方法和数据更新设备
CN107368608A (zh) 基于arc替换算法的hdfs小文件缓存管理方法
CN105701219A (zh) 一种分布式缓存的实现方法
CN107679420A (zh) 一种基于分布式文件系统的权限设置方法及系统
CN104021137B (zh) 一种基于目录授权的客户端本地开闭文件的方法及系统
CN102523301A (zh) 一种云存储中在客户端缓存数据的方法
CN102281312A (zh) 一种数据加载方法、系统和数据处理方法、系统
CN114201446B (zh) 实现hdfs远端存储挂载的方法及系统
US10387384B1 (en) Method and system for semantic metadata compression in a two-tier storage system using copy-on-write

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150708