CN104854551B - 用于采用一致性散列的全局命名空间的方法 - Google Patents

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

Info

Publication number
CN104854551B
CN104854551B CN201380063506.0A CN201380063506A CN104854551B CN 104854551 B CN104854551 B CN 104854551B CN 201380063506 A CN201380063506 A CN 201380063506A CN 104854551 B CN104854551 B CN 104854551B
Authority
CN
China
Prior art keywords
storage server
identifier
storage
server
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380063506.0A
Other languages
English (en)
Other versions
CN104854551A (zh
Inventor
M·W·夏皮罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
DSSD Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DSSD Inc filed Critical DSSD Inc
Priority to CN201710438687.0A priority Critical patent/CN107273050B/zh
Publication of CN104854551A publication Critical patent/CN104854551A/zh
Application granted granted Critical
Publication of CN104854551B publication Critical patent/CN104854551B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

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

Description

用于采用一致性散列的全局命名空间的方法
背景技术
存储系统被要求存储大量数据并且允许存储容量随时间缩放。传统的缩放存储容量的方法是与存储池中的一个或多个存储服务器相组合地包括一个或多个专用的元数据服务器。存储服务器存储客户端数据,并且元数据服务器存储关于客户端数据在存储服务器内的位置的元数据(而不存储客户端数据)。随着存储容量要求增加,存储服务器的数量可能增加,并且存储在元数据服务器中的元数据的量也可能增加。
在这样的情况下,元数据服务器在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)和储存器(110A、110B)。
存储控制器(108A、108B)被配置为实现本发明的根据图3-9的各种实施例。在本发明的一个实施例中,存储控制器包括被配置为执行实现本发明的一个或多个实施例的指令的处理器(未示出),其中,这些指令被存储在位于存储控制器内的或者操作地连接到存储控制器的非暂时性计算机可读介质(未示出)上。可替代地,存储控制器可以使用被配置为提供前述功能的集成电路来实现。可替代地,存储控制器可以使用FPGA、ASIC、其他专门的硬件或者它们的任何组合来实现。在不脱离本发明的情况下,存储控制器可以使用软件和/或硬件的任何组合来实现。
在本发明的一个实施例中,储存器(110A、110B)包括一个或多个永久性存储装置,包括,但不限于,磁性存储装置、光学存储装置、固态存储装置、 相变存储装置、任何其他合适类型的永久性存储装置、或者它们的任何组合。
在本发明的一个实施例中,通信结构(104)使得客户端(100A、100B)与存储池(112)之间能够通信。通信结构可以使用任何有线、无线或混合(有线和无线)连接来使得客户端(100A、100B)与存储池(112)之间能够通信。
通信结构可以包括单个交换机或多个互连的交换机(未示出)。如果通信结构包括多个交换机,则每个交换机可以连接到每一个其他的交换机,可以连接到交换机结构中的交换机的子集,或者可以仅连接到一个其他的交换机。在本发明的一个实施例中,每个交换机是被配置为使得客户端(100A、100B)与存储池(112)之间可以通信的硬件和逻辑的组合(例如使用集成电路实现)(根据通信结构实现的协议定义)。
通信结构可以促进使用任何通信协议的通信。这样的通信协议的例子可以包括,但不限于,外围组件互连(PCI)、PCI-Express(PCIe)、PCI-eXtended(PCI-X)、非易失性存储器高速(NVMe)、通过PCI-Express结构的非易失性存储器高速(NVMe)、通过以太网结构的非易失性存储器高速(NVMe)、以及通过无限带宽结构的非易失性存储器高速(NVMe)。本发明不限于前述协议。
在不脱离本发明的情况下,可以使用除了图1中所示的系统配置之外的系统配置。
图2A-2C示出根据本发明的一个或多个实施例的数据结构和数据结构之间的关系。
全局命名空间布局(GL)指定存储池(或者其一部分)在该存储池(或者其该部分)的寿命期间的状态。在给定时间,存储池的状态指定(i)在存储池中哪些存储服务器是可写的,以及(ii)存储池中可写的存储服务器之间的写分布。更具体地讲,当数据可以被写到存储服务器上的对象时,该存储服务器被视为“可写的”。就这点而论,可能存在如下的情况,即,在存储池中存在N个存储服务器,但是仅M个存储服务器是“可写的”,其中,M<N。不管存储服务器是否是“可写的”,该存储服务器都可以根据例如图8为读请求服务。关于可写的存储服务器之间的写分布,可写的存储服务器之间的写分布确定用于给定对象的数据可以被存储到这些可写的存储器服务器中的哪些。换句话说,当写请求被接 收到时,可写的存储服务器之间的写分布确定数据最终将被存储到存储服务器中的哪些。
翻到图2A,GL(200)包括GL序号(202)、节点计数(204)以及一个或多个服务器条目(206A、206B)。下面描述这些组件中的每个。
GL序号(202)唯一地标识在存储池的整个寿命期间的GL的版本。节点计数(204)指定在存储池中的存储服务器的数量;然而,如上所述,并非所有的存储服务器都是“可写的”。
每个服务器条目(206A、206B)指定特定服务器在给定时间的写分布。更具体地讲,服务器条目可以包括,但不限于,(i)唯一地标识存储池中的(或者存储池的与GL相关联的部分内的)存储服务器的节点标识符(ID)(208A、208B)、(ii)一个或多个节点标点(210A、210B)(下面描述)、以及(iii)指定该服务器条目适用的GL序号的节点序号(212A、212B)。
关于节点标点,散列函数应用于每个节点ID以产生一个或多个值,其中,这些值映射到数值范围[0,…,N]。这些值随后除以N,从而得到映射到数值范围[0,…,1]的节点标点,这些节点标点从概念上讲可以被看作单位圆(即,半径为1的圆)。用于所有存储服务器的在数值范围[0,…,1]内的节点标点的数量和分布描述存储服务器在特定GL序号的写分布。如果特定存储服务器在给定GL序号不具有节点标点,则该特定存储服务器在该GL序号不是“可写的”。在不脱离本发明的情况下,写分布可以使用其他的有限数值范围(即,除了[0,…,1]之外的数值范围)来指定。
在本发明的一个实施例中,当(i)用于存储池(或者其一部分)中的任何一个存储服务器的节点标点(一个或多个)改变、或者(ii)新的存储服务器被添加到存储池(参见例如图4)时,GL序号被更新。用于一个或多个存储服务器的节点标点(一个或多个)可以基于每个存储服务器的空闲的存储容量而被修改,以便使写偏向于一个或多个存储服务器和/或远离一个或多个存储服务器。可替代地,用于一个或多个存储服务器的节点标点(一个或多个)可以被修改,以便确保当新的存储服务器添加到存储池时存储池中的存储服务器之间的数据分布是均匀的。可替代地,用于一个或多个存储服务器的节点标点(一个或多个)可以被修改,以便将单个的服务器的带宽和/或I/O请求处理能力考虑在内。
图2B示出根据本发明的一个实施例的对象布局(OL)。OL(214)包括OL序号(216)、虚拟ID(VID)(218)以及条带宽度(224)。下面描述这些组件中的每个。
OL序号(216)对应于与OL(214)相应的对象第一次被创建时GL(200)的GL序号(202)。虚拟ID(218)包括节点ID(220)和对象ID(222)。节点ID(220)标识产生VID(218)并且包括VID(218)的副本(通常存储在适当的OL中,参见例如图6)的存储服务器。对象ID(222)在全局命名空间中唯一地标识对象(即,对象ID对于全局命名空间横跨的存储服务器中的所有其他的对象ID都是唯一的)。条带宽度(224)对应于在前进到GL中的下一个存储服务器标点之前顺序地传送到存储服务器(GL标识)的数据单位。例如,如果条带宽度(SW)是64Kb,并且将被写到存储池的对象用对象ID和偏移(O)=256K标识,并且将被写到对象的数据的大小是128Kb,则将发出两个写请求,其中,每个请求包括64Kb的数据,并且其中,每个写请求可以由不同的存储服务器服务。具体地讲,用于对象的OL使用散列<VID,-1>标识。用于第一个64kb的第一个写请求被发到使用散列<对象ID,256>和GL标识的存储服务器,和用于第二个64kb的第二个写请求被发到使用散列<对象ID,256+64>和GL标识的存储服务器。下面描述使用前述散列值的特定存储服务器的选择。在本发明的一个实施例中,条带宽度被设置为等于存储服务器和/或通信结构所支持的最大传输单位(MTU)。
在存储池中对于每个对象存在单个OL。在本发明的一个实施例中,一旦被创建,用于对象的OL就不会改变。OL用于标识与OL相应的对象被创建时GL的状态。通过该信息,对象(或者其一部分)可以被安置在存储池中。(参见例如图7和8)。
图2C示出根据本发明的一个或多个实施例的散列值与物理存储位置之间的关系。每个OL具有唯一的VID,并且被存储在节点ID所标识的存储服务器中的至少一个物理位置中,节点ID在VID中指定。(参见例如图2B,218)。在本发明的一个实施例中,物理存储位置(228)(即,存储OL的物理位置)映射到节点ID所标识的存储服务器中的散列表条目。散列表条目与通过对<VID,-1>(226)进行散列变换而产生的散列值相关联。散列表条目还可以包括OL的副本 在存储服务器的非易失性存储器中的位置。在不脱离本发明的情况下,可以使用任何散列函数和任何特殊偏移(不只是-1)。
图3-9示出根据本发明的一个或多个实施例的流程图。虽然每个流程图中的各个步骤是按顺序呈现和描述的,但是普通技术人员将意识到,这些步骤中的一些或全部可以按不同次序执行,可以组合或省略,并且这些步骤中的一些或全部可以并行执行。在本发明的一个实施例中,图3-9中所示的一个或多个步骤可以与图3-9中所示的一个或多个其他并行执行。
图3示出根据本发明的一个或多个实施例的用于初始化存储池的流程图。图3中所示的处理可以由存储池中的一个存储服务器执行,或者由系统中的客户端之一执行。在步骤300中,标识将被包括在存储池中的存储服务器。在步骤302中,选择在步骤300中标识的存储服务器之一。在步骤304中,获得用于在步骤302中选择的存储服务器的节点ID。可以使用任何已知的用于获得和/或产生ID的机制来获得和/或产生节点ID。
在步骤306中,将散列函数应用于节点ID以获得一个或多个节点标点。可以基于客户端指定的策略、基于一个或多个存储服务器指定的策略、或者基于与存储池相关联的默认策略来确定分配给给定的存储服务器的节点标点的数量。在步骤308中,创建与在步骤302中标识的存储服务器相应的服务器条目,并且使用节点ID、节点标点(一个或多个)和节点序号来填充该服务器条目。节点序号对应于当前GL序号。例如,如果服务器条目是在GL序号为0时创建的,则节点序号被设置为0。图3示出初始GL的产生。因此,即使GL中的GL序号在这个阶段可能未在GL中正式设置,GL序号也将是初始GL序号值,例如,1,就这点而论,节点序号可以在正式设置初始GL之前被设置。
在步骤310中,确定是否存在附加的要处理的存储服务器。如果存在附加的要处理的存储服务器,则所述处理进入步骤302;否则,所述处理进入步骤312。在步骤312中,在GL中设置GL序号。图3示出初始GL的产生。因此,GL序号被设置为初始GL序号值,例如,1。在步骤314中,设置节点计数,其中,节点计数对应于存储池中的存储服务器的数量。在步骤316中,将GL存储在存储池中的每个服务器中。
图4示出根据本发明的一个或多个实施例的用于将存储服务器添加到存储 池的流程图。在步骤400中,标识要添加到存储池的附加的存储服务器。通常,该步骤在图3中所示的处理已经被执行之后的时刻(例如,当添加附加的存储服务器来增加存储池的存储容量时)发生。
在步骤402中,获得用于所述附加的存储服务器的节点ID。可以使用任何已知的用于获得和/或产生ID的机制来获得和/或产生节点ID。在步骤404中,将散列函数应用于节点ID以获得一个或多个节点标点。节点标点(一个或多个)可以以使得新的写请求偏向于所述附加的存储服务器的方式产生。在步骤406中,创建与在步骤400中标识的附加的存储服务器相应的服务器条目,并且使用节点ID、节点标点(一个或多个)和节点序号来填充该服务器条目。节点序号对应于当前GL序号加1。将服务器条目添加到GL来获得更新的GL。
在步骤408中,在更新的GL中更新GL序号。例如,将GL序号加1。用于在步骤406中创建的服务器条目的节点序号等于更新的GL序号。在步骤410中,更新节点计数来反映存储池中的附加的存储服务器。在步骤412中,将更新的GL存储在存储池中的每个服务器中。在本发明的一个实施例中,在每个存储服务器上仅存储一个GL,就这点而论,当更新的GL被存储服务器接收时,以前的GL被从该存储服务器删除或者以其他方式从该存储服务器移除。在本发明的一个实施例中,更新的GL可以由存储服务器根据图5中所描述的处理而获得。
图5示出根据本发明的一个或多个实施例的用于将客户端连接到存储池的流程图。在本发明的一个实施例中,图5中所示的处理由SCDD(图1中的102A、102B)执行。
在步骤500中,存储池中的存储服务器之一从客户端接收连接请求。在步骤502中,响应于连接请求,存储服务器将其当前的GL提供给客户端。在步骤504中,客户端确定它是否已经具有GL。在本发明的一个实施例中,如果客户端先前已经连接到了存储池中的另一个存储服务器,则该客户端已经包括GL(该GL可以或者可以不与在步骤502中获得的当前GL相同)。如果客户端已经具有另一个GL,则所述处理进入步骤506;否则,所述处理结束。
在步骤506中,确定在步骤502中获得的GL是否是用于存储池的最当前的GL。更具体地讲,确定在步骤502中获得的GL的序号是否大于客户端 先前获得的GL的序号。如果在步骤502中获得的GL的序号大于客户端先前获得的GL的序号,则所述处理进入步骤508;否则,所述处理结束。在步骤508中,客户端将先前存储的GL(即,具有比它提供给客户端的GL的GL序号大的GL序号的GL)发送到存储服务器。
图6示出根据本发明的一个或多个实施例的用于创建对象并且将数据存储在该对象中的流程图。在本发明的一个实施例中,图6中所示的处理由SCDD(图1中的102A、102B)执行。
在步骤600中,接收创建新对象的请求。在本发明的一个实施例中,该请求由在客户端上执行的应用程序发出,并且被SCDD接收。
在步骤602中,选择存储服务器。在本发明的一个实施例中,从存储池随机地选择或者使用圆罗宾(round robin)算法选择存储服务器。在不脱离本发明的情况下,可以使用任何的从存储池选择存储服务器的方法。
在步骤604中,将产生新的虚拟ID(VID)的请求发送到在步骤602中标识的存储服务器。VID包括节点ID,节点ID标识存储服务器,和对象ID,对象ID标识存储池中的新对象。
在步骤606中,创建用于对象的对象布局(OL)。OL可以由存储服务器或者由SCDD创建。具体地讲,存储服务器和SCDD都包括填充用于对象的OL所必需的信息。
在步骤608中,对<VID,-1>进行散列变换以获得第一散列值。如以上所讨论的,在不脱离本发明的情况下,可以使用任何的特殊偏移(除了-1之外)。在步骤610中,使用第一散列值将用于对象的OL存储在存储服务器中。如上所述,第一散列值与存储服务器上的散列表条目相关联,其中,散列表条目与存储服务器的储存器中的存储OL的至少一个物理位置相关联。在这个阶段,对象和相应的OL已经被创建;然而,数据尚未被存储在对象中。下列步骤描述数据最初是如何存储在对象中的。
在步骤612中,对<对象ID,偏移ID>进行散列变换以获得第二散列值。更具体地讲,客户端上的应用程序请求与VID和偏移相关联的数据被存储在对象中。作为响应,SCDD从VID获得对象ID,和偏移ID则通过将基于条带宽度的位掩码应用于偏移而获得。
在步骤614中,使用用于对象的第二散列值、GL和OL来标识存储池中的目标存储服务器。更具体地讲,从OL提取OL序号,并且使用该OL序号来确定当OL被创建时哪些存储服务器是“可写的”。在本发明的一个实施例中,确定哪些存储服务器是“可写的”包括:(i)标识所有的具有小于或等于OL序号的节点序号的服务器条目;(ii)分析任何的具有相同的节点ID的服务器条目以确定当OL被创建时可写的一个或多个节点标点;(iii)从(i)和(ii)产生最终的一组节点标点;以及(iv)使用一致性散列、连同第二散列值和节点标点来标识目标服务器。关于图10A-10J进一步描述一致性散列。
以下是确定当OL被创建时哪些存储服务器是“可写的”的例子。这个例子并非意图限制本发明的范围。
考虑GL具有下列服务器条目的情况:
E1:[Node A,[A1,A2],S1]
E2:[Node A,[A3],S2]
E3:[Node B,[B1],S1]
E4:[Node C,[C1,C2],S2]
E5:[Node D,[D1],S3]
进一步,用于对象的OL如下:
OL:[S2,VID,SW]
因此,具有小于或等于OL序号的节点序号的服务器条目是E1、E2、E3和E4。此外,E1和E2具有相同的节点ID,即,节点A,但是具有在不同节点序号的不同节点标点,因此,对E1和E2进行分析以确定哪些节点应与在S2被标识为节点A的存储服务器相关联。在这个例子中,在S2,仅存在一个节点标点A3。因此,最终的一组节点标点是A3、B1、C1和C2。
继续参照图6,在步骤616,将数据存储在对象中的写请求发送到目标服务器,其中,该请求标识对象ID和偏移。在不脱离本发明的情况下,前述请求可以使用任何逻辑地址。
图7示出根据本发明的一个或多个实施例的用于将数据写到存储池中的先前创建的对象的流程图。在本发明的一个实施例中,图7中所示的处理由SCDD(图1中的102A、102B)执行。
在步骤700中,接收<VID,offset>。在步骤702中,从VID提取节点ID。在步骤704中,对<VID,-1>进行散列变换以获得第一散列值。如上所述,在不脱离本发明的情况下,可以使用任何的特殊偏移(除了-1之外)。在步骤706中,使用第一散列值从节点ID所标识的存储服务器获得OL。如果SCDD以前获得了OL(例如,当执行图6中的各个步骤时),则步骤702-706可能不需要执行,相反,客户端可以使用先前高速缓存的OL。
在步骤708中,对<object ID,offset ID>进行散列变换以获得第二散列值。在本发明的一个实施例中,对象ID从VID获得,偏移ID则通过将基于条带宽度的位掩码应用于偏移而获得。在步骤710中,使用用于对象的第二散列值、GL和OL标识存储池中的目标存储服务器。使用与图6中的步骤614中所描述的处理相同的处理标识目标服务器。在步骤712中,将数据存储在对象中的请求发送到目标服务器,其中,该请求指定对象ID和偏移。在不脱离本发明的情况下,前述请求可以使用任何逻辑地址。在步骤714中,确定目标存储服务器是否包括OL。如果目标存储服务器包括OL,则所述处理结束;否则,所述处理进入步骤716。在步骤716中,使用第一散列值将OL存储在目标存储服务器中。以这种方式,将给定OL的附加副本存储在存储池中的各个存储服务器中。这使得客户端可以使用散列<VID,-1>来获得用于除了节点ID所标识的服务器之外的服务器的OL。
图8示出根据本发明的一个或多个实施例的用于从存储池中的对象读数据的流程图。在本发明的一个实施例中,图8中所示的处理由SCDD(图1中的102A、102B)执行。
在步骤800中,接收<VID,偏移>。在步骤802中,从VID提取节点ID。在步骤804中,对<VID,-1>进行散列变换以获得第一散列值。如以上所讨论的,在不脱离本发明的情况下,可以使用任何的特殊偏移(除了-1之外)。在步骤806中,使用第一散列值从节点ID所标识的存储服务器获得OL。如果SCDD先前已经获得了OL,则步骤802-806可能不需要执行。相反,SCDD可以搜索客户端来获得OL。
在步骤808中,对<对象ID,偏移ID>进行散列变换以获得第二散列值。在本发明的一个实施例中,对象ID从VID获得,偏移ID则通过将基于条带宽 度的位掩码应用于偏移而获得。在步骤810中,使用用于对象的第二散列值、GL和OL来标识存储池中的目标存储服务器。使用与在图6中的步骤614中所描述的处理相同的处理来标识目标服务器。在步骤812中,将对象中的读请求发送到目标服务器,其中,该请求指定对象ID和偏移。在不脱离本发明的情况下,前述请求可以使用任何逻辑地址。
图9示出根据本发明的一个或多个实施例的用于删除存储池中的对象的流程图。在本发明的一个实施例中,图9中所示的处理由SCDD(图1中的102A、102B)执行和/或发起。
在步骤900中,获得VID,其中,该VID对应于将从存储池删除的对象。在步骤902中,从VID提取节点ID。在步骤904中,对<VID,-1>进行散列变换以获得第一散列值。如上所述,在不脱离本发明的情况下,可以使用任何的特殊偏移(除了-1之外)。在步骤906中,将删除标志写到通过节点ID标识的存储服务器中、与第一散列值相应的散列表条目。在步骤908中,使存储池中的所有的其他的存储服务器中的所有的与第一散列值相应的散列表条目失效。在步骤910中,使通过节点ID标识的存储服务器中的与第一散列值相应的散列表条目失效。在这个阶段,可以使用任何已知的存储回收算法来回收先前分配给存储现在失效的对象和/或OL的物理储存器。
图10A-10J示出根据本发明的一个或多个实施例的例子。例子并非意图限制本发明的范围。此外,在图10A-10J中,为清晰起见,省略了客户端和存储服务器中的各种组件。
考虑系统包括连接到最初包括两个存储服务器的存储池的客户端。图10A示出用于存储池的初始GL。参照图10A,GL包括用于每个存储服务器的服务器条目(服务器条目A、服务器条目B)。具体地讲,服务器条目A对应于存储服务器A(参见图10B),并且指定下列信息:(i)节点ID A,其在存储池中唯一地标识存储服务器A;(ii)节点标点:A1、A2(参见图10D);以及(iii)节点序号A:1,其指当GL序号等于1时服务器条目A被添加到GL。类似地,服务器条目B对应于存储服务器B(参见图10B),并且指定下列信息:(i)节点ID B,其在存储池中唯一地标识存储服务器B;(ii)节点:B1(参见图10D);以及(iii)节点序号B:1,其指当GL序号等于1时服务器条目B被添加到GL。GL还包括被 设置为1的GL序号,因为这是初始GL,并且节点计数被设置为2,因为在存储池中存在两个存储服务器。
参照图10B,在某一稍后的时刻,客户端A将对于新对象的请求发送到服务器A。如以上所讨论的,客户端A可以将对于新对象的请求发送到存储池中的可写的存储服务器中的任何一个。响应于该请求,存储服务器A产生VID,其中,VID包括节点ID A和用于存储池中的新对象的对象ID。存储服务器A随后产生用于该新对象的对象布局(OL)。图10C示出存储服务器A产生的OL。参照图10C,OL包括下列信息:(i)OL序号:1,其指示当GL序号等于1时OL条目被创建;(ii)VID,其事先由存储服务器A产生;以及(iii)条带宽度:64Kb。
返回到图10B,在产生OL之后,存储服务器A使用散列<VID,-1>存储OL,并且还将OL的副本发送到客户端A。在某一稍后的时间,在客户端A上执行的应用程序(未示出)请求将数据写到<对象ID,偏移1>。响应于该请求,客户端A使用OL(参见图10C)、GL(参见图10A)和散列<对象ID,偏移1>来标识目标服务器,其中,偏移ID通过用从OL(参见图10C)获得的条带宽度掩蔽偏移1而产生。
如前面所讨论的,OL用于确定在OL被创建时在全局命名空间中哪些存储服务器是“可写的”。在这个例子中,OL序号为1。因此,在OL被创建时在全局命名空间中可写的存储服务器将在GL中具有其节点序号小于或等于1的服务器条目。参照图10A中的GL,服务器条目A和服务器条目B都具有等于1的节点序号,就这点而论,当OL被创建时在全局命名空间中是可写的。用于每个存储服务器的节点标点(即,A1、A2和B1)从相应的服务器条目获得。
随后使用节点标点(即,A1、A2和B1)和散列<对象ID,偏移ID 1>来标识目标服务器。更具体地讲,参照图10D,每一个节点标点(即,A1、A2和B1)从概念上讲均可以被看作是单位圆上的标点,其中,节点标点(即,A1、A2和B1)的值规定每个节点标点在单位圆上的位置。此外,散列<对象ID,偏移ID 1>从概念上讲也可以被看作是单位圆上的标点。应用一致性散列的原理,从散列<对象ID,偏移ID 1>限定的标点开始,并且在顺时针方向上移动,所遇到的第一个节点标点将用于标识目标服务器。在这个例子中,散列<对象ID,偏移ID 1>位于A1与B1之间。在顺时针方向上移动,所遇到的第一个节点标点是 B1。B1是与存储服务器B相关联的节点标点。因此,存储服务器B被标识为目标服务器。
参照图10B,客户端A随后将指定(散列<对象ID,偏移1>,数据)的写请求发送到存储服务器B。存储服务器B随后存储数据。因为存储服务器B不包括OL的副本,所以客户端A还将OL的副本发送到存储服务器B。当接收到时,存储服务器B使用散列<VID,-1>存储OL。
参照图10E,在某一稍后的时间,将存储服务器C添加到存储池。结果,GL被更新来反映新存储服务器的添加。更新的GL包括服务器条目C。服务器条目C对应于存储服务器C(参见图10F),并且指定下列信息:(i)节点ID C,其在存储池中唯一地标识存储服务器C;(ii)节点:C1(参见图10G);以及(iii)节点序号C:2,其指示当GL序号等于2时服务器条目C被添加到GL。GL还包括被设置为2的指示GL已经被更新的GL序号、以及被设置为3的节点计数,因为在存储池中存在三个存储服务器。
参照图10F,在GL被更新(参见图10E)在之后,客户端A接收从<VID,offset 2>读数据的请求。因为OL对应于先前提供给客户端的VID(参见图10B)所标识的对象,所以不需要向存储池请求OL。
客户端A使用OL(参见图10C)、GL(参见图10E)和散列<对象ID,偏移ID2>来标识目标服务器,其中,偏移ID 2通过用从OL(参见图10C)获得的条带宽度掩蔽偏移2而产生。
如前面所讨论的,OL用于确定在OL被创建时在全局命名空间中哪些存储服务器是“可写的”。在这个例子中,OL序号是1。因此,在OL被创建时在全局命名空间中可写的存储服务器将在GL中具有节点序号小于或等于1的服务器条目。参照图10E中的GL,服务器条目A和服务器条目B都具有等于1的节点序号,就这点而论,当OL被创建时在全局命名空间中是可写的。虽然GL包括服务器条目C,但是因为节点序号C为2,所以存储服务器C在OL被创建时是不可写的,就这点而论,不用于标识目标服务器。用于存储服务器A和B的节点标点(即,A1、A2和B1)从相应的服务器条目获得。
随后使用节点标点(即,A1、A2和B1)和散列<对象ID,偏移ID 2>来标识目标服务器。更具体地讲,参照图10G,节点标点(即,A1、A2和B1)从概念 上讲均可以被看作是单位圆上的标点,其中,节点标点(即,A1、A2和B1)的值规定每个节点标点在单位圆上的位置。此外,散列<对象ID,偏移ID 2>从概念上讲也可以被看作是单位圆上的标点。应用一致性散列的原理,从散列<对象ID,偏移ID 2>限定的点开始,并且在顺时针方向移动,所遇到的第一个节点标点将用于标识目标服务器。在这个例子中,散列<对象ID,偏移ID 2>位于B1与A2之间。在顺时针方向上移动,所遇到的第一个节点标点是A2。A2是与存储服务器A相关联的节点。因此,存储服务器A被标识为目标服务器。
参照图10F,客户端A随后将指定<对象ID,偏移2>的读请求发送到存储服务器A。存储服务器A随后获得所请求的数据,并且将它送回到客户端A。
参照图10H,在GL被更新(参见图10E)之后,客户端A接收读用于<VID 2,偏移3>的数据的请求。客户端A从VID 2(参见图10I)提取节点ID B(其标识存储服务器B),随后使用散列<VID 2,-1>将对于OL2的请求发送到存储服务器B。响应于该请求,存储服务器B获得OL2,并且将它送回到客户端A。
客户端A然后使用OL 2(参见图10J)、GL(参见图10E)和散列<对象ID 2,偏移ID 3>来标识目标服务器,其中,偏移ID 3通过用从OL 2(参见图10J)获得的条带宽度掩蔽偏移3而产生。
如前面所讨论的,OL用于确定在OL被创建时在全局命名空间中哪些存储服务器是“可写的”。在这个例子中,OL序号是2(参见图10J)。因此,在OL 2被创建时在全局命名空间中可写的存储服务器将在GL中具有其节点序号小于或等于2的服务器条目。参照图10E中的GL,服务器条目A、服务器条目B和服务器条目C全都具有小于或等于2的节点序号,就这点而论,当OL 2被创建时在全局命名空间中是可写的。用于每个存储服务器的节点标点(即,A1、A2和B1)从相应的服务器条目获得。
随后使用节点标点(即,A1、A2、B1、C1)和散列<对象ID 2,偏移ID 3>来标识目标服务器。更具体地讲,参照图10J,每个节点(即,A1、A2和B1)从概念上讲均可以被看作是单位圆上的标点,其中,节点标点(即,A1、A2、B1、C1)的值规定每个节点标点在单位圆上的位置。此外,散列<对象ID 2,偏移ID 3>从概念上讲也可以被看作是单位圆上的标点。应用一致性散列的原理,从散列<对象ID 2,偏移ID 3>限定的点开始,并且在顺时针方向上移动,所 遇到的第一个节点标点将用于标识目标服务器。在这个例子中,散列<对象ID 2,偏移ID 3>位于B1与C1之间。在顺时针方向上移动,所遇到的第一个节点标点是C1。C1是与存储服务器C相关联的节点。因此,存储服务器C被标识为目标服务器。
参照图10H,客户端A随后将指定(<对象ID 2,偏移3>)的读请求发送到存储服务器C。存储服务器C随后获得所请求的数据,并且将它送回到客户端A。
虽然已经关于有限数量的实施例描述了本发明,但是受益于本公开的本领域的技术人员将意识到,可以设想不脱离如本文中所公开的本发明的范围的其他实施例。因此,本发明的范围仅应由所附权利要求书限制。

