一种基于分布式文件系统的数据预读装置及其方法

文档序号:6541316阅读:173来源:国知局
一种基于分布式文件系统的数据预读装置及其方法
【专利摘要】本发明公开了一种基于分布式文件系统的数据预读装置,该数据预读装置包括:客户端模块、元数据服务器模块和数据存储模块;客户端模块通过访问元数据服务器模块获取目录读取扩展授权和小文件布局,根据小文件布局将小文件数据和与该小文件数据空间连续的大粒度数据同时从数据存储模块中预读到客户端模块的缓存中。本发明还公开了一种基于分布式文件系统的数据预读方法。
【专利说明】一种基于分布式文件系统的数据预读装置及其方法
【技术领域】
[0001]本发明涉及分布式文件系统客户端与服务器端的交互技术,特别涉及一种分布式文件系统在客户端进行小文件之间数据预读的方法和系统。
【背景技术】
[0002]随着信息技术飞速发展,全球数据信息总量迅猛增长,非结构化数据越来越多。据Gartner统计,2010全球数据信息总量达到1.2ZB,并预计以每年至少50%的增长率持续高速增长,其中85%由各种非结构化数据组成,非结构化数据多以文件形式存储在分布式文件系统中。在web2.0、社交网络等新兴应用中,数据信息主要以小文件的形式存在,文件尺寸较小。随着小文件数量越来越多,迫切需要分布式文件系统有效管理海量小文件,提供高性能、低延时的小文件访问服务。
[0003]在大规模分布式文件系统中,元数据与数据分离的结构已经成为了一种趋势。元数据服务器负责维护文件系统全局命名空间,管理文件逻辑位置与磁盘物理位置的映射关系,为文件分配物理存储资源,元数据记录在专有的元数据存储设备中。客户端文件数据访问不必通过元数据服务器,而是采用带外方式直接访问专有的数据存储设备,从而获取较高的数据访问性能。上述结构对大文件访问非常有效,大文件数据在专有数据存储设备中,数据分布在存储设备上的空间连续性好,并且大文件大粒度连续数据访问的情况通常较多,可以充分发挥数据存储设备的大粒度顺序访问的性能优势。
[0004]然而在海量小文件数据读取访问中,由于数据读取粒度小并且不同小文件之间的数据访问空间连续性差,难以发挥数据存储设备的大粒度顺序访问的性能优势,导致海量小文件的访问性能远远低于大文件的访问性能,性能差距达到10倍以上。
[0005]预读是提升小文件读取访问性能的一个主要方法,通过把将要访问的数据预先读取到客户端缓存,后续客户端访问时可以在缓存中获取数据,节省了同步从磁盘读取数据的开销,达到较低的访问延迟。目前的预读算法主要针对单个大文件进行,根据单个文件内历史访问的逻辑位置,预测后续将要访问的逻辑位置,并预读将要访问的逻辑位置的数据。然而,小文件通常一次读取全部文件数据,没有历史访问信息,因此上述预读算法对小文件无效。此外,针对文件内逻辑位置进行预读,没有考虑物理位置读取的空间连续性,对于物理空间连续性较差的文件,不能发挥数据存储设备的连续访问性能优势。

【发明内容】

