CN105612490A - 用于分布式存储架构的盘区散列技术 - Google Patents
用于分布式存储架构的盘区散列技术 Download PDFInfo
- Publication number
- CN105612490A CN105612490A CN201480055012.2A CN201480055012A CN105612490A CN 105612490 A CN105612490 A CN 105612490A CN 201480055012 A CN201480055012 A CN 201480055012A CN 105612490 A CN105612490 A CN 105612490A
- Authority
- CN
- China
- Prior art keywords
- panel
- bucket
- hash
- storage
- hashed value
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在一种实施例中,提供了一种在分布式存储架构内分布数据和相关联的元数据的技术。针对被组织到盘区内的写入请求的写入数据存储散列表集合,这组散列表具体化群集范围内的标识符与存储位置之间的映射。可以将散列函数应用于每个盘区以生成散列值。针对多种目的,在分布式存储架构内重载并且使用该散列值,这些目的包括:(i)对散列值进行余数计算,用于从多个表示盘区的桶中选出一个桶;(ii)获得散列值的散列表选择符,用于从散列表集合中选出一个散列表;以及(iii)根据散列值计算出散列表索引,用于从所选择的散列表的多个条目中选出一个条目,该条目具有用于识别盘区的存储位置的群集范围内的标识符。
Description
技术领域
本发明涉及存储系统,更具体地涉及包括元数据的数据在存储系统间的高效分布,这些存储系统被配置成提供群集的分布式存储架构。
背景技术
存储系统通常包括诸如固态硬盘(solidstatedrives,SSDs)的一个或更多个存储设备,可以根据需要将信息输入存储设备以及从存储设备中获得信息。存储系统可以在逻辑上将存储在设备上的信息组织为存储容器,比如,文件或逻辑单元(logicalunits,LUNs)。每个存储容器可以被实现为一组数据结构,比如,为存储容器存储数据的数据块以及描述存储容器中的数据的元数据块。例如,元数据可以描述(例如,标识)数据在设备上的存储位置。
多个存储系统可以被相连为群集并且可以被配置成提供与存储于存储设备上的存储容器的组织相关的存储服务。存储系统群集还可以被配置成根据客户端/服务器的信息递送模型(client/servermodelofinformationdelivery)进行操作从而使得多个服务器或主机能够访问存储容器。然而,由一个或更多个主机发出的大量数据访问请求通常会指向由群集的特定存储系统所服务的存储容器。其结果是,试图为指向存储容器的请求提供服务的存储系统可能超过自身的处理能力和存储资源能力而变得过载,并伴随着速度和性能的降低。
因此,为了确保快速且高效地访问存储器系统群集中的数据和相关联的元数据,期望的是,通过使得所有的存储系统都供应(即,存储和处理)数据来利用群集的存储和处理资源。利用这样的资源使得整个群集横向扩展,同时使得群集中的存储系统上的处理负载减小,即,处理负载和存储消耗被分布到整个群集。
附图说明
通过参考下面的结合附图所做出的描述,可以更好地理解本文实施例中的上述优点和其他优点,在这些附图中,相同的附图标记表示相同的或功能上相似的元件,在附图中:
图1是相互连接为群集的多个节点的框图;
图2是节点的框图;
图3是节点的存储输入/输出(I/O)栈的框图;
图4示出了输入/输出(I/O)栈的写入路径;
图5示出了输入/输出(I/O)栈的读取路径;
图6是盘区散列技术的框图;
图7是桶映射技术的框图;
图8是盘区元数据选择技术的框图;以及
图9是用于将数据和相关联的元数据均匀地分布到群集的节点中的示例性简化流程。
具体实施方式
本文所描述的实施例提供了一种盘区散列技术,该盘区散列技术用于大体上均匀地在存储系统间高效地分布数据和相关联的元数据,这些存储系统被具体化为群集的节点。在一种实施例中,数据可以是写入数据,该写入数据与主机发出并且在群集的节点处接收的一个或更多个写入请求相关联。写入数据可被组织,例如聚集,到一个或更多个可变长度的块或盘区中。可以对每个盘区应用诸如散列函数的随机技术以生成一个结果,可以对该结果进行截断或修剪以生成散列值。该散列值的散列空间可以被划分为多个桶(bucket),这些桶表示写入数据(即,盘区)和相关联的元数据(即,盘区元数据)。可以基于容量和资源利用率(resourceutilization)将这些桶分配给盘区存储实例。在另一种实施例中,可以将大体上相同数量的桶分配给群集中的每个盘区存储实例(例如,盘区存储实例具有相同的容量和性能)从而使这些桶的所有权(以及这些桶的盘区和盘区元数据)在所有盘区存储实例上大体上均匀地(即,基本上一致地)分布。注意,盘区和盘区元数据的分布不仅出现在节点间(即,不同节点上的盘区存储实例之间)还出现在每个盘区存储实例内。有利地,盘区散列技术为群集中的细粒度横向扩展(scaleout)和去重复提供了基础。
描述
存储器群集
图1是多个节点200的框图,这些节点相互连接为群集100并且被配置成提供与存储设备上信息的组织相关的存储服务。节点200可以通过群集互连结构110相互连接,并且包括多个功能部件,这些功能部件协作以提供群集100的分布式存储架构,可以将该分布式存储架构部署到存储区域网络(SAN)中。如本文所描述的,每个节点200的部件都包括硬件和软件功能,该硬件和软件功能使得该节点能够通过计算机网络130与一个或更多个主机120相连、以及通过存储器互连140与存储设备的一个或更多个存储阵列150相连,从而按照分布式存储架构提供存储服务。
每个主机120可以具体化为通用计算机,该通用计算机被配置成按照客户端/服务器的信息递送模型与任意节点200交互。也就是说,客户端(主机)可以请求节点的服务,并且节点可以通过经由网络130交换数据包的方式返回主机所请求的服务的结果。当主机访问节点上的形式为存储容器(诸如文件和目录)的信息时,该主机可以通过传输控制协议/互联网协议(TCP/IP)发出包括基于文件的访问协议(诸如,基于传输控制的网络文件系统(NFS)协议)的数据包。然而,在一种实施例中,当主机120访问形式为存储容器(诸如逻辑单元(LUN))的信息时,该主机120示例性地发出包括基于块的访问协议(诸如,在TCP上封装的小型计算机系统接口(SCSI)协议(iSCSI)和在FC上封装的SCSI(FCP))的数据包。注意,任意节点200可以为针对群集100上所存储的存储容器的请求提供服务。
图2是节点200的框图,该节点200被示例性地具体化为存储系统,该存储系统具有经由存储总线215耦接至存储器220的一个或更多个中央处理单元(CPU)210。CPU210还经由系统互连270耦接至网络适配器230、存储控制器240、群集互连接口250和非易失性随机存取存储器(NVRAM280)。网络适配器230可以包括被适配成通过计算机网络130将节点200耦接至主机120的一个或更多个端口,计算机网络130可以包括点对点链路、广域网、通过公共网络(互联网)或共享局域网实现的虚拟专用网络。因此,网络适配器230包括需要将节点连接至网络130的机械的、电气的和信令电路,该网络130示例性地具体化为示例性地以太网或光纤通道(FC)网络。
存储器220可以包括CPU210可寻址的存储器位置,该存储器位置用于存储软件程序以及与本文所描述的实施例相关联的数据结构。CPU210则可以包括处理元件和/或逻辑电路,该处理元件和/或逻辑电路被配置成执行软件程序(诸如,存储输入/输出(I/O)栈300)以及操作数据结构。示例性地,存储输入/输出(I/O)栈300可以被实现为一组用户模式进程,该用户模式进程可以被分解为多个线程。操作系统内核224在功能上尤其是通过调用受节点、尤其是存储器I/O栈300所实现的存储服务支持的操作来组织节点,操作系统内核224的一部分通常保留在存储器220(内核)并且由处理元件(即,CPU210)执行。合适的操作系统内核224可以包括通用操作系统(诸如,操作系统的UNIX系列或MicrosoftWindows系列),或者具有可配置功能的操作系统(诸如,微内核和嵌入式内核)。然而,在本文中的一种实施例中,操作系统内核示例性地为Linux操作系统。对于本领域技术人员而言明显的是,其他包括各种计算机可读介质的处理和存储器装置也可以用于存储并执行与本文的实施例有关的程序指令。
每个存储控制器240与节点200上执行的存储I/O栈300协作以获取主机120所请求的信息。该信息被优选地存储在存储设备,诸如,固态磁盘(SSD)260上,该SSD被示例性地具体化为存储阵列150的闪存存储设备。在一种实施例中,尽管本领域技术人员理解其他非易失性、固态电子设备(例如,基于存储器类的存储组件的驱动器)可以有利地结合本文所描述的实施例使用,但是闪存存储设备也可以是基于NAND的闪存组件(例如,单层单元(SLC)闪存、多层单元(MLC)闪存或三层细胞(TLC)闪存)。因此,存储设备可以是或可以不是面向块的(即,作为块进行访问)。存储控制器240包括一个或更多个具有I/O接口电路的端口,该I/O接口电路通过存储器互连140耦接至SSD260,存储器互连140示例性地具体化为串行连接SCSI(SAS)拓扑结构。可替代地,可以使用其他的点对点I/O互连装置,诸如,串行ATA(SATA)拓扑结构或PCI拓扑结构。系统互连270还可以将节点200耦接至本地服务存储设备248(诸如,SSD),本地服务存储设备248被配置成将群集相关的配置信息本地地存储为例如群集数据库(DB)244,群集数据库(DB)244可以被复制到群集100中的其他节点200。
群集互连250可以包括一个或更多个端口,这些端口被适配成将节点200耦接至群集100的其他节点。在一种实施例中,可以使用以太网作为群集协议和互连结构介质,然而,对于本领域技术人员而言明显的是,本文所描述的实施例中可以使用其他类型的协议和互连(诸如,无线带宽)。NVRAM280可以具有能够根据节点的故障和群集环境来维护数据的后备电池或其他内建的最后状态保持能力(例如,非易失性半导体存储器,诸如,存储类存储器)。示例性地,NVRAM280的一部分可以被配置为成一个或更多个非易失性日志(NVLog285),这些非易失性日志被配置成临时地记录(“记入(log)”)I/O请求,诸如写入接收自主机120的请求。
存储I/O栈
图3是存储I/O栈300的框图,该存储I/O栈300可以有利地结合本文所描述的一个或更多个实施例使用。存储I/O栈300包括多个软件模块或层,这些软件模块或层与节点200的其他功能组件以提供群集100的分布式存储架构。在一种实施例中,分布式存储架构表示单个存储容器的抽象化,即,所有的关于整个群集100的节点200的存储阵列150被组织为一个大存储器池。换句话说,该整合(consolidate)整个群集(通过群集范围键值可检索的)的存储器(即,阵列150的SSD260)以使得能够通过LUN进行存储。随后,可以通过将节点200添加至群集100来增大(scale)存储容量和性能。
示例性地,存储I/O栈300包括管理层310、协议层320、持久层330、卷层340、盘区存储层350、独立磁盘冗余阵列(RedundantArrayofIndependentDisk,RAID)层360、存储层365,以及与消息传送内核370互连的NVRAM(用于存储NVLog)层。该消息收发内核370可以提供基于消息(或基于事件)的调度模型(例如,异步调度),基于消息(或基于事件)的调度模型采用消息作为上述层之间交换(即,传递)的基本的工作单元。消息收发内核提供了一些合适的消息传递机制来在存储I/O栈300的上述层之间传递信息,这些消息传递机制可以包括:例如,针对节点内通信:i)在线程池上执行消息传送;ii)通过存储I/O栈执行作为一种操作的单线程处理的方式进行消息传送;iii)使用进程间通信(IRC)机制进行消息传送,以及例如,针对节点间通信:根据功能传送实施方式使用远程过程调用(PRC)进行消息传送。可替代地,可以使用基于线程或基于栈的执行模型来实现I/O栈。在一种或更多种实施例中,消息传送内核370对来自操作系统内核224的处理资源进行分配以执行消息。每个存储I/O栈可以被实现为执行一个或更多个线程(例如,在内核或用户空间中)的一个或更多个实例(即,进程),这些实例对上述层之间传递的消息进行处理使得消息能够针对上述层的阻断或不阻断操作提供同步化。
在一种实施例中,协议层320可以根据预定义的协议(诸如iSCSI和FCP)通过交换被配置为I/O请求的离散帧或数据包的方式经由网络130与主机120通信。I/O请求(例如,读取或写入请求)可以针对LUN,并且可以包括I/O参数(诸如,尤其是LUN标识符(ID)、LUN的逻辑块地址(LBA)、长度(即,数据量),以及写入数据(在写入请求的情况下)。协议层320接收I/O请求并且将I/O请求转发给持久层330,持久层330将该请求记录到持久回写高速缓存380中并且经由协议层320向主机120返回确认通知,持久回写高速缓存380示例性地具体化为日志;例如,在一些随机存取替换策略,而不只是串行方式的情况下,日志的内容可以进行随机替换以及经由协议层320向主机120返回确认通知。在一种实施例中,仅记录了修改LUN的I/O请求(例如,写入请求)。注意,可以将I/O请求记录到接收I/O请求的节点处,或者,在可替代实施例中,可以根据功能传送实施方式将I/O请求记录在其他节点处。
示例性地,可以通过存储I/O栈300的各个层维护专用日志。例如,可以通过持久层330维护专用日志335以内部等效地(asequivalentinternal)记录I/O请求的的请求的I/O参数(即,存储I/O栈、参数(例如,卷ID、偏移量和长度))。在写入请求的情况下,持久层330还可以与NVRAM280协作以实现回写高速缓存380,该回写高速缓存380被配置成存储与写入请求相关联的写入数据。在一种实施例中,回写高速缓存可以被构造为日志。注意,关于写入请求的写入数据可以被物理地存储在高速缓存380中使得日志335包括相关联的写入数据的引用关系(reference)。本领域技术人员应当理解的是,可以使用数据结构的其他变型来存储或维护NVRAM中的写入数据,包括使用没有日志的数据结构。在一种实施例中,还可以将回写高速缓存的副本维护在存储器220中以便利于对存储控制器进行直接存储访问。在其他实施例中,可以按照维护缓存中所存储的数据与群集之间的相关性的协议在主机120处或接收节点处执行高速缓存。
在一种实施例中,管理层层310可以将LUN分成多个卷,每个卷可以被分区成多个区域(例如,根据不相交块地址范围进行分配),每个区域具有一个或更多个分段,这些分段作为多个带被存储在阵列150上。因此,节点200中分布的多个卷可以为单个LUN提供服务,即,LUN内的每个卷为LUN内的、不同的LBA范围(即,偏移量范围)或一组范围提供服务。因此,该协议层320可以实施卷映射技术来对I/O请求所针对的卷(即,为I/O请求的参数所表示的偏移量范围提供服务的卷)进行识别。示例性地,群集数据库244可以被配置成针对多个卷中的每个卷维护一个或更多个关联(例如,键值对),例如,LUNID与卷之间的关联以及卷与用于管理该卷的节点的节点ID之间的关联。管理层310还可以与数据库244协作以创建(或删除)与LUN相关联的一个或更多个卷(例如,在数据库244中创建卷ID/LUN键值对)。通过使用LUNID和LBA(或LBA范围),卷映射技术可以提供卷ID(例如,使用群集数据库244中的适当关联)以及将LBA(或LBA范围)转化成卷内的偏移量和长度,该卷ID用于识别卷和为该卷提供服务的节点,该卷是是所述请求的目的地。具体地,卷ID用于确定卷层实例,该卷层实例对管理与LBA或LBA范围相关联的卷元数据的卷的元数据进行管理。如前所述,协议层320可以将I/O请求(即,卷ID,偏移量和长度)传递至持久层330,持久层330基于卷ID可以使用功能传送(例如,节点间)实施方式将I/O请求转发至群集中的节点上执行的合适的卷层实例。
在一种实施例中,卷层340可以通过以下方式管理卷元数据,例如:维护主机可见容器的状态(诸如,LUN的范围),以及对与管理层340协作的LUN执行数据管理功能(诸如,创建快照和克隆)。卷元数据被示例性地具体化为LUN地址(即,偏移量)到持久性盘区键值的内核映射,持久性盘区键值是群集范围内的存储容器的盘区键值空间内的、与盘区的SSD存储位置相关联的唯一的群集范围内的ID。也就是说,盘区键值可以用于检索位SSD存储位置处的盘区中、与该盘区键值相关联的数据。可替代地,群集中可以具有多个存储容器,其中,每个容器具有其自身的盘区键值空间,例如,在该盘区键值空间中管理层310将盘区分布在存储容器中。如本文进一步描述的,盘区是可变长度的数据块,该数据块提供位于SSD上的存储单元并且不需要与任何特定边界对齐,即,可以是字节对齐。因此,为了维持这样的对齐,盘区可以是来自多个写入请求的写入数据的聚集体。示例性地,卷层340可以将所转发的请求(例如,表征该请求的信息或参数)以及卷元数据的变化记录到卷层340所维护的专用日志345中。随后,可以按照核查点(例如,同步)操作将卷层日志345的内容写入存储阵列150,所述核查点操作将内核元数据存储到阵列150上。也就是说,核查点操作(核查点)确保内核所处理的元数据的一致状态被提交(即,存储)至存储阵列150;而日志条目的引退通过在核查点操作之前引退累积的日志条目的方式来确保卷层日志345中所累积的条目与提交到存储阵列150的元数据核查点同步。在一个或更多个实施例中,核查点和日志条目的引退可以是数据驱动的,周期的,或以上二者。
在一种实施例中,盘区存储层350负责将盘区存储到SSD260上(即,在存储阵列150上)并且(例如,响应于所转发的写入请求)将盘区键值提供给卷层340。盘区存储层350还负责(例如,响应于所转发的度请求)使用盘区键值检索数据(例如,现有的盘区)。盘区存储层350可以负责在对盘区进行存储之前对该盘区进行去重复和压缩。盘区存储层350可以对盘区键值到SSD存储位置(即,阵列150的SSD260上的偏移量)的内核映射(例如,具体化为散列表)进行维护。盘区存储层350还可以对条目的专用日志355进行维护,所述条目累积所请求的“放入”和“删除”操作(即,其他层向盘区存储层350发出的针对盘区的写入请求和删除请求),而这些操作会改变内核映射(即,散列表条目)。随后,可以根据“模糊”核查点390(即,记录在一个或更多个日志文件中的具有增量变化的核查点)将内核映射和盘区存储层日志355的内容写入存储阵列150,其中,将所选择的内核映射(少于总量的内核映射)按照不同的时间间隔(例如,通过大量内核映射的变化驱动、通过日志355的大小阈值驱动的或定期地驱动)提交到阵列150。注意,一旦所有的已经提交的内核映射包括引退日志355中的所累积的条目所记录的的变化时,则可以将这些条目引退。
在一种实施例中,RAID层360可以将存储阵列150内的SSD260组织为一个或更多个RAID组(例如,SSD集合),该一个或更多个RAID组通过在每个RAID组的给定数量的SSD260上写入具有冗余信息(即,关于分条数据(stripeddata)的适当的奇偶校验信息)的数据“条”来提高阵列上的盘区存储的可靠性和完整性。RAID层360还可以根据例如多个连续范围的写操作来存储多个条(例如,具有足够深度的条),从而减少了SSD内发生的作为上述操作的结果的数据再定位(即,内部闪存块管理)。在一种实施例中,存储层365执行存储I/O驱动器,该存储I/O驱动器(诸如,Linux虚拟功能的I/O(VFIO)驱动器)可以通过与操作系统内核224共同操作来直接地与硬件(例如,存储控制器和群集接口)通信。
写入路径
图4示出了存储I/O栈300的用于处理I/O请求(例如,SCSI写入请求410)的I/O(例如,写入)路径400。该写入请求410可以由主机120发出并且针对群集100的存储阵列150上所存储的LUN。示例性地,协议层320接收该写入请求并通过对该请求的字段(例如,LUNID、LBA和长度(在413处示出))以及写数据414进行解码420(例如,解析和提取)来对该写入请求进行处理。协议层320还可以执行卷映射技术430(如上所述)以将写入请求中的LUNID和LBA范围(即,相当于偏移量和长度)转化为群集100中适当的卷层实例(即,卷ID(卷445)),该适当的卷层实例负责针对LBA范围来管理卷元数据。在一种可替代实施例中,持久层330可以执行上述卷映射技术430。然后,协议层将结果432(例如,卷ID、偏移量、长度(以及写数据)传递给持久层330,持久层330将请求记录到持久层日志335中并且将确认信息经由协议层320返回至主机120。如本文所述,持久层330可以将来自一个或更多个写入请求的写入数据414聚集并组织到新盘区610中,并且根据盘区散列技术600对该新盘区执行散列计算以生成散列值650。
然后,持久层330可以将具有所聚集的写入数据的写入请求(包括,例如卷ID、偏移量和长度)作为参数434传递至适当的卷层实例。在一种实施例中,参数432(由持久层接收的)的消息传递可以经由功能传送机制(例如,PRC)重定向至其他节点用于节点节点间通信。可替代地,参数434的消息传递可以经由IPC机制(例如,消息线程)进行以用于节点内通信。
在一种或更多种实施例中,桶映射技术700被提供来将散列值650转化为适当的盘区存储层的实例720(即,盘区存储实例720),该适当的盘区存储层负责存储新盘区610。注意,可以在存储I/O栈的位于盘区存储层上方的任意层中执行桶映射技术。例如,在一种实施例中,可以在持久层330、卷层340、或管理群集范围内的信息的层(诸如,群集层(未示出))中执行桶映射技术。因此,持久层330、卷层340或群集层可以包括计算机可执行指令,CPU210执行该计算机可执行指令以进行用于执行本文所描述的桶映射技术700的操作。然后,持久层330可以将散列值650和新盘区610传递至适当的卷层实例并且通过盘区存储放入操作将散列值650和新盘区610传递至适当的盘区存储实例。如本文进一步描述的,盘区散列技术600可以具体化近似一致的散列函数以确保:任意待写入的盘区可以具有近似相同的机会进入任意盘区存储实例720,即,基于可用资源将散列桶分布到群集100的盘区存储实例中。因此,桶映射技术700在群集的节点200上提供负载均衡的写入操作(以及,出于对称性,读取操作),同时平衡了群集中的SSD260的闪存磨损。
响应于放入操作,盘区存储实例对散列值650进行处理以执行的盘区元数据选择技术800:(i)从盘区存储实例720内的一组散列表(示例性地,内核)中选择适当的散列表850(例如,散列表850a),以及(ii)从散列值650中提取散列表索引820以索引所选择的散列表,并且针对盘区查找具有盘区键值810的表条目,该盘区键值810用于识别SSD260上的存储位置830。因此,盘区存储层350包括计算机可执行指令,CPU210执行这些计算机可执行指令以进行用于实现本文所描述的盘区元数据选择技术800的操作。如果找到具有匹配盘区键值的表条目,则使用盘区键值810所映射的SSD位置830来从SSD中检索出现有的盘区(未示出)。然后将现有的盘区与新盘区610进行比较以确定它们的数据是否相同。如果数据是相同的,则新盘区610本来存储在SSD260上并且存在去重复机会(表示为去重复452)从而没有必要对数据的另一副本进行写入操作。因此,表条目中对于现有盘区的引用计数增大,并且现有盘区的盘区键值810被传递至适当的卷层示例用于存储在密集数元数据结构444(例如,密集树444a)的条目(表示为卷元数据条目446)中,使得盘区键值810与卷445的偏移量范围440(例如,偏移量范围440a)相关联。
然而,如果现有盘区的数据与新盘区610的数据不同,则会发生冲突,将调用确定性算法按照需要连续地生成许多映射至同一桶的新候选盘区键值(未示出)以提供去重复452或产生尚未在盘区存储实例中存储的盘区键值。注意,可以根据盘区元数据选择技术800来通过所述新候选盘区键值来选出另一散列表(例如,散列表850n)。在不存在去重复机会的情况下(即,尚未存储该盘区),根据压缩技术454对新盘区610进行压缩并且将新盘区610传递至RAID层360,RAID层360对新盘区610进行处理用于存储在SSD260上的、RAID组466的一个或更多个条464内。盘区存储实例可以与RAID层360协作以识别存储分段460(即,存储阵列150的一部分)以及SSD260上、用于存储新盘区610的分段460内的位置。示例性地,所识别的存储分段是具有较大的连续自由空间的分段,该自由空间具有例如在SSD260上用于存储盘区610的位置830。
在一种实施例中,然后,RAID层360将条464写入到整个RAID组466,示例性地为全条写入(fullstripewrite)462。该RAID层360可以写入一系列足够深度的条464,以减少在基于闪存的SSD260(即闪存块管理)中可能出现的数据迁移。然后,盘区存储实例(i)将新盘区610的SSD位置830加载到所选择的散列表850n(即,根据新的候选盘区键值进行选择的散列表);(ii)将新盘区键值(表示为盘区键值810)传递至适当的卷层实例用于将该新盘区键值存储到由卷层实例所管理的密集树444的条目(还表示卷元数据条目446)内;以及(iii)将所选择的散列表的盘区元数据的变化记录到盘区存储层日志355中。示例性地,卷层实例选择跨越卷445的偏移量范围440a的密集树444a,偏移量范围440a包括写入请求的偏移量范围。如前所述,卷445(例如,卷的偏移量空间)被分区为多个区域(例如,根据不相交的偏移量范围进行分配的多个区域);在一种实施例中,每个区域由密集树444表示。然后,卷层实例将卷元数据条目446插入到密集树444a中并且将与卷元数据条目相对应的变化记录到卷层日志345中。因此,在I/O(写入)请求被充分地存储在群集的SSD260上。
读取路径
图5示出了用于处理I/O请求(例如,SCSI写入请求510)的存储I/O栈300的I/O(例如,读取)路径500。该读取请求510可以由主机120发出并且在群集100的节点200的协议层320处接收。示例性地,协议层320通过对该请求的字段(例如,LUNID、LBA和长度(在513处示出))进行解码420(例如,解析和提取)来对该读取请求进行处理,并且针对卷映射技术430使用所解码的结果522(LUNID、偏移量和长度)。也就是说,协议层320可以执行卷映射技术430(上面描述的)以将读取请求中的LUNID和LBA的范围(相当于偏移量和长度)转化为群集100中的适当的卷层实例(即,卷ID(卷445)),该适当的卷层实例负责针对LBA(即偏移量)范围来管理卷元数据。协议层然后将结果传递532到持久层330,持久层330可以搜索写入高速缓存380来根据其所缓存的数据判定是否可以为一些读取请求或全部读取请求提供服务。如果根据所缓存的数据不能对整个请求提供服务,则持久层330可以按照功能传送机制(例如,用于节点间通信的RPC)或IPC机制(例如,用于节点内通信的消息线程)将请求的剩余部分(包括,卷ID、偏移量和长度)作为参数534传递到适当的卷层实例。
卷层实例可以对该读取请求进行处理以获得与卷445的区域(例如,偏移量范围440a)相关联的密集树元数据结构444(例如,密集树444a),卷445的区域包括所请求的偏移量范围(由参数534分配的)。卷层实例可以进一步地对读取请求进行处理,以搜索(查找)密集树444a的一个或多个卷的元数据条目446从而获得所请求的偏移量范围内的、与一个或多个盘区610(或盘区的一部分)相关联的一个或更多个盘区键值810。在一种实施方案中,每个密树444可以具体化为具有多级搜索结构,该搜索结构能够在每一级处重叠偏移量范围条目。该多级密集树针对同一偏移量具有卷元数据条目446,在这种情况下,较高的级别具有较新的条目并且用来为读取请求提供服务。密集树444的顶级示例性地保留在内核中并且页面高速缓存448可以被用来访问树的较低级。如果顶层中不存在所请求的范围或者一部分所请求的范围,则可以访问与下一较低树级别处的索引条目(未示出)相关联的元数据页面。然后对下一级处的元数据页面(例如,在页面高速缓存中)进行搜索以找到任意重叠的条目。然后,迭代地执行该过程,直到发现一个级的卷元数据条目446为止,以确保能够找到对于整个所请求的读取范围的盘区键值810。
一旦找到这些盘区键值810,则卷层340对每个盘区键值810进行处理以执行例如桶映射技术700,从而将该盘区键值转化为负责存储所请求的盘区610的适当的盘区存储实例720。需要注意的是,在一种实施例中,每个盘区键值810可以基本上等同于与盘区610相关联的散列值650(即,针对盘区进行写入请求期间所计算的散列值),使得桶映射技术700和盘区元数据选择技术800可以用于写入路径操作和读路径操作二者。还需要注意的是,可以根据散列值650推导出盘区键值。然后,该卷层340可以将盘区键值810(即,来自先前的针对盘区的写入操作的散列值)传递(经由盘区存储获取操作)至适当的盘区存储实例720,该盘区存储实例720执行盘区键值至SSD的映射以确定盘区在SSD226上的位置。
响应于该获取操作,盘区存储实例可以对盘区键值810(即,散列值650)进行处理以执行元数据选择技术800:(i)从盘区存储实例720内的一组散列表中选择适当的散列表850(例如,散列表850a),以及(ii)从盘区键值810(散列值650)中提取散列表索引820以索引到所选择的散列表,并且针对盘区610查找具有匹配盘区键值810的表条目,该匹配盘区键值810用于标识SSD260上的存储位置830。也就是说映射到盘区键值810的SSD位置830可以用于从SSD260(例如,SSD260b)中检索现有的盘区(表示为范围610)。然后,盘区存储实例与RAID层360协作以访问在SSD260b上的的盘区并且根据读取请求来检索数据内容。示例性地,RAID层360可以根据盘区读取操作468对盘区进行读取并且将盘区610传递至盘区存储实例。然后,盘区存储实例可以根据解压缩技术456对盘区610进行解压,然而应本领域技术人员应当理解的是,可以在存储I/O栈300的任一层来执行解压。可以将盘区610存储在存储器220的缓冲器(未示出)并且可以通过存储I/O栈的各层将该缓冲区的引用传回。然后,持久层可以将盘区加载到读取式高速缓存580(或其他分级机制),并且可以针对读取请求510的LBA范围从读取式高速缓存580中提取适当的读取数据512。此后,协议层320可以创建SCSI读取响应514(包括读数据512)并且将该读取响应返回至主机120。
盘区散列结构
图6是盘区散列技术600的框图,该盘区散列技术600可以有利地结合本文所描述的一种或更多种实施例使用。正如所指出的,持久层330可以将一个或更多个写入请求的写入数据组织到一个或更多个盘区610,每个盘区可以具体化为可变长度的块。盘区的长度可以在1字节与64KB(或更大)之间变化,然而,盘区的长度通常为4KB或更大。盘区610示例性地是LUN(或文件)的逻辑上连续的部分,该连续部分物理上连续地存储在群集的节点内的SSD260上,以使得例如该连续部分能够通过单个读取操作从SSD中读取。因此,根据多个I/O请求聚集的盘区可以形成任意LUN内的连续LBA范围。因此,不同地址(只要在每个LUN内逻辑上连续)的多个LUN(和/或文件)可以共享相同的盘区,因为盘区一般不对关于盘区在群集100的存储池中的存在的信息进行维护。
在一种实施例中,可以将随机技术(诸如,散列函数620)应用于每个盘区610以生成盘区散列值(散列值650),该散列技术用于将写入数据(即,盘区数据)和相关联的元数据大体上均匀地分布在节点300中从而能够对群集100进行细粒度横向扩展和去重复452。散列计算可以在整个盘区上进行,并且可以在将盘区传递至盘区存储实例之前的任何时间对散列计算进行计算。示例性地,所得到的散列值650可以用于两个大致类似的任务。第一个任务将盘区和相关联的元数据均匀地分布(传播)到群集的节点上的盘区存储实例中,而第二个任务是将盘区和相关联的元数据平均地传播在每个盘区存储实例中。因此,散列值650示例性地在持久层330被计算,但也可以在卷层340或卷层340之前进行计算,因为该卷层340需要散列值来确定为该盘区提供服务的节点的盘区存储实例。为此,在持久层330示例性地包括计算机可执行指令,CPU210执行该计算机可执行指令以进行用于执行本文所描述的盘区散列技术600的操作。
针对持久层330处的散列值650的计算,还期待优化关于与盘区相关联的写入请求的数据流。在包括功能传送实施方式的实施例中,直到写入请求穿过卷层340为止,盘区610才被传递至盘区存储层350。为了避免写入数据的潜在路由通过额外的“跳”(例如,通过节点的卷层实例,该节点不同于具有适当的桶来存储盘区的盘区存储实例的节点),在持久层330处示例性地执行散列计算,即,盘区散列函数620(和桶映射函数700)使得可以确定件带存储的盘区发送到哪个位置,即,发送到适当的盘区存储实例720。
根据安全散列算法,例如、SHA-2,BMW或ECHO密码学散列函数示例性地执行散列计算以生成256位盘区散列。可替代地,可以使用散列算法,诸如,SipHash(安全的64位)或CityHash(非密码64位)。安全散列函数的选择可能涉及对散列计算成本以及(i)冲突抗性和/或(ii)密码强度进行权衡。例如,ECHO散列函数提供了关于分发和安全的增强的均匀性,但是在计算方面(即,每字节多次循环)成本太高。然而,256位散列结果出现冲突的可能性是可忽略的,这有利于降低去重复452的代价。另一方面,可以较快地计算较小的散列(即,CityHash或SipHash),但可能会导致需要更频繁的、代价更高去重复452的冲突。
为了进一步提高安全性(即,减少意图操作散列计算I/O请求的数据造成的攻击),可以将针对整个群集100的秘密值应用于散列函数620。随机且可能是该群集所特有的该秘密值可以被插入到盘区散列的散列函数计算中从而阻止对群集100内的数据的分布的任何攻击。例如,该攻击可以计算潜在的盘区并且将这些盘区中的除了与散列表850的一部分冲突的盘区以外的盘区丢弃。通过集合群集中的不同秘密值使用散列函数,可以将不同的(并且可能唯一的)散列函数提供给群集100的节点200以阻止这样的攻击。
可以根据修剪技术(trimtechnique)640示例性地对256位(或64位)散列函数620的结果的一部分(例如,低48位)进行修剪,以生成具有经修剪大小(例如,48位)的散列值650。对本领域技术人员而言明显的是,随着群集的存储容量的增大,可以增大散列值。在一种实施例中,修剪技术640本质上从32字节(256位)散列函数结果截断或切断散列值650的6字节(48位)部分。散列值650的6个字节(48位)足以示例性地使得盘区存储实例通过散列表850的条目找到盘区610在SSD260上的位置。应当注意的是,散列值被选择成相对于存储容器中的盘区的数量而言更大一些,从而减小写入操作器件发生盘区键值冲突。例如,假设具有238个值的键值空间包括大约238个盘区键值,则暗示容量具有大约2-10或0.1%的冲突率。此外,散列值650示例性地使得其相关联的元数据(例如,在散列表850的条目的盘区元数据)以完全地驻留在存储器220,。可以根据各种技术,诸如,对存储I/O栈300进行桶映射技术700和盘区元数据选择技术800将散列值650用于在该散列值的散列空间内执行类似于地址的判定操作,以给盘区610选择适当的散列表850a。
图7是桶映射技术700的框图,该桶映射技术可以有利地结合本文所描述的一种或更多种实施例使用。正如所指出的,可以在持久层330处计算散列值650以使得足以将盘区610和相关联的盘区元数据均匀地分布在整个群集的节点200中。在一种实施例中,映射技术将具有48位散列值的散列空间(大体上均匀地)划分为多个桶,这些桶共同地表示盘区和相关联的盘区元数据。然后,可以将大体上相同数量的桶分配给群集100的节点的每个盘区存储实例,从而使这些桶的所有权并且因此盘区和盘区元数据大体上均匀地(即,基本上一致地)分布在节点200的所有的盘区存储实例上。值得注意的是,可替代地,可以按照节点的特征(诸如,存储容量和性能)通过加权分布来对桶进行分配(或重新分配)。
在一种实施例中,桶映射技术使用基于模运算的余数计算710来将散列值映射到盘区存储实例,模运算为:散列值除以(模)桶的数量的余数,例如,[散列值]模[桶的数量]。示例性地,桶的数量(即,除数)是质数,例如,65521(小于216的最大质数),然而,本领域的技术人员应该认识到根据本文所描述的实施例也可以使用其他除数。应当注意的是,期望的是,除数(即,余数计算)与盘区存储层内所使用的用于分布元数据的计算互质,其中,互质数表示没有公约数的两个数字。互质计算的示例可以是255×257(65,535)和13。余数计算的结果可以被组织为数据结构,诸如具有65521个桶编号条目的桶映射表730,每个这些条目映射到(引用)盘区存储实例。可替代地,群集数据库244中的桶映射数据结构可以用于将桶(编号),即,0至65520与盘区存储实例720或节点200相关联。
可以将桶连续地映射到盘区存储实例720,以及当形成了新的盘区610时,可以将这些盘610分配给所述桶。桶编号至节点的盘区存储实例的映射基本上是任意的,可以要求每个盘区存储实例所服务的桶的数量与每个节点200的存储容量和可获得的处理带宽成正比。桶720可以分布在整个盘区存储实例中从而实现容量的大体上均匀和平衡的水平,以及整个群集100的所有节点的带宽利用。
随后,可以在节点处形成新盘区610,并且可以将该新盘区610应用于散列函数以生成一个结果,可以对该结果进行修剪(通过修剪技术640)以产生散列值650从而选择用于存储新盘区610的盘区存储实例720。然后,可以通过余数计算710对散列值650进行处理,该余数计算将散列值除以桶的数量,即,[散列值]模[桶的数量],其中,所述桶的数量示例性地为质数,例如,65521。计算的结果生成与桶相关联的桶编号,该桶编号可以作为到桶映射表730中所选择的条目的索引以标识盘区存储实例720,该盘区存储实例720用作与散列值650相关联的新盘区。可替代地,可以使用桶来搜索群集数据库244的桶映射数据结构以标识相关联的盘区存储实例或节点200。此后,可以将散列值650传递至盘区存储实例720以使得能够对用以标识盘区在SSD260上的位置830的盘区元数据进行选择。
图8是盘区元数据选择技术800的框图,该盘区元数据选择技术800被示例性地执行在盘区存储实例上。在一种实施例中,盘区元数据完全驻留在每个节点200的存储器220中,并且为具体化为被配置成寻址SSD260的位置的散列表850a至850n的散列表集合860。注意,桶映射技术700确保将盘区元数据大体上均匀地填充到被分配给盘区存储实例的桶中,使得每个桶等同地有助于盘区存储实例所服务的散列表850。盘区存储实例可以使用的散列值650来提供给盘区元数据选择函数,该盘区元数据选择函数利用独立于该散列值650的比特组。为此,将48位散列值650的内容示例性地组织到下列字段中:用于尤其是桶选择和散列表选择的8位字段(“额外键值位”802),用于从散列表集合中选择散列表的8位字段(“散列表选择符”804)以及用作到所选择的散列表的索引的两个16位的字段(“K2”和“K1”)。
在一种实施例中,在散列表集合860中示例性地存在768个散列表,其中,每个散列表850具有相同的大小,例如,近似400万个条目。示例性地,可以通过将8位的散列表选择符(28或256)乘以质数(3)的方式来确定散列表的个数,使得256×3=768。注意,如果需要768个以上的表,则可以与256相乘的乘数可以是大于3的质数,即,5×256,等于1280个表。可以依赖于48位散列值650的随机性(即,近似一致地分布)来将元数据均匀地分布到散列表850中。
此后,可以使用散列表选择符804来选择适当的具有盘区键值810的内核散列表850来判定目前盘区610是否由所选择的盘区存储实例提供服务,,所述盘区键值被用于映射至SSD位置。示例性地,通过以下方式来选择适当的散列表850:将整个48位散列值650除以(模)质数除数(即,3)以生成一个余数(介于0至2之间),将散列表选择符的8位值乘以3以生成一个值,然后将该值与所述余数相加,即,3×[散列表选择符804]+[散列值650]模3。应当注意的是,通常,可以使用质数除数重载(overload)48位散列值650以获得不同散列表索引从而寻址不同数量的散列表850。所述768个散列表表示可以合理地装入存储器220的多个表。
一旦选择了散列表850,盘区存储实例可以提取散列值650的Kl和的K2,并使用Kl或者K2作为散列表索引820来索引到散列表850,并且选择被配置成存储尤其是盘区键值810的合适的条目以及SSD上的位置830的标识。如果确定不存在与散列表索引820(例如,K1)相关联的盘区键值810,则K1和K2中的另一个(例如,K2)可以用作散列表索引820。如果确定在散列表中存在与散列表索引820(例如,K2)相关联的盘区键值810,则可以从位置830中检索到之前存储在SSD260上的现有盘区,并且可以将该现有盘区的数据内容与最新形成的盘区的内容进行比较以确定这些数据是否相同。如果数据不相同,则会出现冲突,并且可以调用一种技术用于针对最新形成的盘区生成新的候选盘区键值,该技术可以示例性地驻留在同一桶中。然后,可以使用新的候选盘区键值来索引散列表850(或散列表集合860中的任意其他表)以选择任何适当的被配置成存储该盘区键值的条目。如果数据是相同的,则最新形成的盘区已经存在于SSD上,并且可以逐行(in-line)地执行去重复452以消除数据的其他副本。此后,散列表条目中针对现有盘区的引用计数(引用计数812)递增。
图9是用于将数据和相关联的元数据均匀地分布到群集的节点中的示例性简化流程。该流程900开始于步骤905,并且进行到步骤910,在步骤910中,群集的节点处接收的一个或更多个写入请求的写入数据被组织到一个或更多个盘区中。在步骤915处,将散列函数(接着使用修剪技术)应用于每个盘区以生成散列值。在步骤925处,将散列值的散列空间划分为多个桶,这些桶表示盘区和相关联的盘区元数据。在步骤930处,将大体上相同数量的桶分配给群集中的每个盘区存储实例从而将桶的所有权,以及盘区和盘区元数据大体上均匀地分布到节点的所有盘区存储实例中。
尽管已经示出并描述了示例性实施例,这些示例性实施例用于提供盘区散列技术,该盘区散列技术用于将数据和相关联的元数据大体上均匀地(近似一致地)分布到群集的节点中,但是应当理解的地,在本文的实施例的精神和范围内可以做出各种其他改编和修改。例如,本文所示出且描述的一些实施例与桶映射技术相关,该桶映射技术大体上均匀地将盘区和相关联的盘区元数据分布到节点的所有盘区存储实例中。然而,在更加广泛的意义上,这些实施例并非限制于此,并且实际上,在一个或更多个节点被添加至群集100或将群集100中的一个或更多个节点删除的情况下这些实施例使得桶能够高效分布。
例如,假设将一个或更多个新节点“成员”添加至群集。为了使新的群集成员填充有相同(或基本上相同)数量的桶,可以确定从群集的现有盘区存储实例成员中移除的桶的数量。因为通过上述互质计算可以推导出散列表的盘区元数据的分布,当将桶重新定位至另一节点200时,不需要对散列表850的任何一部分进行重定位,即,移到另一个桶,同样地,没有必要重新分布内容以达到均匀分布。然后,可以从每个现有的成员中任意地选出确定数量的桶从而将所需要的具有大体上相同数量的数据的大体上相同数量的桶移除。例如,如果附加的节点导致群集中存在100个节点,则这些节点中的79个节点可以具有655个桶,而21个节点具有656个桶,即,79×655+21×656=65521桶。
有利地,可在分布式存储架构的背景下出于多种不同目的使用(“重载”)本文所描述的散列值650,例如,散列值650的余数计算710选择桶,散列值650的散列表选择符804选择散列表850,以及由散列值650计算出的散列表索引820选择所选择的散列表850的条目。为了实现这样的重载,可以使用应用于散列值的互质除数以及从散列值中提取的独立比特字段。通过具有良好的雪崩性能(即,良好的块数据随机化)的散列函数620来示例性地该计算散列值650。例如,散列函数应该具有如下特性:应用了散列函数的盘区610的任意比特的变化或交换会导致每个比特独立地具有相同的改变散列值的机会(并且,每次所改变的比特应该不相同)。此外,散列函数620应该具有良好的分发属性,以确保散列表850的条目大体上是平衡的并且大体上均匀访问,即,不存在热点。
前面的描述针对的是具体的实施例,然而,明显的是,可以对所描述的实施例进行其他变型和修改,这些变型和修改获得了所述实施例的部分或全部优点。例如,明确预期的是,本文所描述的组件和/或元件可以实施为在有形(非临时性)的计算机可读介质(例如,磁盘和/或CD)上进行编码的软件,该有形(非临时性)的计算机可读介质具有执行在计算机、硬件、固件或上述项的组合的程序指令。因此,本说明书仅意在举例说明而并非意在对本文的实施例的范围进行限制。因此,所附权利要求的目的在于覆盖本文的实施例的真正主旨和范围之内所有的这些变型和修改。
Claims (26)
1.一种方法,包括:
将写入请求的写入数据组织到一个或更多个盘区中,其中,每个盘区是数据块,所述数据块提供位于群集的一个或更多个存储设备上的存储单元,所述写入请求在具有多个节点的所述群集的节点处被处理;
将散列函数应用于每个盘区以生成散列值;
将所述散列值的散列空间划分为多个桶,所述多个桶表示所述一个或更多个盘区和相关联的盘区元数据,其中,所述桶的数量少于所述散列空间中的值的数量;以及
将所述桶分配给所述群集中的所述多个节点的盘区存储实例。
2.根据权利要求1所述的方法,其中,应用所述散列函数包括将秘密值插入到所述散列函数中。
3.根据权利要求1或2所述的方法,其中,所述桶在所述盘区存储实例上按相同数量进行分配。
4.根据任一前述权利要求所述的方法,其中,基于余数计算的结果在所述盘区存储实例上分配所述桶,其中,所述余数计算使用模运算来计算每个盘区的散列值除以桶的数量的余数。
5.根据权利要求4所述的方法,其中,所述余数计算的所述结果为桶编号,所述桶编号作为具有桶编号条目的桶映射数据结构中的索引来进行操作,其中,每个桶编号条目映射到盘区存储实例。
6.根据权利要求4或5所述的方法,其中,所述桶的数量与元数据选择计算中每个盘区存储实例所使用的数字互为质数,其中,互为质数表示缺乏公约数。
7.根据权利要4至6中任一项所述的方法,其中,所述桶的数量为质数。
8.根据任一前述权利要求所述的方法,其中,划分所述散列值的所述散列空间包括将所述散列值除以所述桶的数量,其中,所述桶的数量为质数。
9.根据任一前述权利要求所述的方法,还包括:
在分布式存储架构的背景下出于多种不同目的对所述散列值进行重载。
10.根据任一前述权利要求所述的方法,其中,应用所述散列函数包括将秘密值插入到所述散列函数中,其中,所述秘密值是所述群集所特有的随机值。
11.根据任一前述权利要求所述的方法,还包括:
在具有多个节点的群集的节点处形成所述盘区;
使用余数计算来处理所述散列值以生成包括有所述散列函数的散列空间的一部分的桶的桶编号;以及
使用该桶编号来索引桶映射数据结构中所选择的条目以标识所述节点的、为所述盘区服务的盘区存储实例。
12.一种方法,包括:
在具有多个节点的群集的节点处形成盘区,其中,每个盘区是数据块,所述数据块提供位于集群的一个或更多个存储设备上的存储单元;
将散列函数应用于所述盘区以生成散列值;
使用余数计算来处理所述散列值以生成桶的桶编号,所述桶包括所述散列函数的散列空间的一部分;以及
使用所述桶编号来索引桶映射数据结构中所选择的条目以标识所述节点的、为所述盘区服务的盘区存储实例。
13.根据权利要求11或12所述的方法,还包括:
将所述散列值传递至所标识的盘区存储实例以使得能够选择盘区元数据,所述盘区元数据用于标识所述盘区在所述群集的所述一个或更多个存储设备中的存储设备上的位置。
14.根据权利要求13所述的方法,还包括:
使用所述散列值的第一字段来选择存储有盘区键值的散列表,所述盘区键值用于映射到所述存储设备上的所述位置。
15.根据权利要求14所述的方法,其中,使用所述第一字段包括使用所述散列值的散列表索引字段。
16.根据权利要求13至15中任一项所述的方法,还包括:
使用所述散列值的第二字段来索引所选择的散列表以选择条目,该条目被配置成存储所述存储设备上的所述位置的标识。
17.根据权利要求16所述的方法,其中,如果未找到所述条目,则使用所述散列值的第三字段来索引所选择的散列表。
18.根据权利要求11至17中任一项所述的方法,其中,处理所述散列值包括将所述散列值除以桶的数量,其中,所述桶的数量为质数。
19.一种包括机器可读格式的程序指令的计算机程序,当所述程序指令由具有一个或更多个处理器的计算机系统执行时,使得所述计算机系统执行任一前述权利要求所述的方法。
20.一种系统,包括:
群集的节点的中央处理单元(CPU),所述群集具有多个节点;以及
存储器,所述存储器被耦接至所述CPU并且被配置成存储所述CPU可执行的一个或更多个进程,当被执行时,所述一个或更多个进程可操作成执行权利要求1至18中任一项所述的方法。
21.一种系统,包括:
群集的节点的中央处理单元(CPU),所述群集具有多个节点;以及
存储器,所述存储器被耦接至所述CPU并且被配置成存储所述CPU可执行的一个或更多个进程,当被执行时,所述一个或更多个进程可操作成:
将写入请求的写入数据组织到一个或更多个盘区中,其中,每个盘区是数据块,所述数据块提供位于群集的一个或更多个存储设备上的存储单元;
将散列函数应用于每个盘区以生成散列值;
将所述散列值的散列空间划分为多个桶,所述多个桶表示所述一个或更多个盘区和相关联的盘区元数据,其中,所述桶的数量少于所述散列空间中的值的数量;以及
将所述桶分配给所述群集中的所述多个节点的盘区存储实例,从而使所述桶的所有权分布在所述多个节点的所有盘区存储实例上。
22.根据权利要求20或21所述的系统,其中,所述桶在所述盘区存储实例上按大体上相同的数量进行分配。
23.根据权利要求20至22中任一项所述的系统,其中,基于余数计算的结果在所述盘区存储实例上上分配所述桶,其中,所述余数计算使用模运算来计算每个盘区的散列值除以所述桶的数量的余数。
24.根据权利要求20至23中任一项所述的系统,其中,每个盘区包括可变长度的数据块,所述可变长度的数据块提供位于所述群集的存储设备上的存储单元。
25.根据权利要求20至24中任一项所述的系统,其中,所述一个或更多个存储设备是固态硬盘SSD。
26.根据权利要求20至24中任一项所述的系统,其中,所述SSD是闪存存储设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/044,624 | 2013-10-02 | ||
US14/044,624 US9405783B2 (en) | 2013-10-02 | 2013-10-02 | Extent hashing technique for distributed storage architecture |
PCT/US2014/058728 WO2015051059A1 (en) | 2013-10-02 | 2014-10-02 | Extent hashing technique for distributed storage architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105612490A true CN105612490A (zh) | 2016-05-25 |
Family
ID=51871269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480055012.2A Pending CN105612490A (zh) | 2013-10-02 | 2014-10-02 | 用于分布式存储架构的盘区散列技术 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9405783B2 (zh) |
EP (1) | EP3036617A1 (zh) |
CN (1) | CN105612490A (zh) |
WO (1) | WO2015051059A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536392A (zh) * | 2017-03-01 | 2018-09-14 | 三星电子株式会社 | 混合数据查找方法 |
CN109753231A (zh) * | 2017-11-08 | 2019-05-14 | 三星电子株式会社 | 键值存储设备及操作其的方法 |
CN110096216A (zh) * | 2018-01-30 | 2019-08-06 | 伊姆西Ip控股有限责任公司 | 用于管理数据存储系统中的数据存储的方法、装置以及计算机程序产品 |
CN110119361A (zh) * | 2018-02-06 | 2019-08-13 | 三星电子株式会社 | 存储器控制器及其操作方法 |
CN110119425A (zh) * | 2018-02-06 | 2019-08-13 | 三星电子株式会社 | 固态驱动器、分布式数据存储系统和利用键值存储的方法 |
CN110431542A (zh) * | 2017-05-30 | 2019-11-08 | 西部数据技术公司 | 管理存储网络中的i/o操作 |
CN110603517A (zh) * | 2017-06-08 | 2019-12-20 | 日立数据管理有限公司 | 对分布的经过擦除编码的对象去复制 |
CN111095225A (zh) * | 2017-09-29 | 2020-05-01 | 甲骨文国际公司 | 使用rdma读取存储在非易失性高速缓存中的数据的方法 |
CN111149081A (zh) * | 2017-08-07 | 2020-05-12 | 维卡艾欧有限公司 | 负载平衡分配式存储系统中的元数据控制 |
CN112948344A (zh) * | 2021-04-09 | 2021-06-11 | 苏州菲瑞斯信息技术有限公司 | 基于hdfs技术的数据库备份的服务器及系统 |
CN113227997A (zh) * | 2018-10-23 | 2021-08-06 | 辉达公司 | 使用多个gpu对散列表有效且可扩展地构建和探测 |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US20130263151A1 (en) * | 2012-04-03 | 2013-10-03 | Microsoft Corporation | Consistent Hashing Table for Workload Distribution |
US9104325B2 (en) * | 2013-11-13 | 2015-08-11 | Infinidat Ltd. | Managing read operations, write operations and extent change operations |
US9286003B1 (en) * | 2013-12-31 | 2016-03-15 | Emc Corporation | Method and apparatus for creating a short hash handle highly correlated with a globally-unique hash signature |
US9256549B2 (en) | 2014-01-17 | 2016-02-09 | Netapp, Inc. | Set-associative hash table organization for efficient storage and retrieval of data in a storage system |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US9858300B2 (en) * | 2014-06-24 | 2018-01-02 | Infinidat Ltd. | Hash based de-duplication in a storage system |
US9965482B2 (en) * | 2014-06-24 | 2018-05-08 | Infinidat Ltd. | Hash based read and write operations in a storage system |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US9577832B2 (en) * | 2014-07-31 | 2017-02-21 | Netronome Systems, Inc. | Generating a hash using S-box nonlinearizing of a remainder input |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US9753955B2 (en) | 2014-09-16 | 2017-09-05 | Commvault Systems, Inc. | Fast deduplication data verification |
US9959335B2 (en) * | 2014-09-22 | 2018-05-01 | Netapp, Inc. | System and method for avoiding object identifier collisions in a peered cluster environment |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US10216966B2 (en) | 2015-02-25 | 2019-02-26 | Netapp, Inc. | Perturb key technique |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US9639274B2 (en) | 2015-04-14 | 2017-05-02 | Commvault Systems, Inc. | Efficient deduplication database validation |
US10049118B2 (en) | 2015-06-01 | 2018-08-14 | Netapp, Inc. | Consistency checker for global de-duplication clustered file system |
US9934264B2 (en) | 2015-06-02 | 2018-04-03 | Netapp, Inc. | Technique for reducing metadata stored in a memory of a node |
US9766837B2 (en) | 2015-06-10 | 2017-09-19 | Micron Technology, Inc. | Stripe mapping in memory |
US10402452B1 (en) * | 2015-06-12 | 2019-09-03 | Amazon Technologies, Inc. | Distributed hash table based logging service |
US10339132B2 (en) | 2015-07-09 | 2019-07-02 | Netapp, Inc. | Flow control technique for EOS system |
US11232079B2 (en) * | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10642962B2 (en) | 2015-07-28 | 2020-05-05 | Western Digital Technologies, Inc. | Licensable function for securing stored data |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
CN106484691B (zh) * | 2015-08-24 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 移动终端的数据存储方法和装置 |
CN105260136B (zh) * | 2015-09-24 | 2019-04-05 | 北京百度网讯科技有限公司 | 数据读写方法及分布式存储系统 |
CN105187547A (zh) * | 2015-09-25 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种负载均衡方法与系统 |
US9846539B2 (en) | 2016-01-22 | 2017-12-19 | Netapp, Inc. | Recovery from low space condition of an extent store |
US10191674B2 (en) * | 2016-04-15 | 2019-01-29 | Netapp, Inc. | Shared dense tree repair |
US10802740B2 (en) | 2016-04-21 | 2020-10-13 | Netapp, Inc. | Systems, methods, and computer readable media providing arbitrary sizing of data extents |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US11016940B2 (en) * | 2016-06-02 | 2021-05-25 | International Business Machines Corporation | Techniques for improving deduplication efficiency in a storage system with multiple storage nodes |
US9690801B1 (en) | 2016-06-02 | 2017-06-27 | International Business Machines Corporation | Techniques for improving deduplication efficiency in a storage system with multiple storage nodes |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
CN106777097B (zh) * | 2016-12-14 | 2020-06-26 | 浪潮通用软件有限公司 | 一种元数据分层扩展时的合并方法 |
US11068606B2 (en) * | 2017-09-20 | 2021-07-20 | Citrix Systems, Inc. | Secured encrypted shared cloud storage |
CN108595287B (zh) * | 2018-04-27 | 2021-11-05 | 新华三技术有限公司成都分公司 | 基于纠删码的数据截断方法及装置 |
US10768844B2 (en) | 2018-05-15 | 2020-09-08 | International Business Machines Corporation | Internal striping inside a single device |
US10956366B2 (en) * | 2018-07-31 | 2021-03-23 | EMC IP Holding Company LLC | Dynamic physical capacity allocation in an unbalanced CAS system |
US10839016B2 (en) * | 2018-10-31 | 2020-11-17 | EMC IP Holding Company LLC | Storing metadata in a cuckoo tree |
US10824345B2 (en) * | 2018-11-29 | 2020-11-03 | Intuit Inc. | Systems and methods for storing object state on hash chains |
US11341106B2 (en) | 2019-07-19 | 2022-05-24 | Commvault Systems, Inc. | Deduplication system without reference counting |
CN111078132A (zh) * | 2019-10-15 | 2020-04-28 | 中国平安财产保险股份有限公司 | 基于Redis集群的数据均匀缓存方法、装置、终端及存储介质 |
EP4081888A4 (en) * | 2019-12-27 | 2023-09-06 | Hitachi Vantara LLC | DYNAMIC ADAPTIVE PARTITION SPLITTING |
CN113127415B (zh) * | 2019-12-31 | 2024-02-27 | 浙江宇视科技有限公司 | 实时流文件的处理方法、装置、介质及电子设备 |
US11588734B2 (en) | 2020-04-28 | 2023-02-21 | Pensando Systems Inc. | Systems for providing an LPM implementation for a programmable data plane through a distributed algorithm |
US11258707B1 (en) | 2020-08-21 | 2022-02-22 | Pensando Systems Inc. | Systems for building data structures with highly scalable algorithms for a distributed LPM implementation |
US11375013B2 (en) | 2020-09-25 | 2022-06-28 | Microsoft Technology Licensing, Llc | Deterministic mapping and uniform routing of items to physical resources using hash values |
CN112988062B (zh) * | 2021-01-28 | 2023-02-14 | 腾讯科技(深圳)有限公司 | 一种元数据读取限制方法、装置、电子设备及介质 |
WO2023033100A1 (en) * | 2021-09-02 | 2023-03-09 | Nec Corporation | Processing apparatus |
US11947568B1 (en) * | 2021-09-30 | 2024-04-02 | Amazon Technologies, Inc. | Working set ratio estimations of data items in a sliding time window for dynamically allocating computing resources for the data items |
CN113886331B (zh) * | 2021-12-03 | 2022-03-08 | 苏州浪潮智能科技有限公司 | 分布式对象存储方法、装置、电子设备及可读存储介质 |
US20240070080A1 (en) * | 2022-08-31 | 2024-02-29 | Vmware, Inc. | Dynamic growth of data caches using background processes for hash bucket growth |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1871810A (zh) * | 2003-10-28 | 2006-11-29 | 财团法人生产技术研究奖励会 | 认证系统和远隔分散保存系统 |
US20070143359A1 (en) * | 2005-12-19 | 2007-06-21 | Yahoo! Inc. | System and method for recovery from failure of a storage server in a distributed column chunk data store |
CN101131672A (zh) * | 2006-08-25 | 2008-02-27 | Qnx软件操作系统德国有限公司 | 具有可变逻辑存储块大小的文件系统 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN103238145A (zh) * | 2010-12-03 | 2013-08-07 | 华为技术有限公司 | 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备 |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511190A (en) | 1995-01-20 | 1996-04-23 | Tandem Computers, Inc. | Hash-based database grouping system and method |
US6862602B2 (en) | 1997-03-07 | 2005-03-01 | Apple Computer, Inc. | System and method for rapidly identifying the existence and location of an item in a file |
US5937425A (en) | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
US6862692B2 (en) | 2001-01-29 | 2005-03-01 | Adaptec, Inc. | Dynamic redistribution of parity groups |
US7249150B1 (en) | 2001-07-03 | 2007-07-24 | Network Appliance, Inc. | System and method for parallelized replay of an NVRAM log in a storage appliance |
US20030120869A1 (en) | 2001-12-26 | 2003-06-26 | Lee Edward K. | Write-back disk cache management |
US7096277B2 (en) | 2002-08-07 | 2006-08-22 | Intel Corporation | Distributed lookup based on packet contents |
US7325059B2 (en) | 2003-05-15 | 2008-01-29 | Cisco Technology, Inc. | Bounded index extensible hash-based IPv6 address lookup method |
US8949395B2 (en) | 2004-06-01 | 2015-02-03 | Inmage Systems, Inc. | Systems and methods of event driven recovery management |
US20060075281A1 (en) | 2004-09-27 | 2006-04-06 | Kimmel Jeffrey S | Use of application-level context information to detect corrupted data in a storage system |
JP2008533564A (ja) | 2005-02-24 | 2008-08-21 | ゼラウンド システムズ リミテッド | データ管理のための方法および装置 |
US8849767B1 (en) | 2005-04-13 | 2014-09-30 | Netapp, Inc. | Method and apparatus for identifying and eliminating duplicate data blocks and sharing data blocks in a storage system |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US8504521B2 (en) | 2005-07-28 | 2013-08-06 | Gopivotal, Inc. | Distributed data management system |
US10289688B2 (en) | 2010-06-22 | 2019-05-14 | International Business Machines Corporation | Metadata access in a dispersed storage network |
JP4766240B2 (ja) | 2005-11-08 | 2011-09-07 | 日本電気株式会社 | ファイル管理方法、装置、およびプログラム |
WO2007140260A2 (en) | 2006-05-24 | 2007-12-06 | Compellent Technologies | System and method for raid management, reallocation, and restriping |
US7624231B2 (en) | 2006-11-29 | 2009-11-24 | International Business Machines Corporation | Map based striping of data in a distributed volatile memory environment |
US7620669B1 (en) | 2006-12-15 | 2009-11-17 | Netapp, Inc. | System and method for enhancing log performance |
US8082390B1 (en) | 2007-06-20 | 2011-12-20 | Emc Corporation | Techniques for representing and storing RAID group consistency information |
US7949693B1 (en) | 2007-08-23 | 2011-05-24 | Osr Open Systems Resources, Inc. | Log-structured host data storage |
US7996636B1 (en) | 2007-11-06 | 2011-08-09 | Netapp, Inc. | Uniquely identifying block context signatures in a storage volume hierarchy |
US9292567B2 (en) * | 2007-12-12 | 2016-03-22 | Oracle International Corporation | Bulk matching with update |
US9134917B2 (en) | 2008-02-12 | 2015-09-15 | Netapp, Inc. | Hybrid media storage system architecture |
WO2009134772A2 (en) | 2008-04-29 | 2009-11-05 | Maxiscale, Inc | Peer-to-peer redundant file server system and methods |
US8762654B1 (en) * | 2008-07-02 | 2014-06-24 | Marvell International Ltd. | Selectively scheduling memory accesses in parallel based on access speeds of memory |
US8086799B2 (en) | 2008-08-12 | 2011-12-27 | Netapp, Inc. | Scalable deduplication of stored data |
US20100088296A1 (en) | 2008-10-03 | 2010-04-08 | Netapp, Inc. | System and method for organizing data to facilitate data deduplication |
US8495417B2 (en) | 2009-01-09 | 2013-07-23 | Netapp, Inc. | System and method for redundancy-protected aggregates |
US8205065B2 (en) | 2009-03-30 | 2012-06-19 | Exar Corporation | System and method for data deduplication |
US8560879B1 (en) | 2009-04-22 | 2013-10-15 | Netapp Inc. | Data recovery for failed memory device of memory device array |
US8219562B1 (en) | 2009-06-29 | 2012-07-10 | Facebook, Inc. | Efficient storage and retrieval for large number of data objects |
US9280609B2 (en) | 2009-09-08 | 2016-03-08 | Brocade Communications Systems, Inc. | Exact match lookup scheme |
US8321648B2 (en) | 2009-10-26 | 2012-11-27 | Netapp, Inc | Use of similarity hash to route data for improved deduplication in a storage server cluster |
US8918897B2 (en) | 2009-11-24 | 2014-12-23 | Cleversafe, Inc. | Dispersed storage network data slice integrity verification |
US8417987B1 (en) | 2009-12-01 | 2013-04-09 | Netapp, Inc. | Mechanism for correcting errors beyond the fault tolerant level of a raid array in a storage system |
US8140821B1 (en) | 2009-12-18 | 2012-03-20 | Emc Corporation | Efficient read/write algorithms and associated mapping for block-level data reduction processes |
US8850113B2 (en) | 2010-02-27 | 2014-09-30 | Cleversafe, Inc. | Data migration between a raid memory and a dispersed storage network memory |
US8341457B2 (en) | 2010-03-11 | 2012-12-25 | Lsi Corporation | System and method for optimizing redundancy restoration in distributed data layout environments |
US8706701B1 (en) * | 2010-11-18 | 2014-04-22 | Emc Corporation | Scalable cloud file system with efficient integrity checks |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US8595595B1 (en) | 2010-12-27 | 2013-11-26 | Netapp, Inc. | Identifying lost write errors in a raid array |
US8539008B2 (en) | 2011-04-29 | 2013-09-17 | Netapp, Inc. | Extent-based storage architecture |
US8600949B2 (en) | 2011-06-21 | 2013-12-03 | Netapp, Inc. | Deduplication in an extent-based architecture |
US8261085B1 (en) | 2011-06-22 | 2012-09-04 | Media Patents, S.L. | Methods, apparatus and systems to improve security in computer systems |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8788788B2 (en) | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
US8930307B2 (en) | 2011-09-30 | 2015-01-06 | Pure Storage, Inc. | Method for removing duplicate data from a storage array |
US10469578B2 (en) | 2011-11-28 | 2019-11-05 | Pure Storage, Inc. | Prioritization of messages of a dispersed storage network |
US20130238832A1 (en) | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Deduplicating hybrid storage aggregate |
US8688652B2 (en) | 2012-04-05 | 2014-04-01 | International Business Machines Corporation | Increased in-line deduplication efficiency |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US20130346700A1 (en) | 2012-06-21 | 2013-12-26 | Alexander I. Tomlinson | Systems and methods for managing memory |
US8751763B1 (en) | 2013-03-13 | 2014-06-10 | Nimbus Data Systems, Inc. | Low-overhead deduplication within a block-based data storage |
WO2014155668A1 (ja) * | 2013-03-29 | 2014-10-02 | 株式会社 東芝 | データの重複をハッシュテーブルに基づいて排除するためのストレージシステム、ストレージコントローラ及び方法 |
US9268502B2 (en) * | 2013-09-16 | 2016-02-23 | Netapp, Inc. | Dense tree volume metadata organization |
-
2013
- 2013-10-02 US US14/044,624 patent/US9405783B2/en active Active
-
2014
- 2014-01-21 US US14/160,048 patent/US8996535B1/en not_active Expired - Fee Related
- 2014-10-02 WO PCT/US2014/058728 patent/WO2015051059A1/en active Application Filing
- 2014-10-02 CN CN201480055012.2A patent/CN105612490A/zh active Pending
- 2014-10-02 EP EP14796316.9A patent/EP3036617A1/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1871810A (zh) * | 2003-10-28 | 2006-11-29 | 财团法人生产技术研究奖励会 | 认证系统和远隔分散保存系统 |
US20070143359A1 (en) * | 2005-12-19 | 2007-06-21 | Yahoo! Inc. | System and method for recovery from failure of a storage server in a distributed column chunk data store |
CN101131672A (zh) * | 2006-08-25 | 2008-02-27 | Qnx软件操作系统德国有限公司 | 具有可变逻辑存储块大小的文件系统 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN103238145A (zh) * | 2010-12-03 | 2013-08-07 | 华为技术有限公司 | 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备 |
Non-Patent Citations (2)
Title |
---|
(美)ROBERT SEDGEWICK、KEVIN WAYNE著,谢路云译: "3.4 散列表", 《算法(第4版)》 * |
汪世龙、雒江涛: "基于哈希的IP会话分时段统计方法", 《数字通讯》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536392B (zh) * | 2017-03-01 | 2024-03-12 | 三星电子株式会社 | 混合数据查找方法 |
CN108536392A (zh) * | 2017-03-01 | 2018-09-14 | 三星电子株式会社 | 混合数据查找方法 |
CN110431542A (zh) * | 2017-05-30 | 2019-11-08 | 西部数据技术公司 | 管理存储网络中的i/o操作 |
CN110431542B (zh) * | 2017-05-30 | 2023-06-30 | 西部数据技术公司 | 管理存储网络中的i/o操作 |
CN110603517A (zh) * | 2017-06-08 | 2019-12-20 | 日立数据管理有限公司 | 对分布的经过擦除编码的对象去复制 |
US11847098B2 (en) | 2017-08-07 | 2023-12-19 | Weka.IO Ltd. | Metadata control in a load-balanced distributed storage system |
CN111149081B (zh) * | 2017-08-07 | 2023-07-21 | 维卡艾欧有限公司 | 负载平衡分配式存储系统中的元数据控制 |
CN111149081A (zh) * | 2017-08-07 | 2020-05-12 | 维卡艾欧有限公司 | 负载平衡分配式存储系统中的元数据控制 |
US20230099290A1 (en) * | 2017-08-07 | 2023-03-30 | Weka.IO LTD | Metadata control in a load-balanced distributed storage system |
CN111095225A (zh) * | 2017-09-29 | 2020-05-01 | 甲骨文国际公司 | 使用rdma读取存储在非易失性高速缓存中的数据的方法 |
CN111095225B (zh) * | 2017-09-29 | 2024-06-11 | 甲骨文国际公司 | 使用rdma读取非易失性高速缓存中存储的数据的方法 |
CN109753231B (zh) * | 2017-11-08 | 2024-05-10 | 三星电子株式会社 | 键值存储设备及操作其的方法 |
CN109753231A (zh) * | 2017-11-08 | 2019-05-14 | 三星电子株式会社 | 键值存储设备及操作其的方法 |
US11874815B2 (en) | 2017-11-08 | 2024-01-16 | Samsung Electronics Co., Ltd. | Key-value storage device and method of operating the same |
CN110096216A (zh) * | 2018-01-30 | 2019-08-06 | 伊姆西Ip控股有限责任公司 | 用于管理数据存储系统中的数据存储的方法、装置以及计算机程序产品 |
CN110096216B (zh) * | 2018-01-30 | 2022-06-14 | 伊姆西Ip控股有限责任公司 | 用于管理数据存储系统中的数据存储的方法、装置以及计算机程序产品 |
CN110119425A (zh) * | 2018-02-06 | 2019-08-13 | 三星电子株式会社 | 固态驱动器、分布式数据存储系统和利用键值存储的方法 |
CN110119361A (zh) * | 2018-02-06 | 2019-08-13 | 三星电子株式会社 | 存储器控制器及其操作方法 |
CN113227997A (zh) * | 2018-10-23 | 2021-08-06 | 辉达公司 | 使用多个gpu对散列表有效且可扩展地构建和探测 |
CN112948344A (zh) * | 2021-04-09 | 2021-06-11 | 苏州菲瑞斯信息技术有限公司 | 基于hdfs技术的数据库备份的服务器及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20150095347A1 (en) | 2015-04-02 |
US8996535B1 (en) | 2015-03-31 |
EP3036617A1 (en) | 2016-06-29 |
WO2015051059A1 (en) | 2015-04-09 |
US20150095346A1 (en) | 2015-04-02 |
US9405783B2 (en) | 2016-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105612490A (zh) | 用于分布式存储架构的盘区散列技术 | |
US11372544B2 (en) | Write type based crediting for block level write throttling to control impact to read input/output operations | |
US10762070B2 (en) | Technique for reducing metadata stored in a memory of a node | |
US9639278B2 (en) | Set-associative hash table organization for efficient storage and retrieval of data in a storage system | |
US9720601B2 (en) | Load balancing technique for a storage array | |
US10216966B2 (en) | Perturb key technique | |
US8880787B1 (en) | Extent metadata update logging and checkpointing | |
US9563654B2 (en) | Dense tree volume metadata organization | |
US10169365B2 (en) | Multiple deduplication domains in network storage system | |
US9152684B2 (en) | Snapshots and clones of volumes in a storage system | |
US8832363B1 (en) | Clustered RAID data organization | |
US20160070644A1 (en) | Offset range operation striping to improve concurrency of execution and reduce contention among resources | |
CN107077300A (zh) | 用于平衡分段清除与i/o工作负载的速率匹配技术 | |
US11625169B2 (en) | Efficient token management in a storage system | |
US11210230B2 (en) | Cache retention for inline deduplication based on number of physical blocks with common fingerprints among multiple cache entries | |
US11366601B2 (en) | Regulating storage device rebuild rate in a storage system | |
US10055354B1 (en) | Systems, devices and methods using a solid state device as a caching medium with a hashing algorithm to maintain sibling proximity | |
US11360691B2 (en) | Garbage collection in a storage system at sub-virtual block granularity level |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: NETAPP incorporated company Address before: American California Applicant before: Network Appliance Inc. |
|
COR | Change of bibliographic data | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160525 |