Claims (19)

1.一种用于将数据写到存储池的方法,包括:
接收用于对象的虚拟标识符(ID)和偏移;
从所述虚拟标识符提取节点标识符(ID),所述节点标识符标识所述存储池中的第一存储服务器;
从所述第一存储服务器获取用于所述对象的对象布局(OL);
对对象标识符和偏移标识符进行散列变换以获得散列值,其中,所述虚拟标识符包括所述对象标识符,并且其中,所述偏移标识符从所述偏移产生;
使用全局命名空间布局(GL)、所述对象布局和所述散列值来标识所述存储池中的第二存储服务器;和
发出将数据写到第二存储服务器中的对象的写请求,其中,所述写请求包括所述对象标识符和所述偏移。
2.根据权利要求1所述的方法,其中,标识第二存储服务器包括使用一致性散列。
3.根据权利要求2所述的方法,其中,所述存储池包括多个存储服务器,其中,所述全局命名空间布局指定所述多个存储服务器中的哪些对于每个全局命名空间布局序号是可写的、以及在对于每个全局命名空间布局序号可写的所述多个存储服务器之间,写是如何分布的。
4.根据权利要求3所述的方法,
其中,所述对象布局指定对象布局序号,其中,当所述对象被创建时,所述对象布局序号被设置,其中,当所述对象被创建时,所述对象布局序号对应于全局命名空间布局序号,并且
其中,标识所述存储池中的第二存储服务器包括:
使用所述对象布局序号从所述全局命名空间布局标识全局命名空间布局序号;
使用所述全局命名空间布局确定所述多个存储服务器中的哪个在所述全局命名空间布局序号是可写的以获得一组存储服务器;和
从所述组存储服务器标识第二存储服务器。
5.根据权利要求4所述的方法,其中,从所述存储服务器组标识第二存储服务器包括使用一致性散列和来自所述全局命名空间布局的关于在所述组存储服务器之间写是如何分布的信息。
6.根据权利要求1所述的方法,其中,从第一存储服务器获得对象布局包括:
对所述虚拟标识符和特殊偏移进行散列变换以获得第二散列值;和
使用所述第二散列值从第一存储服务器获得对象布局。
7.根据权利要求1所述的方法,其中,所述对象布局包括对象布局序号、所述虚拟标识符和条带宽度。
8.根据权利要求1所述的方法,其中,所述全局命名空间布局包括:
用于第一存储服务器的第一服务器条目,所述第一服务器条目包括:
标识所述第一存储服务器的节点标识符;
对应于当第一存储服务器被添加到所述存储池时的全局命名空间布局序号的第一节点序号;和
用于确定哪些写请求由第一存储服务器服务的节点标点。
9.根据权利要求1所述的方法,进一步包括:
确定第二存储服务器不包括所述对象布局的副本;
发出将所述对象布局存储到所述第二存储服务器的请求,其中,存储所述对象布局的请求指定所述虚拟标识符和特殊偏移。
10.根据权利要求1所述的方法,进一步包括:
接收用于第二对象的第二虚拟标识符和第二偏移标识符;
从第二虚拟标识符提取第二节点标识符,所述第二节点标识符标识所述存储池中的第三存储服务器;
从所述第三存储服务器获得用于所述第二对象的第二对象布局;
对第二对象标识符和第二偏移标识符进行散列变换以获得第二散列值,其中,所述第二虚拟标识符包括第二对象标识符,并且其中,所述第二偏移标识符从第二偏移产生;
使用所述全局命名空间布局、所述第二对象布局和所述第二散列值标识存储池中的所述第二存储服务器;和
发出将数据写到第二存储服务器中的第二对象的第二写请求,其中,所述第二写请求包括第二对象标识符和第二偏移。
11.根据权利要求1所述的方法,进一步包括:
接收用于第二对象的第二逻辑地址;
从第二虚拟标识符提取第二节点标识符,所述第二节点标识符标识存储池中的第二存储服务器;
从所述第二存储服务器获得用于第二对象的第二对象布局;
对第二对象标识符和第二偏移标识符进行散列变换以获得第二散列值,其中,所述第二虚拟标识符包括所述第二对象标识符,并且其中,所述第二偏移标识符从第二偏移产生;
使用所述全局命名空间布局、所述第二对象布局和所述第二散列值标识存储池中的所述第一存储服务器;和
发出将数据写到所述第一存储服务器中的所述第二对象的第二写请求,其中,所述第二写请求包括所述第二对象标识符和所述第二偏移。
12.一种用于将数据读到存储池的方法,包括:
接收用于对象的虚拟标识符和偏移;
从所述虚拟标识符提取节点标识符(ID),所述节点标识符标识存储池中的第一存储服务器;
从第一存储服务器获得用于所述对象的对象布局(OL);
对对象标识符和偏移标识符进行散列变换以获得散列值,其中,所述虚拟标识符包括对象标识符,并且其中,所述偏移标识符从所述偏移产生;
使用全局命名空间布局(GL)、所述对象布局和所述散列值来使用一致性散列标识所述存储池中的第二存储服务器;和
发出从所述第二存储服务器中的所述对象读数据的读请求,其中,所述读请求包括所述对象标识符和所述偏移。
13.根据权利要求12所述的方法,其中,所述标识所述第二存储服务器的步骤包括:
使用所述全局命名空间布局和来自所述对象布局的对象布局序号从存储池中的多个存储服务器标识一组存储服务器;
使用所述散列值和一致性散列从所述组存储服务器标识所述第二存储服务器。
14.根据权利要求12所述的方法,其中,所述偏移标识符进一步使用条带宽度产生,其中,所述对象布局包括所述条带宽度。
15.一种用于将数据写到存储池的方法,包括:
接收对于新对象的请求;
从所述存储池选择存储服务器,其中,所述存储服务器使用节点标识符标识;
请求所述存储服务器产生虚拟标识符,其中,所述虚拟标识符包括所述节点标识符和用于所述对象的对象标识符;
使用所述虚拟标识符产生用于所述对象的对象布局(OL);
将所述对象布局存储在所述存储服务器中;
接收将数据写到所述对象的写请求,其中,所述写请求包括偏移;
从所述偏移产生偏移标识符;
对所述对象标识符和所述偏移标识符进行散列变换以获得散列值;
使用全局命名空间布局(GL)、所述对象布局和所述散列值标识所述存储池中的第二存储服务器;和
发出将数据写到第二存储服务器中的所述对象的写请求,其中,所述写请求包括所述对象标识符和所述偏移。
16.根据权利要求15所述的方法,其中,从所述存储池选择所述存储服务器包括使用选自由下列组成的组的至少一个:随机地选择所述存储服务器,以及使用圆罗宾算法选择所述存储服务器。
17.根据权利要求15所述的方法,其中,所述节点标识符唯一地标识所述存储池中的所述存储服务器。
18.根据权利要求15所述的方法,其中,将对象布局存储在所述存储服务器中包括:
对所述虚拟标识符和特殊偏移进行散列变换以获得第二散列值;和
使用所述第二散列值将所述对象布局存储在所述存储服务器中。
19.根据权利要求15所述的方法,其中,产生所述对象布局进一步包括使用来自所述全局命名空间布局的全局序号。
CN201380063506.0A 2012-11-08 2013-10-24 用于采用一致性散列的全局命名空间的方法 Active CN104854551B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710438687.0A CN107273050B (zh) 2012-11-08 2013-10-24 用于采用一致性散列的全局命名空间的方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/671,996 2012-11-08
US13/671,996 US8589659B1 (en) 2012-11-08 2012-11-08 Method and system for global namespace with consistent hashing
PCT/US2013/066491 WO2014074316A1 (en) 2012-11-08 2013-10-24 Method and system for global namespace with consistent hashing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201710438687.0A Division CN107273050B (zh) 2012-11-08 2013-10-24 用于采用一致性散列的全局命名空间的方法