[0006]本发明所要解决的技术问题在于提供一种基于分布式文件系统的数据预读装置及其方法,以克服现有技术中存在的海量小文件应用场景中分布式文件系统无法有效降低小文件数据读取访问延迟、无法充分发挥数据存储设备大粒度顺序访问性能优势的问题。
[0007]为达上述目的,本发明提供了一种基于分布式文件系统的数据预读装置,其特征在于,所述数据预读装置包括:客户端模块、元数据服务器模块和数据存储模块:
[0008]所述客户端模块通过访问所述元数据服务器模块获取目录读取扩展授权和小文件布局,根据所述小文件布局将小文件数据和与所述小文件数据空间连续的大粒度数据同时从所述数据存储模块中预读到所述客户端模块的缓存中。
[0009]上述基于分布式文件系统的数据预读装置,其特征在于,
[0010]所述元数据服务器模块用于进行目录读取扩展授权的管理和小文件布局信息的维护,接收获取目录读取扩展授权和小文件布局的请求,并返回所述目录读取扩展授权和所述小文件布局;
[0011]所述数据存储模块用于提供数据存储与访问接口,接收读取特定物理位置的访问请求,并返回数据读取内容;
[0012]所述客户端模块用于向所述元数据服务器模块发送获取目录的读取扩展授权的请求,根据获取到的所述目录读取扩展授权,所述客户端模块向所述元数据服务器模块发送获取小文件布局的请求,并根据获取到的所述小文件布局向所述数据存储模块发送数据读取请求,完成所述小文件数据和所述大粒度数据内容读取。
[0013]上述基于分布式文件系统的数据预读装置,其特征在于,所述元数据服务器模块还包括:
[0014]目录读取扩展授权管理模块:用于接收所述客户端模块发送的所述获取目录读取扩展授权的请求,并向所述客户端授予所述目录读取扩展授权;
[0015]文件布局维护模块:用于接收所述客户端发送的小文件布局的请求,并向所述客户端应答记录维护的所述小文件布局。
[0016]上述基于分布式文件系统的数据预读装置,其特征在于,所述客户端模块还包括:
[0017]目录读取扩展授权获取模块:用于向所述目录读取扩展授权管理模块发送获取目录读取扩展授权的请求,并在获取目录读取授权后进行记录;
[0018]文件布局获取模块:用于向所述文件布局维护模块发送获取小文件布局请求,以获取小文件布局,获取所述小文件布局后进行记录;
[0019]文件读取模块:用于根据获取的所述小文件布局,得到所述小文件数据的物理位置,进行数据读取访问;
[0020]匿名页缓存模块:用于缓存从所述数据存储设备模块中预读的数据页,所述文件读取模块在所述匿名页缓存模块中查找所需数据页,如果查找成功,则直接从所述匿名页缓存模块中取走所需数据;
[0021]数据存储设备访问驱动模块:用于访问所述数据存储设备模块,从数据存储设备的物理位置中获取数据,如果所述文件读取模块在所述匿名页缓存模块中查找数据失败,则构建大粒度连续的数据访问请求,通过所述数据存储设备访问驱动模块获取所述大粒度连续数据。
[0022]上述基于分布式文件系统的数据预读装置,其特征在于,所述目录读取扩展授权用于保证所述目录包含文件的数据内容能够被授予了所述目录读取扩展授权的所述客户端进行读取,不会被其他客户端同时修改。
[0023]上述基于分布式文件系统的数据预读装置,其特征在于,所述读取扩展授权包含版本号,所述版本号用于区分同一客户端多次对同一目录获取所述读取扩展授权。
[0024]本发明还提供了一种基于分布式文件系统的数据预读方法,应用于所述的数据预读装置,所述数据预读装置包括:客户端模块、元数据服务器模块和数据存储模块,该方法包括:
[0025]获取目录读取扩展授权步骤:所述客户端模块向所述元数据服务器模块发送获取目录读取扩展授权请求,所述元数据服务器模块向所述客户端模块授予目录读取扩展授权;
[0026]文件数据读取步骤:根据获取的所述目录读取扩展授权,所述客户端模块向所述元数据服务器模块发送小文件布局的请求,并根据获取到的所述小文件布局向所述数据存储模块发送数据读取请求,完成所述小文件数据和所述大粒度内容读取。
[0027]上述基于分布式文件系统的数据预读方法,其特征在于,所述获取目录读取扩展授权步骤还包括:
[0028]授权判断步骤:所述客户端模块判断如果所述客户端模块已经具有所述元数据服务器模块授予的所述目录读取扩展授权,则直接执行所述文件数据读取步骤;
[0029]授权请求发送步骤:如果所述客户端模块不具有所述目录读取扩展授权,则所述客户端模块向所述元数据服务器模块发送获取所述目录读取扩展授权的请求;
[0030]授予授权步骤:如果所述目录读取扩展授权模块检查不存在冲突的修改授权,则授予所述客户端模块所述目录读取扩展授权,否则,等待召回冲突的授权后,对所述客户端模块进行所述目录读取扩展授权的授予;
[0031]授权记录步骤:所述客户端记录获取到的所述目录读取扩展授权。
[0032]上述基于分布式文件系统的数据预读方法,其特征在于,所述文件数据读取步骤还包括:
[0033]文件布局信息获取步骤:用于所述客户端模块向所述元数据服务器模块发送小文件布局请求,获取小文件布局信息;
[0034]数据内容读取步骤:用于根据获取到的所述小文件布局信息,通过所述客户端模块向所述匿名页缓存模块进行数据读取,如果读取失败,则通过所述数据存储设备访问驱动模块向所述数据存储设备模块进行数据读取。
[0035]上述基于分布式文件系统的数据预读方法,其特征在于,所述文件布局信息获取步骤还包括:
[0036]布局判断步骤:所述客户端模块判断如果所述客户端模块已经具有所述元数据服务器模块应答的所述小文件布局信息,则直接执行所述数据内容读取步骤;
[0037]布局请求发送步骤:如果所述客户端模块不具有所述小文件布局信息,则所述文件布局获取模块向所述文件布局维护模块发送小文件布局请求;
[0038]布局返回步骤:所述文件布局维护模块向所述文件布局获取模块应答所述小文件布局请求,发送所述小文件布局;
[0039]布局记录步骤:所述客户端模块在缓存中记录获取到的所述小文件布局。
[0040]上述基于分布式文件系统的数据预读方法,其特征在于,所述数据内容读取步骤还包括:
[0041]匿名页缓存读取步骤:所述文件读取模块向所述匿名页缓存模块发送数据读取请求,所述匿名页缓存模块查找成功后,返回所需数据内容;
[0042]数据存储设备读取步骤:如果所述匿名页缓存模块根据所述数据读取请求查找失败,则所述数据存储设备访问驱动模块向所述数据存储设备发送数据访问请求,获取所需数据内容。
[0043]上述基于分布式文件系统的数据预读方法,其特征在于,所述匿名页缓存读取步骤还包括:
[0044]匿名页请求步骤:所述文件读取模块根据所述文件布局信息中的数据存储设备物理位置,向所述匿名页缓存模块发送数据读取请求;
[0045]匿名页查找步骤:所述匿名页缓存模块根据所述数据读取请求进行匿名页查找,所述匿名页为不属于任何小文件的数据页;如果存在所述匿名页与所述文件布局信息中的数据存储设备物理位置相同,则查找匿名页成功;
[0046]数据信息返回步骤:如果所述匿名页查找步骤中查找匿名页不成功,则向所述文件读取模块返回匿名页缓存读取失败;如果所述匿名页查找步骤中查找匿名页成功,并且所述匿名页与所述小文件所在的目录具有相同的读取扩展授权版本号,则将所述匿名页返回给所述文件读取模块;如果所述匿名页查找步骤中查找匿名页成功,但是所述匿名页与所述小文件所在的目录具有不同的读取扩展授权版本号,则向所述文件读取模块返回匿名页缓存读取失败;
[0047]匿名页移除步骤:如果所述匿名页查找步骤中查找匿名页成功,则从所述匿名页缓存模块中移除所述匿名页。
[0048]上述基于分布式文件系统的数据预读方法,其特征在于,所述数据存储设备读取步骤还包括:
[0049]大粒度数据请求步骤:如果所述匿名页缓存读取步骤中返回匿名页缓存读取失败,则所述文件读取模块构建大粒度连续数据访问请求;
[0050]数据存储设备数据读取请求步骤:根据所述大粒度数据请求步骤构建的大粒度连续数据访问请求,所述数据存储设备访问驱动模块向所述数据存储设备发送所述大粒度连续数据访问请求,并获取大粒度数据;
[0051]数据返回步骤:所述数据存储设备访问驱动模块将获取到的所述大粒度数据返回给所述文件读取模块后,所述文件读取模块直接获取小文件访问所需的数据页,同时把扩展粒度后获取的所述匿名页记录在匿名页缓存中,并且设置所述匿名页的版本号为所述小文件所在目录的读取扩展授权的版本号。
[0052]本发明与现有的小文件读取技术相比,本发明的有益效果在于:本发明通过在客户端进行小文件之间的数据预读,有效降低了小文件数据访问延迟,发挥了数据存储设备大粒度顺序访问的性能优势;同时,本发明提出了一种分布式文件系统小文件之间的数据预读方法和系统,能够有效预读小文件之间的数据,并发挥数据存储设备顺序访问的性能优势,有效降低海量小文件访问延迟。
【专利附图】

