一种机群系统中分片存储模式下文件读取的方法及系统转让专利

申请号 : CN200810224093.0

文献号 : CN101388824B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘岳熊劲

申请人 : 中国科学院计算技术研究所

摘要 :

本发明涉及机群系统中分片存储模式下文件读取的方法和系统,方法包括:步骤1,客户端将读请求所访问的数据的位置信息和预读状态信息封装到读请求消息中,发送给存储所述数据的存储服务器;步骤2,存储服务器根据读请求消息中位置信息和获得的存储布局信息确定被访问的数据在分片中的位置,依据读请求消息中预读状态信息完成预取操作,如果被访问的数据的结束位置为分片的结束位置,则停止预取操作;将读取的被访问的数据发送给客户端;步骤3,客户端将获得的所述被访问的数据返回给所述应用层。本发明能够使机群文件系统中,分片存储模式下,附属于同一客户端负载的多个存储服务器上相关预取操作能够协调、统一处理。

权利要求 :

1.一种机群系统中分片存储模式下文件读取的方法,包括客户端接收应用层的文件访问请求,开始读操作,其特征在于,所述方法还包括:步骤1,所述客户端将读请求所访问的数据的位置信息和预读状态信息封装到读请求消息中,发送给存储所述数据的存储服务器;

步骤2,所述存储服务器根据所述读请求消息中位置信息和获得的存储布局信息,判断所述读请求消息所访问的数据的起始位置是否为被访问的文件的一个分片的起始位置,如果是则根据所述读请求消息中的预读状态信息更新所述存储服务器对应于被访问文件的预读状态信息;根据所述读请求消息中位置信息和所述存储布局信息,判断所述读请求消息所访问的数据的结束位置是否为被访问的文件的一个分片的结束位置,如果是,则停止预取操作,否则,执行根据所述存储服务器的预读状态信息进行预取操作;通过应答消息将读取的所述被访问的数据发送给所述客户端;

步骤3,所述客户端接收所述应答消息,将获得的所述被访问的数据返回给所述应用层。

2.如权利要求1所述的机群系统中分片存储模式下文件读取的方法,其特征在于,如果所述客户端在进行所述读操作时进行顺序预取,则所述读请求所访问的数据为顺序预取请求所访问的数据,否则,所述读请求所访问的数据为文件访问请求所访问的数据,所述步骤1进一步包括:步骤21,根据被访问的文件的历史访问信息,判断是否进行顺序预取操作,如果是,执行步骤22,否则,执行步骤23;

步骤22,将所述顺序预取请求所访问的数据的位置信息和所述预读状态信息封装到读请求消息中;

步骤23,将所述文件访问请求所访问的数据的位置信息和所述预读状态信息封装到读请求消息中。

3.如权利要求1所述的机群系统中分片存储模式下文件读取的方法,其特征在于,所述预读状态信息包括预读命中信息和预读窗口大小信息。

4.如权利要求3所述的机群系统中分片存储模式下文件读取的方法,其特征在于,所述步骤2中停止预取操作进一步为将所述存储服务器对应于被访问文件的预读窗口大小设置为0,并重置所述存储服务器对应于被访问文件的预读命中信息。

5.如权利要求4所述的机群系统中分片存储模式下文件读取的方法,其特征在于,所述存储布局信息由所述存储服务器维护或者由所述客户端传送给所述存储服务器。

6.一种机群系统中分片存储模式下文件读取的系统,包括客户端和至少两个存储服务器,所述客户端用于接收应用层的文件访问请求,开始读操作,其特征在于,所述客户端,还用于将读请求所访问的数据的位置信息和预读状态信息封装到读请求消息中,发送给存储所述数据的所述存储服务器;接收所述存储服务器回复的应答消息,将所述应答消息中包含的所述读请求消息所访问的数据返回给所述应用层;

所述存储服务器,用于根据所述读请求消息中位置信息和获得的存储布局信息判断所述读请求消息所访问的数据的起始位置是否为被访问的文件的一个分片的起始位置,如果是则根据所述读请求消息中的预读状态信息更新所述存储服务器对应于被访问文件的预读状态信息;并根据所述读请求消息中位置信息和所述存储布局信息判断所述读请求消息所访问的数据的结束位置是否为被访问的文件的一个分片的结束位置,如果是,则停止预取操作,否则,根据所述存储服务器的预读状态信息进行预取操作;通过应答消息将读取的所述被访问的数据发送给所述客户端。

