一种分布式存储系统的存储对象访问方法和装置制造方法

文档序号:6627274阅读:209来源:国知局
一种分布式存储系统的存储对象访问方法和装置制造方法
【专利摘要】本发明实施方式提出一种分布式存储系统的存储对象访问方法和装置。方法包括:接收包含对象文件全局逻辑编号的数据访问请求;基于所述对象文件全局逻辑编号计算对象文件所在的存储实体结点以及该对象文件在所述存储实体结点中的本地逻辑编号;基于所述对象文件所在的存储实体结点的起始物理块号及所述本地逻辑编号计算该对象文件的物理块号,并根据所述物理块号访问所述对象文件。本发明基于对象文件全局逻辑编号直接计算对象文件的物理块号,省去了文件系统的检索环节,提高了数据访问速率。
【专利说明】一种分布式存储系统的存储对象访问方法和装置

【技术领域】
[0001]本发明实施方式属于网络存储【技术领域】,特别是一种分布式存储系统的存储对象访问方法和装置。

【背景技术】
[0002]传统的网络存储系统采用集中的存储服务器存放所有数据。在这种存储方式中,存储服务器成为系统性能瓶颈,也是可靠性和安全性的焦点,因此不能满足大规模存储应用的需要。
[0003]目前,分布式存储技术获得了快速发展。在分布式存储系统中,将数据分散存储在多台独立设备上。分布式存储系统采用可扩展的系统结构,利用多台存储实体结点分担存储负荷,利用位置服务器定位存储信息。存储实体结点提供实际存储能力,而且所有的存储实体结点虚拟化成统一的存储服务。这种存储方式不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
[0004]在现有技术中,针对存储实体结点的数据访问操作过程通常需要多次访问文件系统,导致数据访问速率较慢。比如,当客户端期望将数据写入分布式存储系统的存储实体结点时,首先需要在分布式存储的全局文件系统中检索要写入的目标存储实体结点,然后检索该目标存储实体结点的本地文件系统以确定数据在硬盘中的存储位置,最后通过该本地文件系统调用块设备驱动以访问硬盘并写入数据。
[0005]然而,在这种实现方式中,全局文件系统和本地文件系统分别需要执行检索工作,因此数据访问速率较慢。尤其是,当数据读写请求落入多个存储实体结点或分布式存储具有多副本机制时,这种多次检索的处理方式对数据访问速率的影响更大。


【发明内容】

[0006]本发明实施方式提出一种分布式存储系统的存储对象访问方法和装置,以提高数据访问速率。
[0007]本发明实施方式的技术方案如下:
[0008]本发明实施方式的一方面,提供了一种分布式存储系统的存储对象访问方法。
[0009]一种分布式存储系统的存储对象访问方法,该方法包括:
[0010]接收包含对象文件全局逻辑编号的数据访问请求;
[0011]基于所述对象文件全局逻辑编号计算对象文件所在的存储实体结点以及该对象文件在所述存储实体结点中的本地逻辑编号;
[0012]基于所述对象文件所在的存储实体结点的起始物理块号及所述本地逻辑编号计算该对象文件的物理块号,并根据所述物理块号访问所述对象文件。
[0013]本发明实施方式的另一方面,提供了一种分布式存储系统的存储对象访问装置。
[0014]一种分布式存储系统的存储对象访问装置,该装置包括:
[0015]接收模块,用于接收包含对象文件全局逻辑编号的数据访问请求;
[0016]编号计算模块,用于基于所述对象文件全局逻辑编号计算对象文件所在的存储实体结点以及该对象文件在所述存储实体结点中的本地逻辑编号;
[0017]存储对象访问模块,用于基于所述对象文件所在的存储实体结点的起始物理块号及所述本地逻辑编号计算该对象文件的物理块号,并根据所述物理块号访问所述对象文件。
[0018]在本发明的技术方案中,接收包含对象文件全局逻辑编号的数据访问请求,基于对象文件全局逻辑编号计算对象文件所在的存储实体结点以及该对象文件在确定的存储实体结点中的本地逻辑编号;基于所确定的存储实体结点的起始物理块号及本地逻辑编号计算该对象文件的物理块号,并根据物理块号访问对象文件。由此可见,本发明可以基于对象文件全局逻辑编号直接计算对象文件物理块号,省去了文件系统的检索环节,因此提高了数据访问速率。

【专利附图】

【附图说明】
[0019]图1为根据本发明一实施方式的分布式存储系统的存储对象访问方法流程图;
[0020]图2为根据本发明一实施方式存储实体结点中对象文件的分配示意图;
[0021]图3为根据本发明另一实施方式存储实体结点中对象文件的分配示意图;
[0022]图4为本发明一实施方式的分布式存储系统的存储对象访问装置的结构图。