Publications (2)

Publication Number Publication Date
CN104854551A CN104854551A (zh) 2015-08-19
CN104854551B true CN104854551B (zh) 2017-07-11

Family

ID=49551786

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710438687.0A Active CN107273050B (zh) 2012-11-08 2013-10-24 用于采用一致性散列的全局命名空间的方法
CN201380063506.0A Active CN104854551B (zh) 2012-11-08 2013-10-24 用于采用一致性散列的全局命名空间的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710438687.0A Active CN107273050B (zh) 2012-11-08 2013-10-24 用于采用一致性散列的全局命名空间的方法

Country Status (5)

Country Link
US (3) US8589659B1 (zh)
EP (1) EP2917821B1 (zh)
JP (2) JP5922314B2 (zh)
CN (2) CN107273050B (zh)
WO (1) WO2014074316A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430412B2 (en) * 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US10482194B1 (en) * 2013-12-17 2019-11-19 EMC IP Holding Company LLC Simulation mode modification management of embedded objects
US10852955B2 (en) 2015-12-29 2020-12-01 EMC IP Holding Company LLC Method and system for accessing data objects stored in a storage system using object descriptors allocated by clients
US10013370B2 (en) * 2015-12-29 2018-07-03 EMC IP Holding Company LLC Method and system for providing access of a storage system using a shared storage module as a transport mechanism
US9921756B2 (en) 2015-12-29 2018-03-20 EMC IP Holding Company LLC Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module
US10791109B2 (en) * 2016-02-10 2020-09-29 Red Hat, Inc. Certificate based expiration of file system objects
US10223016B2 (en) * 2016-05-10 2019-03-05 Vmware, Inc Power management for distributed storage systems
CN106372002B (zh) * 2016-08-31 2019-03-19 成都科来软件有限公司 一种数据存储方法及读取还原方法
CN107967117B (zh) * 2016-10-20 2020-10-20 杭州海康威视数字技术股份有限公司 一种数据存储、读取、清理方法、装置及云存储系统
CN106776785B (zh) * 2016-11-24 2021-06-22 腾讯科技(深圳)有限公司 一种数据写入方法及装置和数据处理系统
US10783136B1 (en) * 2017-02-28 2020-09-22 Virtuozzo International Gmbh Management of garbage data in distributed systems
CN111522788B (zh) * 2019-02-01 2024-02-06 伊姆西Ip控股有限责任公司 处理访问请求和更新存储系统的方法、设备
CN110504002B (zh) * 2019-08-01 2021-08-17 苏州浪潮智能科技有限公司 一种硬盘数据一致性测试方法与装置
US11698821B2 (en) 2020-12-09 2023-07-11 Dell Products L.P. Composable information handling systems in an open network using access control managers
US11675665B2 (en) 2020-12-09 2023-06-13 Dell Products L.P. System and method for backup generation using composed systems
US11928515B2 (en) 2020-12-09 2024-03-12 Dell Products L.P. System and method for managing resource allocations in composed systems
US11675625B2 (en) 2020-12-09 2023-06-13 Dell Products L.P. Thin provisioning of resources using SCPS and a bidding system
US11809911B2 (en) 2020-12-09 2023-11-07 Dell Products L.P. Resuming workload execution in composed information handling system
US11934875B2 (en) 2020-12-09 2024-03-19 Dell Products L.P. Method and system for maintaining composed systems
US11435814B2 (en) 2020-12-09 2022-09-06 Dell Produts L.P. System and method for identifying resources of a composed system
US11809912B2 (en) 2020-12-09 2023-11-07 Dell Products L.P. System and method for allocating resources to perform workloads
US11853782B2 (en) 2020-12-09 2023-12-26 Dell Products L.P. Method and system for composing systems using resource sets
US11604595B2 (en) 2020-12-09 2023-03-14 Dell Products L.P. Data mirroring and data migration between storage volumes using system control processors
US11693703B2 (en) 2020-12-09 2023-07-04 Dell Products L.P. Monitoring resource utilization via intercepting bare metal communications between resources
US11704159B2 (en) 2020-12-09 2023-07-18 Dell Products L.P. System and method for unified infrastructure architecture
US11797341B2 (en) 2021-01-28 2023-10-24 Dell Products L.P. System and method for performing remediation action during operation analysis
US11675916B2 (en) 2021-01-28 2023-06-13 Dell Products L.P. Method and system for limiting data accessibility in composed systems
US11687280B2 (en) 2021-01-28 2023-06-27 Dell Products L.P. Method and system for efficient servicing of storage access requests
US11768612B2 (en) 2021-01-28 2023-09-26 Dell Products L.P. System and method for distributed deduplication in a composed system
US11947697B2 (en) 2021-07-22 2024-04-02 Dell Products L.P. Method and system to place resources in a known state to be used in a composed information handling system
US11928506B2 (en) 2021-07-28 2024-03-12 Dell Products L.P. Managing composition service entities with complex networks
US11656778B2 (en) * 2021-08-17 2023-05-23 Micron Technology, Inc. Selection of block size for namespace management in non-volatile memory devices
CN113641674B (zh) * 2021-08-18 2024-02-23 中国银行股份有限公司 一种自适应全局序号发生方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647329B1 (en) * 2005-12-29 2010-01-12 Amazon Technologies, Inc. Keymap service architecture for a distributed storage system
US8285925B1 (en) * 2009-07-31 2012-10-09 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW505867B (en) * 1998-01-17 2002-10-11 Accton Technology Corp User's database in Ethernet network
JP4154893B2 (ja) * 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US7610383B2 (en) * 2006-08-11 2009-10-27 Hewlett-Packard Development Company, L.P. Data-object-related-request routing in a dynamic, distributed data-storage system
US7949630B1 (en) * 2007-12-31 2011-05-24 Emc Corporation Storage of data addresses with hashes in backup systems
JP2009289089A (ja) * 2008-05-29 2009-12-10 Nippon Telegr & Teleph Corp <Ntt> クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム
JP2009295127A (ja) * 2008-06-09 2009-12-17 Nippon Telegr & Teleph Corp <Ntt> アクセス方法、アクセス装置及び分散データ管理システム
US8868844B2 (en) * 2008-06-25 2014-10-21 International Business Machines Corporation System and method for a software managed cache in a multiprocessing environment
US7979671B2 (en) * 2008-07-28 2011-07-12 CacheIQ, Inc. Dual hash indexing system and methodology
SE533007C2 (sv) 2008-10-24 2010-06-08 Ilt Productions Ab Distribuerad datalagring
CN101504670A (zh) * 2009-03-04 2009-08-12 成都市华为赛门铁克科技有限公司 数据操作方法、系统、客户端和数据服务器
WO2012046585A1 (ja) 2010-10-04 2012-04-12 日本電気株式会社 分散ストレージシステム、その制御方法、およびプログラム
CN102833294B (zh) * 2011-06-17 2015-05-20 阿里巴巴集团控股有限公司 基于云存储的文件处理方法、系统及服务器集群系统
US8392428B1 (en) * 2012-09-12 2013-03-05 DSSD, Inc. Method and system for hash fragment representation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647329B1 (en) * 2005-12-29 2010-01-12 Amazon Technologies, Inc. Keymap service architecture for a distributed storage system
US8285925B1 (en) * 2009-07-31 2012-10-09 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system