7.如权利要求6所述的机群系统中分片存储模式下文件读取的系统,其特征在于,如果所述客户端在进行所述读操作时进行顺序预取,则所述读请求所访问的数据为顺序预取请求所访问的数据,否则,所述读请求所访问的数据为文件访问请求所访问的数据,所述客户端进一步用于根据对被访问的文件的历史访问信息判断是否进行顺序预取操作,如果是,则将所述顺序预取请求所访问的数据的位置信息和所述预读状态信息封装到读请求消息中;否则,将所述文件访问请求所访问的数据的位置信息和所述预读状态信息封装到读请求消息中。

8.如权利要求6所述的机群系统中分片存储模式下文件读取的系统,其特征在于,所述预读状态信息包括预读命中信息和预读窗口大小信息。

9.如权利要求8所述的机群系统中分片存储模式下文件读取的系统,其特征在于,所述存储服务器进一步用于在所述读请求消息所访问的数据的结束位置是所述被访问的文件的一个分片的结束位置时,将所述存储服务器对应于被访问文件的预读窗口大小设置为

0,并重置所述存储服务器对应于被访问文件的预读命中信息。

10.如权利要求9所述的机群系统中分片存储模式下文件读取的系统,其特征在于,所述存储布局信息由所述存储服务器维护或者由所述客户端传送给所述存储服务器。

说明书 :

一种机群系统中分片存储模式下文件读取的方法及系统

技术领域

[0001] 本发明涉及计算机存储领域,尤其涉及一种机群系统中分片存储模式下文件读取的方法及系统。

背景技术

[0002] 机群(cluster)系统由互相连接的多个独立计算机所组成,该计算机可以是单机或多处理器系统,例如PC(个人计算机)、工作站或SMP(对称多处理系统),每个计算机都有自己的存储器、I/O(输入/输出)设备和操作系统。机群系统对用户和应用来说是一个单一的系统,能够提供低价高效的高性能环境和快速可靠的服务。由于机群系统具有高性价比的优势,其已成为高性能计算机的主流结构。
[0003] 在机群系统中,通常存储服务器配备有大容量的存储设备,在机群系统运作时,需要对这些存储设备进行管理。同时,机群系统还需要为不同客户端的用户提供的文件共享服务。机群文件系统为机群系统提供了上述服务,它将机群系统中的所有存储设备整合起来,建立一个统一的名字空间(文件和目录的组织结构)。各个客户端看到目录结构一致的文件系统,不同节点(客户端)的用户可以采用透明的方式访问相同的文件。机群文件系统中的数据通常不存储在本客户端的磁盘中,而是存储在存储服务器上,因而通常都会设有专用的存储服务器。以写为例,应用进程通过机群文件系统的客户端写数据时,客户端首先将数据通过网络传送到存储服务器端,存储服务器再将接收到的数据写到存储服务器的存储设备中。
[0004] 预取是一种有效提升文件系统I/O性能的优化技术。文件预取是指在使用一块数据之前预先将其从磁盘读入内存,在预取的数据被真正请求时,省去磁盘访问时间,从而有效减小I/O延迟。
[0005] 机群文件系统中,由于文件数据不是存储在客户端,而是存储在存储服务器中,存储服务器都配备有自己的CPU、内存、存储设备。因此,在客户端对文件进行顺序访问操作将会触发客户端和存储服务器端的两级预取操作。
[0006] 目前,大部分机群文件系统采用分片(stripping)的模式存储文件数据,将同一文件的数据在多个存储服务器上分片存储。采用分片存储模式,一方面可以均衡利用所有存储服务器的存储设备的存储空间;另一方面可以提升对单个文件的访问性能。在分片存储模式下,对客户端某一文件的顺序读访问,会导致该文件分片所在的多个存储服务器上的顺序读访问,也会激发多个存储服务器上的顺序预取操作。多个存储服务器上的预取实际上都附属于客户端同一负载的预取,相互间具有关联。然而,存储服务器在预取的过程中不知道客户端的预取信息或相邻分片的预取信息。预取只能在单个节点内部进行。假设文件数据在两个存储服务器上分片存储。当客户端读取到两个相邻分片A和B的交界处时,分片A所属的存储服务器会继续该存储服务器连接于分片A后的C’部分的数据进行预取。然而,该部分数据实际上不会被立即访问到,对数据C’的预取实际为无效预取。在客户端刚刚读取数据B时,分片B所在的存储服务器预读状态信息还需要重新建立,而没有利用客户端负载已有的预取信息。客户端负载的预取信息不能在多个存储服务器的相关读请求之间进行传递。
[0007] 为了提升存储服务器数据预取的效率,现有技术采用在服务器端缓存预读状态信息的策略。缓存的具体方法包括如下两种。
[0008] 方法一,网络文件系统(NFS)的存储服务器为每个正在被访问的目标文件缓存预取描述符结构。在第一次读取某一目标文件时,为其初始化一个预取描述符,并使用该预取描述符指导本次预取操作。在关闭目标文件后,存储服务器继续为该文件缓存预取描述符结构。从而,在处理该目标文件的后续读请求时,就可以直接利用缓存的预取信息来指导预取的过程。预读状态信息就可以在请求之间进行传递。客户端进程顺序读取网络文件系统中的文件时,预取描述符缓存机制可以提升文件系统的读性能。
[0009] 方法二,在存储服务器端为每个目标文件缓存打开文件描述符。由打开文件描述符可以检索到打开文件的文件(file)结构,文件结构中维护了预取描述符信息。它是通过缓存打开文件描述符来缓存预取描述符信息,从而提升文件系统的读性能。
[0010] 以上两种技术,本质上都是在存储服务器端缓存预取描述符,该类技术可以在单个存储服务器内部将附属于同一客户端负载的相关请求统一处理,在单个存储服务器内部将相关预取过程统一起来,但无法解决分片存储模式下,多个存储服务器之间相关预取的协调问题。