【具体实施方式】
[0023]为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
[0024]为了便于理解,首先对分布式存储技术中的相关术语进行简单解释。
[0025]全局文件系统:在分布式存储集群提供的块存储服务上所建立的文件系统。
[0026]存储实体结点:分布式存储系统中存放数据的结点。
[0027]对象文件:表示分布式存储系统的某一部分存储实体,比如可以是Ext4文件。
[0028]元数据结点:记录分布式存储系统的属性数据,可以为一个独立的物理机,也可以为一个程序。
[0029]物理块号:物理存储设备的某数据块的扇区号。
[0030]在本发明实施方式中,对象文件分别具有全局逻辑编号。可以基于对象文件全局逻辑编号确定出对象文件所在的存储实体结点以及该对象文件在所确定的存储实体结点中的本地逻辑编号,并由此确定出对象文件的物理块号,从而可以根据物理块号直接访问对象文件,并提高数据访问速率。
[0031]图1为本发明一实施方式的分布式存储系统的存储对象访问方法流程图。
[0032]如图1所示,该方法包括:
[0033]步骤101:接收包含对象文件全局逻辑编号的数据访问请求。
[0034]在这里,客户端接收包含对象文件全局逻辑编号的数据访问请求。该数据访问请求既可以是将数据写入对象文件的数据写入请求,也可以是从对象文件读取数据的数据读取请求。
[0035]在数据访问请求中包含有对象文件的全局逻辑编号。对象文件全局逻辑编号是对象文件在分布式存储系统中的唯一标号,用于唯一地标识对象文件。
[0036]本发明可以通过多种方式预先为对象文件建立全局逻辑编号。比如,可以分别在各个存储实体结点中连续创建对象文件,并为每个对象文件设置全局逻辑编号,并记录各个存储实体结点的起始物理块号,其中可以由对象文件所在存储实体结点的编号以及对象文件在存储实体结点中的本地逻辑编号共同确定对象文件的全局逻辑编号。
[0037]在一个实施方式中,可以在每个存储实体结点中连续创建相同数目的对象文件,其中每个对象文件所占用的存储空间值相同。
[0038]在另一个实施方式中,可以在每个存储实体结点中连续创建对象文件,并记录各个存储实体结点的起始物理块号以及各个存储实体结点的对象文件全局逻辑编号范围,其中每个对象文件所占用的存储空间值相同,而且各个存储实体结点的对象文件数既可以相同,也可以不同。
[0039]比如,图2为根据本发明一实施方式存储实体结点中对象文件的分配示意图。
[0040]由图2可见,分布式存储集群包含多个存储实体结点,分别为存储实体结点1、存储实体结点2…存储实体结点W,其中w为存储实体结点的编号。
[0041]在存储实体结点I中连续创建有多个相同大小的对象文件,这些对象文件的全局逻辑编号分别是10、11、12,13,等等。这些对象文件的全局逻辑编号包含有二维信息,分别是对象文件所在存储实体结点的编号(即I)以及对象文件在存储实体结点I中的本地逻辑编号(如0,1、2等)。具体地,对象文件10表明该对象文件位于存储实体结点I的第O个本地逻辑编号位置;对象文件11表明该对象文件位于存储实体结点I的第I个本地逻辑编号位置;对象文件12表明该对象文件位于存储实体结点I的第2个本地逻辑编号位置;
坐坐寸寸ο
[0042]假设存储实体结点I的起始物理块号为blockbase_l,每个对象文件占用的物理块数为T。对象文件10的本地逻辑编号为0,对象文件10的物理块号为blockbase_l+0XT,即为blockbase_l ;对象文件11的本地逻辑编号为1,对象文件11的物理块号为blockbase_l+lXT,即为blockbase_l+T ;对象文件12的本地逻辑编号为2,对象文件12的物理块号为blockbase_l+2XT,即为blockbase_l+2T ;依此类推,对象文件Ik的本地逻辑编号为k,对象文件Ik的物理块号为blockbase_l+(k)T,其中k为对象文件在存储实体结点I中的本地逻辑编号。
[0043]类似地,在存储实体结点2中连续创建有多个对象文件,这些对象文件的全局逻辑编号分别是20、21、22,23,等等。同样地,存储实体结点2中各个对象文件的全局逻辑编号包含有二维信息,分别是对象文件所在存储实体结点的编号(即2)以及对象文件在存储实体结点2中的本地逻辑编号(如0,1、2等)。具体地,对象文件20表明该对象文件位于存储实体结点2的第O个本地逻辑编号位置;对象文件21表明该对象文件位于存储实体结点2的第I个本地逻辑编号位置;对象文件22表明该对象文件位于存储实体结点2的第2个本地逻辑编号位置;等等。
[0044]假设存储实体结点2的起始物理块号为blockbase_2,每个对象文件占用的物理块数T。对象文件20的本地逻辑编号为0,则对象文件20的物理块号为blockbase_2+0XT,即为blockbase_2 ;对象文件21的本地逻辑编号为1,对象文件21的物理块号为blockbase_2+lXT,即为blockbase_2+T ;对象文件22的本地逻辑编号为2,对象文件22的物理块号为blockbase_2+2XT,即为blockbase_2+2T ;依此类推,对象文件2k的本地逻辑编号为k,对象文件2k的物理块号为blockbaSe_2+(k)T,其中k为对象文件在存储实体结点2中的本地逻辑编号。
[0045]依此类推,在存储实体结点w中连续创建有多个对象文件,对象文件的全局逻辑编号分别是《O、wU w2, w3,等等。存储实体结点w中各个对象文件的全局逻辑编号包含有二维信息,分别是对象文件所在存储实体结点的编号(即《)以及该对象文件在存储实体结点w中的本地逻辑编号(如0,1、2等)。具体地,对象文件《O表明该对象文件位于存储实体结点w的第O个本地逻辑编号位置;对象文件wl表明该对象文件位于存储实体结点w的第I个本地逻辑编号位置;对象文件《2表明该对象文件位于存储实体结点w的第2个本地逻辑编号位置;等等。
[0046]假设存储实体结点w的起始物理块号为blockbase_w,每个对象文件占用的物理块数T。对象文件w0的本地逻辑编号为O,则对象文件wO的物理块号为blockbase_w+OXT,即为blockbase_w ;对象文件wl的本地逻辑编号为1,对象文件wl的物理块号为blockbase_w+l XT,即为blockbase_w+T ;对象文件w2的本地逻辑编号为2,对象文件w2的物理块号为blockbase_w+2XT,即为blockbase_w+2T ;依此类推,对象文件wk的本地逻辑编号为k,对象文件wk的物理块号为blockbase_w+(k)T,其中k为对象文件在存储实体结点w中的本地逻辑编号。
[0047]在上述实例中,对象文件的全局逻辑编号由该对象文件所在存储实体结点的编号以及该对象文件在存储实体结点中的本地逻辑编号所确定,而且每个对象文件所占用的存储空间值相同。
[0048]在上述实例的一种【具体实施方式】中,存储实体结点1、存储实体结点2…存储实体结点w各自所包含的对象文件数相同,而且进一步在分布式存储系统的元数据结点处分别记录存储实体结点1、存储实体结点2…存储实体结点w的起始物理块号。
[0049]在上述实例的另一种【具体实施方式】中,存储实体结点1、存储实体结点2…存储实体结点w中各自所包含的对象文件数既可以相同,也可以不同。进一步在分布式存储系统的元数据结点处分别记录存储实体结点1、存储实体结点2…存储实体结点w的起始物理块号以及存储实体结点1、存储实体结点2…存储实体结点w的对象文件全局逻辑编号范围。
[0050]在本发明实施方式中,还可以针对对象文件进行分组以实现动态扩容。比如,当某个存储实体结点增加有新硬盘时,可以将新扩容部分作为一个新的对象文件组加入到现有存储实体结点。此时,对象文件在存储实体结点中的本地逻辑编号可以具体包括:该对象文件所在对象文件组的组号以及该对象文件在对象文件组中的本地逻辑编号。也就是说,可以预先针对对象文件进行分组,从而对象文件的全局逻辑编号可以包含有三维信息,分别为:对象文件所在存储实体结点的编号、对象文件所在对象文件组的组号以及对象文件在对象文件组中的组内逻辑编号。
[0051]图3为根据本发明另一实施方式存储实体结点中对象文件的分配示意图。
[0052]由图3可见,分布式存储集群包含多个存储实体结点,分别为存储实体结点1、存储实体结点2…存储实体结点W,其中w为存储实体结点的编号。
[0053]在存储实体结点I中连续创建有多个对象组,组号分别为组O、组I…组A,其中A为组的编号。各个组中连续创建有相同数目的对象文件,而且每个对象文件的大小相同。
[0054]对象文件的全局逻辑编号由对象文件所在存储实体结点的编号以及对象文件在存储实体结点中的本地逻辑编号所确定。而且,对象文件的本地逻辑编号由对象文件所在对象文件组的组号及对象文件在对象文件组中的组内逻辑编号所确定。因此,对象文件的全局逻辑编号由该对象文件所在的对象文件组所在的存储实体结点编号、该对象文件所在对象文件组的组号以及对象文件组中的组内逻辑编号所确定。
[0055]比如,在存储实体结点I的组O中,各个连续创建的对象文件的全局逻辑编号分别是100、101、102,等等。这些对象文件的全局逻辑编号包含有三维信息,分别是对象文件所在存储实体结点的编号(即I)、对象文件所在对象文件组的组号(即O)以及对象文件在对象文件组中的组内逻辑编号(如0,1、2等)。比如,对象文件100表明对象文件位于存储实体结点I的组O中的第O个组内逻辑编号位置;对象文件101表明对象文件位于存储实体结点I的组O中第I个组内逻辑编号位置;对象文件102表明对象文件位于存储实体结点I的组O中第2个组内逻辑编号位置;等等。
[0056]假设存储实体结点I的起始物理块号为blockbase_l,每个对象文件占用的物理块数为T,组的物理块数为G。对象文件100的全局逻辑编号为100,则对象文件100所在的存储实体结点编号为1,而且对象文件100的本地逻辑编号为00,即对象文件100所在对象文件组的组号为0,对象文件100在对象文件组O中的组内逻辑编号为0,那么对象文件100的物理块号为blockbase_l+0XG+0XT,即为blockbase_l ;对象文件101的全局逻辑编号为101,则对象文件101所在的存储实体结点编号为1,而且对象文件101的本地逻辑编号为01,即对象文件101所在对象文件组的组号为0,对象文件101在对象文件组O中的组内逻辑编号为1,那么对象文件101的物理块号为blockbase_l+OXG+l XTJPSblockbase_l+T ;依此类推,对象文件1k的全局逻辑编号为10k,则对象文件1k所在的存储实体结点编号为I,而且对象文件1k的本地逻辑编号为0k,即对象文件1k所在对象文件组的组号为0,对象文件1k在对象文件组O中的组内逻辑编号为k,那么对象文件1k的物理块号为blockbase_l+0 XG+ (k) T,即为blockbase_l+ (k) T,其中k为对象文件在对象文件组O中的组内逻辑编号。
[0057]类似地,在存储实体结点I的组I中,各个连续创建的对象文件的全局逻辑编号分别是110、111、112,等等。这些对象文件的全局逻辑编号包含有三维信息,分别是对象文件所在存储实体结点的编号(即I)、该对象文件所在对象文件组的组号(即I)以及该对象文件在对象文件组中的组内逻辑编号(如0,1、2等)。比如,对象文件110表明该对象文件位于存储实体结点I的组I中的第O个本地逻辑编号位置;对象文件111表明该对象文件位于存储实体结点I的组I中第I个本地逻辑编号位置;对象文件112表明该对象文件位于存储实体结点I的组I中第2个本地逻辑编号位置;等等。
[0058]假设存储实体结点I的起始物理块号为blockbase_l,组的物理块数为G,对象文件的大小为T。对象文件110的全局逻辑编号为110,则对象文件110所在的存储实体结点编号为1,而且对象文件110的本地逻辑编号为10,即对象文件110所在对象文件组的组号为I,对象文件I1在对象文件组I中的组内逻辑编号为I,那么对象文件I1的物理块号为blockbase_l+l XG+0XT,即为blockbase_l+G ;对象文件111的全局逻辑编号为111,则对象文件111所在的存储实体结点编号为1,而且对象文件111的本地逻辑编号为11,即对象文件111所在对象文件组的组号为1,对象文件111在对象文件组I中的组内逻辑编号为I,那么对象文件111的物理块号为blockbase_l+lXG+lXT,即为blockbase_l+G+T ;依此类推,对象文件Ilk的全局逻辑编号为11k,则对象文件Ilk所在的存储实体结点编号为1,而且对象文件Ilk的本地逻辑编号为lk,即对象文件Ilk所在对象文件组的组号为I,对象文件Ik在对象文件组I中的组内逻辑编号为k,那么对象文件Ilk的物理块号为blockbase_l+lXG+(k)T,即为blockbase_l+G+(k) T,其中k为对象文件在对象文件组I中的组内逻辑编号。
[0059]依此类推,在存储实体结点I的组A中,各个连续创建的对象文件的全局逻辑编号分别是1A0、1A1、1A2,等等。这些对象文件的全局逻辑编号包含有三维信息,分别是对象文件所在存储实体结点的编号(即I)、该对象文件所在对象文件组的组号(即A)以及该对象文件在对象文件组中的组内逻辑编号(如0,1、2等)。比如,对象文件IAO表明该对象文件位于存储实体结点I的组A中的第O个本地逻辑编号位置;对象文件IAl表明该对象文件位于存储实体结点I的组A中第I个本地逻辑编号位置;对象文件1A2表明该对象文件位于存储实体结点I的组A中第2个本地逻辑编号位置;等等。
[0060]假设存储实体结点I的起始物理块号为blockbase_l,组的物理块数为G,对象文件的大小为T。对象文件IAO的全局逻辑编号为1A0,则对象文件IAO所在的存储实体结点编号为1,而且对象文件IAO的本地逻辑编号为A0,即对象文件IAO所在对象文件组的组号为A,对象文件IAO在对象文件组A中的组内逻辑编号为0,那么对象文件IAO的物理块号为blockbase_l+AXG+OXT,即为blockbase_l+AG ;对象文件IAl的全局逻辑编号为1A1,则对象文件IAl所在的存储实体结点编号为1,而且对象文件IAl的本地逻辑编号为Al,SP对象文件IAl所在对象文件组的组号为A,对象文件IAl在对象文件组A中的组内逻辑编号为I,那么对象文件IAl的物理块号为blockbase_l+AXG+lXT,即为blockbase_l+AG+T ;依此类推,对象文件IAk的全局逻辑编号为lAk,则对象文件IAk所在的存储实体结点编号为1,而且对象文件IAk的本地逻辑编号为Ak,即对象文件IAk所在对象文件组的组号为A,对象文件IAk在对象文件组A中的组内逻辑编号为k,那么对象文件IAk的物理块号为blockbase_l+AXG+ (k) T,即为blockbase_l+AG+ (k) T,其中k为对象文件在对象文件组A中的组内逻辑编号。
[0061]以上详细描述了存储实体结点I中各个组的对象文件,类似地,存储实体结点2...存储实体结点w也具有类似的结构,对此不再赘述。
[0062]在上述实例的一种【具体实施方式】中,各个存储实体结点中创建有相同数目的对象文件组。此时,可以在分布式存储系统的元数据结点记录各个存储实体结点的起始物理块号以及每组的物理块大小。
[0063]在上述实例的一种【具体实施方式】中,也可以在各个存储实体结点中创建不同数目的对象文件组。此时,可以在分布式存储系统的元数据结点记录各个存储实体结点的起始物理块号、每组的物理块大小以及各个存储实体结点的对象文件全局逻辑编号范围。
[0064]在本发明实施方式中,可以在存储实体结点启动时创建对象文件。从存储实体结点的本地文件系统上看,所创建的对象文件是一个普通的文件,并没有破坏存储实体结点的现有文件系统结构。因此,当存储实体结点故障时可以便于数据恢复。
[0065]以上详细描述了对象文件全局逻辑编号与实际存放位置之间的物理含义。当客户端获取对象文件全局逻辑编号之后,可以基于对象文件全局逻辑编号确定出相对应的实际存放位置。
[0066]步骤102:基于对象文件全局逻辑编号确定对象文件所在的存储实体结点以及该对象文件在确定的存储实体结点中的本地逻辑编号。
[0067]在一个实施方式中,当存储实体结点中各个对象文件的全局逻辑编号包含有二维信息(即包括对象文件所在存储实体结点的编号以及该对象文件在存储实体结点中的本地逻辑编号),而且各个存储实体结点中包含相同数目的对象文件时:
[0068]假定每个存储实体结点中所创建的对象文件数为n,对象文件全局逻辑编号为m。那么,基于对象文件全局逻辑编号确定对象文件所在的存储实体结点以及该对象文件在确定的存储实体结点中的本地逻辑编号具体包括:
[0069]将(m/n)的下取整数确定为对象文件所在的存储实体结点的编号,其中/是除法运算符;
[0070]将(m% η)的值确定为该对象文件在存储实体结点中的本地逻辑编号,其中%为求余运算符。
[0071]如,假定分布式存储系统的对象文件总数目为10000,每个存储实体结点的对象文件数目为1000 ;数据访问请求中所包含的对象文件全局逻辑编号为2100 ;
[0072]首先计算存储实体结点的编号,即计算(2100/1000)的下取整数,结果为2,即存储实体结点的编号为2。
[0073]然后,将(2100% 1000)的值确定为存储实体结点2中的本地逻辑编号,计算结果为100,即本地逻辑编号为100。
[0074]在一个实施方式中,当存储实体结点中各个对象文件的全局逻辑编号包含有二维信息(即包括对象文件所在存储实体结点的编号以及该对象文件在存储实体结点中的本地逻辑编号),而且各个存储实体结点中的对象文件数可能相同,也可能不相同时:
[0075]首先,将对象文件全局逻辑编号范围包含m的存储实体结点,确定为对象文件所在的存储实体结点;然后,基于对象文件所在的存储实体结点的对象文件全局逻辑编号范围确定该存储实体结点的起始对象文件全局逻辑编号值;再将(m-p)的值,确定为该对象文件在存储实体结点中的本地逻辑编号。
[0076]比如,假定分布式存储系统有3个存储实体结点,分别为存储实体结点1、存储实体结点2和存储实体结点3。其中:存储实体结点I的对象文件全局逻辑编号范围为(I?1000);存储实体结点2的对象文件全局逻辑编号范围为(1001?3000);存储实体结点3的对象文件全局逻辑编号范围为(3001?4300);数据访问请求中所包含的对象文件全局逻辑编号为2100:
[0077]首先,由于2100位于范围(1001?3000)的区间之内,因此对象文件所在的存储实体结点为存储实体结点2。然后,由范围(1001?3000)可知,存储实体结点的起始对象文件全局逻辑编号值为1001。接着,计算(2100-1001),得到值1099,即为对象文件在存储实体结点2中的本地逻辑编号。
[0078]类似地,在另一个实施方式中,当存储实体结点中各个对象文件的全局逻辑编号包含有三维信息(即包括对象文件所在存储实体结点的编号、该对象文件所在对象文件组的组号以及对象文件在存储实体结点中的组内逻辑编号),而且存储实体结点中对象文件组的数目相等时:
[0079]假定每个存储实体结点中所创建的对象文件数为nl,每个对象文件组中的对象文件数为n2,对象文件全局逻辑编号为m。那么,基于对象文件全局逻辑编号确定对象文件所在的存储实体结点以及该对象文件在确定的存储实体结点中的本地逻辑编号包括:
[0080]将(m/nl)的下取整数确定为对象文件所在的存储实体结点的编号,其中/是除法运算符;
[0081]将(m% nl)的值确定为该对象文件在存储实体结点中的本地逻辑编号,其中%为求余运算符。进一步地,再将((m%nl)/n2)的下取整数确定为对象文件所在的存储实体组的组号,将((m%nl)%n2)的值确定为该对象文件在存储实体组中的组内逻辑编号。
[0082]如,假定分布式存储系统的对象文件总数目为10000,每个存储实体结点的对象文件数目为1000,每个存储实体结点中包含有10个对象文件组,那么每个对象文件组中的对象文件数目为100 ;数据访问请求中所包含的对象文件全局逻辑编号为3020 ;
[0083]首先计算存储实体结点的编号,即计算(3120/1000)的下取整数,结果为3,即存储实体结点的编号为3。
[0084]然后,将(3020% 1000)/100)的下取整数确定为存储实体组的组号,计算结果为0,即组号为O。再计算(3020% 1000) % 100),结果为20,即为对象文件在存储实体组中的组内逻辑编号。
[0085]在另一个实施方式中,当存储实体结点中各个对象文件的全局逻辑编号包含有三维信息(即包括对象文件所在存储实体结点的编号、该对象文件所在对象文件组的组号以及对象文件在对象文件组中的组内逻辑编号),而且存储实体结点中对象文件组的数目可能相同,也可能不相同时:
[0086]假定对象文件全局逻辑编号为m,首先将对象文件全局逻辑编号范围包含m的存储实体结点,确定为对象文件所在的存储实体结点;然后将组逻辑编号范围包含m的组,确定为对象文件所在的组;确定对象文件所在的组的起始对象文件全局逻辑编号值;再将(m-p)的值,确定为该对象文件在组中的本地逻辑编号。
[0087]比如,假定分布式存储系统有3个存储实体结点,分别为存储实体结点1、存储实体结点2和存储实体结点3。其中:存储实体结点I的对象文件全局逻辑编号范围为(I?300),包含有3组;存储实体结点2的对象文件全局逻辑编号范围为(301?400),包含有2组;存储实体结点3的对象文件全局逻辑编号范围为(401?800),包含有4组;数据访问请求中所包含的对象文件全局逻辑编号为555。
[0088]首先,由于555位于(401?800)的区间之内,因此对象文件所在的存储实体结点为存储实体结点3。而且,由于555位于(401?800)的第二个子区间(501?600)的组范围之内,因此组号为I (组号从O开始计数)。
[0089]接着,由组范围(501?600)可知,起始对象所在组的起始对象文件全局逻辑编号值为501。接着,计算(555-501),得到值54,即为对象文件在存储实体结点2的组I中的组内逻辑编号。
[0090]另外,在创建对象文件时,可以进一步地在组中进行划分,例如,在一个组中可以包含多个小组等,但是,获取存储实体结点编号和本地逻辑编号的方法是类似的,不再赘述。
[0091]以上详细描述了基于对象文件全局逻辑编号确定对象文件所在的存储实体结点以及该对象文件在确定的存储实体结点中的本地逻辑编号的典型实例,本领域技术人员可以意识到,这种描述仅是示范性的,并不用于对本发明实施方式的保护范围构成限定。
[0092]步骤103:基于所确定的存储实体结点的起始物理块号及本地逻辑编号确定该对象文件的物理块号,并根据物理块号访问对象文件。
[0093]在这里,可以从元数据结点中查询所确定的存储实体结点的起始物理块号。当获取了所确定的存储实体结点的起始物理块号之后,可以通过多种方式计算对象文件的物理块号。
[0094]在一个实施方式中,当存储实体结点中各个对象文件的全局逻辑编号包含有二维信息(即包括对象文件所在存储实体结点的编号以及该对象文件在存储实体结点中的本地逻辑编号),而且各个存储实体结点中包含相同数目的对象文件时:假定对象文件的物理块号为realblock ;对象文件全局逻辑编号为m ;每个存储实体结点中所创建的对象文件数为η ;所确定的存储实体结点的起始物理块号为blockbasej,其中i为对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值;
[0095]realblock = blockbase_i+ (m% η)*(K/T)。
[0096]比如,承接上例:假定分布式存储系统的对象文件总数目为10000,每个存储实体结点的对象文件数目为1000 ;数据访问请求中所包含的对象文件全局逻辑编号为2100 ;依据步骤102计算得到存储实体结点的编号为2 ;本地逻辑编号为100。此时,基于存储实体结点2的起始物理块号确定该对象文件的物理块号realblock。假定存储实体结点2的起始物理块号为5244,每个对象文件的存储空间值为64M,物理块的存储空间值为512K,则:
[0097]realblock = 5244+(2100% 1000) * (64M)/512K = 18044。
[0098]因此,可以确定数据访问请求的对象文件物理块号为18044,此时可以直接调用块设备驱动访问该物理块号。
[0099]在一个实施方式中,当存储实体结点中各个对象文件的全局逻辑编号包含有二维信息(即包括对象文件所在存储实体结点的编号以及该对象文件在存储实体结点中的本地逻辑编号),而且各个存储实体结点中的对象文件可能相同,也可能不相同时:
[0100]假定对象文件的物理块号为realblock ;所确定的存储实体结点的起始物理块号为blockbasej,其中i为对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值;对象文件全局逻辑编号为m ;存储实体结点的起始对象文件全局逻辑编号为P ;
[0101]realblock,其中 realblock = blockbase_i+(m_p) * (Κ/T)。
[0102]比如,承接上例,假定分布式存储系统有3个存储实体结点,分别为存储实体结点
1、存储实体结点2和存储实体结点3。其中:存储实体结点I的对象文件全局逻辑编号范围为(I?1000);存储实体结点2的对象文件全局逻辑编号范围为(1001?3000);存储实体结点3的对象文件全局逻辑编号范围为(3001?4300);数据访问请求中所包含的对象文件全局逻辑编号为2100 ;
[0103]依据步骤102计算得到存储实体结点的编号为2 ;对象文件全局逻辑编号m为2100,起始对象文件全局逻辑编号P为1001 ;本地逻辑编号为(2100 — 1001) = 1099 ;假定存储实体结点2的起始物理块号为5244,每个对象文件的存储空间值为64M,物理块的存储空间值为512K,则
[0104]realblock = 5244+(1099)*(64M)/512K = 145916。
[0105]再比如,在另一个实施方式中,当存储实体结点中各个对象文件的全局逻辑编号包含有三维信息(即包括对象文件所在存储实体结点的编号、该对象文件所在对象文件组的组号以及对象文件在对象文件组中的组内逻辑编号),而且存储实体结点中对象文件组的数目相等时:
[0106]假定对象文件的物理块号为realblock ;所确定的存储实体结点的起始物理块号为blockbasej,其中i为对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值;对象文件全局逻辑编号为m ;存储实体结点的起始对象文件全局逻辑编号为P ;组号为G ;每组的物理块大小为T ;Q为对象文件在组中的组内逻辑编号;
[0107]realblock,其中 realblock = blockbase_i+G*T+Q*(K/T);
[0108]承接上例:假定分布式存储系统的对象文件总数目为10000,每个存储实体结点的对象文件数目为1000,每个存储实体结点中包含有10个对象文件组,那么每个对象文件组中的对象文件数目为100 ;数据访问请求中所包含的对象文件全局逻辑编号为3020 ;
[0109]依据步骤102计算得到存储实体结点的编号为3 ;组号为O ;对象文件在组O中的组内逻辑编号为20。此时,基于存储实体结点3的起始物理块号确定该对象文件的物理块号 realblock。
[0110]假定存储实体结点3的起始物理块号为8244,每个对象文件的存储空间值为64M,物理块的存储空间值为512K,则:
[0111]realblock = 8244+(20) * (64M)/512K = 10804。
[0112]再比如,在另一个实施方式中,当存储实体结点中各个对象文件的全局逻辑编号包含有三维信息(即包括对象文件所在存储实体结点的编号、该对象文件所在对象文件组的组号以及对象文件在对象文件组中的组内逻辑编号),而且存储实体结点中对象文件组的数目可以相等,也可以不相等时:
[0113]假定对象文件的物理块号为realblock ;所确定的存储实体结点的起始物理块号为blockbasej,其中i为对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值;对象文件全局逻辑编号为m ;存储实体结点的起始对象文件全局逻辑编号为P ;组号为G ;每组的物理块大小为T ;Q为对象文件在组中的组内逻辑编号;
[0114]realblock,其中 realblock = blockbase_i+G*T+Q*(K/T);
[0115]承接上例:假定分布式存储系统有3个存储实体结点,分别为存储实体结点1、存储实体结点2和存储实体结点3。其中:存储实体结点I的对象文件全局逻辑编号范围为(I?300),包含有3组;存储实体结点2的对象文件全局逻辑编号范围为(301?400),包含有2组;存储实体结点3的对象文件全局逻辑编号范围为(401?800),包含有4组;数据访问请求中所包含的对象文件全局逻辑编号为555 ;
[0116]依据步骤102计算得到存储实体结点的编号为3 ;组号为2 ;对象文件在组2中的组内逻辑编号为54。此时,基于存储实体结点3的起始物理块号确定该对象文件的物理块号realblock ;假定存储实体结点3的起始物理块号为8244,每个对象文件的存储空间值为64M,物理块的存储空间值为512K ;每组的物理块大小为1000 ;
[0117]realblock = 8244+1000*1+(54)*(64M)/512K = 16156。
[0118]在一个实施方式中,还可以在分布式存储系统的元数据结点记录存储实体结点中每个组的起始物理块号。当基于全局逻辑编号确定出对象文件所在存储实体结点的编号、对象文件所在对象文件组的组号以及对象文件在存储实体结点中的本地逻辑编号时,可以根据组的起始物理块号直接计算对象文件的物理块号。
[0119]比如,假定对象文件的全局逻辑编号为303,位于存储实体结点I的第O组,而且在第O组内的本地逻辑编号为4 ;查询元数据结点获取到存储实体结点I的组号O的起始物理块号为510 ;每个对象文件的存储空间值为64M,物理块的存储空间值为512K ;此时
[0120]realblock = 510+3* (64M)/512K = 1790。
[0121]当确定出对象文件的物理块号,可以根据物理块号直接访问对象文件,而无需调用本地文件系统,因此可以显著提高数据访问速率。
[0122]以上详细描述了计算对象文件物理块号的具体实例,本领域技术人员可以意识至IJ,这种实例仅用于阐述目的,并不用于对本发明保护范围构成限定。
[0123]基于上述详细分析,本发明还提出了一种分布式存储系统的存储对象访问装置。
[0124]图4为根据本发明分布式存储系统的存储对象访问装置结构图。如图4所示,该装置400包括:
[0125]接收模块401,用于接收包含对象文件全局逻辑编号的数据访问请求;
[0126]编号计算模块402,用于基于对象文件全局逻辑编号计算对象文件所在的存储实体结点以及该对象文件在存储实体结点中的本地逻辑编号;
[0127]存储对象访问模块403,用于基于对象文件所在的存储实体结点的起始物理块号及本地逻辑编号计算该对象文件的物理块号,并根据物理块号访问对象文件。
[0128]在一个实施方式中:
[0129]数据访问请求为数据写入请求;存储对象访问模块403,用于将数据写入位于物理块号的存储空间的对象文件;或
[0130]数据访问请求为数据读取请求;存储对象访问模块403,用于从位于物理块号的存储空间的对象文件中读取数据。
[0131]在一个实施方式中,分布式存储系统包括至少两个存储实体结点,该装置进一步包括:
[0132]对象文件创建模块404,用于分别在各个存储实体结点中连续创建对象文件;
[0133]全局逻辑编号设置模块405,用于为每个对象文件设置对象文件全局逻辑编号,其中对象文件全局逻辑编号由该对象文件所在存储实体结点的编号以及该对象文件在存储实体结点中的本地逻辑编号所确定;
[0134]物理块号记录模块406,用于记录各个存储实体结点的起始物理块号。
[0135]在一个实施方式中:
[0136]对象文件创建模块404,用于分别在每个存储实体结点中连续创建相同数目的对象文件,其中每个对象文件所占用的存储空间值相同。
[0137]在一个实施方式中:
[0138]在每个存储实体结点中所创建的对象文件数为n,对象文件全局逻辑编号为m ;编号计算模块402,用于将(m/n)的下取整数确定为对象文件所在的存储实体结点的编号,其中/是除法运算符;将(m% η)的值确定为该对象文件在存储实体结点中的本地逻辑编号,其中%为求余运算符;
[0139]存储对象访问模块403,用于确定realblock,其中realblock = blockbase_i+ (m% η) * (K/T);
[0140]其中n为在每个存储实体结点中所创建的对象文件数;m为对象文件全局逻辑编号;realblock为对象文件的物理块号;blockbase_i为所确定的存储实体结点的起始物理块号为对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值。
[0141]在一个实施方式中:
[0142]对象文件创建模块404,用于分别在各个存储实体结点中连续创建存储空间值相同的对象文件;记录模块406,进一步用于记录各个存储实体结点的对象文件全局逻辑编号范围。
[0143]在一个实施方式中:
[0144]编号计算模块402,用于将对象文件全局逻辑编号范围包含m的存储实体结点,确定为对象文件所在的存储实体结点;基于对象文件所在的存储实体结点的对象文件全局逻辑编号范围确定存储实体结点的起始对象文件全局逻辑编号P;将(m-p)的值,确定为该对象文件在存储实体结点中的本地逻辑编号;存储对象访问模块403,用于确定realblock,其中 realblock = blockbase_i+ (m-p) * (K/T);其中 m 为对象文件全局逻辑编号;realblock为对象文件的物理块号;blockbase_i为所确定的存储实体结点的起始物理块号为对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值。
[0145]在一个实施方式中,该装置400进一步包括:对象文件创建模块404,还用于分别在各个存储实体结点中连续创建对象文件组,而且在每个对象文件组中连续创建对象文件;而且存储实体结点中的本地逻辑编号由该对象文件所在对象文件组的组号以及该对象文件在对象文件组中的组内逻辑编号所确定。
[0146]综上所述,本发明包括:接收包含对象文件全局逻辑编号的数据访问请求,基于对象文件全局逻辑编号计算对象文件所在的存储实体结点以及该对象文件在确定的存储实体结点中的本地逻辑编号;基于所确定的存储实体结点的起始物理块号及本地逻辑编号计算该对象文件的物理块号,并根据物理块号访问对象文件。由此可见,本发明可以基于对象文件全局逻辑编号直接计算对象文件物理块号,省去了文件系统的检索环节,因此提高了数据访问速率。
[0147]而且,本发明可以根据计算出物理块号直接调用块设备驱动访问对象文件,进一步有利于数据访问性能的提闻。
[0148]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种分布式存储系统的存储对象访问方法,其特征在于,该方法包括: 接收包含对象文件全局逻辑编号的数据访问请求; 基于所述对象文件全局逻辑编号计算对象文件所在的存储实体结点以及该对象文件在所述存储实体结点中的本地逻辑编号; 基于所述对象文件所在的存储实体结点的起始物理块号及所述本地逻辑编号计算该对象文件的物理块号,并根据所述物理块号访问所述对象文件。
2.根据权利要求1所述的分布式存储系统的存储对象访问方法,其特征在于,所述分布式存储系统包括至少两个存储实体结点,该方法预先包括: 分别在各个存储实体结点中连续创建对象文件; 为每个对象文件设置对象文件全局逻辑编号,其中所述对象文件全局逻辑编号由该对象文件所在存储实体结点的编号以及该对象文件在所述存储实体结点中的本地逻辑编号所确定; 记录各个存储实体结点的起始物理块号。
3.根据权利要求2所述的分布式存储系统的存储对象访问方法,其特征在于,所述分别在各个存储实体结点中连续创建对象文件包括:分别在各个存储实体结点中连续创建相同数目的对象文件,其中每个对象文件所占用的存储空间值相同。
4.根据权利要求3所述的分布式存储系统的存储对象访问方法,其特征在于; 所述基于对象文件全局逻辑编号计算所述对象文件所在的存储实体结点以及该对象文件在所述确定的存储实体结点中的本地逻辑编号包括: 将(m/n)的下取整数确定为所述对象文件所在的存储实体结点的编号,其中/是除法运算符; 将(m%n)的值确定为所述对象文件在所述存储实体结点中的本地逻辑编号,其中%为求余运算符; 所述基于对象文件所在的存储实体结点的起始物理块号及所述本地逻辑编号计算该对象文件的物理块号包括:
确定 realblock,其中 realblock = blockbase_i+ (m% n)*(K/T); 其中η为在每个存储实体结点中所创建的对象文件数;m为所述对象文件全局逻辑编号;realblock为所述对象文件的物理块号;blockbase_i为所确定的存储实体结点的起始物理块号;i为所述对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值。
5.根据权利要求2所述的分布式存储系统的存储对象访问方法,其特征在于,所述分别在各个存储实体结点中连续创建对象文件包括:分别在各个存储实体结点中连续创建存储空间值相同的对象文件; 该方法还包括:记录各个存储实体结点的对象文件全局逻辑编号范围。
6.根据权利要求5所述的分布式存储系统的存储对象访问方法,其特征在于; 所述基于所述对象文件全局逻辑编号计算所述对象文件所在的存储实体结点以及该对象文件在所述确定的存储实体结点中的本地逻辑编号包括: 将对象文件全局逻辑编号范围包含m的存储实体结点,确定为所述对象文件所在的存储实体结点; 基于所述对象文件所在的存储实体结点的对象文件全局逻辑编号范围确定该存储实体结点的起始对象文件全局逻辑编号P ; 将(m-p)的值,确定为该对象文件在所述存储实体结点中的本地逻辑编号; 所述基于对象文件所在的存储实体结点的起始物理块号及所述本地逻辑编号计算该对象文件的物理块号包括:
确定 realblock,其中 realblock = blockbase」+(m_p) * (K/T); 其中m为所述对象文件全局逻辑编号;realblock为所述对象文件的物理块号;blockbase」为所确定的存储实体结点的起始物理块号;i为所述对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值。
7.根据权利要求2所述的分布式存储系统的存储对象访问方法,其特征在于, 所述分别在各个存储实体结点中连续创建对象文件,包括: 分别在各个存储实体结点中连续创建对象文件组,在每个对象文件组中连续创建对象文件; 所述存储实体结点中的本地逻辑编号由该对象文件所在对象文件组的组号以及该对象文件在所述对象文件组中的组内逻辑编号所确定。
8.根据权利要求1-7中任一项所述的分布式存储系统的存储对象访问方法,其特征在于, 所述数据访问请求为数据写入请求;所述根据物理块号访问所述对象文件包括:将数据写入位于所述物理块号的存储空间的对象文件;或 所述数据访问请求为数据读取请求;所述根据物理块号访问所述对象文件包括:从位于所述物理块号的存储空间的对象文件中读取数据。
9.一种分布式存储系统的存储对象访问装置,其特征在于,该装置包括: 接收模块,用于接收包含对象文件全局逻辑编号的数据访问请求; 编号计算模块,用于基于所述对象文件全局逻辑编号计算对象文件所在的存储实体结点以及该对象文件在所述存储实体结点中的本地逻辑编号; 存储对象访问模块,用于基于所述对象文件所在的存储实体结点的起始物理块号及所述本地逻辑编号计算该对象文件的物理块号,并根据所述物理块号访问所述对象文件。
10.根据权利要求9所述的分布式存储系统的存储对象访问装置,其特征在于,所述分布式存储系统包括至少两个存储实体结点,进一步包括: 对象文件创建模块,用于分别在各个存储实体结点中连续创建对象文件; 全局逻辑编号设置模块,用于为每个对象文件设置所述对象文件全局逻辑编号,其中所述对象文件全局逻辑编号由该对象文件所在存储实体结点的编号以及该对象文件在所述存储实体结点中的本地逻辑编号所确定; 物理块号记录模块,用于记录各个存储实体结点的起始物理块号。
11.根据权利要求10所述的分布式存储系统的存储对象访问装置,其特征在于,所述对象文件创建模块,用于分别在每个存储实体结点中连续创建相同数目的对象文件,其中每个对象文件所占用的存储空间值相同。
12.根据权利要求11所述的分布式存储系统的存储对象访问装置,其特征在于, 所述编号计算模块,用于将(m/n)的下取整数确定为所述对象文件所在的存储实体结点的编号,其中/是除法运算符;将(m% η)的值确定为该对象文件在所述存储实体结点中的本地逻辑编号,其中%为求余运算符; 所述存储对象访问模块,用于确定realblock,其中realblock = blockbase_i+(m%η)*(K/T); 其中n为在每个存储实体结点中所创建的对象文件数;m为所述对象文件全局逻辑编号;realblock为所述对象文件的物理块号;blockbase_i为所确定的存储实体结点的起始物理块号;i为所述对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值。
13.根据权利要求10所述的分布式存储系统的存储对象访问装置,其特征在于, 所述对象文件创建模块,用于分别在各个存储实体结点中连续创建存储空间值相同的对象文件;所述记录模块,进一步用于记录各个存储实体结点的对象文件全局逻辑编号范围。
14.根据权利要求13所述的分布式存储系统的存储对象访问装置,其特征在于; 所述编号计算模块,用于将对象文件全局逻辑编号范围包含m的存储实体结点,确定为所述对象文件所在的存储实体结点;基于所述对象文件所在的存储实体结点的对象文件全局逻辑编号范围确定存储实体结点的起始对象文件全局逻辑编号P;将(m-p)的值,确定为该对象文件在所述存储实体结点中的本地逻辑编号; 所述存储对象访问模块,用于确定realblock,其中realblock = blockbase_i+(m-p)*(K/T); 其中m为所述对象文件全局逻辑编号;realblock为所述对象文件的物理块号;blockbase」为所确定的存储实体结点的起始物理块号;i为所述对象文件所在的存储实体结点的编号;K为每个对象文件的存储空间值;Τ为单个物理块的存储空间值。
15.根据权利要求10所述的分布式存储系统的存储对象访问装置,其特征在于, 所述对象文件创建模块,还用于分别在各个存储实体结点中连续创建对象文件组,在每个对象文件组中连续创建对象文件; 所述存储实体结点中的本地逻辑编号由该对象文件所在对象文件组的组号以及该对象文件在所述对象文件组中的组内逻辑编号所确定。
16.根据权利要求9-15中任一项所述的分布式存储系统的存储对象访问装置,其特征在于, 所述数据访问请求为数据写入请求;存储对象访问模块,用于将数据写入位于所述物理块号的存储空间的对象文件;或 所述数据访问请求为数据读取请求;存储对象访问模块,用于从位于所述物理块号的存储空间的对象文件中读取数据。
【文档编号】G06F17/30GK104239517SQ201410473575
【公开日】2014年12月24日 申请日期:2014年9月17日 优先权日:2014年9月17日
【发明者】钟晋明 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1