用于采用一致性散列的全局命名空间的方法技术

技术编号:16427492 阅读:52 留言:0更新日期:2017-10-21 21:48
公开了一种用于将数据写到存储池的方法。所述方法包括:接收用于对象的虚拟标识符(ID)和偏移;从虚拟ID提取标识存储池中的第一存储服务器的节点标识符(ID);从第一存储服务器获取用于对象的对象布局(OL);对对象ID和偏移ID进行散列变换以获得散列值,其中,虚拟ID包括对象ID,并且其中,偏移ID从偏移产生;使用全局命名空间布局(GL)、OL和散列值来标识存储池中的第二存储服务器;并且发出将数据写到第二存储服务器中的对象的写请求,其中,写请求包括对象ID和偏移。

A method for global namespaces using consistent hashing

A method for writing data to a storage pool is disclosed. The method comprises: receiving for virtual object identifier (ID) and offset; extracting the node identifier of the first storage server identifies the storage pool in the virtual ID (ID); obtained from the first storage server for object layout (OL); Hash transform of ID and ID to obtain the object offset hash value among them, including the virtual ID object ID, and the ID offset from offset; using the global namespace layout (GL), OL and hash value to identify second storage servers in the storage pool; and a write data storage server second memory object in the write request, the write request including the object ID and offset.