Also Published As

Publication number Publication date
US9363317B2 (en) 2016-06-07
JP2016502715A (ja) 2016-01-28
CN107273050A (zh) 2017-10-20
US20160255152A1 (en) 2016-09-01
JP2016173826A (ja) 2016-09-29
US20150304422A1 (en) 2015-10-22
JP5922314B2 (ja) 2016-05-24
EP2917821B1 (en) 2022-05-04
CN107273050B (zh) 2020-11-03
US9787773B2 (en) 2017-10-10
CN104854551A (zh) 2015-08-19
EP2917821A1 (en) 2015-09-16
US8589659B1 (en) 2013-11-19
US20170134496A9 (en) 2017-05-11
JP6302951B2 (ja) 2018-03-28
WO2014074316A1 (en) 2014-05-15

Similar Documents

Publication Publication Date Title
CN104854551B (zh) 用于采用一致性散列的全局命名空间的方法
US10769024B2 (en) Incremental transfer with unused data block reclamation
JP6385995B2 (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
ES2690454T3 (es) Método de obtención anticipada de datos para un sistema de almacenamiento de tabla hash distribuida DHT, nodo y sistema
US9715348B2 (en) Systems, methods and devices for block sharing across volumes in data storage systems
CN104067239A (zh) 用于数据组块去复制的系统和方法
CN105718377B (zh) 虚拟化应用中拷贝磁盘数据的方法及装置
JP7133647B2 (ja) データ処理方法、装置及びコンピュータ読み取り可能な記憶媒体
CN102541983A (zh) 一种分布式文件系统中多客户端缓存同步的方法
US20170031614A1 (en) Systems, methods and devices for addressing data blocks in mass storage filing systems
CN103207894A (zh) 一种多路实时视频数据存储系统及其进行缓存控制的方法
CN104079600B (zh) 文件存储方法、装置、访问客户端及元数据服务器系统
US20130246568A1 (en) Data storage system
US11080254B2 (en) Maintaining data associated with a storage device
US10848549B1 (en) Leaderless, parallel, and topology-aware protocol for achieving consensus
CN104346298A (zh) 基于智能卡的数据处理方法、装置及智能卡
US9548885B2 (en) Systems and methods for providing replicated data from memories to processing clients
EP3477463A1 (en) Method and system for using wear-leveling using a multi-gap progress field
CN114640678A (zh) 基于SR-IOV的Pod管理方法、设备及介质
CN111125011B (zh) 一种文件处理方法、系统及相关设备
CN106201328B (zh) 一种管理存储节点的磁盘空间的方法、装置和服务器
CN115374024A (zh) 一种内存数据排序方法及相关设备
EP3844635A1 (en) Method and apparatus for data writing
CN108804342A (zh) 对永久性存储装置写入和读取数据的方法和系统
CN110096453B (zh) 数据处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180802

Address after: Massachusetts, USA

Patentee after: EMC Intellectual Property Holdings Ltd.

Address before: Massachusetts, USA

Patentee before: EMC Corp.

Effective date of registration: 20180802

Address after: Massachusetts, USA

Patentee after: EMC Corp.

Address before: California, USA

Patentee before: DSSD, INC.