发明内容

[0011] 为解决上述问题,本发明提供了一种机群系统中分片存储模式下文件读取的方法及系统,用以使机群文件系统中,分片存储模式下,附属于同一客户端负载的多个存储服务器上相关预取操作能够协调、统一处理。
[0012] 本发明公开了一种机群系统中分片存储模式下文件读取的方法,包括客户端接收应用层的文件访问请求,开始读操作,所述方法还包括:
[0013] 步骤1,所述客户端将读请求所访问的数据的位置信息和预读状态信息封装到读请求消息中,发送给存储所述数据的存储服务器;
[0014] 步骤2,所述存储服务器根据所述读请求消息中位置信息和获得的存储布局信息确定被访问的数据在分片中的位置,依据所述读请求消息中预读状态信息完成预取操作,如果所述被访问的数据的结束位置为所述分片的结束位置,则停止所述预取操作;通过应答消息将读取的所述被访问的数据发送给所述客户端;
[0015] 步骤3,所述客户端接收所述应答消息,将获得的所述被访问的数据返回给所述应用层。
[0016] 如果所述客户端在进行所述读操作时进行顺序预取,则所述读请求所访问的数据为顺序预取请求所访问的数据,否则,所述读请求所访问的数据为文件访问请求所访问的数据,所述步骤1进一步包括:
[0017] 步骤21,根据所述被访问的文件的历史访问信息,判断是否进行顺序预取操作,如果是,执行步骤22,否则,执行步骤23;
[0018] 步骤22,将所述顺序预取请求所访问的数据的位置信息和所述预读状态信息封装到读请求消息中;
[0019] 步骤23,将所述文件访问请求所访问的数据的位置信息和所述预读状态信息封装到读请求消息中。
[0020] 所述步骤2中发送所述应答消息前进一步包括:
[0021] 步骤31,根据所述读请求消息中位置信息和所述存储布局信息,判断所述读请求消息所访问的数据的起始位置是否为被访问的文件的一个分片的起始位置,如果是则根据所述读请求消息中的预读状态信息更新所述存储服务器对应于被访问文件的预读状态信息;
[0022] 步骤32,根据所述读请求消息中位置信息和所述存储布局信息,判断所述读请求消息所访问的数据的结束位置是否为被访问的文件的一个分片的结束位置,如果是,则停止预取操作,否则,执行步骤33;
[0023] 步骤33,根据所述存储服务器的预读状态信息进行预取操作。
[0024] 所述预读状态信息包括预读命中信息和预读窗口大小信息。
[0025] 所述步骤32中停止预取操作进一步为将所述存储服务器对应于被访问文件的预读窗口大小设置为0,并重置所述存储服务器对应于被访问文件的预读命中信息。
[0026] 所述存储布局信息由所述存储服务器维护或者由所述客户端传送给所述存储服务器。
[0027] 本发明还公开了一种机群系统中分片存储模式下文件读取的系统,包括客户端和至少两个存储服务器,所述客户端用于接收应用层的文件访问请求,开始读操作,[0028] 所述客户端,还用于将读请求所访问的数据的位置信息和预读状态信息封装到读请求消息中,发送给存储所述数据的所述存储服务器;接收所述存储服务器回复的应答消息,将所述应答消息中包含的所述读请求消息所访问的数据返回给所述应用层;
[0029] 所述存储服务器,用于根据所述读请求消息中位置信息和获得的存储布局信息确定被访问的数据在分片中的位置,依据所述读请求消息中预读状态信息完成预取操作,如果所述被访问的数据的结束位置为所述分片的结束位置,则停止所述预取操作;通过应答消息将读取的所述被访问的数据发送给所述客户端。
[0030] 如果所述客户端在进行所述读操作时进行顺序预取,则所述读请求所访问的数据为顺序预取请求所访问的数据,否则,所述读请求所访问的数据为文件访问请求所访问的数据,
[0031] 所述客户端进一步用于根据对所述被访问的文件的历史访问信息判断是否进行顺序预取操作,如果是,则将所述顺序预取请求所访问的数据的位置信息和所述预读状态信息封装到读请求消息中;否则,将所述文件访问请求所访问的数据的位置信息和所述预读状态信息封装到读请求消息中。
[0032] 所述存储服务器进一步用于在发送所述应答消息前根据所述读请求消息中位置信息和所述存储布局信息判断所述读请求消息所访问的数据的起始位置是否为被访问的文件的一个分片的起始位置,如果是则根据所述读请求消息中的预读状态信息更新所述存储服务器对应于被访问文件的预读状态信息;并根据所述读请求消息中位置信息和所述存储布局信息判断所述读请求消息所访问的数据的结束位置是否为被访问的文件的一个分片的结束位置,如果是,则停止预取操作,否则,根据所述存储服务器的预读状态信息进行预取操作。
[0033] 所述预读状态信息包括预读命中信息和预读窗口大小信息。
[0034] 所述存储服务器进一步用于在所述读请求消息所访问的数据的结束位置是所述被访问的文件的一个分片的结束位置时,将所述存储服务器对应于被访问文件的预读窗口大小设置为0,并重置所述存储服务器对应于被访问文件的预读命中信息。
[0035] 所述存储布局信息由所述存储服务器维护或者由所述客户端传送给所述存储服务器。
[0036] 本发明的有益效果在于,通过将客户端预读状态信息在多个存储服务器间连续传递,能够将多服务节点上相关预取操作协调统一地处理,提升存储服务器预取的效率。

