CN105683898A - 对储存***中数据高效存储与检索的组相关哈希表组织 - Google Patents
对储存***中数据高效存储与检索的组相关哈希表组织 Download PDFInfo
- Publication number
- CN105683898A CN105683898A CN201480059554.7A CN201480059554A CN105683898A CN 105683898 A CN105683898 A CN 105683898A CN 201480059554 A CN201480059554 A CN 201480059554A CN 105683898 A CN105683898 A CN 105683898A
- Authority
- CN
- China
- Prior art keywords
- groove
- group
- scope
- hash
- key
- 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
- 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/061—Improving I/O performance
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- 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
- 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
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
-
- 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
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer Security & Cryptography (AREA)
Abstract
在本文中所描述的实施例涉及将哈希用于文件***元数据配置,这样的使用减少储存在群集的节点的存储器中的元数据的量并且减少需要在节点处处理输入/输出(I/O)请求的元数据的量。说明性地,实施例涉及布谷鸟哈希,并且尤其涉及布谷鸟哈希可以被修改并且应用到构造文件***元数据配置的方式。在一个实施例中,文件***元数据配置可以说明性地配置为具体化为诸如布谷鸟哈希表之类数据结构的密钥值范围储存,其中,诸如哈希表索引之类的值可以配置为索引并且应用到布谷鸟哈希表以获取例如范围密钥的密钥,该范围密钥配置为引用在例如固态驱动器(SSD)的一个或多个存储装置上的范围的位置。
Description
技术领域
本公开涉及储存***,并且特别涉及一种对储存***中的数据进行高效存储与检索的元数据组织。
背景技术
储存***通常包括一个或多个存储装置,例如具体化为硬盘驱动器(HDD)或者固态驱动器(SSD)的磁盘。根据需要可以将信息输入存储装置以及从存储装置中获取。储存***可以实施诸如文件***之类的高层模块以将储存在磁盘上的信息从逻辑上组织为诸如文件或者逻辑单元(LUN)之类的存储对象。每个储存容器可以被实施为诸如数据块和元数据块之类的一组数据结构,数据块用于储存器的数据,元数据块描述储存容器的数据。例如,元数据可以描述(例如识别)用于该数据在磁盘上的存储位置。
在传统的文件***中,在处理诸如读取或写入请求之类的输入/输出(I/O)请求时,可能引起大量元数据更新(变化)。也就是说,与相关联的I/O请求的(待写入)数据量成正比(即,高写入放大)的相对大量的元数据可能被写入。例如,在具有改变LUN的数据(用户数据)的写入数据的写入请求的情况下,该请求在储存***处的处理可能需要对大量地存取磁盘以获取并且更新与变化的用户数据相关联的一个或多个间接块(元数据)。间接块的更新可能导致大量元数据变化,由此造成高写入放大。在读取请求的情况下,如果在存取磁盘上的所请求的用户数据前需要存取磁盘上的元数据,可能引起大的延迟。例如,如果需要针对每读取请求对两次磁盘存取进行平均,所产生的读取放大使性能减半。此外,如果I/O请求需要打开目录以存取文件***元数据,这可能需要大量存取磁盘,由此引起高读取放大。通过降低处理I/O请求所需要的元数据量并且保持在储存***的存储器例如RAM中需要的元数据的基本量,可以降低磁盘存取(读取和写入)的量,因此降低读取放大和写入放大。
附图说明
通过结合附图引用以下描述可以更好地理解在本文中的实施例的上述的和进一步优点,其中相同附图标记表示相同或者功能上类似的部件,其中:
图1是互连为群集的多个节点的框图;
图2是节点的框图;
图3是节点的存储器输入/输出(I/O)堆栈的框图;
图4示出了存储器I/O堆栈的写入路径;
图5示出了存储器I/O堆栈的读取路径;
图6是范围哈希技术的框图;
图7是桶映射技术的框图;
图8a是哈希表条目选择技术的框图;
图8b是哈希表槽的框图;
图9是范围密钥重构技术的框图;以及
图10是哈希冲突技术的框图。
具体实施方式
在本文中所描述的实施例涉及将哈希算法用于文件***元数据配置中,哈希算法的使用降低储存在群集的节点的存储器中的元数据的量并且降低在节点处处理输入/输出(I/O)请求所需要的元数据的量。说明性地,实施例针对布谷鸟哈希算法,并且特别针对布谷鸟哈希算法(cuckoohashing)可以被修改并且应用于构造文件***元数据配置的方式。在一实施例中,文件***元数据配置可以说明性地配置为具体化为数据结构(例如,布谷鸟哈希表)的密钥值范围储存,其中,诸如哈希表索引之类的值可以配置为索引并且应用于布谷鸟哈希表以获取诸如范围密钥之类的密钥,该密钥配置为引用在一个或多个诸如固态驱动器(SSD)之类的存储装置上的范围(extent)的位置。因此,布谷鸟哈希表使描述范围得范围元数据具体化,并且由此可以被组织以将SSD上的位置与索引相关联,即与哈希表索引关联的值识别SSD上的位置。有利地,文件***元数据配置实现高度元数据压缩,从而降低读取和写入放大以及存储器需求。
说明
存储器群集
图1是互连为群集100并且配置为提供与存储装置上的信息组织有关的存储器服务的多个节点200的框图。节点200可以由群集互连构架110互连并且包括协作地提供群集100的分布式存储器架构的功能部件,其可以在存储器区域网(SAN)中使用。正如在本文中所描述的,每个节点200的部件包括硬件和软件功能,该硬件和软件功能使节点能够经由计算机网络130连接到一个或多个主机120上以及经由存储器互连140连接到存储装置的一个或多个存储器阵列150上,由此使得存储服务符合分布式存储器架构。
每个主机120可以被具体化为通用计算机,该通用计算机配置为根据消息传递的客户端/服务器模型与任何节点200交互。也就是说,该客户端(主机)可以请求节点的服务,并且该节点可以通过在网络130上交换数据包返回由主机请求的服务的结果。主机在存取以的例如文件和目录的储存器形式时的节点上的信息时可以发出包括基于文件的存取协议,例如在传输控制协议/网络协议(TCP/IP)上的网络文件***(NFS)协议。然而,在一个实施例中,在存取以诸如逻辑段元(LUN)之类的存储容器形式的信息时,主机120说明性地发出包括基于块的存取协议的数据包,该基于块的存取协议例如为在TCP(iSCSI)上封装的小型计算机***接口(SCSI)协议和在FC上封装的SCSI(FCP)。尤其,任何节点200可以提供针对指向储存在群集100上的储存器的请求的服务。
图2是说明性地具体化为存储***的节点200的框图,该存储***具有经由存储器总线215耦接到存储器220上的一个或多个中央处理器(CPU)210。CPU210还经由***互连270耦接到网络适配器230、存储器控制器240、群集互连接口250以及非易失性随机存取存储器(NVRAM280)。网络适配器230可以包括适用于将节点200经由计算机网络130耦接至主机120上的一个或多个端口,该计算机网路可以包括点到点链路、广域网、在公用网(因特网)上实施的虚拟专用网络或者局域网。网络适配器230因此包括将节点连接至网络130所需要的机械、电学以及信号电路,其说明性地具体化为以太网或者光纤通道(FC)网络。
存储器220可以包括通过可由CPU210寻址的的存储器位置,用于储存与在本文中所描述的实施例关联的软件程序和数据结构。CPU210则可以包括处理部件和/或逻辑电路,其配置为诸如存储器输入/输出(I/O)堆栈300之类的执行软件程序并对数据结构进行操作。说明性地,存储器I/O堆栈300可以被实施为可以被分解成多个线程的一组用户模式处理。操作***内核224通过特别地调用支持由节点并且具体地由存储器I/O堆栈300所实施的存储器服务的操作来在功能上组织该节点,操作***内核224的一部分通常驻留在存储器220(核内,in-core)中并且由处理部件(即,CPU210)执行。合适的操作***内核224可以包括通用操作***,例如,系列或者微软系列的操作***或者具有例如微核和嵌入式内核的可配置功能的操作***。然而,在本文中所描述的实施例中,操作***内核是说明性地操作***。对于本领域技术人员显然的是,包括各种计算机可读介质的其它处理和存储器装置可以用来储存和执行关于本文中的实施例的程序指令。
每个存储器控制器240与在节点200上执行的存储器I/O堆栈300协作以存取由主机120请求的信息。该信息优选储存在存储器阵列150的存储装置上,该存储装置例如为说明性地被具体化为闪存装置的固态驱动器(SSD)260。在实施例中,闪存装置可以基于NAND闪存部件,例如单层单元(SLC)闪存、多层单元(MLC)闪存或者三倍层单元(TLC)闪存,尽管对于本领域技术人员要理解的是其它非易失性,固态电子装置(例如,基于存储器类存储器部件的驱动器)可以有利地采用本文中所描述的实施例。因此,存储装置可以或者不是面向块的(例如,块存取)。存储器控制器240包括一个或多个端口,该端口具有经由存储器互连140耦接到SSD260上的I/O接口电路,其说明性地具体化为串行连接SCSI(SAS)拓扑。可选地,可以使用其它点对点I/O互连配置,例如常规的串行ATA(SATA)拓扑或者PCI拓扑。***互连270也可以将节点200耦接至诸如SSD之类的本地服务存储装置248,本地服务存储装置248配置为例如作为群集数据库(DB)244来在本地储存群集相关配置信息,其可以复制至群集100中的其它节点200。
群集互连接口250可以包括适用于将节点200耦接至群集100的其它节点上的一个或多个端口。在实施例中,尽管对于本领域技术人员显然可将诸如无限带宽技术(Infiniband)之类的其它类型的协议和互连用于本申请所述的实施例中,但是以太网可以用作群集协议和互连结构介质。NVRAM280可以包括考虑到在节点和群集环境故障情况下能够保持数据的备用电池或者其它内建的最后状态滞留容量(例如非易失性半导体存储器,例如存储类存储器)。说明性地,一部分NVRAM280可以配置为一个或多个非易失性记录(NVLogs285),其配置为暂时记录(“以日志方式记录(log)”)从主机接收到的例如写入请求的I/O请求。
存储器I/O堆栈
图3是可以利用本文中所描述的一个或多个实施例有利地使用的存储器I/O堆栈300的框图。存储器I/O堆栈300包括与节点200的其它功能部件协作以提供群集100的分布式存储器架构的多个软件模块或者层。在一个实施例中,分布式存储器架构表示单个储存器的抽象,例如,用于全部群集100的节点200的所有存储器阵列150组织为一个大的存储器池。换句话说,该结构在群集(经由群集宽密钥可检索的)各处使存储器固定,例如,阵列150的SSD260以启用LUNs的存储器。储存容量和性能两者然后可以通过增加节点200至群集100来放大。
说明性地,存储器I/O堆栈300包括管理层310、协议层320、持久层330、卷层340、范围储存层350、冗余阵列的独立磁盘(RAID)存储器层360、存储器层365以及与消息内核370相互连接的NVRAM(储存NVLogs)。消息内核370可以提供基于消息(或者基于事件)的调度模型(例如异步调度),其使用消息作为在层之中的工作交换(例如传递)的基本单位。由消息内核提供以在存储器I/O堆栈300的层之间传送信息的合适的消息传递机制可以包括,例如针对节点内通信:i)在线程池上执行的消息;ii)通过该存储器I/O堆栈作为操作进行的单线程上执行的消息;iii)使用进程间通信(IPC)机制的消息,以及,例如针对节点间通信:根据功能运送实现使用远程过程调用(RPC)机制的消息。可选地,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请求并且将其转送至持久层330,该持久层330记录请求到持续的回写缓存器380中,说明性地具体化为其含量能够随机地代替的记录,例如在一些随机存取置换规则而不是仅仅以串行方式下,并且经由协议层320将收到通知返回至主机120。在实施例中,仅仅修改LUN(例如写入请求)的I/O请求被记录。值得注意地,I/O请求可以被记录在接收I/O请求的节点处,或者在根据功能运输的实施的替换实施例中,I/O请求可以被记录在另一节点处。
说明性地,专用日志可以由各种层的存储器I/O堆栈300保持。例如,专用日志335可以由持久层330保持以记录I/O请求的I/O参数为等效内部参数,例如存储器I/O堆栈参数,该参数例如为卷ID、偏移以及长度。在写入请求的情况下,持久层330也可以与NVRAM280协作以实施配置为储存与写入请求关联的写入数据的回写缓存器380。在实施例,回写缓存器可以构造为记录。值得注意地,用于写入请求的写入数据可以物理上储存在缓存器380中,使得日志335包含对关联写入数据的引用。本领域技术人员将理解,其它变型的数据结构可以用来将写入数据储存或者保持在包括具有没有记录的数据结构的NVRAM中。在实施例中,回写缓存器的拷贝也可以保持在存储器220中以促进对存储器控制器的直接存储器存取。在其它实施例中,缓存可以根据保持在储存在缓存器处的数据和群集之间的结合的协议在主机120处或者在接收节点处执行。
在一个实施例中,管理层310可以将LUN均分为多个卷,每个卷可以划分为多个区域(例如分配为解体块地址范围),同时每个区域具有储存为在阵列150上的多个条带的一个或多个区段。在节点200之间分布的多个卷因此可以服务于单个LUN,例如在LUN内的每个卷服务不同LBA范围(例如偏移和长度,在下文中称为偏移范围)或者在LUN内的范围组。因此,协议层320可以实施卷映射技术以识别I/O请求所指向的卷(例如,该卷服务于由I/O请求的参数指示的偏移范围)。说明性地,群集数据库244可以配置为保持用于多个卷中的每一个卷的一个或多个关联(例如密钥值对),例如在LUNID和卷之间的关联以及在卷和用于管理卷的节点的节点ID之间的关联。管理层310也可以与数据库244协作以创建(或者删除)与LUN关联的一个或多个卷(例如在数据库244中创建卷ID/LUN密钥值对)。通过使用LUNID和LBA(或者LBA范围),卷映射技术可以提供卷ID(例如在群集数据库244中使用适当的关联),该卷ID识别卷和服务注定用于该请求的卷的节点,而且将LBA(或者LBA范围)转换为在卷内的偏移和长度。具体地说,卷ID用于确定管理与LBA或者LBA范围关联的卷元数据的卷层实例。正如注意到的,协议层320可以将I/O请求传递到持久层330,持久层330可以使用功能运送(例如节点间)实现以将I/O请求转发至适当的卷层实例,该适当的卷层实例基于卷ID在群集中的节点上执行。
在一个实施例中,卷层340可以通过例如保持诸如范围LUN之类的主机可见的容器的状态并且执行诸如快照和克隆的创健之类的数据管理功能来针对LUN与管理层310协作管理卷元数据。卷元数据说明性地具体化为从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,该条目累积所请求的“放置(put)”和“删除”操作(例如,从其它层发出到范围储存层350的范围的写入请求和删除请求),其中,这些操作改变核内映射(例如哈希表条目)。随后,核内映射和范围储存层记录355的内容可以根据“模糊(fuzzy)”检查点390(例如,记录在一个或多个日志文件中的递增的变化的检查点)被写入至存储器阵列150,其中,所选择的核内映射(小于总和)被以不同的间隙发至阵列150(例如,由变化的量驱动至核内映射,日志355的尺寸阈值或者周期性地)。值得注意地,只要所有核内映射已经待发至包括记录在那些条目中的变化,在日志355中的累积条目可以被收回。
在一个实施例中,RAID层360可以将在存储器阵列150内的SSD260组织为一个或多个RAID组(例如SSD组),该一个或多个RAID组通过写入具有冗余信息的数据“条带”提高在阵列上的范围存储器的可靠性和完整性,例如,在对面每个RAID组的SSD260的已知数的相对于条带数据的适当的奇偶信息。RAID层360也可以例如根据多个连续范围写入操作储存许多条带(例如足够深度的条带),以便降低作为操作的结果在SSD内出现的数据重定位(例如,内部闪存块管理)。在实施例中,存储器层365实施存储器I/O驱动器,该存储器I/O驱动器可以直接与硬件(例如存储器控制器和群集接口)通信,该硬件与例如Linux虚拟功能I/O(VFIO)驱动器的操作***内核224协作。
写入路径
图4示出了用于处理例如SCSI写入请求410的I/O请求的存储器I/O堆栈300的I/O(例如写入)路径400。写入请求410可以由主机120发出并且指向储存在群集100的存储器阵列150上的LUN。说明性地,协议层320通过解码420(例如分析和提取)该请求的域(例如LUNID、LBA以及长度)(在413处示出)以及写入数据414来接收和处理该写入请求。协议层320可以使用来自解码420的结果422用于卷映射技术430(如上所述),该卷映射技术430将写入请求的LUNID和LBA范围(例如等效偏移和长度)转换为负责管理用于LBA范围的卷元数据的群集100中的适当的卷层实例、例如卷ID(卷445)。在替换实施例中,持久层330可以实施上述卷映射技术430。协议层然后将例如卷ID、偏移、长度(以及写入数据)传递至持久层330,持久层330将请求记录在持久层日志335中并且经由协议层320返回确认至主机120。正如本文中所描述的,持久层330可以聚集并且组织来自一个或多个写入请求的写入数据414到新的范围610并且对新的范围执行哈希计算(例如哈希函数)以根据范围哈希技术600生成哈希值650。
持久层330然后可以将具有包括卷ID、偏移以及长度的所集合的写入数据的写入请求作为参数434传递至适当的卷层实例。在实施例中,参数434(由持久层接收)的消息传递可以经由用于节点内通信的功能运送机制(例如RPC)重定向至另一节点。可选地,参数434的消息传递可以经由用于节点内通信的IPC机制,例如消息线程。
在一个或多个实施例中,提供将哈希值650转换为适当的范围储存层(例如范围储存实例720)的实例720,该实例负责储存新的范围610。要注意的是,桶映射技术可以实现在范围储存层以上的存储器I/O堆栈的任何层中。在实施例中,例如,桶映射技术可以在持久层330、卷层340或者例如群集层(未示出)的管理宽群集信息的层中实施。因此,持久层330、卷层340或者群集层可以包括由CPU210执行的计算机可执行指令以执行实施本文中所描述的桶映射技术700的操作。持久层330然后可以将哈希值650和新的范围610传递至适当的卷层实例并且经由范围储存放置操作传递在适当的范围储存实例上。范围哈希技术600可以使大致一致的哈希函数具体化以确保要写入的任何随机范围可以具有落入任何范围储存实例720的近似相等机会,例如,哈希桶基于可用资源被分配在群集100的范围储存实例两端。因此,桶映射技术700在群集的节点200两端提供写入操作的加载平衡(并且通过对称、读取操作),同时也在群集的SSD260中使闪存损耗平衡。
响应于放置操作,范围储存实例可以处理哈希值650以执行范围元数据选择技术800,该范围元数据选择技术800(i)从范围储存实例720内的一组哈希表(说明性地核内)选择适当的哈希表850(例如哈希表850a),并且(ii)提取从哈希值650至索引的哈希表索引820为所选择的哈希表以及查找具有识别用于范围的在SSD260上的存储位置530的范围密钥810的表入口。因此,范围储存层可以包括由CPU210执行的计算机可执行指令以执行实施范围元数据选择技术800的操作。如果找到具有匹配密钥的表入口,然后从范围密钥810映射的SSD位置530用于从SSD检索现有范围(未示出)。然后将现有范围与新的范围610相比以确定它们的数据是否相同。如果数据相同,新的范围610已经储存在SSD260上并且可以去重复(记为去重复452)以使得不需要写入数据的另一拷贝。因此,用于现有范围的表入口中的引用计数被增加并且现有范围的范围密钥810被传递至用于在密集树元数据构造444(例如密集树444a)的条目(表示为卷元数据条目446)内存储的适当的卷层实例,使得范围密钥810与卷445的偏移范围440(例如偏移范围440a)关联。
然而,如果现有范围的数据与新的范围610的数据不相同,则出现冲突并且确定性算法被调用以顺序地生成映射至与所需要提供去重复452或者生成已经储存在范围储存实例内的范围密钥的相同的桶的同样多的新的候选范围密钥。值得注意地,另一哈希表(例如哈希表850n)可以根据范围元数据选择技术800由新候选的范围密钥选择。如果不存在去重复机会(例如该范围尚未被储存),新的范围610根据压缩技术454被压缩并且传递至RAID层360,该RAID层处理用于在RAID组466的一个或多个条带464内的SSD260上存储的新的范围610。范围储存实例可以与RAID层360协作以识别存储区段460(例如存储阵列150的一部分)和在储存新的范围610的区段460内的SSD260上的位置。说明性地,所识别的存储区段是具有例如用于储存范围610的SSD260b上的位置530的较大连续自由空间的区段。
在一个实施例中,RAID层360然后将条带464写入在RAID组466上,说明性地作为一个或多个全写入条带462。RAID层360可以写入足够深度的一系列条带464以降低在基于闪存SSD260(例如闪存块管理)内出现的数据重定位。然后,范围储存实例(i)将新范围610的SSD位置530加载到所选择的哈希表850n(例如由新候选的范围密钥所选择的哈希表)中,(ii)将新范围密钥(表示为范围密钥810)传递至用于由卷层实例管理的密集树444的条目(也表示为卷元数据条目446)内存储的适当的卷层,以及(iii)将至所选择的哈希表的范围元数据的变换记录在范围储存层记录355中。说明性地,卷层实例选择跨越包括写入请求的偏移范围的卷445的偏移范围440a的密集树444a。正如要注意的是,卷445(例如卷的偏移空间)被划分为多个区域(例如充当为解体偏移范围);在实施例中,每个区域由密集树444表示。卷层实例然后将卷元数据条目446***到密集树444a中并且将与卷元数据条目对应的变化记录在卷层记录345中。因此,I/O(写入)请求足够地储存在群集的SSD260上。
读取路径
图5示出了用于处理例如SCSI读取请求510的I/O请求的存储器I/O堆栈300的I/O(例如读取)路径500。读取请求510可以由主机120发出并且在群集100的节点200的协议层320处被接收。说明性地,协议层320通过解码420(例如分析和提取)该请求的域(例如LUNID、LBA以及长度)(在513处示出)来处理该读取请求并且将经解码的结果522(例如LUNID、偏移以及长度)用于卷映射技术430。也就是说,协议层320可以实施卷映射技术430(如上所述)以将读取请求的LUNID和LBA范围(例如等效偏移和长度)转换为负责管理用于LBA(例如偏移)范围的卷元数据的群集100中的适当的卷层实例,例如卷ID(卷445)。协议层然后将结果532传递至持久层330,该持久层330可以查找回写缓存器380以确定读取请求的一些或者全部能够从它的所缓存的数据服务。如果全部请求不能从所缓存的数据服务,持久层然后可以根据功能运送机制(例如用于RPC、用于节点内通信)或者IPC机制(例如消息线程、用于节点内通信)将包括例如卷ID、偏移以及长度的请求的其余部分作为参数534传递到适当的卷层实例。
卷层实例可以处理读取请求以存取与包括所请求的偏移范围(由参数534说明)的卷445的区域(例如偏移范围440a)关联的密集树元数据结构444(密集树444a)。卷层实例还可以处理读取请求以查找(查找)密集树444a的一个或多个卷元数据条目446以获取与所请求的偏移范围内的一个或多个范围610关联的一个或多个范围密钥810。在实施例中,每个密集树444可以具体化为在每个级处具有可能重叠的偏移范围的多级查找结构。各级密集树可以具有用于相同的偏移的卷元数据条目446,而在这样情况下,更高级具有新条目并且用于服务该读取请求。顶层的密集树444说明性地驻留核内并且页缓存器448可以用来存取该树的较低层。如果所请求的范围或者其部分未出现在顶层中,存取在接着与更低的树的层(未示出)处的索引项关联的元数据页。在下一级处的元数据页(例如,在页缓存器448中)然后被查找(例如二进制查找)以查找任何重叠条目。这个处理然后被迭代直至级的一个或多个卷元数据条目446被找到以确保用于全部所请求的读取范围的范围密钥810被找到。如果对于所请求的读取范围的全部或者部分不存在元数据条目,然后遗漏部分为零填充。
一旦找到,每个范围密钥810由卷层340处理以例如实施将范围密钥转换为对储存所请求的范围610负责的适当的范围储存实例720的桶映射技术700。要注意的是,在一个实施例中,每个范围密钥810可以与关联于范围610的哈希值650基本上相同,例如在用于范围的写入请求期间计算出的哈希值,以使得桶映射700和范围元数据选择技术800可以用于写入和读取路径操作两者。也要注意的是,范围810可以从哈希值650导出。卷层340然后可以将范围密钥810(例如来自用于该范围的先前写入请求的哈希值)(经由范围储存获取操作)传递至适当的范围储存实例720,其执行范围密钥至SSD映射以确定用于该范围的SSD260上的位置。
响应于获取操作,范围储存实例可以处理范围密钥810(例如哈希值650)以执行范围元数据选择技术800,该范围元数据选择技术800(i)从范围储存实例720内的一组哈希表(说明性地核内)选择适当的哈希表850(例如哈希表850a),并且(ii)提取从哈希值650至索引的哈希表索引820为所选择的哈希表以及查找具有识别用于范围610的在SSD260上的存储位置530的匹配范围密钥810的表入口。也就是说,映射至范围密钥810的SSD位置530可以用来从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可以创建包括读取数据512的SCSI读取响应514并且将读取响应返回到主机120。
范围哈希结构
图6是可以利用本文中所描述的一个或多个实施例有利地使用的范围哈希技术600的框图。正如要注意的是,持久层330可以将一个或多个写入请求的写入数据组织到一个或多个范围610中,一个或多个范围610中的每个被具体化为可变长度块。该范围的长度可以在1字节和64KB(或者更大)之间变化,尽管例如该范围的长度通常是4KB或者更多。范围610说明性地是在群集的节点内的SSD260上物理上连续地储存以便例如它能够在单个读取操作中从SSD读取。因此,从多个I/O请求集合的范围可以包括在任何LUN内的连续偏移范围。因此,多个LUN(和/或文件)可以在不同地址(只要在每个LUN内逻辑上连续)处共享相同的范围,因为该范围通常不保持在群集100的储存池中相对于其存在的信息。
在实施例中,例如哈希函数620(例如大致均匀的哈希)的随机技术可以施加到每个范围610以生成用于分配例如使用范围元数据选择技术)写入数据(例如范围数据)和在节点200之中的基本上平均的关联元数据的哈希值650以启用细纹的标出和群集100中的去重复452。哈希计算在整个范围上被执行并且在该范围传递至范围储存实例前的任何时间被计算。说明性地,因而产生的哈希值650可以用于两个大致类似的任务。第一任务是在每个范围存储实例内大致平均地分配(扩展)该范围和相关联的元数据。因此,哈希值650说明性地在持久层330处计算,但是可以在卷层340处或者在卷层340前被计算,因为卷层需要哈希值来确定服务该范围的节点的范围储存实例I/O
哈希计算根据安全哈希算法(例如SHA-3或者回波256加密哈希函数)来说明性地执行以生成256位哈希函数结果(未示出)。可选地,可以使用例如SipHash(安全64位)或者CityHash(非加密64位)的哈希算法。256位哈希函数结果的一部分,例如较低6字节(48位)可以例如根据调整技术640来说明性地调整以生成48位哈希值650。对于本领域技术人员明显的是,哈希值的调整量可以随着群集的储存容量增加而扩大。在实施例中,调整技术640从32字节哈希函数结果实质上截取或者切断哈希值650的6字节(48位)部分。哈希值650的因而产生的6字节(48位)说明性地足够启用范围储存实例以经由哈希表850中的条目找到SSD260上的范围610的位置的表示。此外,哈希值650说明性地启用它的关联元数据,例如在哈希表850的条目中的范围元数据,以完全地驻留在存储器220中。然而,更宽的哈希值(例如耗费更多存储器220)可以用来提高执行新范围的去重复452的机会,而不必须实际上比较储存在SSD上的先前范围的写入数据。哈希值650可以用来根据各种技术(例如在存储器I/O堆栈300内的桶映射700和范围元数据选择800)来执行在它的哈希空间的部分内地址类判定以选择用于范围610的适当的哈希表850a。
图7是可以利用本文中所描述的一个或多个实施例有利地使用的桶映射技术700的框图。正如要注意的是,哈希值650可以在持久层330处计算以便使得能够高效地在群集200的全部节点200之间平均分配范围610和相关联的范围元数据。在一个实施例中,映射技术将48位哈希值650(例如248)的哈希空间划分为(例如基本上平均地划分)共同地表示范围和关联范围元数据的桶。基本上相等数量的桶然后被分配或者映射至群集100中的节点的每个范围储存实例,由此分配该桶的所有权,并且从而范围和范围元数据,基本上平均地,例如大致均匀地,跨越节点200的所有范围储存实例720。值得注意地,桶可以根据例如储存容量和性能的节点的特性通过加权分布可选地分配(或者再分配)。
在一个实施例中,桶映射技术基于模数运算使用余项计算710将桶映射至范围储存实例:哈希值除以桶的数目(模数),例如,[哈希值]模[桶的数目]。说明性地,桶的数目(例如除数)是素数,例如65521(小于216的最大素数),尽管本领域技术人员将认识到根据本文中所描述的实施例可以使用其它除数。余项计算的结果可以组织为数据结构,例如桶映射表730、具有65521桶数目条目,其每个映射至(引用)范围储存实例。可选地,群集数据库244中的桶映射数据结构可以用来将桶(数目)725,例如0-65520于范围储存实例或节点200关联,由此将对应桶映射至那个范围储存实例或节点。
该桶可以连续地映射至范围储存实例并且,随着新范围610形成,它们可以被分配给该桶。从桶数目至节点的范围储存实例的映射实质上是任意的;需求可以是通过每个范围储存实例所服务的桶的数目与在每个节点200中可用的储存容量和处理带宽成正比。桶725可以分配在范围储存实例之中,从而实现基本上平坦和平衡的容量级以及在群集100中的所有节点的带宽利用。
新范围610可以随后形成在节点处并且施加到哈希函数620以生成结果(如上所述),其可以使用技术640来调整以生成哈希值650来选择用于储存新范围610的范围储存实例。哈希值650然后可以由余项计算710处理,该余项计算通过桶的数目来划分哈希值,例如[哈希值]模[桶的数目],其中,桶的数目说明性地是预先准备好,例如65521。该计算的结果生成与桶关联的桶数目,该桶作为到桶映射表730的选择条目中的索引以识别服务与哈希值650关联的新范围的范围储存实例。可选地,群集数据库244的桶映射数据结构可以使用桶数目来查找作为识别密钥值对的关联值,例如范围储存实例或节点200的密钥。哈希值650此后可以被传递至范围储存实例以启用用于识别SSD260上的范围的位置530的范围元数据的选择。
布谷鸟哈希
在本文中所描述的实施例涉及在文件***元数据配置中哈希的使用,该使用降低储存在群集中的节点的存储器中的元数据的量并且降低在节点处处理输入/输出(I/O)请求所需要的元数据的量。说明性地,实施例涉及布谷鸟哈希,并且具体地说,涉及布谷鸟哈希可以被修改并且应用到构造文件***元数据配置的方式。在实施例中,文件***元数据配置可以说明性地配置为具体化为数据结构(例如布谷鸟哈希表)的密钥值范围储存,其中,例如哈希表索引的值可以配置为索引并且应用到布谷鸟哈希表以获取例如范围密钥的密钥,该密钥配置为引用在例如固态驱动器(SSD)的一个或多个存储装置上的范围的位置。因此,布谷鸟哈希表使描述范围得范围元数据具体化并且,由此可以被组织为将在SSD上的位置与索引关联,即与哈希表索引关联的值识别在SSD上的位置。有利地,文件***元数据配置实现高度的元数据压缩,从而降低读取和写入放大以及存储器需求。
在一个实施例中,密钥值对的存储和检索使用布谷鸟哈希,例如该组布谷鸟哈希表,使用哈希值650的一部分作为哈希表索引(例如到布谷鸟哈希表中的索引),其说明性地分为两半。哈希表索引的每一半可以用作到每个布谷鸟哈希表中的索引以确定用于将哈希表索引的另一半储存在该表中的潜在条目。也就是说,哈希表索引的一半可以用作到布谷鸟哈希表中的索引,而另一半可以用作储存在哈希表中的值。可选地,哈希表索引的另一半可以用作索引,而一半可以用作储存值。因此,相同的哈希表索引能够以两个不同的方式储存在布谷鸟哈希表中,例如布谷鸟哈希表的上半部或者下半部中的任何一个。这允许在哈希表中的更高总数,例如负载因数,而不必通过利用作为索引的哈希表索引的一半存取条目来链路,例如链接表的使用,如果该条目被占据,利用作为索引的哈希表索引的另一半存取另一条目。因此,布谷鸟哈希降低作为更高负载因数的结果的储存在节点的存储器中的元数据(例如哈希表索引)的量。如果两个条目被占据,然后两个条目中的一个被选择并且该条目的现有内容可以被逐出并且使用作为对哈希表的辅助索引的现有内容在另一个位置(例如替换的条目)处重新被***布谷鸟表中,例如未分析两个条目中的任何一个例如引用所选定的条目的哈希表索引然后可以储存在另一个位置处。如果另一个位置也被占据,替换的条目的现有内容也可以被逐出。这个赶出处理可以被重复直至未被占据的条目被找到。
然而,随着哈希表的满载容量(例如负载)被靠近,可以实现循环效应,其中,两个或更多个条目通过它们的现在的和替换的哈希表位置一起链路以形成全循环;如果出现这个,没有新的***能够在这些位置的任一个处出现。为了消除这个问题,布谷鸟哈希表使一组关联的组织具体化,使得对于通过哈希表索引的一半指向的每一条目,具有多个可能的槽(例如一组与索引关联的槽),哈希表索引的另一半可以***/储存到该槽里,例如,所有槽与索引哈希表索引(例如用于索引该组槽关联的哈希表索引)关联,但是每一槽可以包括哈希表索引的不同的另一半。通常,多个可能的槽的自由槽可以通过用于哈希表索引的非索引一半的多个槽的线性检索来查找,例如如果K1指向用于条目/槽,执行K2的查找。可选地,该关联的组可以被分类,允许要被使用的更多有效查找,例如二进制查找。
在一个实施例中,布谷鸟哈希表可以利用32路组相关性来组织,即储存在布谷鸟哈希表中的哈希表索引可以在哈希表索引的一半的32个槽的任一个或者由哈希表索引的另一半索引的32个槽的任一个处找到。如果使用充分均匀的哈希函数,可以充分平衡该分布使得可以有用于给定哈希值的未占据的槽。也就是说,只要整个哈希表不是满的,用于哈希表索引的64个潜在性槽中的一个很可能未被占据的,以便哈希表索引能够被***那个槽中。如果所有64个槽被占据,很可能64个占用者中的一个能够移动到空的条目/槽而不必任何进一步重定位。要注意的是,每当内容从一个条目/槽移动到哈希表中的另一个,对应的哈希表索引820可以被记录以记录至哈希表的变化。有利地,32路组相关性可以提供大于98%的负载因数,以便被***哈希表中的值保留在槽/条目中并且不被布谷鸟哈希推出直至该表基本上充满。通过使用布谷鸟哈希,用于哈希表中的范围密钥的两个可能的条目能够被直接计算并且与条目关联的64个槽能够被检查,例如查找,以查找范围密钥。说明性地,布谷鸟哈希表的条目可以被调整大小,以便用于哈希表索引的所有32个槽适应启用该槽的快速线性查找的CPU210的缓存器行。
哈希表组织
图8a是可以利用本文中所描述的一个或多个实施例有利地使用的布谷鸟哈希表的框图。在实施例中,范围元数据完全地驻留在每一节点200的存储器220中并且被具体化为配置为SSD的地址位置的一组哈希表860的哈希表850a-n。要注意的是,桶映射技术700确保分配给范围储存实例的该桶基本上平均增加有范围元数据,使得每一桶同等地贡献于由范围储存实例服务的哈希表,例如桶映射技术700具有大致均匀分布。范围储存实例可以使用哈希值650来提供范围元数据选择技术800。为此,48位(6字节)哈希值(例如哈希值650)的内容被说明性地组织成以下域:用作索引以从该组哈希表(“哈希表选择器”804)选择哈希表的8位域、8位域(“额外密钥位”)802以及用作对选定哈希表(“K2”806和“K1”808)中的条目840a-b(例如一组槽)的索引的两个16位域。每一哈希表850包括两个一半,其中,每一半可由16位索引中的一个(例如“K1”和“K2”)寻址,以便每一表的一半可以包括65536(例如216)个条目840。要注意的是,哈希表索引820根据被索引哈希表的那一半从K1和K2确定。此外,每一条目840a-b是具有密钥值对的32路关联组的槽830。因此,每一哈希表具有216x32x2(例如,条目x关联性x2表一半)=4M(4,194,240)总条目/槽(“槽”)和至少256表,每一范围储存实例,例如哈希表选择器804,得出十亿(精确地1,073,725,440)槽。值得注意地,该哈希表组可以基于施加到哈希值650的功能进一步扩大为子集(例如,计算用于素数的哈希值650的余项作为哈希表组860的子集的索引),在2013年10月2日提交的由Kimmel等人的名称为用于储存***范围哈希结构的美国专利申请第14/044,624号中描述其示例性实施例。
图8b是可以利用本文中所描述的一个或多个实施例有利地使用的哈希表槽830的框图。说明性地,该槽被组织为具有以下域的10字节(80位)值:指示用于由槽"加密"的范围的SSD上的位置的5字节(例如40位)偏移831;指示范围的尺寸的1字节(8位)长度832;指示引用该范围的许多元数据的具有至少7位(“引用计数”834)的引用计数;指示该槽是否已经改变,例如被“脏(dirty)”的脏位836;来自用于该范围的哈希值650的额外密钥位802;以及不用作对条目840索引的哈希表索引820的“K1”808或者“K2”806。要注意的是,长度字段832可以基于SSD260的几何形状表示给定尺寸的许多分段,例如512字节或者520字节,使得1字节长度可以表示255x512字节=128K字节的范围。因此,范围可以以512字节增量从512字节变化到128K字节。
在一个实施例中,在槽830的一个或多个域中的标记值的组合可以用来指示范围的类型,例如i)“hole”或者删除范围以及ii)“put”或者储存范围。例如,零的引用计数834和零的偏移831可以用来指示所删除的范围,而大于零(例如一个)的引用计数834和除了零之外的偏移831可以用来指示所储存的范围。槽域的压缩有利于存储器的高效利用,这是因为期望保持哈希表核内用于密钥值对的快速查找,例如来自哈希密钥的范围的位置。例如,先前计算出的十亿个槽可以耗费10GB核内,例如每一槽10字节,不包括任何展开(例如,在上述美国专利申请用于储存***的范围哈希结构中的示例性实施例中的扩展技术将核内耗费乘以3)。值得注意地,每一范围储存实例可以基于最小4KB范围尺寸(每一范围1Bx4KB)支持至少4terabytes(TB)的LUN容量至基于具有哈希表展开的128KB范围尺寸(每一范围1Bx3扩展x128KB)的384TB的最大值。
一旦哈希表850a被选定,范围储存实例可以提取哈希值650的K1或者用作索引到哈希表里的哈希表索引820(例如,使用K1用于该表的上半部并且使用K2用于该表的下半部)并且选定配置为特别储存一部分范围密钥810以及SSD上的位置的识别的适当的条目840a。值得注意地,K1和K2彼此不同,使用将布谷鸟哈希表分为上地址空间和下地址空间的隐含的高阶位。说明性地,隐含的高阶位增加从216可能位置到217可能位置的K1或者K2的地址能力,其中,哈希表的上地址空间可由哈希值的一个16位域(例如K1)寻址并且哈希表的下地址空间可由另一16位域(例如K2)寻址。在实施例中,使用对布谷鸟哈希表的最初索引的哈希表索引(K1或者K2)的选择是任意的。在条目被***到布谷鸟哈希表850a(例如对范围进行存储)的情况下,期望的方法可以是选择更少占据的上或者下地址空间组的任何一个(在两个组840a和840b的穷举查找后)。
正如所注意的,每一布谷鸟哈希表具有组关联的槽,例如每一关联的组的32个槽。在一个实施例中,没有将32个槽在关联的组的条目内排序;线性查找可以被执行以查找用于***范围密钥的空槽。可选地,可以对槽进行排序以实现更快的查找,例如二分查找,特别是对于更大关联的组(例如128路),其可以不符合CPU缓存器行。类似地,一旦关联的组槽被识别,例如,能够保持范围密钥的作为条目840,线性查找可以在槽内被执行以确定该密钥是否存在。布谷鸟哈希表的优点是在给定范围密钥值能够驻留于其的整个群集中具有正好2条目(每一条目具有32个槽)。一旦该条目使用K1或者K2与隐含的高阶位一起被索引,在条目840内具有32个槽需要查找。
在一个实施例中,每一条目840的槽的数目说明性地选择为32,因为所有32个槽能够符合例如英特尔处理器的缓存器行(例如,在槽中的哈希表索引820的32x尺寸)。换句话说,16位或者2字节(K1或者K2)乘以32槽等于64字节,其是说明性的缓存器行的尺寸。一旦操作取得并且操纵缓存器行,该缓存器行保持被缓存直至它被逐出。对于缓存槽830的线性查找,可以不需要来自存储器的进一步的攫取,从而避免用于条目840的先前缓存的槽的任何逐出。说明性地,该组的尺寸(例如32个槽)是任意的并且选择以便适应缓存器行。在不改变用于存取给定组(例如条目840)的任何算法的情况下,该设置尺寸能够被变换成任意的整数并且每一组平均的变化。构成条目的其余8字节(包括构成SSD上的范围位置530的部分的偏移831)的该信息可以脱机储存在哈希表850的另一部分中,例如,未在槽的查找期间缓存。应当注意的是,哈希表850可以以按列顺序储存在存储器中(例如,限定“C”程序设计语言中的哈希表为包括作为单独的阵列的槽的域的结构)。因此,如果期望存取K1或者K216位域,可以仅仅需要存取一个缓存器行。
为了确保快速和高效的性能,哈希表850可以进一步组织为需要仅仅一个用于从范围储存实例获取的每个范围密钥的磁盘(SSD)存取。这是可能的,因为存储器I/O堆栈300的范围储存350不具有目录层级组织的上层并且,因此,在I/O请求被转送到范围储存实例时,存储器220中的快速查找可以对于适当的核内哈希表850出现然后SSD仅仅存取一次。因此,每一I/O(读取或者写入)操作可以有仅仅一个SSD存取,从而提高读取和/或写入放大。
图9是可以利用本文中所描述的一个或多个实施例有利地使用的范围密钥重构技术的框图。范围密钥重构帮助从第一范围储存实例到第二范围储存实例的桶(数目)725(例如,经由桶映射表730)的高效的再分配(例如迁移)。例如,可以从第一范围储存实例的哈希表850查找与要被再分配的桶关联的槽,并且那些槽然后可以使用从每一相应的槽重构的范围密钥重新被***第二范围储存实例的哈希表中,每一相应的槽在第一范围储存实例的查找中找到。
说明性地,范围密钥的重构是部分地基于哈希表槽830a、b的内容,从而允许在槽中仅存储哈希值650的那些需要识别(例如查找)该槽并且重构哈希值650(例如基本上相同的范围密钥810)的位。在实施例中,范围储存层350包括由CPU210执行的计算机可执行指令以执行实施本文中所描述的范围密钥重构技术的操作。根据该技术,一旦该槽830a、b被找到,16位域(例如K1或者K2)能够被丢弃(不储存),因为范围储存层(实例)能够在哈希表850的上地址空间部分902或者下地址空间部分904中无疑地重建来自条目840a、b的16位域。也就是说,来自用于一部分索引的哈希值的位的使用使得能够根据哈希值来推断确定位而不是必须储存它们。此外,8位的哈希表选择器804不需要被储存并且能够从存取的哈希表自身无疑地再造,例如,确定槽830a、b隐含具有到适当的哈希表里的索引。因此,不由索引(例如K1或者K2)隐含的仅仅2字节的哈希值650位和1字节的额外密钥位802需要储存在槽830a、b中。具体地说,为了再生6字节(48位)哈希值650(例如,范围密钥810)、2字节布谷鸟索引由表中的条目推断(不储存),2字节的布谷鸟索引储存在存储器中,一个字节的哈希值由哈希表组的哈希表选择器推断(不储存),并且最终一个字节作为额外位储存在存储器中。因此,仅仅需要储存3字节或者24位的哈希值650(例如K1或者K2,加上额外密钥位802)在哈希表的槽830a、b中,以便重构该哈希值,例如范围密钥810。在实施例中,额外密钥位802可以用来在发生冲突时实现足够的唯一性。
哈希表冲突
图10是可以利用本文中所描述的一个或多个实施例有利地使用的哈希冲突技术的框图。说明性地,在发生冲突时,例如哈希表索引820a与匹配额外密钥位802和在该槽的那个域中发现的K1或者K2任一个的组合的槽830a冲突,哈希冲突技术使用哈希冲突计算1002来确定唯一的候选的范围密钥811(具有候选的哈希表索引820b)。正如本文中所使用的,在条目由48位哈希值650的哈希表索引820a适当地索引到哈希表850a里时冲突出现,但是比较揭示了不同的范围已经分配候选范围密钥,例如,该槽830a由具有匹配候选范围密钥的那些的额外密钥位802的不同的范围占据。应当注意的是,到哈希表里的恰当的索引包括到哈希表850(使用例如分别K1和K2)的上地址空间部分902和下地址空间部分904两者中的索引,因为使用候选范围密钥的范围可能已经存在于任何一个部分中。说明性地,该冲突的出现是由于失败的去重复机会和选择由新哈希表索引(例如候选哈希表索引820b)所索引的新条目,该新哈希表索引从新哈希值(例如候选范围密钥811)确定。也就是说,哈希值650是不足的并且候选哈希表索引820b可以生成。哈希表组860中的新条目840b(以及新槽830n)可以根据从哈希值650计算的候选范围密钥811来确定,使得候选范围密钥811决定相同(例如单个)桶数目作为用于哈希值650的那个。也就是说,候选范围密钥811和哈希值650两者决定相同的桶数目,同时也决定哈希表组860中的不同的条目840a、b。要注意的是,决定相同桶数目也决定相同的范围储存实例(例如,使用桶数目经由桶映射表)。
在一个实施例中,候选范围811可以使用确定性算法、例如哈希冲突计算1002根据哈希值650计算,该哈希冲突计算1002将例如66521的大素数说明性地增加到哈希值,从而决定相同的桶。可选地,哈希值650的子串(例如子组位)可以用来计算候选范围密钥811。在实施例中,子串可以由哈希值650的最低位形成。此外,可以选择子串以便充足地许多替换的条目可以使用哈希冲突技术来计算。说明性地,范围储存层350包括由CPU210执行的计算机可执行指令以执行实施本文中所描述的哈希冲突技术的操作。
在实施例中,范围密钥810可以与48位哈希值650基本上相同,除在大素数被增加给哈希值以分析去重复冲突的情形之外。在那个情况中,48位哈希值可以改变以生成候选范围密钥811和哈希表索引820b。正如要注意的是,哈希表索引是用于存取哈希表的条目840以检索范围密钥的机制。此后,所检索的范围密钥810需要确定用于该范围的SSD上的位置,例如检索在具有用于该范围的位置的哈希表组中的槽。
说明性地,冲突与对例如填充布谷鸟哈希表条目这样的将信息***到哈希表里的槽进行查找不同。如果确定布谷鸟哈希表的2条目关联的组中的所有64个槽是没有任何范围密钥匹配完整,空间能够在由布谷鸟驱逐处理的2个关联的组中的一个中释放。在实施例中,布谷鸟驱逐处理可以使用条目的替换的哈希表索引将关联的组的64个槽的任何一个的内容再配置到布谷鸟哈希表中的替换条目,例如条目的K1或者K2,作为到该表的上半部或者下半部的索引里。
在发生冲突时,一般的解决方案可以是随机地选择新哈希值(例如候选的范围密钥811)。然而,可以期望确保在群集各处分配或者重新分配桶时可以调用去重复。在冲突被分析时,候选范围密钥811应该在相同的桶内;另外,因而产生的范围密钥可以决定具有不同的哈希表的不同的范围储存实例。也就是说,候选范围密钥811应该基于桶映射表730决定相同的桶数目725,例如相同的范围储存实例。因此,哈希冲突计算1002可以将与桶的数目关联的素数增加至哈希值(或者哈希值的子串)以获取候选哈希表索引820b,以便用于确定桶数目725的余项计算710得出相同的桶。本领域技术人员将理解的是,在哈希冲突技术在哈希值的子串或者哈希值上操作时适当的进位溢出处理(例如对相同的桶数目的决定)可以是必要的。例如,仅仅选择例如K1+1的哈希冲突计算可以工作直至群集增长的点和所有范围密钥(索引)和桶重新分配。在那个点处,不能保证K1+1将正确地索引到与哈希表关联的特定的桶(或者甚至特定的范围储存实例)里。
正如要注意的是,桶至范围储存实例映射包括将哈希值由较大素数(65521)划分以达到桶数字725。在实施例中,确定性算法(例如哈希冲突计算1002)可以将较大素数(65521)增加至哈希值的子串,例如哈希表索引(在发生冲突时),以创建新索引K3和K4,例如候选哈希表索引820b。在替换实施例中,冲突技术可以在哈希值的下40位(例如子串)上操作,以便候选哈希表索引引用相同的哈希表(例如哈希表选择器804域被冻结)。如果冲突再次出现,例如候选哈希表索引820b的冲突,该处理可以由增加大素数连续直至唯一的候选的范围密钥811为了该范围查找,从而确保候选哈希表索引820b将引用(落入)相同的桶(和因此相同的节点),无论该群集增长还是收缩。尽管确定性算法确保候选范围密钥811将决定群集的相同的桶和相同节点200,在使用哈希表展开(上述美国专利申请“用于储存***范围哈希结构”的示例性实施例中所公开的)时,大素数的增加不能决定在该群集的相同的范围储存实例内的相同的哈希表850a。
有利地,具体化为本文中所描述的布谷鸟哈希表的文件***元数据配置可以为了高性能而优化并且可以紧密地组织以启用描述存在于存储器的大的LUN的范围元数据。也就是说,文件***元数据配置可以被优化,使得哈希值可以快速指向适当的布谷鸟哈希表并且有效地从具有高度的表负载的哈希表条目/槽有效地储存/检索/在具有高度的表负载的哈希表条目/槽中有效地储存/检索。此外,文件***元数据配置可以被组织以降低保存在布谷鸟哈希表的每一条目/槽中的元数据的量,仍然根据范围密钥重构技术启用哈希值/范围密钥的重构,以帮助在范围储存实例之间桶的移动。此外,哈希冲突可以使用决定相同的组表的哈希冲突计算在相同组的布谷鸟哈希表内分析,从而确保包括给定确定性的组的候选的范围密钥的冲突在相同的范围储存实例内分析,而不考虑在群集内的范围储存实例之中的桶的任何再分配。
前述的描述已经指向特定实施例。然而,明显的是,在得到它们的优点的一些或者所有的情况下可以对所描述的实施例进行其它改变和变型。例如,清楚地设想的是,本文中所描述的部件和/或元件能够实施为编码在有形的(非瞬时)计算机可读介质(例如磁盘和/或CD)上的软件,该计算机可读介质具有在计算机、硬件、固件及其组合上执行的程序指令。因此,本说明书是仅仅为了示例并且不另外限制本文中的实施例的范围。因此,所附权利要求的目的是覆盖正如在本文中的实施例的真实精神和范围内的所有这种改变和变型。
Claims (23)
1.一种方法,包括:
接收具有一范围的写入请求,所述写入请求在具有处理器和存储器的储存***处被处理,所述储存***耦接到固态驱动器(SSD);
对所述范围应用哈希函数以生成哈希值,所述哈希值包括哈希表选择器、第一哈希表索引以及第二哈希表索引;
使用所述哈希表选择器从哈希表组中选择哈希表,每个哈希表被分成多个索引地址空间;
使用所述第一哈希表索引作为第一索引在所述哈希表的上索引地址空间中选择第一条目,所述第一条目包括第一组槽,所述第一组槽中的每个槽包括第一密钥和第一位置域;
使用所述第二哈希表索引查找所述第一组槽中的每个第一密钥;
确定所述第一组槽内是否存在第一自由槽;以及
响应于确定存在第一自由槽,将SSD偏移储存在所述第一自由槽的所述第一位置域中,将所述第二哈希表储存为所述第一自由槽的所述第一密钥,以及将所述范围存储在所述SSD上的所述SSD偏移处。
2.根据权利要求1所述的方法,还包括:
使用所述第二哈希表索引作为第二索引在所述哈希表的上索引地址空间中选择第二条目,所述第二条目包括第二组槽,所述第二组槽中的每个槽包括第二密钥和第二位置域;
使用所述第一哈希表索引查找所述第二组槽中的每个第二密钥;
确定所述第二组槽内是否存在第二自由槽;以及
响应于确定存在第二自由槽,将所述SSD偏移储存在所述第二位置域中,将第一哈希表索引储存为所述第二自由槽的所述第二密钥,以及将所述范围存储在所述SSD上的所述SSD偏移处。
3.根据权利要求2所述的方法,其中,所述第一组槽中的第一数量的槽不同于所述第二槽中的第二数量的槽。
4.根据任一前述权利要求所述的方法,其中,所述哈希值还包括额外密钥位,并且其中,所述第一组槽的每个槽还包括所述额外密钥位。
5.根据任一前述权利要求所述的方法,所述第一组槽的每个第一密钥缓存在所述储存***的所述处理器的一个或多个缓存器行内。
6.根据任一前述权利要求所述的方法,其中,所述第一组槽的每个槽还包括长度,该长度指示SSD上的一数量的分段。
7.根据任一前述权利要求所述的方法,其中,所述哈希表组的每个表中的每个条目的每一组槽的槽总数大于221,并且其中,所述哈希表组驻留在所述存储器中。
8.根据任一前述权利要求所述的方法,其中,所述第一组槽的每个槽还包括引用计数,该引用计数指示对所述范围的一数量的引用。
9.根据权利要求1所述的方法,还包括:
将所述第一组槽中的第一密钥中的一个匹配至所述第二哈希表索引;
生成第一候选哈希表索引;
使用所述第二哈希表索引作为第二索引在所述哈希表的上索引地址空间中选择第二条目,所述第二条目包括第二组槽,所述第二组槽中的每个槽包括在所述SSD上的数据的第二密钥和第二位置域;
使用所述第一哈希表索引查找所述第二组槽中的每个第二密钥;
确定所述第二组槽内是否存在第二自由槽;以及
响应于确定存在第二自由槽,将所述SSD偏移储存在所述第二位置域中,将第一哈希表索引储存为第二自由槽的所述第二密钥,以及将所述范围储存在所述SSD上的所述SSD偏移处。
10.一种方法,包括:
接收具有一范围的写入请求,所述写入请求在具有处理器和存储器的储存***处被处理,所述储存***耦接到固态驱动器(SSD);
对所述范围应用哈希函数以生成哈希值,所述哈希值包括哈希表选择器和第一哈希表索引(K1,K2);
将所述哈希值的哈希空间划分为表示所述范围的一数量的桶;
使用所述哈希表选择器从哈希表组中选择第一哈希表;
使用所述第一哈希表索引的K1哈希表索引对所述第一哈希表进行索引以从所述第一哈希表中选择第一条目,所述第一条目包括第一组槽,所述第一组槽中的每个槽包括第一密钥;
将所述第一组槽中的每个第一密钥匹配至所述第一哈希表索引的K2哈希表索引;
将所述数量添加至所述哈希值的一部分以生成包括第二哈希表索引(K3,K4)的候选范围密钥;
使用K3哈希表索引对第二哈希表进行索引以选择第二条目,所述第二条目包括第二组槽,所述第二组槽中的每个槽包括第二密钥和第二位置域;
使用K4哈希表索引查找所述第二组槽中的每个第二密钥;
确定所述第二组槽内是否存在第二自由槽;以及
响应于确定存在第二自由槽,将SSD偏移储存在所述第二自由槽的第二位置域中,将所述K4哈希表索引储存为第二自由槽的第二密钥,以及将所述范围存储在所述SSD上的SSD偏移处。
11.一种计算机程序,所述计算机程序包括计算机可读形式的指令,其中,所述指令在由储存***执行时使所述储存***执行任一前述权利要求的方法。
12.一种计算机程序产品,所述计算机程序产品包括储存在非瞬态计算机可读介质上的权利要求11的计算机程序。
13.一种***,包括:
储存***,其具有经由总线连接到处理器上的存储器;
储存阵列,其耦接到所述储存***上并且具有一个或多个固态驱动器(SSD);
存储器I/O堆栈,其在所述储存***的所述处理器上执行,所述存储器I/O堆栈在被执行时可操作地执行以下步骤:
接收具有一范围的写入请求;
对所述范围应用哈希函数以生成哈希值,所述哈希值包括哈希表选择器、第一哈希表索引以及第二哈希表索引;
使用所述哈希表选择器从哈希表组中选择哈希表,每个哈希表被分成多个索引地址空间;
使用所述第一哈希表索引在所述哈希表的第一地址空间中选择第一条目,所述第一条目包括第一组槽,所述第一组槽中的每个槽包括第一密钥和第一位置域;
使用所述第二哈希表索引查找所述第一组槽中的每个第一密钥;
确定所述第一组槽内是否存在第一自由槽;以及
响应于确定存在第一自由槽,将SSD偏移储存在所述第一自由槽的所述第一位置域中,将所述第二哈希表储存为所述第一自由槽的所述第一密钥,以及将所述范围存储在所述一个或多个SSD上的所述SSD偏移处。
14.根据权利要求13所述的***,其中,所述所选择的哈希表是从布谷鸟哈希表组中选择的布谷鸟哈希表。
15.根据权利要求13或者14所述的***,其中,所述存储器I/O堆栈还配置为:
使用所述第二哈希表索引在所述哈希表的第二地址空间中选择第二条目,所述第二条目包括第二组槽,所述第二组槽中的每个槽包括第二密钥和第二位置域;
使用所述第一哈希表索引查找所述第二组槽中的每个第二密钥;
确定所述第二组槽内是否存在第二自由槽;以及
响应于确定存在第二自由槽,将SSD偏移储存在所述第二位置域中,将第一哈希表索引储存为所述第二自由槽的所述第二密钥,以及将所述范围存储在所述一个或多个SSD上的所述SSD偏移处。
16.根据权利要求13至15中的任一项所述的***,所述哈希值还包括额外密钥位,并且其中,所述第一组槽的每个槽还包括所述额外密钥位。
17.根据权利要求13至16中的任一项所述的***,其中,所述第一组槽中的每个第一密钥缓存在所述储存***的所述处理器的一个或多个缓存器行内。
18.根据权利要求13至17中的任一项所述的***,其中,所述第一组槽的每个槽还包括一长度,该长度指示在所述一个或多个SSD上的一数量的扇区。
19.根据权利要求13至18中的任一项所述的***,所述哈希表组的每个哈希表中的每个条目的每一组槽的槽总数大于221,并且其中,所述哈希表组驻留在所述存储器中。
20.根据权利要求13至19中的任一项所述的***,其中,所述第一组槽的每个槽还包括引用计数,该引用计数指示对范围的一数量的引用。
21.根据权利要求13至20中的任一项所述的***,其中,所述存储器I/O堆栈还配置为:
使用所述哈希值的所述哈希表选择器从哈希表组中选择所述哈希表;
使用所述第一哈希表索引在所述布谷鸟哈希表的所述第一地址空间中选择所述第一条目;
将所述自由槽的所述第一密钥匹配至所述第二哈希表索引;以及
将标记值储存在所述自由槽的所述第一位置域中,从而指示所述范围被删除。
22.根据权利要求21所述的***,其中,所述标记值是零。
23.根据权利要求13至22中的任一项所述的***,其中,所述存储器I/O堆栈还配置为:
使用所述自由槽的所述第一密钥重构所述哈希值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/158,608 US9256549B2 (en) | 2014-01-17 | 2014-01-17 | Set-associative hash table organization for efficient storage and retrieval of data in a storage system |
US14/158,608 | 2014-01-17 | ||
PCT/US2014/071446 WO2015108667A1 (en) | 2014-01-17 | 2014-12-19 | Set-associative hash table organization for efficient storage and retrieval of data in a storage system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105683898A true CN105683898A (zh) | 2016-06-15 |
Family
ID=51752884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480059554.7A Pending CN105683898A (zh) | 2014-01-17 | 2014-12-19 | 对储存***中数据高效存储与检索的组相关哈希表组织 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9256549B2 (zh) |
EP (1) | EP3095029B1 (zh) |
CN (1) | CN105683898A (zh) |
WO (1) | WO2015108667A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107078903A (zh) * | 2016-12-23 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 区块链的挖矿方法、装置和节点设备 |
CN107220005A (zh) * | 2017-05-27 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种数据操作方法及*** |
CN107862074A (zh) * | 2017-11-24 | 2018-03-30 | 中国航空工业集团公司西安航空计算技术研究所 | 大数据量参数快速读写方法 |
CN108345433A (zh) * | 2017-01-25 | 2018-07-31 | 三星电子株式会社 | 用于最大化的可去重存储器的方法、存储器***和产品 |
CN109101433A (zh) * | 2017-06-20 | 2018-12-28 | 三星电子株式会社 | 用于管理存储装置的***和方法 |
CN109983456A (zh) * | 2016-09-22 | 2019-07-05 | 维萨国际服务协会 | 存储器内密钥范围搜索技术 |
CN110109915A (zh) * | 2018-01-18 | 2019-08-09 | 伊姆西Ip控股有限责任公司 | 用于管理哈希表的方法、设备和计算机程序产品 |
CN110431542A (zh) * | 2017-05-30 | 2019-11-08 | 西部数据技术公司 | 管理存储网络中的i/o操作 |
CN110489053A (zh) * | 2018-05-14 | 2019-11-22 | 慧荣科技股份有限公司 | 管理闪存模块的方法、相关的闪存控制器和电子装置 |
CN110998607A (zh) * | 2017-08-08 | 2020-04-10 | 三星电子株式会社 | 用于神经网络的***和方法 |
CN111355580A (zh) * | 2020-05-25 | 2020-06-30 | 腾讯科技(深圳)有限公司 | 基于物联网的数据交互方法和装置 |
CN112925484A (zh) * | 2017-03-24 | 2021-06-08 | 美光科技公司 | 存储装置哈希生成 |
CN113094336A (zh) * | 2021-04-01 | 2021-07-09 | 中山大学 | 基于Cuckoo哈希的文件***目录管理方法及*** |
CN113360516A (zh) * | 2021-08-11 | 2021-09-07 | 成都信息工程大学 | 基于先进先出及最小活跃数策略的集合成员管理方法 |
Families Citing this family (150)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9456054B2 (en) | 2008-05-16 | 2016-09-27 | Palo Alto Research Center Incorporated | Controlling the spread of interests and content in a content centric network |
US9055335B2 (en) | 2009-05-29 | 2015-06-09 | Cognitive Networks, Inc. | Systems and methods for addressing a media database using distance associative hashing |
US9449090B2 (en) * | 2009-05-29 | 2016-09-20 | Vizio Inscape Technologies, Llc | Systems and methods for addressing a media database using distance associative hashing |
US8923293B2 (en) | 2009-10-21 | 2014-12-30 | Palo Alto Research Center Incorporated | Adaptive multi-interface use for content networking |
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 |
US9223711B2 (en) * | 2013-08-13 | 2015-12-29 | Netspeed Systems | Combining associativity and cuckoo hashing |
US10728035B1 (en) * | 2013-12-31 | 2020-07-28 | EMC IP Holding Company LLC | Using double hashing schema to reduce short hash handle collisions and improve memory allocation in content-addressable storage systems |
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 |
US10098051B2 (en) | 2014-01-22 | 2018-10-09 | Cisco Technology, Inc. | Gateways and routing in software-defined manets |
US9954678B2 (en) | 2014-02-06 | 2018-04-24 | Cisco Technology, Inc. | Content-based transport security |
US9329994B2 (en) * | 2014-02-20 | 2016-05-03 | Kabushiki Kaisha Toshiba | Memory system |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US9836540B2 (en) | 2014-03-04 | 2017-12-05 | Cisco Technology, Inc. | System and method for direct storage access in a content-centric network |
US9626413B2 (en) | 2014-03-10 | 2017-04-18 | Cisco Systems, Inc. | System and method for ranking content popularity in a content-centric network |
US9473405B2 (en) * | 2014-03-10 | 2016-10-18 | Palo Alto Research Center Incorporated | Concurrent hashes and sub-hashes on data streams |
US9716622B2 (en) | 2014-04-01 | 2017-07-25 | Cisco Technology, Inc. | System and method for dynamic name configuration in content-centric networks |
US9473576B2 (en) | 2014-04-07 | 2016-10-18 | Palo Alto Research Center Incorporated | Service discovery using collection synchronization with exact names |
US9992281B2 (en) | 2014-05-01 | 2018-06-05 | Cisco Technology, Inc. | Accountable content stores for information centric networks |
US9609014B2 (en) | 2014-05-22 | 2017-03-28 | Cisco Systems, Inc. | Method and apparatus for preventing insertion of malicious content at a named data network router |
US9965482B2 (en) * | 2014-06-24 | 2018-05-08 | Infinidat Ltd. | Hash based read and write operations in a storage system |
US9858300B2 (en) * | 2014-06-24 | 2018-01-02 | Infinidat Ltd. | Hash based de-duplication in a storage system |
US10067722B2 (en) * | 2014-07-02 | 2018-09-04 | Hedvig, Inc | Storage system for provisioning and storing data to a virtual disk |
US9699198B2 (en) | 2014-07-07 | 2017-07-04 | Cisco Technology, Inc. | System and method for parallel secure content bootstrapping in content-centric networks |
US9621354B2 (en) | 2014-07-17 | 2017-04-11 | Cisco Systems, Inc. | Reconstructable content objects |
US9729616B2 (en) | 2014-07-18 | 2017-08-08 | Cisco Technology, Inc. | Reputation-based strategy for forwarding and responding to interests over a content centric network |
US9590887B2 (en) | 2014-07-18 | 2017-03-07 | Cisco Systems, Inc. | Method and system for keeping interest alive in a content centric network |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US9882964B2 (en) | 2014-08-08 | 2018-01-30 | Cisco Technology, Inc. | Explicit strategy feedback in name-based forwarding |
US9729662B2 (en) | 2014-08-11 | 2017-08-08 | Cisco Technology, Inc. | Probabilistic lazy-forwarding technique without validation in a content centric network |
US9800637B2 (en) | 2014-08-19 | 2017-10-24 | Cisco Technology, Inc. | System and method for all-in-one content stream in content-centric networks |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9846642B2 (en) * | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US10069933B2 (en) | 2014-10-23 | 2018-09-04 | Cisco Technology, Inc. | System and method for creating virtual interfaces based on network characteristics |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US9749663B1 (en) | 2014-11-23 | 2017-08-29 | Silicondust Usa Inc. | Distributed upload of television content |
US9590948B2 (en) | 2014-12-15 | 2017-03-07 | Cisco Systems, Inc. | CCN routing using hardware-assisted hash tables |
US10237189B2 (en) | 2014-12-16 | 2019-03-19 | Cisco Technology, Inc. | System and method for distance-based interest forwarding |
US10003520B2 (en) | 2014-12-22 | 2018-06-19 | Cisco Technology, Inc. | System and method for efficient name-based content routing using link-state information in information-centric networks |
US9660825B2 (en) | 2014-12-24 | 2017-05-23 | Cisco Technology, Inc. | System and method for multi-source multicasting in content-centric networks |
US9954795B2 (en) | 2015-01-12 | 2018-04-24 | Cisco Technology, Inc. | Resource allocation using CCN manifests |
US9916457B2 (en) | 2015-01-12 | 2018-03-13 | Cisco Technology, Inc. | Decoupled name security binding for CCN objects |
US9832291B2 (en) | 2015-01-12 | 2017-11-28 | Cisco Technology, Inc. | Auto-configurable transport stack |
US9946743B2 (en) | 2015-01-12 | 2018-04-17 | Cisco Technology, Inc. | Order encoded manifests in a content centric network |
CN118138844A (zh) | 2015-01-30 | 2024-06-04 | 构造数据有限责任公司 | 用于识别视频片段以及显示从替代源和/或在替代设备上观看的选项的方法 |
WO2016122652A1 (en) * | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Cuckoo hash table |
US10333840B2 (en) | 2015-02-06 | 2019-06-25 | Cisco Technology, Inc. | System and method for on-demand content exchange with adaptive naming in information-centric networks |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9866479B2 (en) * | 2015-02-12 | 2018-01-09 | Intel Corporation | Technologies for concurrency of cuckoo hashing flow lookup |
US10216966B2 (en) | 2015-02-25 | 2019-02-26 | Netapp, Inc. | Perturb key technique |
US10075401B2 (en) | 2015-03-18 | 2018-09-11 | Cisco Technology, Inc. | Pending interest table behavior |
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 |
US9934264B2 (en) * | 2015-06-02 | 2018-04-03 | Netapp, Inc. | Technique for reducing metadata stored in a memory of a node |
US10075402B2 (en) | 2015-06-24 | 2018-09-11 | Cisco Technology, Inc. | Flexible command and control in content centric networks |
CN108351879B (zh) | 2015-07-16 | 2022-02-18 | 构造数据有限责任公司 | 用于提高识别媒体段的效率的划分搜索索引的***和方法 |
WO2017011798A1 (en) | 2015-07-16 | 2017-01-19 | Vizio Inscape Technologies, Llc | Detection of common media segments |
US10701038B2 (en) | 2015-07-27 | 2020-06-30 | Cisco Technology, Inc. | Content negotiation in a content centric network |
US10255287B2 (en) * | 2015-07-31 | 2019-04-09 | Hiveio Inc. | Method and apparatus for on-disk deduplication metadata for a deduplication file system |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
US9986034B2 (en) | 2015-08-03 | 2018-05-29 | Cisco Technology, Inc. | Transferring state in content centric network stacks |
US9832123B2 (en) | 2015-09-11 | 2017-11-28 | Cisco Technology, Inc. | Network named fragments in a content centric network |
US10355999B2 (en) | 2015-09-23 | 2019-07-16 | Cisco Technology, Inc. | Flow control with network named fragments |
US9977809B2 (en) | 2015-09-24 | 2018-05-22 | Cisco Technology, Inc. | Information and data framework in a content centric network |
US10313227B2 (en) | 2015-09-24 | 2019-06-04 | Cisco Technology, Inc. | System and method for eliminating undetected interest looping in information-centric networks |
US10454820B2 (en) | 2015-09-29 | 2019-10-22 | Cisco Technology, Inc. | System and method for stateless information-centric networking |
US10169358B2 (en) * | 2015-10-08 | 2019-01-01 | International Business Machines Corporation | Data deduplication using a small hash table |
US10263965B2 (en) | 2015-10-16 | 2019-04-16 | Cisco Technology, Inc. | Encrypted CCNx |
US10725990B2 (en) * | 2015-12-01 | 2020-07-28 | Facebook, Inc. | Co-prime hashing |
US9912776B2 (en) | 2015-12-02 | 2018-03-06 | Cisco Technology, Inc. | Explicit content deletion commands in a content centric network |
US10097346B2 (en) | 2015-12-09 | 2018-10-09 | Cisco Technology, Inc. | Key catalogs in a content centric network |
US10257271B2 (en) | 2016-01-11 | 2019-04-09 | Cisco Technology, Inc. | Chandra-Toueg consensus in a content centric network |
US10305864B2 (en) | 2016-01-25 | 2019-05-28 | Cisco Technology, Inc. | Method and system for interest encryption in a content centric network |
US10043016B2 (en) | 2016-02-29 | 2018-08-07 | Cisco Technology, Inc. | Method and system for name encryption agreement in a content centric network |
US10742596B2 (en) | 2016-03-04 | 2020-08-11 | Cisco Technology, Inc. | Method and system for reducing a collision probability of hash-based names using a publisher identifier |
US10038633B2 (en) | 2016-03-04 | 2018-07-31 | Cisco Technology, Inc. | Protocol to query for historical network information in a content centric network |
US10003507B2 (en) | 2016-03-04 | 2018-06-19 | Cisco Technology, Inc. | Transport session state protocol |
US10051071B2 (en) | 2016-03-04 | 2018-08-14 | Cisco Technology, Inc. | Method and system for collecting historical network information in a content centric network |
US9832116B2 (en) | 2016-03-14 | 2017-11-28 | Cisco Technology, Inc. | Adjusting entries in a forwarding information base in a content centric network |
US10212196B2 (en) | 2016-03-16 | 2019-02-19 | Cisco Technology, Inc. | Interface discovery and authentication in a name-based network |
US10067948B2 (en) | 2016-03-18 | 2018-09-04 | Cisco Technology, Inc. | Data deduping in content centric networking manifests |
US11436656B2 (en) | 2016-03-18 | 2022-09-06 | Palo Alto Research Center Incorporated | System and method for a real-time egocentric collaborative filter on large datasets |
US11182365B2 (en) * | 2016-03-21 | 2021-11-23 | Mellanox Technologies Tlv Ltd. | Systems and methods for distributed storage of data across multiple hash tables |
US10091330B2 (en) | 2016-03-23 | 2018-10-02 | Cisco Technology, Inc. | Interest scheduling by an information and data framework in a content centric network |
CN107229663B (zh) * | 2016-03-25 | 2022-05-27 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置以及数据表处理方法和装置 |
US10033639B2 (en) | 2016-03-25 | 2018-07-24 | Cisco Technology, Inc. | System and method for routing packets in a content centric network using anonymous datagrams |
US10320760B2 (en) | 2016-04-01 | 2019-06-11 | Cisco Technology, Inc. | Method and system for mutating and caching content in a content centric network |
US9930146B2 (en) | 2016-04-04 | 2018-03-27 | Cisco Technology, Inc. | System and method for compressing content centric networking messages |
US10425503B2 (en) | 2016-04-07 | 2019-09-24 | Cisco Technology, Inc. | Shared pending interest table in a content centric network |
CN105930356A (zh) * | 2016-04-08 | 2016-09-07 | 上海交通大学 | 日志型异构混合内存文件***的实现方法 |
US10027578B2 (en) | 2016-04-11 | 2018-07-17 | Cisco Technology, Inc. | Method and system for routable prefix queries in a content centric network |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US10404450B2 (en) | 2016-05-02 | 2019-09-03 | Cisco Technology, Inc. | Schematized access control in a content centric network |
US10320675B2 (en) | 2016-05-04 | 2019-06-11 | Cisco Technology, Inc. | System and method for routing packets in a stateless content centric network |
US10547589B2 (en) | 2016-05-09 | 2020-01-28 | Cisco Technology, Inc. | System for implementing a small computer systems interface protocol over a content centric network |
US10084764B2 (en) | 2016-05-13 | 2018-09-25 | Cisco Technology, Inc. | System for a secure encryption proxy in a content centric network |
US10063414B2 (en) | 2016-05-13 | 2018-08-28 | Cisco Technology, Inc. | Updating a transport stack in a content centric network |
US10103989B2 (en) | 2016-06-13 | 2018-10-16 | Cisco Technology, Inc. | Content object return messages in a content centric network |
US10305865B2 (en) | 2016-06-21 | 2019-05-28 | Cisco Technology, Inc. | Permutation-based content encryption with manifests in a content centric network |
US10148572B2 (en) | 2016-06-27 | 2018-12-04 | Cisco Technology, Inc. | Method and system for interest groups in a content centric network |
US10009266B2 (en) | 2016-07-05 | 2018-06-26 | Cisco Technology, Inc. | Method and system for reference counted pending interest tables in a content centric network |
US9992097B2 (en) | 2016-07-11 | 2018-06-05 | Cisco Technology, Inc. | System and method for piggybacking routing information in interests in a content centric network |
US10122624B2 (en) | 2016-07-25 | 2018-11-06 | Cisco Technology, Inc. | System and method for ephemeral entries in a forwarding information base in a content centric network |
US10069729B2 (en) | 2016-08-08 | 2018-09-04 | Cisco Technology, Inc. | System and method for throttling traffic based on a forwarding information base in a content centric network |
US10956412B2 (en) | 2016-08-09 | 2021-03-23 | Cisco Technology, Inc. | Method and system for conjunctive normal form attribute matching in a content centric network |
US10033642B2 (en) | 2016-09-19 | 2018-07-24 | Cisco Technology, Inc. | System and method for making optimal routing decisions based on device-specific parameters in a content centric network |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US10212248B2 (en) | 2016-10-03 | 2019-02-19 | Cisco Technology, Inc. | Cache management on high availability routers in a content centric network |
US10447805B2 (en) | 2016-10-10 | 2019-10-15 | Cisco Technology, Inc. | Distributed consensus in a content centric network |
US10462059B2 (en) | 2016-10-19 | 2019-10-29 | Intel Corporation | Hash table entries insertion method and apparatus using virtual buckets |
US10135948B2 (en) | 2016-10-31 | 2018-11-20 | Cisco Technology, Inc. | System and method for process migration in a content centric network |
KR20180049338A (ko) * | 2016-10-31 | 2018-05-11 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
CN108062200B (zh) * | 2016-11-08 | 2019-12-20 | 杭州海康威视数字技术股份有限公司 | 一种磁盘数据读写方法及装置 |
US10243851B2 (en) | 2016-11-21 | 2019-03-26 | Cisco Technology, Inc. | System and method for forwarder connection information in a content centric network |
CN106557332A (zh) * | 2016-11-30 | 2017-04-05 | 上海寒武纪信息科技有限公司 | 一种指令生成过程的复用方法及装置 |
CN107040582B (zh) * | 2017-02-17 | 2020-08-14 | 创新先进技术有限公司 | 一种数据处理方法及装置 |
US11042330B2 (en) * | 2017-03-01 | 2021-06-22 | Samsung Electronics Co., Ltd. | Methods and systems for distributed data storage |
US10387044B2 (en) * | 2017-04-05 | 2019-08-20 | Kaminario Technologies Ltd. | Deduplication in a distributed storage system |
US11860819B1 (en) * | 2017-06-29 | 2024-01-02 | Amazon Technologies, Inc. | Auto-generation of partition key |
US10545921B2 (en) * | 2017-08-07 | 2020-01-28 | Weka.IO Ltd. | Metadata control in a load-balanced distributed storage system |
CN109656468B (zh) * | 2017-10-11 | 2022-05-27 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN109669621B (zh) * | 2017-10-13 | 2021-05-25 | 杭州海康威视***技术有限公司 | 一种文件管理方法、文件管理***、电子设备及存储介质 |
CN107967122B (zh) * | 2017-11-22 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种块设备的数据写入方法、装置及介质 |
DE102018126546A1 (de) * | 2017-12-22 | 2019-06-27 | Odass Gbr | Verfahren zur Reduzierung der Rechenzeit einer Datenverarbeitungseinrichtung |
KR102490191B1 (ko) | 2018-03-05 | 2023-01-18 | 삼성전자주식회사 | 데이터 스토리지 장치 및 이를 포함하는 raid 시스템 |
US10848468B1 (en) | 2018-03-05 | 2020-11-24 | Commvault Systems, Inc. | In-flight data encryption/decryption for a distributed storage platform |
CN108509540A (zh) * | 2018-03-16 | 2018-09-07 | 中国银行股份有限公司 | 基于redis集群的多键值命令处理方法及*** |
US10963397B2 (en) | 2018-03-26 | 2021-03-30 | International Business Machines Corporation | Hash table collision resolution for storage unit memory |
CN109101635B (zh) * | 2018-08-16 | 2020-09-11 | 广州小鹏汽车科技有限公司 | 一种基于Redis Hash结构的数据处理方法及装置 |
CN109409083B (zh) * | 2018-09-21 | 2021-04-13 | 中国科学院信息工程研究所 | 检测堆栈中返回地址被篡改的装置 |
CN109409086B (zh) * | 2018-09-21 | 2021-04-13 | 中国科学院信息工程研究所 | 基于新增指令的检测堆栈中返回地址被篡改的装置 |
CN109871363A (zh) * | 2019-02-28 | 2019-06-11 | 苏州浪潮智能科技有限公司 | 一种冗余架构的共享文件***及其搭建方法 |
CN110096555B (zh) * | 2019-04-17 | 2021-09-03 | 奇安信科技集团股份有限公司 | 一种分布式***的表匹配处理方法及装置 |
CN111915306B (zh) * | 2019-05-08 | 2023-12-19 | 华控清交信息科技(北京)有限公司 | 业务数据的验证方法和验证平台 |
US11520738B2 (en) * | 2019-09-20 | 2022-12-06 | Samsung Electronics Co., Ltd. | Internal key hash directory in table |
US11366807B2 (en) | 2019-10-04 | 2022-06-21 | Target Brands, Inc. | Hash-based data structure |
US11347698B2 (en) | 2019-10-04 | 2022-05-31 | Target Brands, Inc. | Garbage collection for hash-based data structures |
CA3167185A1 (en) | 2020-02-10 | 2021-08-19 | Steve Heller | System and method for a hash table and data storage and access using the same |
US11494115B2 (en) * | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
CN111752960B (zh) * | 2020-06-28 | 2023-07-28 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
US11782895B2 (en) * | 2020-09-07 | 2023-10-10 | Mellanox Technologies, Ltd. | Cuckoo hashing including accessing hash tables using affinity table |
US12038979B2 (en) * | 2020-11-25 | 2024-07-16 | International Business Machines Corporation | Metadata indexing for information management using both data records and associated metadata records |
US12010214B2 (en) | 2021-01-20 | 2024-06-11 | Samsung Electronics Co., Ltd. | Hash based key value to block translation methods and systems |
US11917042B2 (en) | 2021-08-15 | 2024-02-27 | Mellanox Technologies, Ltd. | Optimizing header-based action selection |
US11929837B2 (en) | 2022-02-23 | 2024-03-12 | Mellanox Technologies, Ltd. | Rule compilation schemes for fast packet classification |
US11968285B2 (en) | 2022-02-24 | 2024-04-23 | Mellanox Technologies, Ltd. | Efficient memory utilization for cartesian products of rules |
US11960419B2 (en) | 2022-07-19 | 2024-04-16 | Samsung Electronics Co., Ltd. | Systems and methods for data prefetching for low latency data read from a remote server |
CN116095099B (zh) * | 2023-01-20 | 2023-09-12 | 广东省中山市质量计量监督检测所 | 一种基于机器视觉的机械零件质检*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1970821A1 (en) * | 2007-03-12 | 2008-09-17 | Broadcom Corporation | Method and apparatus for dual-hashing tables |
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件***元数据分配方法 |
CN101826107A (zh) * | 2010-04-02 | 2010-09-08 | 华为技术有限公司 | 哈希数据处理方法和装置 |
CN103116615A (zh) * | 2013-01-28 | 2013-05-22 | 袁华强 | 一种基于版本矢量的数据索引方法及服务器 |
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件***元数据管理方法 |
US20130227195A1 (en) * | 2012-02-24 | 2013-08-29 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
Family Cites Families (67)
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 |
US6434662B1 (en) * | 1999-11-02 | 2002-08-13 | Juniper Networks, Inc. | System and method for searching an associative memory utilizing first and second hash functions |
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 |
AU2004214014B2 (en) * | 2003-02-21 | 2009-10-22 | Datacore Software Corporation | Additional hash functions in content-based addressing |
US7325059B2 (en) | 2003-05-15 | 2008-01-29 | Cisco Technology, Inc. | Bounded index extensible hash-based IPv6 address lookup method |
JP4774492B2 (ja) | 2003-10-28 | 2011-09-14 | 財団法人生産技術研究奨励会 | 認証システム及び遠隔分散保存システム |
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 |
CA2596719A1 (en) | 2005-02-24 | 2006-08-31 | Xeround Systems Ltd. | Method and apparatus for distributed data management in a switching network |
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 |
US7370048B2 (en) * | 2005-05-27 | 2008-05-06 | International Business Machines Corporation | File storage method and apparatus |
US8504521B2 (en) | 2005-07-28 | 2013-08-06 | Gopivotal, Inc. | Distributed data management system |
JP4766240B2 (ja) | 2005-11-08 | 2011-09-07 | 日本電気株式会社 | ファイル管理方法、装置、およびプログラム |
US7546321B2 (en) | 2005-12-19 | 2009-06-09 | Yahoo! Inc. | System and method for recovery from failure of a storage server in a distributed column chunk data store |
US7886111B2 (en) | 2006-05-24 | 2011-02-08 | Compellent Technologies | System and method for raid management, reallocation, and restriping |
US20080065639A1 (en) * | 2006-08-25 | 2008-03-13 | Netfortis, Inc. | String matching engine |
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 |
US7809701B2 (en) * | 2007-10-15 | 2010-10-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for performing exact match searches using multiple hash tables |
US7996636B1 (en) | 2007-11-06 | 2011-08-09 | Netapp, Inc. | Uniquely identifying block context signatures in a storage volume hierarchy |
WO2009102425A1 (en) | 2008-02-12 | 2009-08-20 | Netapp, Inc. | Hybrid media storage system architecture |
US8296398B2 (en) | 2008-04-29 | 2012-10-23 | Overland Storage, Inc. | Peer-to-peer redundant file server system and methods |
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 |
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 |
US8782227B2 (en) | 2010-06-22 | 2014-07-15 | Cleversafe, Inc. | Identifying and correcting an undesired condition of a dispersed storage network access request |
US8880554B2 (en) | 2010-12-03 | 2014-11-04 | Futurewei Technologies, Inc. | Method and apparatus for high performance, updatable, and deterministic hash table for network equipment |
US8271462B2 (en) * | 2010-12-10 | 2012-09-18 | Inventec Corporation | Method for creating a index of the data blocks |
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 |
US8788788B2 (en) | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8930307B2 (en) | 2011-09-30 | 2015-01-06 | Pure Storage, Inc. | Method for removing duplicate data from a storage array |
US8839008B2 (en) | 2011-09-23 | 2014-09-16 | Broadcom Corporation | System and method for detecting configuration of a power sourcing equipment device connected to a powered device by simultaneously measuring voltage at two terminals of a resistor disposed within the powered device |
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 |
US9405783B2 (en) * | 2013-10-02 | 2016-08-02 | Netapp, Inc. | Extent hashing technique for distributed storage architecture |
US10503716B2 (en) * | 2013-10-31 | 2019-12-10 | Oracle International Corporation | Systems and methods for generating bit matrices for hash functions using fast filtering |
US9152684B2 (en) * | 2013-11-12 | 2015-10-06 | Netapp, Inc. | Snapshots and clones of volumes in a storage system |
US9268653B2 (en) * | 2014-01-17 | 2016-02-23 | Netapp, Inc. | Extent metadata update logging and checkpointing |
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 |
US10216966B2 (en) * | 2015-02-25 | 2019-02-26 | Netapp, Inc. | Perturb key technique |
-
2014
- 2014-01-17 US US14/158,608 patent/US9256549B2/en active Active
- 2014-01-21 US US14/160,133 patent/US8874842B1/en active Active
- 2014-12-19 EP EP14828399.7A patent/EP3095029B1/en active Active
- 2014-12-19 WO PCT/US2014/071446 patent/WO2015108667A1/en active Application Filing
- 2014-12-19 CN CN201480059554.7A patent/CN105683898A/zh active Pending
-
2015
- 2015-10-29 US US14/927,230 patent/US9639278B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1970821A1 (en) * | 2007-03-12 | 2008-09-17 | Broadcom Corporation | Method and apparatus for dual-hashing tables |
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件***元数据分配方法 |
CN101826107A (zh) * | 2010-04-02 | 2010-09-08 | 华为技术有限公司 | 哈希数据处理方法和装置 |
US20130227195A1 (en) * | 2012-02-24 | 2013-08-29 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
CN103116615A (zh) * | 2013-01-28 | 2013-05-22 | 袁华强 | 一种基于版本矢量的数据索引方法及服务器 |
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件***元数据管理方法 |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109983456A (zh) * | 2016-09-22 | 2019-07-05 | 维萨国际服务协会 | 存储器内密钥范围搜索技术 |
CN109983456B (zh) * | 2016-09-22 | 2023-08-15 | 维萨国际服务协会 | 存储器内密钥范围搜索方法和*** |
CN107078903A (zh) * | 2016-12-23 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 区块链的挖矿方法、装置和节点设备 |
CN107078903B (zh) * | 2016-12-23 | 2019-12-06 | 深圳前海达闼云端智能科技有限公司 | 区块链的挖矿方法、装置和节点设备 |
CN108345433A (zh) * | 2017-01-25 | 2018-07-31 | 三星电子株式会社 | 用于最大化的可去重存储器的方法、存储器***和产品 |
CN108345433B (zh) * | 2017-01-25 | 2023-05-02 | 三星电子株式会社 | 用于最大化的可去重存储器的方法、存储器***和产品 |
CN112925484A (zh) * | 2017-03-24 | 2021-06-08 | 美光科技公司 | 存储装置哈希生成 |
CN112925484B (zh) * | 2017-03-24 | 2024-05-17 | 美光科技公司 | 存储装置哈希生成 |
CN107220005A (zh) * | 2017-05-27 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种数据操作方法及*** |
CN110431542B (zh) * | 2017-05-30 | 2023-06-30 | 西部数据技术公司 | 管理存储网络中的i/o操作 |
CN110431542A (zh) * | 2017-05-30 | 2019-11-08 | 西部数据技术公司 | 管理存储网络中的i/o操作 |
CN109101433A (zh) * | 2017-06-20 | 2018-12-28 | 三星电子株式会社 | 用于管理存储装置的***和方法 |
US11809722B2 (en) | 2017-06-20 | 2023-11-07 | Samsung Electronics Co., Ltd. | System and method for managing a memory device using indexes |
CN109101433B (zh) * | 2017-06-20 | 2023-08-08 | 三星电子株式会社 | 用于管理存储装置的***和方法 |
CN110998607B (zh) * | 2017-08-08 | 2024-03-08 | 三星电子株式会社 | 用于神经网络的***和方法 |
CN110998607A (zh) * | 2017-08-08 | 2020-04-10 | 三星电子株式会社 | 用于神经网络的***和方法 |
CN107862074A (zh) * | 2017-11-24 | 2018-03-30 | 中国航空工业集团公司西安航空计算技术研究所 | 大数据量参数快速读写方法 |
CN110109915A (zh) * | 2018-01-18 | 2019-08-09 | 伊姆西Ip控股有限责任公司 | 用于管理哈希表的方法、设备和计算机程序产品 |
CN110109915B (zh) * | 2018-01-18 | 2024-01-05 | 伊姆西Ip控股有限责任公司 | 用于管理哈希表的方法、设备和计算机程序产品 |
CN110489053B (zh) * | 2018-05-14 | 2022-09-23 | 慧荣科技股份有限公司 | 管理闪存模块的方法、相关的闪存控制器和电子装置 |
CN110489053A (zh) * | 2018-05-14 | 2019-11-22 | 慧荣科技股份有限公司 | 管理闪存模块的方法、相关的闪存控制器和电子装置 |
CN111355580B (zh) * | 2020-05-25 | 2020-09-11 | 腾讯科技(深圳)有限公司 | 基于物联网的数据交互方法和装置 |
CN111355580A (zh) * | 2020-05-25 | 2020-06-30 | 腾讯科技(深圳)有限公司 | 基于物联网的数据交互方法和装置 |
CN113094336B (zh) * | 2021-04-01 | 2022-11-01 | 中山大学 | 基于Cuckoo哈希的文件***目录管理方法及*** |
CN113094336A (zh) * | 2021-04-01 | 2021-07-09 | 中山大学 | 基于Cuckoo哈希的文件***目录管理方法及*** |
CN113360516A (zh) * | 2021-08-11 | 2021-09-07 | 成都信息工程大学 | 基于先进先出及最小活跃数策略的集合成员管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US9256549B2 (en) | 2016-02-09 |
US20150205727A1 (en) | 2015-07-23 |
US9639278B2 (en) | 2017-05-02 |
WO2015108667A1 (en) | 2015-07-23 |
US8874842B1 (en) | 2014-10-28 |
EP3095029B1 (en) | 2018-07-18 |
EP3095029A1 (en) | 2016-11-23 |
US20160048332A1 (en) | 2016-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105683898A (zh) | 对储存***中数据高效存储与检索的组相关哈希表组织 | |
US10761758B2 (en) | Data aware deduplication object storage (DADOS) | |
US10762070B2 (en) | Technique for reducing metadata stored in a memory of a node | |
US9563654B2 (en) | Dense tree volume metadata organization | |
US10365838B2 (en) | N-way merge technique for updating volume metadata in a storage I/O stack | |
US9405473B2 (en) | Dense tree volume metadata update logging and checkpointing | |
US9471248B2 (en) | Snapshots and clones of volumes in a storage system | |
US9268653B2 (en) | Extent metadata update logging and checkpointing | |
US10216966B2 (en) | Perturb key technique | |
US10108547B2 (en) | High performance and memory efficient metadata caching | |
US8996535B1 (en) | Extent hashing technique for distributed storage architecture | |
US9047301B2 (en) | Method for optimizing the memory usage and performance of data deduplication storage systems | |
US20160070644A1 (en) | Offset range operation striping to improve concurrency of execution and reduce contention among resources | |
US20160077744A1 (en) | Deferred reference count update technique for low overhead volume metadata | |
US20210389899A1 (en) | Garbage collection in a storage system at sub-virtual block granularity level | |
CN118394762A (zh) | 分布式存储***的存储管理方法、设备、程序产品及介质 |
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 | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160615 |
|
WD01 | Invention patent application deemed withdrawn after publication |