文件存储方法、装置、访问客户端及元数据服务器系统的制作方法
【专利摘要】本发明实施例提供文件存储方法、装置、访问客户端及元数据服务器系统。所述方法包括:确定至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息;向文件访问客户端发送所述存储位置信息,使得所述文件访问客户端能够根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。本发明实施例避免了文件访问服务器存储介质的碎片的不必要增加。
【专利说明】文件存储方法、装置、访问客户端及元数据服务器系统
【技术领域】
[0001]本发明实施例涉及云存储领域,尤其涉及文件存储方法、装置、访问客户端及元数据服务器系统。
【背景技术】
[0002]多副本式分布式文件系统(DFS)是将文件分为若干CHUNK并将多份拷贝存储在不同的服务器上,为了能够在云存储领域适用于更广泛的应用场景,DFS必须能够支持各种大小的文件的存储,小到只有几个字节的文件,大到几十千兆字节都应该支持,并且存储性能不应存在差异,但是,按照现有机制,无论文件多小,文件访问服务器都会将其单独存储到磁盘上的一个副本中,从而在文件访问服务器不只一个这种文件时,不必要地增加了磁盘碎片。
【发明内容】
[0003]有鉴于此,本发明实施例的目的是提供文件存储方法、装置、访问客户端及元数据服务器系统,以避免文件访问服务器存储介质的碎片的不必要增加。
[0004]为解决上述技术问题,本发明实施例提供方案如下:
[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]图1为本发明实施例一提供的一种文件存储方法的步骤流程图;
[0041]图2为本发明实施例二提供的另一种文件存储方法的步骤流程图;
[0042]图3为优选实施方式的小文件聚合示意图;
[0043]图4为优选实施方式的小文件聚合写的流程示意图;
[0044]图5为优选实施方式的小文件聚合读的流程示意图。
【具体实施方式】
[0045]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明实施例进行详细描述。
[0046]本发明实施例一提供一种文件存储方法,所述方法包括如下步骤:
[0047]步骤101,确定至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息;
[0048]步骤102,向文件访问客户端发送所述存储位置信息,使得所述文件访问客户端能够根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。
[0049]所述方法可以用于一元数据服务器系统。
[0050]可见,通过上述方式,从而支持不同文件存储在同一副本中,与现有技术中不同文件不能存储在同一副本中相比,避免了文件访问服务器存储介质的碎片的不必要增加。
[0051]其中,所述副本可以位于所述文件访问服务器的一存储介质上。
[0052]所述存储介质例如:磁盘。
[0053]所述副本位置信息包括:所述文件访问服务器标识和所述文件访问服务器中的存储介质标识。其中,所述文件访问服务器标识例如:文件访问服务器的IP:10.47.107.111 ;存储介质标识例如:文件访问服务器的IP:10.47.107.111。
[0054]在本发明实施例一中,所述至少两个文件的大小之和不大于所述副本大小。优选的,所述至少两个文件中每个文件的大小均不大于所述文件访问客户端中的共享缓存页(PAGE)大小。
[0055]在本发明实施例一中,所述副本位置可以与一副本句柄对应,具体地,所述副本位置可以由所述元数据服务器系统根据所述副本句柄确定;所述副本句柄可以为所述元数据服务器系统根据所述至少两个文件中的第一文件的文件名分配得到。所述第一文件可以为所述至少两个文件中的任一文件;或者,考虑到所述文件访问客户端为所述至少两个文件中的每个文件分别向所述元数据服务器系统发送打开文件请求,所述第一文件也可以为所述元数据服务器系统首次从所述文件访问客户端接收到的打开文件请求所针对的文件。
[0056]进一步地,所述元数据服务器系统可以包括元数据管理服务器和多个元数据存储服务器,则所述副本句柄具体可以由所述元数据管理服务器分配得到,所述副本位置具体可以由所述多个元数据存储服务器中的第一元数据存储服务器根据所述副本句柄确定,所述第一元数据存储服务器可以由所述元数据管理服务器根据所述第一文件的文件名从所述多个元数据存储服务器中选择得到。
[0057]在本发明实施例一中,所述至少两个文件各自在所述副本中的偏移位置不同。这里的偏移位置是指文件在所述副本中存放的位置,该位置中的起始位置与所述副本的起始位置相比,可以重合或者存在偏移。则所述至少两个文件中每个文件在所述副本中的偏移位置信息包括:该每个文件在所述副本中存放的起始位置与所述副本的起始位置之间相差的偏移大小信息,例如,字节数目或比特数目,PAGE大小及数目,或者,在所述至少两个文件中每个文件的大小均不大于PAGE大小的情况下的PAGE数目,等等。
[0058]所述至少两个文件各自在所述副本中的偏移位置信息可以通过如下方式确定:
[0059]< 方式一 >
[0060]方式一为基于时序的方式。
[0061]在方式一中,考虑到所述元数据服务器系统依次从所述文件访问客户端接收到打开文件请求的情形,这些打开文件请求的数目与所述至少两个文件的数目相同,这些打开文件请求与所述至少两个文件一一对应,则所述元数据服务器系统从所述副本位置的起始位置开始,按照接收打开文件请求的次序依次为所述至少两个文件中打开文件请求所对应的文件分配偏移位置。
[0062]具体地,例如:为最先接收到的打开文件请求对应的文件分配的偏移位置为所述副本位置的起始位置,为第二个接收到的打开文件请求对应的文件分配的偏移位置与所述副本的起始位置相差一个共享缓存页大小,为第三个接收到的打开文件请求对应的文件分配的偏移位置与所述副本的起始位置相差两个共享缓存页大小,依次类推。
[0063]< 方式二 >
[0064]方式二为基于文件名中序号的方式。
[0065]在方式二中,可按照一定的大小顺序,根据文件名中包含的序号来分配多个文件各自的偏移位置。
[0066]例如,所述元数据服务器系统从所述文件访问客户端接收到三个打开文件请求,分别针对文件名为010的文件、文件名为001的文件和文件名为003的文件,则可以按照序号由小到大的顺序为这三个文件分别偏移位置,为文件名为001的文件分配的偏移位置为所述副本位置的起始位置,为文件名为003的文件分配的偏移位置与所述副本的起始位置相差一个共享缓存页大小,为文件名为010的文件分配的偏移位置与所述副本的起始位置相差两个共享缓存页大小。
[0067]又例如,所述元数据服务器系统从所述文件访问客户端接收到三个打开文件请求,分别针对文件名为112的文件、文件名为111的文件和文件名为113的文件,则可以按照序号由大到小的顺序为这三个文件分别偏移位置,为文件名为113的文件分配的偏移位置为所述副本位置的起始位置,为文件名为112的文件分配的偏移位置与所述副本的起始位置相差一个共享缓存页大小,为文件名为111的文件分配的偏移位置与所述副本的起始位置相差两个共享缓存页大小。
[0068]方式二更适用于有固定文件名的场合,文件名中有一系列连续的序号,比如系统可以将3个文件放到一个副本,文件001、文件002以及文件003会放在一起,偏移位置分别为无偏移,一个共享缓存页大小,两个共享缓存页大小;再比如文件010、文件011以及文件012也在同一个副本里,偏移位置分别为无偏移,一个共享缓存页大小,两个共享缓存页大小。
[0069]在本发明实施例一中,为了减少存储介质1PS资源的不必要消耗,所述使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置具体可以包括:
[0070]使所述文件访问服务器能够将所述至少两个文件写入一个缓存块并在所述文件写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述至少两个文件分别存储在所述至少两个文件各自在所述副本中的偏移位置。
[0071]在本发明实施例一中,为了与现有的文件访问客户端到文件访问服务器的文件写入机制兼容,从而减少本发明实施例的实现成本和复杂度,所述根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置具体可以包括:
[0072]针对所述至少两个文件中的每个文件,根据所述副本位置信息和所述每个文件在所述副本中的偏移位置信息,将缓存有所述每个文件的共享内存页写入所述文件访问服务器的缓存块,使所述文件访问服务器能够在所述写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述每个文件存储在所述每个文件在所述副本中的偏移位置。
[0073]其中,考虑到所述至少两个文件中的不同文件的写入时间可能相差较大,可以有:缓存有不同文件的共享内存页被写入的缓存块不同,并且不同缓存块被写入所述副本中的时间也不同。或者,为了减少存储介质1PS资源的不必要消耗,缓存有不同文件的共享内存页被写入的缓存块也可以为同一缓存块。
[0074]在本发明实施例一中,为了支持所述副本中文件的读取,所述方法还可以包括:
[0075]记录所述至少两个文件中每个文件的文件名、所述副本位置信息和所述至少两个文件各自在所述副本中的偏移位置信息的对应关系;
[0076]接收所述文件访问客户端发送的请求读取的所述至少两个文件中的待读取文件的文件名;
[0077]根据所述对应关系和所述待读取文件的文件名,确定第一信息;其中,所述第一信息包括所述副本位置信息和所述待读取文件在所述副本中的偏移位置信息;
[0078]向所述文件访问客户端发送所述第一信息,使得所述文件访问客户端能够根据所述第一信息,与所述文件访问服务器交互,从所述文件访问服务器读取出所述第一文件。
[0079]与本发明实施例一提供的一种文件存储方法对应,本发明实施例二提供另一种文件存储方法,所述方法包括如下步骤:
[0080]步骤201,接收一元数据服务器系统发送的至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息;所述存储位置信息由所述元数据服务器系统确定;
[0081]步骤202,根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。
[0082]所述方法用于一文件访问客户端。
[0083]可见,通过上述方式,从而支持不同文件存储在同一副本中,与现有技术中不同文件不能存储在同一副本中相比,避免了文件访问服务器存储介质的碎片的不必要增加。
[0084]在本发明实施例二中,为了减少存储介质1PS资源的不必要消耗,所述使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置具体可以包括:
[0085]使所述文件访问服务器能够将所述至少两个文件写入一个缓存块并在所述文件写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述至少两个文件分别存储在所述至少两个文件各自在所述副本中的偏移位置。
[0086]在本发明实施例二中,为了与现有的文件访问客户端到文件访问服务器的文件写入机制兼容,从而减少本发明实施例的实现成本和复杂度,所述根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置具体可以包括:
[0087]针对所述至少两个文件中的每个文件,根据所述副本位置信息和所述每个文件在所述副本中的偏移位置信息,将缓存有所述每个文件的共享内存页写入所述文件访问服务器的缓存块,使所述文件访问服务器能够在所述写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述每个文件存储在所述每个文件在所述副本中的偏移位置。
[0088]在本发明实施例二中,为了支持所述副本中文件的读取,所述方法还可以包括:
[0089]向所述元数据服务器系统发送请求读取的所述至少两个文件中的待读取文件的文件名;
[0090]接收所述元数据服务器系统发送的第一信息;其中,所述第一信息包括所述副本位置信息和所述待读取文件在所述副本中的偏移位置信息;所述第一信息由所述元数据服务器系统根据所述至少两个文件中每个文件的文件名、所述副本位置信息和所述至少两个文件各自在所述副本中的偏移位置信息的对应关系和所述待读取文件的文件名确定;所述对应关系由所述元数据服务器系统记录;
[0091]根据所述第一信息,与所述文件访问服务器交互,从所述文件访问服务器读取出所述第一文件。
[0092]需要说明的是,由于本发明实施例二提供的另一种文件存储方法与本发明实施例一提供的一种文件存储方法对应,则上述针对该另一种文件存储方法阐述的内容中所涉及的术语及技术手段的具体含意,均可参照本发明实施例一中阐述的术语及技术手段的具体含意,为节约篇幅,在此不再赘述。
[0093]<优选实施方式>
[0094]为了将本发明实施例一和本发明实施例二提供的相互对应的两种文件存储方法阐述得更加清楚明白,下面提供该两种文件存储方法的优选实施方式:一种多副本式分布式文件系统(DFS)的小文件聚合实现。
[0095]在本优选实施方式中,所述文件访问客户端(File Access Client,FAC):负责DFS面向的应用程序提供类似于标准文件系统的接口调用服务,对于应用层的读写数据是以页(PAGE)大小进行管理的。
[0096]所述元数据服务器系统:负责管理DFS所有文件的文件名、副本信息等元数据信息,存在数据库中,并向文件访问客户端提供元数据写入和查询等操作。所述元数据服务器系统包括元数据管理服务器和多个元数据存储服务器。
[0097]所述文件访问服务器(File Access Server, FAS):负责以缓存块为单位与其自身的存储介质交互,进行缓存块的读写操作,其中,FAS对数据是以缓存块(BLK)大小进行管理的;响应所述文件访问客户端的数据读写请求,从存储介质上读取数据并返回给所述文件访问客户端;从所述文件访问客户端读取数据并写入存储介质;
[0098]存储介质:一般为普通的SCIC磁盘或SATA磁盘,CHUNK实际存储的地方,CHUNK最小为一个BLK大小,最大值可设定,并且以BLK大小为粒度增长。
[0099]所述至少两个文件中每个文件均为小文件。这里的小文件是指大小不大于一个PAGE的大小的文件。PAGE的大小可设置,所述一个CHUNK的聚合度为BLK大小/PAGE大小,比如PAGE大小=32K,BLK大小=1024Κ,则所述一个CHUNK中聚合的文件个数为1024/32=32。
[0100]现有技术中一个小文件对应一个PAGE,一个BLK,在磁盘上对应一个副本;而在本优选实施方式中,聚合之后,多个PAGE可对应同一个BLK,多个PAGE对应同一个副本。
[0101]文件在所述副本中存放的起始位置与所述副本的起始位置之间相差的偏移大小信息为PAGE数目。
[0102]下面以聚合度为3为例,结合图3说明小文件聚合过程。如图3所示,所述至少两个文件包括文件FILE#001、文件FILE#002和文件FILE#003。
[0103]在创建文件FILE#001时,FAC将承载了 FILE#001的PAGE#1写入FAS的一个BLK(FAS_BLK#1)的第一个1/3缓存空间处;PAGE#1写入完成后,在创建文件FILE#002时,FAC将承载了 FILE#002的PAGE#2写入FAS_BLK#1的第二个1/3缓存空间处;PAGE#2写入完成后,在创建文件FILE#003时,FAC将承载了 FILE#003的PAGE#3写入FAS_BLK#1的第三个1/3缓存空间处。
[0104]在PAGE#3写入完成后,FAS刷自身的缓存块FAS_BLK# I (即将FAS_BLK# I中的数据写入到磁盘上的一个副本FAS_BLK#1_CHKFILE中)。则刷完后,文件FILE#001、文件FILE#002和文件FILE#003就存储在各自在该副本中的偏移位置,其中,文件FILE#001在该副本中存放的起始位置为该副本的起始位置,对应的偏移位置为O ;文件FILE#002在该副本中存放的起始位置与该副本的起始位置相差一个PAGE大小,对应的偏移位置为I ;文件FILE#003在该副本中存放的起始位置与该副本的起始位置相差两个PAGE大小,对应的偏移位置为2。
[0105]由此可见,本优选实施方式通过将一定数量的小于一个PAGE大小的文件在文件访问服务器上存放在同一个BLK,在磁盘上存放在同一个CHUNK中,一方面,在小文件数目较多且一定的情况下,与现有技术相比,大量减少了存储在磁盘上的CHUNK数目,有效减少了磁盘的碎片,节省了一定的磁盘空间并提高了磁盘的整体读写性能;另一方面,多个小文件在应用层的读写只需要发生一次磁盘10,与现有技术要发生多次磁盘1相比,减少了磁盘有限的1PS能力对应用层读写的1PS的限制,相应地也就提高了应用层的10PS。此外,元数据中CHUNK文件的副本位置信息,即副本所在的文件访问服务器以及所在卷信息等,也大为减少。
[0106]在本优选实施方式中,具体地,元数据存储服务器中的副本信息中可以增加聚合度大小的位图,记录文件对应的PAGE数目信息。例如,对于上述聚合度为3的例子,文件FILE#001的偏移为0,位图为001 (二进制);文件FILE#002的偏移为1,位图为010 (二进制);文件FILE#002的偏移为2,位图为100 (二进制)。再以聚合度为8为例,对应PAGE数目为O的文件的偏移为0,位图为00000001 (二进制);对应PAGE数目为2的文件的偏移为3,位图为00001000 (二进制);对应PAGE数目为6的文件的偏移为7,位图为10000000 (二进制)。
[0107]以聚合度为8为例,页大小为32k,blk大小为256k,比如新写入一个文件file003,大小lk,满足小文件聚合的条件(大小小于一个页大小),去元数据管理服务器打开文件的时候,会根据是第几个小文件来确认偏移。
[0108]下面分别以文件写入流程和读取流程为例说明小文件聚合的过程。
[0109]图4为本优选实施方式的小文件聚合写的流程示意图,参照图4,小文件聚合写的流程包括:
[0110]401,应用层向文件访问客户端发起的打开文件请求。
[0111]402,文件访问客户端向元数据管理服务器发起打开文件请求(带文件名与创建标志),数据库根据文件名确定该文件所属的元数据存储服务器以及该文件所属的副本句柄和在副本内的偏移位置信息。同一个副本内的多个文件归属于同一个元数据存储服务器。
[0112]403,文件访问客户端收到元数据管理服务器的回应后,如果给的副本句柄不为0,将副本句柄与偏移位置信息记录在文件访问客户端的文件管理全局结构中。
[0113]404,文件访问客户端到对应的元数据存储服务器上打开文件,元数据存储服务器给文件访问客户端回应答,文件访问客户端收到应答后给应用层回应。
[0114]405,应用层给文件访问客户端发写请求,文件访问客户端收到写请求后,先判断文件管理全局结构中记录的副本句柄是否为0,如果不为0,则用该副本句柄向元数据存储服务器发获取副本位置的请求,如果为0,则利用自身文件标识加上计算得到的写入的页所在副本序列号生成的副本句柄向元数据存储服务器发获取副本位置的请求。
[0115]406,元数据存储服务器收到请求后,从数据库获取副本位置,返回给文件访问客户端。
[0116]407,文件访问客户端收到元数据存储服务器的副本位置后,将应用层的数据写入文件访问客户端的共享内存页,并给应用层回应。
[0117]408,文件访问客户端的写线程将共享内存页根据副本句柄与偏移位置信息写入到文件访问服务器。
[0118]其中,由于文件为小文件,可以缓存在一个PAGE中,则文件访问客户端可以重用现有的将文件数据写入文件访问服务器的机制来进行不同小文件数据的写入。具体地,FAC只需将不同小文件的数据当作同一文件在不同PAGE中缓存的数据来进行写入操作即可。由此,本优选实施方式不需要改动现有的文件访问服务器,节约了云服务系统的升级成本。
[0119]对于文件访问服务器来说,如果缓存块未命中,则申请新的缓存块,将数据页写入缓冲块中,在刷入磁盘前多个文件的数据写入同一个缓存块,最后存储在磁盘上的同一个副本中。
[0120]409,应用层发关闭请求,文件访问客户端回应。
[0121]图5为本优选实施方式的小文件聚合读的流程示意图,参照图5,小文件聚合读的流程包括如下步骤:
[0122]501,应用层向文件访问客户端发起打开文件请求。
[0123]502,文件访问客户端向元数据管理服务器发起打开文件请求,数据库根据文件名确定该文件所属的元数据存储服务器以及该文件所属的副本和在副本内的偏移位置信息。同一个副本内的多个文件归属于同一个元数据存储服务器。
[0124]503,文件访问客户端收到元数据存储服务器的回应后,如果给的副本句柄不为0,将副本句柄与偏移记录在文件管理全局结构中。
[0125]504,文件访问客户端到元数据存储服务器上打开文件,元数据存储服务器给文件访问客户端回应,文件访问客户端收到应答后给应用层回应。
[0126]505,应用层给文件访问客户端发读请求,文件访问客户端收到读请求后,先判断文件管理全局结构中记录的副本句柄是否为0,如果不为0,则用该副本句柄向元数据存储服务器发获取副本位置的请求,如果为0,则利用自身文件标识加上计算得到的写入的页所在副本序列号生成的副本句柄向元数据存储服务器发获取副本位置的请求。
[0127]506,元数据存储服务器收到请求后,从数据库获取副本位置信息,返回给文件访问客户端。
[0128]507,文件访问客户端收到元数据存储服务器的副本位置信息后,首先,根据副本位置信息与偏移位置信息去文件访问客户端的共享内存读取,判断是否有与偏移位置信息对应的PAGE,命中则返回该PAGE中的文件给应用层,没有的话,继续向文件访问服务器缓存块读取,命中则返回,没有的话去磁盘读相应的副本,一个副本存储多个文件的数据,读上一个缓存块数据,下次读另一个文件则可能直接命中缓存,无需到磁盘读,其中,到缓存块中读数据始终在缓存块的起始位置读。
[0129]508,文件访问客户端将磁盘读上的缓存块数据读入文件访问服务器的缓存,并且将与偏移位置信息对应的PAGE读入文件访问客户端的共享内存中,并返回给应用层。
[0130]可见,本优选实施方式中,由于文件访问客户端是按照读取PAGE的方式来读取小文件,因而不需要改动现有的文件访问服务器,节约了云服务系统的升级成本。
[0131]509,应用层发关闭请求,文件访问客户端回应。
[0132]优选的,本优选实施方式用于小文件存储较多或者只存储小文件的应用场合。
[0133]需要说明的是,本优选实施方式亦适用于其它基于副本进行文件存储的分布式文件系统。
[0134]本发明实施例三提供一种文件存储装置,用于一元数据服务器系统,所述装置包括:
[0135]确定模块,确定至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息;
[0136]发送模块,用于向文件访问客户端发送所述存储位置信息,使得所述文件访问客户端能够根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。
[0137]可见,通过上述方式,从而支持不同文件存储在同一副本中,与现有技术中不同文件不能存储在同一副本中相比,避免了文件访问服务器存储介质的碎片的不必要增加。
[0138]在本发明实施例三中,所述发送模块具体可以包括:
[0139]发送单元,用于向所述文件访问客户端发送存储位置信息,使得所述文件访问客户端能够根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件写入一个缓存块并在所述文件写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述至少两个文件分别存储在所述至少两个文件各自在所述副本中的偏移位置。
[0140]需要说明的是,本发明实施例三为装置实施例,与本发明实施例一(为方法实施例)相对应,在本发明实施例三中未详细描述的部分参照本发明实施例一中相关部分的描述即可,为节约篇幅,在此不再赘述。
[0141]本发明实施例四提供另一种文件存储装置,用于一文件访问客户端,所述装置包括:
[0142]接收模块,用于接收一元数据服务器系统发送的至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息;所述存储位置信息由所述元数据服务器系统确定;
[0143]交互模块,用于根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。
[0144]可见,通过上述方式,从而支持不同文件存储在同一副本中,与现有技术中不同文件不能存储在同一副本中相比,避免了文件访问服务器存储介质的碎片的不必要增加。
[0145]在本发明实施例四中,所述交互模块具体可以包括:
[0146]交互单元,用于针对所述至少两个文件中的每个文件,根据所述副本位置信息和所述每个文件在所述副本中的偏移位置信息,将缓存有所述每个文件的共享内存页写入所述文件访问服务器的缓存块,使所述文件访问服务器能够在所述写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述每个文件存储在所述每个文件在所述副本中的偏移位置。
[0147]需要说明的是,本发明实施例四为装置实施例,与本发明实施例二 (为方法实施例)相对应,在本发明实施例四中未详细描述的部分参照本发明实施例一、二中相关部分的描述即可,为节约篇幅,在此不再赘述。
[0148]本发明实施例五提供一种元数据服务器系统,所述元数据服务器系统包括本发明实施例三提供的一种文件存储装置。
[0149]本发明实施例六提供一种文件访问客户端,所述文件访问客户端包括本发明实施例四提供的另一种文件存储装置。
[0150]以上所述仅是本发明实施例的实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明实施例原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明实施例的保护范围。
【权利要求】
1.一种文件存储方法,用于一元数据服务器系统,其特征在于,所述方法包括: 确定至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息; 向文件访问客户端发送所述存储位置信息,使得所述文件访问客户端能够根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。
2.如权利要求1所述的方法,其特征在于,所述使所述文件访问服务器能够将所述至少两个文件分别存储到所述至 少两个文件各自在所述副本中的偏移位置具体包括: 使所述文件访问服务器能够将所述至少两个文件写入一个缓存块并在所述文件写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述至少两个文件分别存储在所述至少两个文件各自在所述副本中的偏移位置。
3.如权利要求1所述的方法,其特征在于,所述方法还包括: 记录所述至少两个文件中每个文件的文件名、所述副本位置信息和所述至少两个文件各自在所述副本中的偏移位置信息的对应关系; 接收所述文件访问客户端发送的请求读取的所述至少两个文件中的待读取文件的文件名; 根据所述对应关系和所述待读取文件的文件名,确定第一信息;其中,所述第一信息包括所述副本位置信息和所述待读取文件在所述副本中的偏移位置信息; 向所述文件访问客户端发送所述第一信息,使得所述文件访问客户端能够根据所述第一信息,与所述文件访问服务器交互,从所述文件访问服务器读取出所述第一文件。
4.一种文件存储方法,用于一文件访问客户端,其特征在于,所述方法包括: 接收一元数据服务器系统发送的至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息;所述存储位置信息由所述元数据服务器系统确定; 根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。
5.如权利要求4所述的方法,其特征在于,所述使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置具体包括: 使所述文件访问服务器能够将所述至少两个文件写入一个缓存块并在所述文件写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述至少两个文件分别存储在所述至少两个文件各自在所述副本中的偏移位置。
6.如权利要求4所述的方法,其特征在于,所述根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置具体包括: 针对所述至少两个文件中的每个文件,根据所述副本位置信息和所述每个文件在所述副本中的偏移位置信息,将缓存有所述每个文件的共享内存页写入所述文件访问服务器的缓存块,使所述文件访问服务器能够在所述写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述每个文件存储在所述每个文件在所述副本中的偏移位置。
7.如权利要求4所述的方法,其特征在于,所述方法还包括: 向所述元数据服务器系统发送请求读取的所述至少两个文件中的待读取文件的文件名; 接收所述元数据服务器系统发送的第一信息;其中,所述第一信息包括所述副本位置信息和所述待读取文件在所述副本中的偏移位置信息;所述第一信息由所述元数据服务器系统根据所述至少两个文件中每个文件的文件名、所述副本位置信息和所述至少两个文件各自在所述副本中的偏移位置信息的对应关系和所述待读取文件的文件名确定;所述对应关系由所述元数据服务器系统记录; 根据所述第一信息,与所述文件访问服务器交互,从所述文件访问服务器读取出所述第一文件。
8.一种文件存储装置,用于一元数据服务器系统,其特征在于,所述装置包括: 确定模块,确定至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息; 发送模块,用于向文件访问客户端发送所述存储位置信息,使得所述文件访问客户端能够根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。
9.如权利要求8所述的装置,其特征在于,所述发送模块具体包括: 发送单元,用于向所述文件访问客户端发送存储位置信息,使得所述文件访问客户端能够根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件写入一个缓存块并在所述文件写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述至少两个文件分别存储在所述至少两个文件各自在所述副本中的偏移位置。
10.一种文件存储装置,用于一文件访问客户端,其特征在于,所述装置包括: 接收模块,用于接收一元数据服务器系统发送的至少两个文件的存储位置信息;其中,所述存储位置信息包括所述至少两个文件各自在一个副本中的偏移位置信息和所述副本位置信息;所述存储位置信息由所述元数据服务器系统确定; 交互模块,用于根据所述存储位置信息,与一文件访问服务器交互,使所述文件访问服务器能够将所述至少两个文件分别存储到所述至少两个文件各自在所述副本中的偏移位置。
11.如权利要求10所述的装置,其特征在于,所述交互模块具体包括: 交互单元,用于针对所述至少两个文件中的每个文件,根据所述副本位置信息和所述每个文件在所述副本中的偏移位置信息,将缓存有所述每个文件的共享内存页写入所述文件访问服务器的缓存块,使所述文件访问服务器能够在所述写入完成后,将所述缓存块中的数据写入所述副本中且所述数据写入完成后所述每个文件存储在所述每个文件在所述副本中的偏移位置。
12.一种元数据服务器系统,其特征在于,包括如权利要求8或9所述的文件存储装置。
13.一种文件访问客户端,其特征在于,包括如权利要求10或11所述的文件存储装置。
【文档编号】H04L29/08GK104079600SQ201310102382
【公开日】2014年10月1日 申请日期:2013年3月27日 优先权日:2013年3月27日
【发明者】胡剑华, 朱鹏, 俞超 申请人:中兴通讯股份有限公司