【技术实现步骤摘要】
用于采用一致性散列的全局命名空间的方法相关申请的交互参考本申请是申请日为2013年10月24日、申请号为201380063506.0、专利技术名称为“用于采用一致性散列的全局命名空间的方法”的专利技术专利申请的分案申请。
技术介绍
存储系统被要求存储大量数据并且允许存储容量随时间缩放。传统的缩放存储容量的方法是与存储池中的一个或多个存储服务器相组合地包括一个或多个专用的元数据服务器。存储服务器存储客户端数据,并且元数据服务器存储关于客户端数据在存储服务器内的位置的元数据(而不存储客户端数据)。随着存储容量要求增加,存储服务器的数量可能增加,并且存储在元数据服务器中的元数据的量也可能增加。在这样的情况下,元数据服务器在I/O请求的处理中变为瓶颈。就这点而论,前述的传统方法不能在不影响(即延迟)与I/O请求的处理相关的性能的情况下高效地缩放存储池。
技术实现思路
概括地讲,在一个方面,本专利技术涉及一种用于将数据写到存储池的方法。该方法包括:接收用于对象的虚拟标识符(ID)和偏移;从虚拟ID提取标识存储池中的第一存储服务器的节点标识符(ID);从第一存储服务器获取用于对象的对象布局(OL);对对象ID和偏移ID进行散列变换以获得散列值,其中,虚拟ID包括对象ID,并且其中,偏移ID从偏移产生;使用全局命名空间布局(GL)、OL和散列值标识存储池中的第二存储服务器;并且发出将数据写到第二存储服务器中的对象的写请求,其中,写请求包括对象ID和偏移。概括地讲,在一个方面,本专利技术涉及一种用于对于存储池读数据的方法。该方法包括:接收用于对象的虚拟ID;从虚拟ID提取标识存储池中的第一存储服务器的节点标识符(ID);从第一存储服务器获得用于对象的对象布局(OL);对对象ID和偏移ID进行散列变换以获得散列值,其中,虚拟ID包括对象ID,并且其中,偏移ID从偏移产生;使用全局命名空间布局(GL)、OL和散列值来使用一致性散列标识存储池中的第二存储服务器;并且发出从第二存储服务器中的对象读数据的读请求,其中,写请求包括对象ID和偏移。概括地讲,在一个方面,本专利技术涉及一种用于将数据写到存储池的方法。该方法包括:接收对于新对象的请求;从存储池选择存储服务器,其中,所述存储服务器使用节点ID标识;请求所述存储服务器产生虚拟ID,其中,虚拟ID包括节点ID和用于对象的对象ID;使用虚拟ID产生用于对象的对象布局(OL);将OL存储在所述存储服务器中;接收将数据写到对象的写请求,其中,所述写请求包括偏移;从偏移产生偏移ID;对对象ID和偏移ID进行散列变换以获得散列值;使用全局命名空间布局(GL)、OL和散列值标识存储池中的第二存储服务器;并且发出将数据写到第二存储服务器中的对象的写请求,其中,写请求包括对象ID和偏移。从以下的描述和所附的权利要求书,本专利技术的其他方面将是清楚的。附图说明图1示出根据本专利技术的一个或多个实施例的系统。图2A-2C示出根据本专利技术的一个或多个实施例的数据结构和数据结构之间的关系。图3示出根据本专利技术的一个或多个实施例的用于初始化存储池的流程图。图4示出根据本专利技术的一个或多个实施例的用于将存储服务器添加到存储池的流程图。图5示出根据本专利技术的一个或多个实施例的用于将客户端连接到存储池的流程图。图6示出根据本专利技术的一个或多个实施例的用于创建对象并且将数据存储在该对象中的流程图。图7示出根据本专利技术的一个或多个实施例的用于将数据写到存储池中的先前创建的对象的流程图。图8示出根据本专利技术的一个或多个实施例的用于从存储池中的对象读数据的流程图。图9示出根据本专利技术的一个或多个实施例的用于删除存储池中的对象的流程图。图10A-10J示出实现本专利技术的一个或多个实施例的系统的例子。具体实施方式现在将参照附图详细描述本专利技术的特定实施例。在以下对于本专利技术的实施例的详细描述中,阐述了许多特定细节,以便提供本专利技术的更透彻的理解。然而,本领域的普通技术人员将清楚,本专利技术可以在没有这些特定细节的情况下实施。在其他情况下,没有详细地描述公知的特征,以避免不必要地使描述复杂化。在以下对于图1-10J的描述中,关于一个图描述的任何组件在本专利技术的各种实施例中可以等同于关于任何其他的图描述的一个或多个类似命名的组件。为简洁起见,将不对于每个图重复这些组件的描述。因此,每个图的组件的每一个实施例通过引用并入,并且被假定为可选地存在于每一个具有一个或多个类似命名的组件的其他的图内。另外,根据本专利技术的各种实施例,一个图的组件的任何描述要被解释为可选的实施例,该可选的实施例可以是除了关于任何其他图中的相应的类似命名的组件描述的实施例之外另外实现、与这些实施例结合实现、或者代替这些实施例实现。概括地讲,本专利技术的实施例涉及一种用于将数据存储在存储池中的方法和系统。更具体地讲,本专利技术的实施例为存储池提供全局命名空间,该全局命名空间与用于存储池的全局命名空间布局(GL)和每一对象的对象布局(OL)相组合地使用一致性散列来确定存储池中的对象的位置(一个或多个)。在本专利技术的一个实施例中,所述系统不包括专用的元数据服务器;相反,用于对象的OL遍布存储池分布。换句话说,每个存储服务器包括OL和包括客户端数据的对象的组合,其中,OL可以或者可以不与存储在存储服务器上的特定对象相关联。因为本专利技术的实施例不包括专用的元数据服务器,所以本专利技术的实施例使得能够在没有延迟不利后果和与元数据服务器相关联的缩放限制的情况下不受限制地缩放存储池的容量。为了本专利技术的目的,I/O请求是如下的请求,该请求指定存储在客户端上的对象(即,数据)的逻辑地址、或者存储在操作地连接到客户端的存储器或永久性储存器中的对象的逻辑地址。I/O请求还可以包括其他信息,诸如对象的大小。在本专利技术的一个实施例中,逻辑地址可以是n元组:<对象ID,偏移>。在不脱离本专利技术的情况下,可以使用任何类型的逻辑地址。I/O请求的例子包括但不限于,读请求(即,从存储在存储池中的对象获得数据的请求)和写请求(即,将数据写到存储池中的对象的请求)。图1示出根据本专利技术的一个或多个实施例的系统。该系统包括一个或多个客户端(100A、100B)、通信结构(104)和存储池(112),存储池(112)包括一个或多个存储服务器(106A、106B)。下面描述这些组件中的每个。在本专利技术的一个实施例中,客户端(100A、100B)是包括向存储服务器(106A、106B)发出I/O请求的任何物理系统。在本专利技术的一个实施例中,客户端可以包括处理器(未示出)、存储器(未示出)和永久性储存器(未示出)。客户端还包括执行一个或多个应用程序(未示出)的功能。应用程序可以是用户级应用程序和/或内核级应用程序。应用程序被配置为发出I/O请求,其中,应用程序发出的I/O请求被存储控制器装置驱动器(SCDD)(102A、102B)接收和处理。存储控制器装置驱动器(SCDD)(102A、102B)被配置为根据图5-9中所示的实施例接收和处理I/O请求。在本专利技术的一个实施例中,SCDD在客户端的用户级(与内核级完全不同)上执行。在本专利技术的一个实施例中,存储池(112)包括一个或多个存储服务器(106A、106B),其中,每个存储服务器包括存储控制器(108A、108B)和储本文档来自技高网...
用于采用一致性散列的全局命名空间的方法