【附图说明】
[0053]图1为本发明数据预读装置的结构示意图;
[0054]图2为本发明数据预读方法流程示意图;
[0055]图3为本发明文件布局信息获取和数据内容读取步骤示意图;
[0056]图4为本发明匿名页缓存读取和数据存储设备读取步骤流程示意图;[0057]图5A~图为本发明方法具体实施例步骤示意图;
[0058]图6为本发明一实施例系统结构示意图;
[0059]图7为本发明方法具体实施例详细步骤示意图。
[0060]其中,附图标记:
[0061 ] 40元数据服务器模块50数据存储模块
[0062]60客户端模块
[0063]401目录读取扩展授权管理模块402文件布局维护模块
[0064]601目录读取扩展授权获取模块602文件布局获取模块
[0065]603文件读取模块604匿名页缓存模块
[0066]605数据存储设备访问驱动模块
[0067]SI ~S2、Sll ~S14、S21 ~S22、S211 ~S214、S221 ~S222、S2211 ~S2222:本发明各实施例的施行步骤
【具体实施方式】
[0068]下面给出本发明的【具体实施方式】,结合附图和具体实施实例对本发明做详细描述。
[0069]本发明提出了一种小文件之间的数据预读方法。由于在同一目录下的不同小文件之间的数据具有较好空间连续性,因此在读取单个小文件数据时,不仅获取该小文件所需的小粒度数据,而且扩展把与该小文件数据空间连续的大粒度数据从数据存储设备预读到缓存。对于数据存储设备,读取大粒度顺序数据与仅读取小粒度数据开销非常接近,因此当后续其他小文件需要数据访问时,如果所需数据已经预读到缓存中,则避免了从数据存储设备同步读取的延迟开销,发挥了数据存储设备大粒度顺序访问的性能优势。本发明还提供了一种在客户端进行小文件之间的数据预读的系统。
[0070]本发明提供了一种基于分布式文件系统的数据预读装置,包括:元数据服务器模块40和数据存储模块50、客户端模块60:
[0071 ] 客户端模块60通过访问元数据服务器模块40获取目录读取扩展授权和小文件布局,根据小文件布局将小文件数据和与小文件数据空间连续的大粒度数据同时从数据存储模块50中预读到客户端模块60的缓存中。
[0072]图1为本发明数据预读装置的结构示意图,如图1所示,该数据预读装置包括:
[0073]元数据服务器模块40用于进行读取扩展授权的管理和文件布局信息的维护,接收读取扩展授权和文件布局的请求,并返回读取扩展授权和小文件布局;
[0074]其中,元数据服务器模块40还包括:
[0075]目录读取扩展授权管理模块401:用于接收所述客户端模块发送的所述读取扩展授权的请求,并向所述客户端授予所述读取扩展授权;
[0076]文件布局维护模块402:用于接收所述客户端发送的小文件布局的请求,并向所述客户端应答记录维护的所述小文件布局。
[0077]目录读取扩展授权管理模块401负责接收客户端获取特定目录读取扩展授权的请求,在不存在共享访问冲突的情况下,授予客户端所述目录的读取扩展授权。目录的读取扩展授权保证了客户端持有的目录所包含文件的数据不会被其他客户端同时修改,即在客户端持有目录的读取扩展授权的情况下,元数据服务器保证不会有其他客户端同时修改目录下的任何文件。当元数据服务器接收到其他客户端修改目录的包含文件的请求时,需要召回客户端已经获取的目录读取扩展授权后,才能授予其他客户端目录的修改授权;当元数据服务器接收到其他客户端获取目录读取扩展授权请求时,检查如果目录没有已授予的修改授权,表示不存在共享访问冲突,则授予其他客户端目录的读取扩展授权。
[0078]其中,目录读取扩展授权用于保证所述目录包含文件的数据内容能够被授予了所述目录读取扩展授权的所述客户端进行读取,不会被其他客户端同时修改。
[0079]文件布局维护模块402负责接收客户端获取小文件布局的请求,并返回元数据服务器记录维护的文件布局。其中,小文件布局用于记录小文件数据所在的数据存储设备的物理位置。
[0080]数据存储模块50用于提供数据存储与访问接口,接收读取特定物理位置的访问请求,并返回数据读取内容。
[0081]客户端模块60用于向元数据服务器模块发送获取目录的读取扩展授权的请求,获取到授予的所述目录读取扩展授权后,根据获取的目录读取扩展授权,客户端模块向元数据服务器模块发送文件布局的请求,并根据获取到的文件布局向数据存储模块发送数据读取请求,完成数据内容读取。
[0082]其中,客户端模块60还包括:
[0083]目录读取扩展授权获取模块601:用于向目录读取扩展授权管理模块发送获取目录读取扩展授权的请求,并在获取所述目录读取扩展授权后进行记录;
[0084]目录读取扩展授权获取模块601,负责向元数据服务器目录读取扩展授权管理模块请求所述目录的读取扩展授权。在所述目录读取扩展授权获取之后,记录所述目录已经获取到目录读取扩展授权。所述目录的读取扩展授权具有版本号,以区分多次对同一目录获取目录读取扩展授权,即对同一目录的多次获取目录读取扩展授权,所述版本号不同。
[0085]文件布局获取模块602:用于向文件布局维护模块发送获取小文件布局请求,以获取小文件布局,获取小文件布局后进行记录;
[0086]文件布局获取模块602,负责向元数据服务器小文件布局维护模块请求获取所述小文件布局。在获取所述小文件布局之后,缓存记录在客户端。
[0087]文件读取模块603:用于根据获取的小文件布局,得到小文件数据的物理位置,进行数据读取访问;
[0088]文件读取模块603,根据获取小文件布局模块已经获取的小文件布局,得到小文件数据所在的数据存储设备的物理位置,然后进行数据读取访问。首先访问匿名页缓存模块,如果要访问的数据存储设备的物理位置的数据页已经预读到匿名页缓存中,则直接从匿名页缓存中取走该数据页;否则,扩展所述数据访问粒度,构建大粒度连续的数据访问,请求数据存储设备访问驱动模块获取大粒度连续数据。
[0089]匿名页缓存模块604:用于缓存从数据存储设备模块中预读的数据页,文件读取模块在匿名页缓存模块中查找所需数据页,如果查找成功,则直接从匿名页缓存模块中取走所需数据;
[0090]匿名页缓存模块604负责缓存从数据存储设备中预读的数据页,数据页暂时还不属于任何的小文件,因此称为匿名页。匿名页以数据存储设备物理位置为索引缓存在匿名页缓存中。匿名页具有版本号,在小文件访问时,与所在目录的读取扩展授权版本号进行比较,从而确定所述匿名页是否有效。
[0091]数据存储设备访问驱动模块605:用于访问数据存储设备模块,从数据存储设备的物理位置中获取数据,文件读取模块在匿名页缓存模块中查找数据失败,则构建大粒度连续的数据访问请求,通过数据存储设备访问驱动模块获取大粒度连续数据。
[0092]数据存储设备访问驱动模块605,负责访问数据存储设备获取所述物理位置粒度的数据。获取数据之后,小文件包含数据被直接返回给小文件读取模块,扩展粒度读取的匿名页被记录在匿名页缓存中。匿名页具有版本号,被设置为小文件所在目录的读取扩展授权的版本号。
[0093]本发明还提供一种基于分布式文件系统的数据预读方法,图2为本发明数据预读方法流程示意图,如图2所示,该方法包括:
[0094]获取目录读取扩展授权步骤S1:客户端模块3向元数据服务器模块I发送获取目录读取扩展授权请求,元数据服务器模块I向客户端模块3授予所述目录读取扩展授权;
[0095]文件数据读取步骤S2:根据获取的目录读取扩展授权,客户端模块3向元数据服务器模块I发送获取小文件布局的请求,并根据获取到的所述小文件布局向数据存储模块发送数据读取请求,完成小文件数据和大粒度数据内容读取。
[0096]其中,获取目录读取扩展授权步骤SI还包括:
[0097]授权判断步骤Sll:客户端模块判断如果客户端模块已经具有元数据服务器模块授予的目录读取扩展授权,则直接执行文件数据读取步骤;
[0098]授权请求发送步骤S12:如果客户端模块不具有目录读取扩展授权,则客户端模块向元数据服务器模块发送获取目录读取扩展授权的请求;
[0099]授予授权步骤S13:如果目录读取扩展授权模块检查不存在冲突的修改授权,则授予客户端模块目录读取扩展授权,否则,等待召回冲突的授权后,对客户端模块进行目录读取扩展授权的授予;
[0100]授权记录步骤S14:客户端记录获取到的目录读取扩展授权。
[0101]其中,文件数据读取步骤S2还包括:
[0102]文件布局信息获取步骤S21:用于客户端模块向元数据服务器模块发送小文件布局请求,获取小文件布局信息;
[0103]数据内容读取步骤S22:用于根据获取到的小文件布局信息,通过客户端模块向匿名页缓存模块进行数据读取,如果读取失败,则通过数据存储设备访问驱动模块向数据存储设备模块进行数据读取。
[0104]其中,图3为本发明文件布局信息获取和数据内容读取步骤示意图,如图3所示,文件布局信息获取步骤S21还包括:
[0105]布局判断步骤S211:客户端模块判断如果客户端模块已经具有元数据服务器模块应答的小文件布局信息,则直接执行数据内容读取步骤;
[0106]布局请求发送步骤S212:如果客户端模块不具有小文件布局信息,则文件布局获取模块向元数据服务器的文件布局维护模块发送小文件布局请求;
[0107]布局返回步骤S213:元数据服务器的文件布局维护模块向客户端的文件布局获取模块应答小文件布局请求,发送小文件布局;[0108]布局记录步骤S214:客户端模块在缓存中记录获取到的小文件布局。
[0109]其中,数据内容读取步骤S22还包括:
[0110]匿名页缓存读取步骤S221:文件读取模块向匿名页缓存模块发送数据读取请求,匿名页缓存模块查找成功后,返回所需数据内容;
[0111]数据存储设备读取步骤S222:如果匿名页缓存模块根据数据读取请求查找失败,则所述数据存储设备访问驱动模块向数据存储设备发送数据访问请求,获取所需数据内容。
[0112]图4为本发明匿名页缓存读取和数据存储设备读取步骤流程示意图,如图4所示,匿名页缓存读取步骤S221还包括:
[0113]匿名页请求步骤S2211:文件读取模块根据文件布局信息中的数据存储设备物理位置,向匿名页缓存模块发送数据读取请求;
[0114]匿名页查找步骤S2212:匿名页缓存模块根据数据读取请求进行匿名页查找,匿名页为不属于任何小文件的数据页;如果存在匿名页与文件布局信息中的数据存储设备物理位置相同,则查找匿名页成功;
[0115]数据信息返回步骤S2213:如果匿名页查找步骤中查找匿名页不成功,则向文件读取模块返回匿名页缓存读取失败;如果匿名页查找步骤中查找匿名页成功,并且匿名页与小文件所在的目录具有相同的读取扩展授权版本号,则将匿名页返回给文件读取模块;如果匿名页查找步骤中查找匿名页成功,但是匿名页与小文件所在的目录具有不同的读取扩展授权版本号,则向文件读取模块返回匿名页缓存读取失败;
[0116]匿名页移除步骤S2214:如果匿名页查找步骤中查找匿名页成功,则从匿名页缓存模块中移除匿名页。
[0117]其中,数据存储设备读取步骤S222还包括:
[0118]大粒度数据请求步骤S2221:如果匿名页缓存读取步骤中返回匿名页缓存读取失败,则文件读取模块构建大粒度连续数据访问请求;
[0119]数据存储设备数据读取请求步骤S2222:根据大粒度数据请求步骤构建的大粒度连续数据访问请求,数据存储设备访问驱动模块向数据存储设备发送大粒度连续数据访问请求,并获取大粒度数据;
[0120]数据返回步骤S2223:数据存储设备访问驱动模块将获取到的大粒度数据返回给文件读取模块后,文件读取模块直接获取小文件访问所需的数据页,同时把扩展粒度后获取的匿名页记录在匿名页缓存中,并且设置匿名页的版本号为小文件所在目录的读取扩展授权的版本号。
[0121]以下结合本发明具体实施例的步骤,说明数据预读过程。
[0122]本发明提供的一种在客户端进行小文件之间数据预读的方法,图5A?图为本发明方法具体实施例步骤示意图,如图5A?图所示,方法包括如下步骤:
[0123]1、客户端目录读取扩展授权获取步骤;
[0124]2、客户端获取小文件布局步骤;
[0125]3、客户端小文件从匿名页缓存中读取步骤;
[0126]4、客户端小文件从数据存储设备访问驱动读取步骤;
[0127]在上述技术方案中,进一步地,所述步骤I具体包括如下步骤:[0128]11、如果持有所述目录读取扩展授权,则不必执行后续步骤;
[0129]12、客户端获取目录读取扩展授权模块通过RPC协议向元数据服务器发送获取所述目录读取扩展授权的请求;
[0130]13、元数据服务器目录读取扩展授权管理模块,检查如果所述目录不存在冲突的修改授权,则授予所述客户端所述目录读取扩展授权,并记录所述目录读取扩展授权状态;否则,等待召回冲突的修改授权后,才能授予所述客户端所述目录读取扩展授权。
[0131]14、客户端记录获取的所述目录读取扩展授权;
[0132]在上述技术方案中,进一步地,所述步骤2具体包括如下步骤:
[0133]21、如果客户端已经持有所述小文件的布局缓存,则不必执行后续步骤;
[0134]22、客户端获取小文件布局模块通过RPC协议向元数据服务器发送获取所述小文件布局的请求;
[0135]23、元数据服务器的小文件布局维护模块返回所述小文件的文件布局;
[0136]24、客户端在布局缓存中记录获取的所述小文件的布局。
[0137]在上述技术方案中,进一步地,所述步骤3具体包括如下步骤:
[0138]31、客户端根据小文件布局中数据存储设备物理位置,向匿名页缓存模块发送读取请求;
[0139]32、匿名页缓存模块查找如果不存在相同物理位置的匿名页,则向小文件读取模块返回不存在,跳转到(35 )步骤;
[0140]33、匿名页缓存模块检查如果获取的匿名页与所述小文件所在的父目录具有相同的读取扩展授权版本号,则返回给小文件读取模块,同时从匿名页缓存模块中移除所述匿名页,结束后续步骤;
[0141]34、如果获取的匿名页与所述小文件所在的父目录具有不同的读取扩展授权版本号,则从匿名页缓存模块中移除所述匿名页,向小文件读取模块返回不存在;
[0142]35、小文件读取模块扩展数据读取粒度,构建包含所述小文件数据所在数据存储设备物理位置的大粒度连续数据访问请求,转移到步骤4。
[0143]在上述技术方案中,进一步地,所述步骤4具体包括如下步骤:
[0144]41、客户端数据存储设备访问驱动模块向数据存储设备发送数据读取访问请求,获取大粒度数据;
[0145]42、客户端数据存储设备访问驱动模块直接把小文件访问所需的数据页返回给小文件访问模块;把扩展粒度后获取的匿名页记录在匿名页缓存中,并设置匿名页的版本号为所述小文件所在目录的读取扩展授权的版本号。
[0146]以下结合附图和具体实施实例对本发明进一步详细描述。
[0147]为达到以上目的,本发明基于pNFS,给出了一种基于目录读取扩展授权的小文件之间数据预读方法的具体实施实例,图6为本发明一实施例系统结构示意图,如图6所示,磁盘块存储设备作为数据存储模块2,并且被划分为固定粒度的块,并对块进行连续编号,编号连续的数据块在数据存储设备上的物理位置也连续,比如连续的块1001、1002、1003、1004、1005在存储设备上物理位置也连续。客户端Clientl作为客户端模块3,期望访问目录A下的文件Π?f4,Π?f4的文件大小都仅为数据存储设备上的一个数据块,其中文件fl?f4分别分布于数据存储设备的块1001、1002、1003、1005的物理块位置。匿名页以链表anoy_page_list方式组织在匿名页缓存模块34中,匿名页是还未关联到任何文件的数据页。Blocklayoutdriver模块作为数据存储设备访问驱动模块35,负责从数据存储设备上获取指定物理位置的数据。
[0148]图7为本发明方法具体实施例详细步骤示意图,如图7所示,具体包括如下步骤:
[0149]100、客户端获取特定目录读取扩展授权的步骤
[0150]101、客户端检查是否拥有特定目录读取扩展授权。
[0151](I)客户端Clientl在接收到应用程序访问目录A下文件fl?f4的请求后,首先获取父目录A的;inode (索引节点)。如果父目录A的;inode已经在客户端本地缓存中存在,则直接获取即可;如果父目录A的inode没有在客户端本地缓存,则向元数据服务器Server (作为元数据服务器模块I)发送请求获取目录A元数据信息,然后客户端根据获取的目录A元数据信息在缓存中建立目录A的inode。
[0152](2)然后客户端Clientl检查是否持有目录A的读取扩展授权。如果已经持有读取扩展授权,则直接使用已经持有的读取扩展授权即可;
[0153]102、客户端Clientl向元数据服务器发送获取目录A读取扩展授权请求
[0154]Clientl向元数据服务器发送获取目录A扩展授权的0PEN_RPC请求,请求中包含需要获取目录读取扩展授权的标志need_Dir_Delegation_RD_Extent为I。
[0155]103、服务器端授予Clientl目录A读取扩展授权
[0156](I) Server端接收到Clientl发送的0PEN_RPC请求后,解析请求得到need_Dir_Delegation_RD_Extent的值,确定客户端Clientl需要获取目录读取扩展授权,在目录授权链表Dir_delegation_list中检索是否存在目录A冲突授权给其他客户端。
[0157](2)如果在Dir_delegation_list中没有检索到目录A冲突授权给其他客户端,则Server端把目录A读取扩展授权给Clientl,并在Dir_delegation_list中添加记录。
[0158](3)如果在Dir_delegation_list中检索到目录A的冲突授权给其他客户端,Server首先从其他客户端召回冲突授权,然后Server把目录A读取扩展授权给Clientl,并在Dir_delegation_list中添加目录A读取扩展授权给Clientl的记录。
[0159]104、客户端Clientl记录获取的目录A读取扩展授权
[0160](I)客户端Clientl收到Server返回的目录A读取扩展授权响应后,在目录A的inode中,设置持有目录读取扩展授权的标志位Dir_Delegation_RD_Extent。
[0161](2)客户端Clientl设置目录A的读取扩展授权版本号Delegation_RD_Extent_version为客户端Clientl全局唯一的值,用以区分多次获取目录A的读取扩展授权。作为一种具体实施例,在Clientl中设置一个全局变量RD_generation,每次以RD_generation的值设置Delegation_RD_Extent_version值,并且每次设置后对RD_generation增加I。
[0162]200、客户端读取文件数据步骤
[0163]201、客户端获取文件的布局
[0164]客户端Clientl向元数据服务器发送获取文件布局的RPC请求,首先获取目录A所包含文件的布局,即描述文件数据所在物理位置的信息,例如:文件Π?f4的布局分别为块 1001、1002、1003、1005。
[0165]202、客户端读取文件内容
[0166](I)客户端Clientl在获取fl的布局块1001后,首先向匿名页缓存anoy_page_cache中查找是否存在块1001对应的page。匿名页缓存遍历anoy_page_list,检索是否存在块1001对应的page。如果块1001对应的page不存在,则返回不存在的响应结果;如果块1001对应的page存在,检查如果所述page的version与目录A的Delegation_RD_Extent_version相同,表示所述page是在客户端持有目录A的读取扩展授权的情况下获取的,保证了所述page的有效性,返回所述pagelOOl,并从匿名页缓存的anoy_page_list链表中移除所述page ;如果所述page的version与目录A的Delegation_RD_Extent_version不同,表示所述page不是在客户端持有目录A的读取扩展授权的情况下获取的,不能保证所述page的有效性,因此返回不存在的响应结果,并从匿名页缓存的anoy_page_list链表中移除所述page。
[0167](2)如果客户端Clientl从匿名页缓存中获取到文件数据所在的页1001,则直接返回给应用程序,关联到文件fI中即可。否则,客户端Clientl向数据存储设备访问驱动Blocklayoutdriver发送数据读取请求,请求数据的起始位置为块1001,把读取长度从必需的I块,扩展为包含预读块1002?1005的5 ik,即一次把块1001开始、长度为5块的数据从数据存储设备读取。
[0168](3)数据存储设备访问驱动Blocklayoutdriver从数据存储设备读取到数据内容后,首先把读取到的页1001直接返回给应用程序,并关联到文件Π ;把页1002?1005添加到匿名页缓存的anoy_page_list链表中,并设置页1002?1005的version值为目录A的 Delegation_RD_Extent_version 值。
[0169](4)当客户端ClientI访问后续的文件f2?f4时,可以直接在匿名页缓存中获取对应的页1002、页1003、页1005,直接返回给应用程序,并分别关联到文件f2?f4中。
[0170]203、匿名页缓存清除步骤
[0171](I)当客户端Clientl卸载文件系统时,清除匿名页缓存中全部的匿名页。
[0172]综上所述,本发明提供的一种基于分布式系统的数据预读装置及其方法,有效降低了小文件数据访问延迟,并且发挥了数据存储设备大粒度顺序访问的性能优势。
[0173]当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1.一种基于分布式文件系统的数据预读装置,其特征在于,所述数据预读装置包括:客户端模块、元数据服务器模块和数据存储模块: 所述客户端模块通过访问所述元数据服务器模块获取目录读取扩展授权和小文件布局,根据所述小文件布局将小文件数据和与所述小文件数据空间连续的大粒度数据同时从所述数据存储模块中预读到所述客户端模块的缓存中。
2.根据权利要求1所述基于分布式文件系统的数据预读装置,其特征在于, 所述元数据服务器模块:用于进行目录读取扩展授权的管理和小文件布局信息的维护,接收获取目录读取扩展授权和小文件布局的请求,并返回所述目录读取扩展授权和所述小文件布局; 所述数据存储模块:用于提供数据存储与访问接口,接收读取特定物理位置的访问请求,并返回数据读取内容; 所述客户端模块:用于向所述元数据服务器模块发送获取目录读取扩展授权的请求,根据获取到的所述目录读取扩展授权,所述客户端模块向所述元数据服务器模块发送获取小文件布局的请求,并根据获取到的所述小文件布局向所述数据存储模块发送数据读取请求,完成所述小文件数据和所述大粒度数据内容读取。
3.根据权利要求2所述基于分布式文件系统的数据预读装置,其特征在于,所述元数据服务器模块还包括: 目录读取扩展授权管理模块:用于接收所述客户端模块发送的所述获取目录读取扩展授权的请求,并向所述客户端授予所述目录读取扩展授权; 文件布局维护模块:用于接收所述客户端发送的小文件布局的请求,并向所述客户端应答记录维护的所述小文件布局。
4.根据权利要求2所述基于分布式文件系统的数据预读装置,其特征在于,所述客户端模块还包括: 目录读取扩展授权获取模块:用于向所述目录读取扩展授权管理模块发送获取目录读取扩展授权的请求,并在获取授权后进行记录; 文件布局获取模块:用于向所述文件布局维护模块发送获取小文件布局请求,以获取小文件布局,获取所述小文件布局后进行记录; 文件读取模块:用于根据获取的所述小文件布局,得到所述小文件数据的物理位置,进行数据读取访问; 匿名页缓存模块:用于缓存从所述数据存储设备模块中预读的数据页,所述文件读取模块在所述匿名页缓存模块中查找所需数据页,如果查找成功,则直接从所述匿名页缓存模块中取走所需数据; 数据存储设备访问驱动模块:用于访问所述数据存储设备模块,从数据存储设备的物理位置中获取数据,如果所述文件读取模块在所述匿名页缓存模块中查找数据失败,则构建大粒度连续的数据访问请求,通过所述数据存储设备访问驱动模块获取所述大粒度连续数据。
5.根据权利要求1或2所述基于分布式文件系统的数据预读装置,其特征在于,所述目录读取扩展授权用于保证所述目录包含文件的数据内容能够被授予了所述目录读取扩展授权的所述客户端进行读取,不会被其他客户端同时修改。
6.根据权利要求5所述基于分布式文件系统的数据预读装置,其特征在于,所述读取扩展授权包含版本号,所述版本号用于区分同一客户端多次对同一目录获取所述读取扩展授权。
7.一种基于分布式文件系统的数据预读方法,应用于如权利要求1-6中任一项所述的数据预读装置,所述数据预读装置包括:客户端模块、元数据服务器模块和数据存储模块,该方法包括: 获取目录读取扩展授权步骤:所述客户端模块向所述元数据服务器模块发送获取目录读取扩展授权请求,所述元数据服务器模块向所述客户端模块授予目录读取扩展授权;文件数据读取步骤:根据获取的所述目录读取扩展授权,所述客户端模块向所述元数据服务器模块发送获取小文件布局的请求,并根据获取到的所述小文件布局向所述数据存储模块发送数据读取请求,完成所述小文件数据和所述大粒度数据内容读取。
8.根据权利要求7所述基于分布式文件系统的数据预读方法,其特征在于,所述获取目录读取扩展授权步骤还包括: 授权判断步骤:所述客户端模块判断如果所述客户端模块已经具有所述元数据服务器模块授予的所述目录读取扩展授权,则直接执行所述文件数据读取步骤; 授权请求发送步骤:如果所述客户端模块不具有所述目录读取扩展授权,则所述客户端模块向所述元数据服务器模块发送所述获取目录读取扩展授权的请求; 授予授权步骤:如果所述目录读取扩展授权模块检查不存在冲突的修改授权,则授予所述客户端模块所述目录读取扩展授权,否则,等待召回冲突的授权后,对所述客户端模块进行所述目录读取扩展授权的授予; 授权记录步骤:所述客户端记录获取到的所述目录读取扩展授权。
9.根据权利要求7所述基于分布式文件系统的数据预读方法,其特征在于,所述文件数据读取步骤还包括: 文件布局信息获取步骤:用于所述客户端模块向所述元数据服务器模块发送获取小文件布局请求,获取小文件布局信息; 数据内容读取步骤:用于根据获取到的所述小文件布局信息,通过所述客户端模块向所述匿名页缓存模块进行数据读取,如果读取失败,则通过所述数据存储设备访问驱动模块向所述数据存储设备模块进行数据读取。
10.根据权利要求9所述基于分布式文件系统的数据预读方法,其特征在于,所述文件布局信息获取步骤还包括: 布局判断步骤:所述客户端模块判断如果所述客户端模块已经具有所述元数据服务器模块应答的所述小文件布局信息, 则直接执行所述数据内容读取步骤; 布局请求发送步骤:如果所述客户端模块不具有所述小文件布局信息,则所述文件布局获取模块向所述文件布局维护模块发送小文件布局请求; 布局返回步骤:所述文件布局维护模块向所述文件布局获取模块应答所述小文件布局请求,发送所述小文件布局; 布局记录步骤:所述客户端模块在缓存中记录获取到的所述小文件布局。
11.根据权利要求9所述基于分布式文件系统的数据预读方法,其特征在于,所述数据内容读取步骤还包括:匿名页缓存读取步骤:所述文件读取模块向所述匿名页缓存模块发送数据读取请求,所述匿名页缓存模块查找成功后,返回所需数据内容; 数据存储设备读取步骤:如果所述匿名页缓存模块根据所述数据读取请求查找失败,则所述数据存储设备访问驱动模块向所述数据存储设备发送数据访问请求,获取所需数据内容。
12.根据权利要求11所述基于分布式文件系统的数据预读方法,其特征在于,所述匿名页缓存读取步骤还包括: 匿名页请求步骤:所述文件读取模块根据所述文件布局信息中的数据存储设备物理位置,向所述匿名页缓存模块发送数据读取请求; 匿名页查找步骤:所述匿名页缓存模块根据所述数据读取请求进行匿名页查找,所述匿名页为不属于任何小文件的数据页;如果存在所述匿名页与所述文件布局信息中的数据存储设备物理位置相同,则查找匿名页成功; 数据信息返回步骤:如果所述匿名页查找步骤中查找匿名页不成功,则向所述文件读取模块返回匿名页缓存读取失败;如果所述匿名页查找步骤中查找匿名页成功,并且所述匿名页与所述小文件所在的目录具有相同的读取扩展授权版本号,则将所述匿名页返回给所述文件读取模块;如果所述匿名页查找步骤中查找匿名页成功,但是所述匿名页与所述小文件所在的目录具有不同的读取扩展授权版本号,则向所述文件读取模块返回匿名页缓存读取失败; 匿名页移除步骤:如果所述匿名页查找步骤中查找匿名页成功,则从所述匿名页缓存模块中移除所述匿名页。
13.根据权利要求11所述基于分布式文件系统的数据预读方法,其特征在于,所述数据存储设备读取步骤还包括: 大粒度数据请求步骤:如果所述匿名页缓存读取步骤中返回匿名页缓存读取失败,则所述文件读取模块构建大粒度连续数据访问请求; 数据存储设备数据读取请求步骤:根据所述大粒度数据请求步骤构建的大粒度连续数据访问请求,所述数据存储设备访问驱动模块向所述数据存储设备发送所述大粒度连续数据访问请求,并获取大粒度数据; 数据返回步骤:所述数据存储设备访问驱动模块将获取到的所述大粒度数据返回给所述文件读取模块后,所述文件读取模块直接获取小文件访问所需的数据页,同时把扩展粒度后获取的所述匿名页记录在匿名页缓存中,并且设置所述匿名页的版本号为所述小文件所在目录的读取扩展授权的版本号。
【文档编号】G06F17/30GK103916465SQ201410108037
【公开日】2014年7月9日 申请日期:2014年3月21日 优先权日:2014年3月21日
【发明者】张军伟, 杨洪章, 邵冰清, 郑彩平, 刘振军 申请人:中国科学院计算技术研究所, 天津中科蓝鲸信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1