附图说明

[0037] 图1是本发明机群系统中分片存储模式下文件读取的系统结构图;
[0038] 图2是本发明机群系统中分片存储模式下文件读取的方法流程图;
[0039] 图3是本发明机群系统中分片存储模式下文件读取的方法中客户端发送读请求消息流程图;
[0040] 图4是本发明机群系统中分片存储模式下文件读取的方法中存储服务器进行预取操作的流程图;
[0041] 图5是本发明机群系统中分片存储模式下文件读取的方法在客户端访问分片边界时的处理示意图。

具体实施方式

[0042] 下面结合附图,对本发明做进一步的详细描述。
[0043] 本发明的系统结构如图1所示。
[0044] 本发明的系统包括客户端101和至少两个存储服务器102。机群文件系统中经常会将文件数据以分片的模式存储在多个服务器中,所以,一般情况下,包括两个或两个以上的存储服务器。
[0045] 客户端101用于接收应用层的文件访问请求,开始读操作。
[0046] 客户端101还用于将读请求所访问的数据的位置信息和预读状态信息封装到读请求消息中,将读请求消息发送给存储该数据的存储服务器。
[0047] 预读状态信息包括预读命中信息和预读窗口大小信息。
[0048] 如果客户端101在进行所述读操作时进行顺序预取,则读请求所访问的数据为顺序预取请求所访问的数据,否则,读请求所访问的数据为文件访问请求所访问的数据。
[0049] 客户端101根据对被访问的文件的历史访问信息判断是否进行顺序预取操作,如果是,则将顺序预取请求所访问的数据的位置信息和预读状态信息封装到读请求消息中;否则,将文件访问请求所访问的数据的位置信息和预读状态信息封装到读请求消息中。
[0050] 客户端101还用于接收存储服务器102回复的应答消息,将应答消息中包含的被访问的数据返回给应用层。
[0051] 存储服务器102,用于根据读请求消息中位置信息和获得的存储布局信息确定被访问的数据在分片中的位置,依据读请求消息中的预读状态信息进行预取操作,如果被访问的数据的结束位置为分片的结束位置,则停止预取操作,通过应答消息将读取的被访问的数据发送给所述客户端101。
[0052] 存储布局信息由存储服务器102维护或者由客户端101传送给存储服务器102。
[0053] 存储服务器102根据存储布局信息判断读请求消息所访问的数据的起始位置是否为被访问的文件的一个分片的起始位置,如果是则根据读请求消息中的预读状态信息更新存储服务器102对应于被访问文件的预读状态信息;并根据存储布局信息判断读请求消息所访问的数据的结束位置是否为被访问的文件的一个分片的结束位置,如果是,则停止预取操作,将存储服务器102对应于被访问文件的预读窗口大小设置为0,并重置存储服务器102对应于被访问文件的预读命中信息,否则,根据存储服务器102的预读状态信息进行预取操作。
[0054] 本发明的方法流程如图2所示。
[0055] 客户端接收应用层的文件访问请求,执行如下步骤。
[0056] 步骤S201,客户端将读请求所访问的数据的位置信息和预读状态信息封装到读请求消息中,将读请求消息发送给存储数据的存储服务器。
[0057] 如果客户端在进行所述读操作时进行顺序预取,则读请求所访问的数据为顺序预取请求所访问的数据,否则,读请求所访问的数据为文件访问请求所访问的数据。
[0058] 所述步骤S201的具体实施方式如图3所示。
[0059] 步骤S301,根据对被访问的文件的历史访问信息判断是否进行顺序预取操作,如果是,执行步骤S302,否则,执行步骤S303。
[0060] 判断方法为,检查最近预设次数的访问是否为顺序访问,如果是,则进行顺序预取;否则,不进行顺序预取。
[0061] 步骤S302,将顺序预取请求所访问的数据的位置和预读状态信息封装到读请求消息中。
[0062] 步骤S303,将文件访问请求所访问的数据的位置和预读状态信息封装到读请求消息中。
[0063] 步骤S304,将封装后的读请求消息发送给存储数据的存储服务器。
[0064] 步骤S202,存储服务器根据读请求消息中的预读状态信息和位置信息以及获得的存储布局信息进行预取操作,通过应答消息将被访问的数据发送给客户端。
[0065] 存储布局信息由存储服务器维护或者由客户端传送给存储服务器。
[0066] 所述步骤S202的具体实施方式如图4所示。
[0067] 步骤S401,根据存储布局信息判断读请求消息所访问的数据的起始位置是否为被访问的文件的一个分片的起始位置,如果是,则执行步骤S402,否则,执行步骤S403。
[0068] 本实施例的判断方法为,已知读请求消息所访问的数据的起始位置和被访问文件的分片大小,判断读请求消息所访问的数据的起始位置除以被访问文件的分片大小的余数是否为0,如果为0,则读请求消息所访问的数据的起始位置为被访问的文件的一个分片的起始位置,否则,读请求消息所访问的数据的起始位置不为被访问的文件的一个分片的起始位置。
[0069] 步骤S402,根据读请求消息中的预读状态信息调整存储服务器对应于被访问文件的预读状态信息,执行步骤S403。预读状态信息包括预读命中信息和预读窗口大小信息。所述调整为按比例设定预读窗口大小和预读命中信息。
[0070] 步骤S403,根据存储布局信息判断读请求消息所访问的数据的结束位置是否为被访问的文件的一个分片的结束位置,如果是,执行步骤S404,否则,执行步骤S405。
[0071] 已知读请求消息所访问的数据的结束位置为req_end,被访问的文件分片的大小为stripe_size,判断req_end加1的和除以stripe_size的余数是否为0,如果是,则读请求消息所访问的数据的结束位置为被访问的文件的一个分片的结束位置,否则,读请求消息所访问的数据的结束位置不为被访问的文件的一个分片的结束位置。
[0072] 步骤S404,将对应于被访问文件的预读窗口大小设置为0,同时重置对应于被访问文件的预读命中信息,以停止预取操作,执行步骤S406。
[0073] 步骤S405,根据存储服务器的当前的预读状态信息进行预取操作,执行步骤S406。
[0074] 步骤S406,从存储磁盘中读取读请求消息所访问的数据,并将读取的数据封装到应答消息中。
[0075] 步骤S407,向客户端发送应答消息。
[0076] 步骤S203,客户端接收应答消息,将被访问的数据返回给应用层。
[0077] 在客户端访问分片边界时本发明方法处理过程如图5所示。
[0078] 在图5中文件数据在存储服务器1和存储服务器2上分片存储。当客户端请求所访问的数据到达分片A和B的边界处时,分片A所在的存储服务器1能够计算出本次请求所访问的数据的结束位置为分片结束位置,将预读窗口大小设置为0,并重置预读命中信息,以停止对目标文件1的预取。客户端自身的预取机制则提前触发对分片B数据的预取操作,向存储服务器2发出读请求消息。存储服务器2直接根据客户端传来的读请求消息中的预读状态信息更新对目标文件2访问的预读状态信息。包括按比例设定预读窗口大小以及预读命中信息。从而,预读状态信息可以在同一文件多个分片所在存储服务器间传递。
[0079] 本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。