【技术保护点】
一种用于将数据写到存储池的方法,包括:接收用于对象的虚拟标识符(ID)和偏移,其中所述虚拟标识符包括对象标识符和节点标识符;使用所述节点标识符从第一存储服务器获取用于所述对象的对象布局(OL);使用所述对象标识符和所述偏移产生值;使用全局命名空间布局(GL)、所述对象布局和所述值来标识所述存储池中的第二存储服务器;和发出将数据写到所述第二存储服务器中的对象的写请求,其中,所述写请求包括所述对象标识符和所述偏移。

【技术特征摘要】
2012.11.08 US 13/671,9961.一种用于将数据写到存储池的方法,包括:接收用于对象的虚拟标识符(ID)和偏移,其中所述虚拟标识符包括对象标识符和节点标识符;使用所述节点标识符从第一存储服务器获取用于所述对象的对象布局(OL);使用所述对象标识符和所述偏移产生值;使用全局命名空间布局(GL)、所述对象布局和所述值来标识所述存储池中的第二存储服务器;和发出将数据写到所述第二存储服务器中的对象的写请求,其中,所述写请求包括所述对象标识符和所述偏移。2.根据权利要求1所述的方法,其中,标识第所述二存储服务器包括使用一致性散列。3.根据权利要求1所述的方法,其中,所述存储池包括多个存储服务器,其中,所述全局命名空间布局指定所述多个存储服务器中的哪些对于每个全局命名空间布局序号是可写的、以及在对于每个全局命名空间布局序号可写的所述多个存储服务器之间写是如何分布的。4.根据权利要求1所述的方法,其中,所述对象布局指定对象布局序号,其中,当所述对象被创建时,所述对象布局序号被设置,其中,当所述对象被创建时,所述对象布局序号对应于全局命名空间布局序号,并且其中,标识所述存储池中的第二存储服务器包括:使用所述对象布局序号从所述全局命名空间布局标识全局命名空间布局序号;使用所述全局命名空间布局确定所述多个存储服务器中的哪个在所述全局命名空间布局序号是可写的以获得一组存储服务器;和从所述组存储服务器标识所述第二存储服务器。5.根据权利要求1所述的方法,其中,标识所述存储池中的所述第二存储服务器包括使用一致性散列和来自所述全局命名空间布局的关于在所述存储池之内写是如何分布的信息。6.根据权利要求1所述的方法,其中,从所述第一存储服务器获得所述对象布局包括:使用所述虚拟标识符和特殊偏移产生第二值;和使用所述第二值从所述第一存储服务器获得所述对象布局。7.根据权利要求1所述的方法,其中,所述对象布局包括对象布局序号、所述虚拟标识符和条带宽度。8.根据权利要求1所述的方法,其中,所述全局命名空间布局包括:用于所述第一存储服务器的第一服务器条目,所述第一服务器条目包括:标识所述第一存储服务器的所述节点标识符;对应于当第一存储服务器被添加到所述存储池时的全局命名空间布局序号的第一节点序号;和用于确定哪些写请求由所述第一存储服务器服务的节点标点。9.根据权利要求1所述的方法,进一步包括:确定所述第二存储服务器不包括所述对象布局的副本;发出将所述对象布局存储到所述第二存储服务器的请求。10.根据权利要求1所述的方法,进一步包括:接收用于第二对象的第二虚拟标识符和第二偏移,其中所述虚拟标识符包括第二对象标识符和第二节点标识符;使用所述第二节点标识符从所述第三存储服务器获得用于所述第二对象的第二对象布局;使用所述第二对象标识符和所述第二偏移产生第二值;使用所述全局命名空间布局、所述第二对象布局和所述第二值标识所述存储池中的所述第二存储服务器;和发出将数据写到所述第二存储服务器中的所述第二对象的第二写请求,其中,所述第二写请求包括所述第二对象标...

【专利技术属性】
技术研发人员:M·W·夏皮罗
申请(专利权)人:DSSD股份有限公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1