CN102598020A - 用于改进的数据去重的装置、系统及方法 - Google Patents

用于改进的数据去重的装置、系统及方法 Download PDF

Info

Publication number
CN102598020A
CN102598020A CN201080048834XA CN201080048834A CN102598020A CN 102598020 A CN102598020 A CN 102598020A CN 201080048834X A CN201080048834X A CN 201080048834XA CN 201080048834 A CN201080048834 A CN 201080048834A CN 102598020 A CN102598020 A CN 102598020A
Authority
CN
China
Prior art keywords
hash
data
volatile memory
memory device
module
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.)
Granted
Application number
CN201080048834XA
Other languages
English (en)
Other versions
CN102598020B (zh
Inventor
乔纳森·希尔达
大卫·弗林
约翰·斯特拉瑟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
Fusion IO LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fusion IO LLC filed Critical Fusion IO LLC
Publication of CN102598020A publication Critical patent/CN102598020A/zh
Application granted granted Critical
Publication of CN102598020B publication Critical patent/CN102598020B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种用于改进的去重的装置、系统和方法。在非易失性存储设备210中实现输入模块312、散列模块314和传输模块316。输入模块312从非易失性存储设备的内部或外部的请求实体接收散列请求302。散列请求包括数据单元标识符,该数据单元标识符标识了所请求的散列对应的数据单元。散列模块314使用散列函数产生该数据单元的散列。散列是使用非易失性存储设备的计算资源产生的。当输入模块312接收到散列请求时,传输模块316向接收实体发送散列。去重代理110使用该散列,以确定该数据单元是否是已存储在包括非易失性存储设备210的存储系统中的数据单元的副本。

Description

用于改进的数据去重的装置、系统及方法
技术领域
本发明涉及数据去重。具体地,本发明涉及去重操作的时间选择和针对这种操作的散列的产生。
背景技术
数据去重操作总体上涉及对存储系统中的冗余数据的去除。数据去重在任何系统中都可以提供相当大的益处,但是在大的企业型存储系统中尤其有价值。例如,如果以电子邮件附件的形式向公司内的多个个体发送大邮件,为接收电子邮件的每个人都存储该大文件的一个拷贝是浪费存储空间的。最好是存储文件的单个拷贝,并且使指针将所有接收者指引到该单个拷贝。对于用户而言,从系统(不论系统是单个驱动器、存储区域网络(“SAN”)、网络附联存储(“NAS”)还是其它存储系统))去除冗余数据为用户提供了许多的益处。
总体上,存在两种去重的现有方法。图1A所示的一种方法是同步去重或实时去重。在同步去重中,典型地在将文件移至存储装置120之前对文件去重。例如,在将文件存入存储装置120之前,可以将该文件读取到文件服务器108的随机访问存储器(“RAM”)112中,并由去重代理110产生该文件的散列。去重代理110从散列表114中搜索该文件的散列,以确定文件是否是已经在存储装置120中存储的某种内容的副本。如果在散列表114中没有发现该散列,则该文件不是副本。在散列表114中存储该散列,并且将该文件从RAM 112移出并移到存储装置120中。如果在散列表114中发现了该散列,则该文件是副本。去重代理110更新索引116,以将客户端发送的文件与已经存储在存储装置120中的相同文件相关联。因为该文件是副本,所以并不将该文件移入存储装置120中。通过更新的索引116,将针对该文件的未来请求指引到该文件的已有拷贝。
图1B示出了异步去重或延迟去重。一般而言,在异步去重中,将文件移入存储装置120中,而不用执行去重。稍后,去重代理110向存储装置120请求该文件,产生散列,并且按照与结合图1A描述的方式相类似的方式来确定文件是否是副本。如果文件是副本,则更新索引116,并且一般从存储装置120删除该文件。按照这种方式,可以在客户端208上以后台处理的方式进行去重。
同步去重或异步去重均对系统有不利之处。两种方法均需要去重代理110接触数据;即,去重代理110必须制造数据的拷贝或近似拷贝,以对该数据进行去重。在一些情况下,可能期望在其他时间(而不是在将文件写入存储装置120后)执行去重操作,如在同步去重中一样。因为文件首先被写入存储装置120,然后必须从存储装置120中被读出以产生散列并执行去重,所以异步去重操作不必要地增加了将文件服务器108与存储装置120相连的总线或网络上的业务量。此外,异步去重可能在读出文件时使存储装置120不可用,即使当更紧急的过程需要对存储装置120进行访问时。
发明内容
用于改进的去重的装置,包括输入模块、散列模块和传输模块。这些模块可以是在计算机可读存储介质上存储的软件、硬件电路或二者的组合。本发明使得可以由存储设备自身来产生散列,所述散列可以在分离的设备之间或者在相同的设备内传递,以支持去重操作。在非易失性存储设备上实现输入模块,输入模块从请求实体接收散列请求。输入模块可以被实现为在非易失性存储设备上的存储器中存储的软件、位于非易失性存储设备内的物理设备、固件,或者通过实现该模块的其它方法来实现。
例如,请求实体可以是位于非易失性存储设备远程处的去重代理、位于非易失性存储设备上的去重代理或其它实体。散列请求包括数据单元标识符,该数据单元标识符标识了请求的散列所对应的数据单元。数据单元标识符可以标签,如,文件名、对象ID、信息节点或其它数据单元标签。数据单元标识符还可以是数据结构(如,链表),所述数据结构包括指定了非易失性存储设备上存储数据单元的直接或间接位置的数据单元位置(如,LBA或诸如PBA等物理地址)。
所述装置还包括在非易失性存储设备上实现的散列模块,该散列模块针对数据单元执行散列函数,以为数据单元标识符所标识的数据单元产生散列。该散列标识了数据单元,使得去重代理可以使用该散列来确定在包括非易失性存储设备的系统中是否存在该数据单元的副本。传输模块被实现在非易失性存储设备上,并且响应于输入模块接收到散列请求来向接收实体发送散列。
在特定实施例中,传输模块向接收实体发送散列,但是并不发送数据单元本身。可以在输入模块接收散列请求时产生散列;在其它实施例中,在输入模块接收散列请求之前或之后产生散列。可以将散列请求作为用于将数据单元写入的请求的一部分来发送,传输模块可以将散列本身作为肯定应答的一部分来发送,所述肯定应答是:数据单元已经被成功写入非易失性存储设备。
在特定实施例中,非易失性存储设备是由多个非易失性存储设备构成的独立驱动器冗余阵列(“RAID”——也已知为廉价磁盘冗余阵列和独立磁盘冗余阵列)系统的一部分。在这样的实施例中,数据单元可以是RAID数据条的数据段。在这样的实施例中,所述装置可以包括种子模块,所述种子模块接收在产生散列时使用的种子,并且将种子提供给散列模块。然后,散列模块结合相关数据使用该种子来产生散列。
种子本身可以是另一数据单元的散列。例如,种子可以是第一数据段的散列。传输模块可以向包括第二数据段的第二非易失性存储设备发送第一数据段的散列,并且指示将第一数据段的散列用作种子。然后,第二非易失性存储设备的散列模块可以将第一数据单元的散列用作种子,以产生第二数据段的散列,此时,第二非易失性存储设备的传输模块可以向第三非易失性存储设备发送新散列,以此类推。
在特定实施例中,如下文所述,非易失性存储设备可以是奇偶镜像设备。奇偶镜像设备可以本地存储RAID数据条的每个数据段,并且使用所述本地存储的数据段产生整个RAID数据条的散列。可以结合如下操作执行散列产生操作:产生RAID数据条的奇偶段。
在特定实施例中,发送散列请求的请求实体可以响应于确定数据单元在高速缓存中下移来执行该操作。请求实体还可以在确定数据单元是数据整理操作的目标并且数据单元尚且不是去重操作的目标的情况下,发送散列请求。例如,数据整理操作可以是垃圾收集操作或碎片整理操作。
还公开了一种在计算机可读存储介质上存储的计算机程序产品,所述计算机程序产品包括计算机可用程序代码,当执行所述计算机可用程序代码时,所述计算机可用程序代码执行用于改进的去重的操作。所述操作包括:标识要去重的数据单元,以及向存储数据单元的一个或多个非易失性存储设备发送散列请求以及所述数据单元的数据单元标识符。所述操作还可以包括:从产生了所标识的数据单元的散列的非易失性存储设备接收散列。所述操作还包括:确定所述数据单元是否是在存储系统中存储的已有数据单元的副本。所述散列被用来执行这种确定。
所述操作还可以包括:如果确定新数据单元是已有数据单元的副本,则发送将所述数据单元或所述已有数据单元删除的请求。在特定实施例中,去重代理可以确定在存储系统内存在多个副本。所述操作还包括:如果所述数据单元和所述已有数据单元是副本,则将所述数据单元与所述已有数据单元相关联。因此,解释对于为了防止数据的不必要复制而删除的数据单元的请求,并将所述请求发送至系统中保持的数据单元。在特定实施例中,使用指针来执行重定向。
计算机程序产品可以是在计算机系统上工作的文件系统的一部分其中所述计算机系统包括处理器和存储器,并且与非易失性存储设备分开并相连。计算机程序产品可以是在这种计算机上工作的去重代理,并且可以经由将计算机与非易失性存储设备相连的通信连接(如,总线或网络)来接收散列,而不另外还接收数据单元本身。因此,不需要向去重代理传递数据本身来产生散列,可以独立于数据单元来传输散列。去重代理还可以接收数据单元的散列,将所述散列指派为另一数据单元的种子,并且将要用作种子的散列发送至存储了该另一数据单元的另一非易失性存储设备。
贯穿本说明书,对特征、优点的介绍或者类似语言并不表示本发明可以实现的所有特征和优点应该在或就在本发明的任何单个实施例中。而是应当将涉及特征和优点的语言理解成:结合实施例描述的特定特征、优点或特性包含在本发明的至少一个实施例中。因此,贯穿本说明书,对特征和优点的讨论以及类似语言可以但不必须涉及相同的实施例。
此外,在一个或多个实施例中,可以任何适当的方式组合所描述的本发明的特征、优点和特性。相关领域的技术人员应认识到,可以在没有特定实施例的一个或多个特定特征或优点的情况下实践本发明。在其它情况下,在特定实施例中可以想到附加特征和优点,所述附加特征和优点可能并未出现在本发明的所有实施例中。
通过以下描述和所附权利要求,本发明的这些特征和优点将变得更清楚,或者通过对下文所述发明的实践,可以认识到本发明的这些特征和优点。
附图说明
为了容易地理解本发明的优点,将通过参考在附图中示出的具体实施例给出了以上简单描述的本发明的更具体描述。应该理解,这些附图仅描述了本发明的典型实施例,因而不应该被认为是限制本发明的范围,通过使用附图,将更具体且详细地描述和说明本发明,其中:
图1由图1A和1B组成,是示出了现有技术去重方法的示意性框图。
图2由图2A和2B组成,是示出了去重方法的示意性框图。
图3是示出了用于改进的去重的系统的一个实施例的示意性框图。
图4是示出了在RAID环境中用于改进的去重的系统的一个实施例的示意性框图。
图5是示出了在RAID环境中用于改进的去重的系统的一个实施例的第二示意性框图。
图6是示出了在RAID环境中用于改进的去重的系统的一个实施例的第三示意性框图。
图7是配置为产生散列的非易失性存储设备的示意性框图。
图8是示出了用于改进的去重的系统的一个实施例的示意性框图,其中将非易失性存储设备用作高速缓存。
图9是示出了可能出现改进的去重的体系结构的示意性框图。
图10是示出了可能出现改进的去重的体系结构的第二示意性框图。
图11是示出了去重代理的一个实施例的示意性框图。
图12是示出了可能出现改进的去重的系统的示意性框图,其中该系统具有分离的数据路径和控制路径。
图13是示出了使用在非易失性存储设备中产生的散列来进行去重的方法的一个实施例的示意性流程图。
图14是示出了用于执行去重的系统的一个实施例的示意性流程图,其中在非易失性存储设备中产生散列。
图15是示出了包括去重代理的系统的一个实施例的示意性框图,其中在去重代理的远程处产生散列。
具体实施方式
已经将本说明书中描述的许多功能单元标记为模块,以更着重地强调其实现的独立性。例如,可以将模块实现为包括定制VLSI电路或门阵列的硬件电路、诸如逻辑芯片、晶体管或其它分立部件之类的成品半导体。模块还可以以可编程硬件设备的形式来实现,如,现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等。
还可以将模块实现为在计算机可读存储介质上存储的软件,以由各种类型的处理器来执行。在特定实施例中,还可以以固件的形式实现模块。例如,可执行代码的等同模块可以包括在计算机可读存储介质上存储的一个或多个物理上或逻辑上的计算机指令块,其中,可以将所述一个或多个物理上或逻辑上的计算机指令块组织为对象、进程或功能。然而,等同模块的可执行文件不需要在物理上处于一处,而是可以包括在不同位置存储的离散指令,当将这些离散指令在逻辑上结合在一起时,组成该模块并且为该模块实现所声明的目的。
实际上,可执行代码的模块可以是单一指令或者多个指令,甚至可以分布若干不同代码段上、分布在不同程序之间以及跨越若干存储器件而分布。类似地,操作数据可以在模块内被标识并示出,可以以任何适当形式实现,并且可以被组织在任何适当类型的数据结构中。操作数据可以被聚集为单个数据集,或者可以分布在不同位置上,包括分布在不同存储设备上。在以软件来实现模块或模块的一部分的情况下,在一个或多个计算机可读存储介质上存储软件部分。
贯穿本说明书,“一个实施例”、“实施例”或类似语言意味着结合该实施例而描述的特定特征、结构或特性包含在本发明的至少一个实施例中。因此,贯穿本说明书,短语“一个实施例”、“实施例”或类似语言的出现可以但不必须涉及相同实施例。
对于计算机可读存储介质,可以采用能够为数字处理装置存储机器可读指令的任何物理形式。可以通过如下设备实现计算机可读介质:光盘、数字视频盘、磁带、伯努利驱动器、磁盘、穿孔卡片、闪速存储器、集成电路或其它数字处理装置存储器设备。
此外,在一个或多个实施例中,可以以任何适当方式组合所描述的本发明的特征、结构或特性。在下文中,提供了许多具体细节,例如编程的示例、模块的示例、用户选择的示例、网络事务的示例、数据库查询的示例、数据库结构的示例、硬件模块的示例、硬件电路的示例、硬件芯片的示例等,以提供对本发明实施例的全面的理解。然而,相关领域的技术人员应该认识到,在没有一个或多个所述具体细节的情况下,或者在利用其它方法、部件、材料等的情况下,可以实践本发明。在其它示例中,没有示出或详细地描述公知结构、材料或操作,以避免混淆本发明的方面。
总体上,将本文包括的示意性流程图示为逻辑流程图。因此,描述的顺序和标记的步骤指示本方法的一个实施例。可以想出在功能、逻辑或效果上与所示方法的一个或多个步骤或其一部分等同的其他步骤和方法。此外,所采用的格式和符号用于说明方法的逻辑步骤,不应被理解为限制方法的范围。尽管可以在流程图中采用各种箭头类型和线类型,但是不应将其理解为限制相应方法的范围。实际上,一些箭头或其它连接符可以用于仅指示方法的逻辑流程。例如,箭头可以指示所描述方法的枚举步骤之间未指定持续时间的等待或监视时间段。此外,发生特定方法的顺序不需要严格遵守所示相应步骤的顺序。
图2a是示出了执行去重的改进方法的一个实施例的示意性框图。图2包括客户端208和存储装置120。在特定实施例中,客户端208包括非易失性存储设备210、RAM 112、去重代理110、索引116和散列表114。
客户端208是存储装置120的客户端。客户端208发送各种动作,以通过存储装置120执行;例如,客户端208可以向存储装置120发送读取请求、写入请求和修改请求。在一个实施例中,客户端208是文件服务器并且协调存储装置120中数据的存储和获取。客户端208可以是操作系统的一部分,或者可以与操作系统分离。在客户端208是文件服务器的实施例中,客户端208从其它实体(例如,可以在与文件服务器相同的计算设备上或者在远程连接的计算设备上实现的应用程序或操作系统)接收存储和读取数据单元的请求,并协调这些请求在存储装置120上的执行。客户端208可以是服务器,允许通过网络与该服务器相连的远程连接计算机设备从存储装置120存储和获取数据单元。
本申请中使用的数据单元是逻辑上组合在一起的任何数据集。数据单元可以是文件、对象、RAID数据条的数据段、或在数据存储装置中使用的其它数据集。数据单元可以是可执行代码、数据、元数据及其组合,或者可以在存储器设备中存储的任何其它类型的数据。可以通过名称、逻辑地址、物理地址、地址范围或用于标识数据单元的其它规则来标识数据单元。
客户端208通过通信连接与存储装置120相连。通信连接使得数据单元能够在客户端208与存储装置120之间通信。在特定实施例中,通信连接可以是总线,总线上的通信可以根据诸如通用串行总线(“USB”)、外围部件互连(“PCI”)、PCI express(“PCIe”)、HyperTransport(HT)、FireWir或串行ATA等总线协议来进行。通信连接还可以是网络,网络上的通信可以根据诸如Infiniband、HyperTransport、以太网、光纤通道或PCI等网络协议来进行。类似地,客户端208可以与非易失性存储设备210相连。
客户端208将数据单元写入非易失性存储设备210。非易失性存储设备210可以包括存储控制器212、非易失性存储装置214和散列产生装置230。存储控制器212管理非易失性存储装置214中数据单元的存储和获取。存储控制器210提供功能,以支持对非易失性存储装置214的操作以及对在非易失性存储装置214上存储的数据单元的操作。例如,存储控制器210可以对发送至非易失性存储设备210的命令进行解码,执行编程并擦除算法,控制模拟电路(例如,启用和禁用电压发生器,并且确定电压脉冲的持续时间),以及执行其它功能。
存储控制器212通过通信连接(例如总线)与非易失性存储装置214相连,其中该通信连接独立于将非易失性存储设备210与诸如客户端208之类的外部设备和附加非易失性存储设备相连的通信连接。散列产生装置230可以是存储控制器212的一部分,或者可以是通过通信连接与存储控制器212和/或非易失性存储装置214相连的分离组件,其中该通信连接独立于将非易失性存储设备210与外部设备相连的通信连接。
在特定实施例中,存储控制器212、非易失性存储装置214、散列产生装置230及其之间的通信连接位于外观因素中。因为存储控制器212与非易失性存储装置214经由这种通信连接(可以被称作第一通信连接,以及在图3中示为通信连接360)通信,所以存储控制器212、非易失性存储装置214和散列产生装置230可以共享信息,而不向将存储装置120与诸如客户端之类的其它设备相连的通信连接增加业务量,也不向将非易失性存储设备210与客户端208相连的通信连接(可以被称作第二通信连接,在图3中示为通信连接350)的业务量。
此外,整个系统可以包括与客户端208通信的附加设备;例如,客户端208可以是存储管理器,该存储管理器针对通过网络或总线与存储管理器相连的一个或多个计算设备对数据存储进行协调。存储控制器212、非易失性存储装置214和散列产生装置230可以共享信息,而不向将存储管理器(客户端208)与其它计算设备相连的通信连接增加业务量。
在图2中,如申请的其它附图一样,除了所示出的组件之外,可以存在附加组件。例如,可以存在多个客户端208、多个存储装置120、多个非易失性存储设备210和其它重复组件。在多种实施例中,相关系统将提供冗余,使得一个设备的故障不会导致系统的故障。尽管附图可以只示出系统中的各种组件之一,但是在典型实施例中,提供了冗余组件。
即使没有对非易失性存储设备210供电,非易失性存储设备210也在非易失性存储装置214中保持数据单元。在一个实施例中,非易失性存储设备210是硬盘驱动器。在其它实施例中,非易失性存储装置是固态存储装置,例如闪存、相变存储器(PRAM)、铁电RAM(FRAM)、或其它已有或未来的固态存储装置类型。在一个实施例中,非易失性存储设备210是在David Flynn,Bert Lagerstedt,John Strasser,Jonathan Thatcher和Michael Zappe于2007年12月6日提交的题为“Apparatus,System,andMethod for Managing Data Using a Data Pipeline”的美国申请中描述的非易失性存储设备,在此并入其全部作为参考。具体地,如在第122至161段中描述的,非易失性存储设备210可以包括写入数据管线和读取数据管线。
存储装置120是用于保持数据的非易失性存储装置。存储装置120可以是固态存储装置、一个或多个硬盘驱动器、磁带、某种其它非易失性数据存储介质、或前述示例的组合。存储装置120的容量可以根据实现方式而改变。在特定实施例中,例如图2A所示的实施例中,存储装置120可以是附加于非易失性存储设备210的装置。例如,存储装置120可以是使用磁带、硬盘等实现的后备存储器。在其它实施例中,例如图2B所示的实施例中,非易失性存储设备210可以是存储装置120。存储装置120可以通过总线(例如,PCIe、串行ATA、1394“FireWire”总线、Infiniband等)与客户端208相连,并且可以在支持客户端208的硬件的内部或外部。在特定实施例中,存储装置120可以是网络附着存储装置(NAS)、存储域网路(SAN)、或其它存储方案。
非易失性存储设备210还可以包括散列产生装置230,散列产生装置230产生针对在非易失性存储设备210中存储的数据单元的散列。在特定实施例中,可以将散列产生装置230实现为连入非易失性存储设备210的硬件。在其它实施例中,可以将散列产生装置230实现为存储控制器212的一部分;例如,可以将散列产生装置230实现为在存储控制器212上执行的软件或固件。
在一个实施例中,在客户端208上操作的去重代理110使用该去重代理110与非易失性存储设备210之间的通信连接向所述非易失性存储设备210发送散列请求,该散列请求是针对非易失性存储设备210中的数据单元的散列的请求。数据单元可以在接收到散列请求时已被存储在非易失性存储设备210中,与散列请求一起被发送,或者在接收到散列请求之后被发送。散列产生装置230产生针对指定数据单元的散列。散列产生装置230可以从非易失性存储装置214读取请求的散列所对应的数据单元,并产生针对该数据单元的散列。散列产生装置230可以访问诸如RAM(可以是客户端中的RAM 112或者可以是非易失性存储设备210内的附加RAM)之类的易失性存储器,当存储控制器212产生散列时数据单元被保持在所述易失性存储器中。
散列产生装置230访问数据单元并产生针对该数据单元的散列,而不使非易失性存储设备210与客户端208相连的通信连接负担过重。不使通信连接负担过重是指:不需要经由将非易失性存储设备210与客户端208相连的通信连接来发送要去重的数据,以产生散列。可以经由该通信连接传输其它数据(例如控制消息和产生的散列);然而,如果必须移动数据单元本身,则经由该通信连接移动的数据量小于本来会移动的数据量。因为去重代理110不需要接触数据来产生针对数据单元的散列,所以不需要经由非易失性存储设备210与客户端208之间的通信连接来传输该数据单元;而是,散列产生装置230可以产生散列,并且仅将该散列经由该通信连接发送至去重代理110。类似地,不需要经由客户端208与希望存储或访问数据的一个或多个附加计算设备之间的通信连接来传输数据单元;例如,当客户端208是如上所讨论的存储管理器时。然后,去重代理110可以利用散列确定特定数据单元是否是副本。去重代理110可以根据需要使用非易失性存储设备210提供的散列对索引116进行适当地更新。
在一个实施例中,去重代理110从非易失性存储设备210接收散列,并将该散列与在散列表114中存储的散列相比较。如果在散列表中发现了该散列,则去重代理110可以命令非易失性存储设备210去除数据单元,并且适当地更新索引116。在其它实施例中,去重代理110可以使非易失性存储设备210存储新数据单元,删除旧的复制数据单元,并且对索引116进行适当的改变。如果在散列表114中没有发现该散列,则去重代理110可以将该散列添加到散列表114中。对以上描述的散列表114和索引116的具体使用只不过是去重方法的一个示例。
散列是通过使用数据单元本身产生的数据或从数据单元获得的数据(例如,奇偶(parity)数据、DIF或其它数据),并且标识了数据单元,使得可以使用散列确定数据单元是否是副本。散列还可以包括数据单元的元数据,以帮助确定数据单元是否是副本。在一个实施例中,散列包括数据单元的长度,去重代理110可以使用该长度来确定数据单元是否是已有数据单元的副本。在一个实施例中,散列可以包括数据单元类型;例如,如果一个数据单元是.jpg类型的文件而另一数据单元是.exe类型的文件,则这两个数据单元不可能是副本。
数据单元的散列可以是以下算法的产物:消息摘要算法5(MD5)、安全散列算法(SHA-1,SHA-2)、纠错码、指纹、或可以用于产生适于用作散列的数据的其它算法。例如,散列还可以是数据完整性字段(DIF),可以用于检查系统中不想要的数据副本并确保数据的完整性。散列可以是循环冗余校验(CRC)、校验和、被数据库或者通信通道用来检查数据连续性、未篡改、正确解密或其它目的数据。在特定实施例中,可以通过对数据单元DIF进行散列处理来产生数据单元的散列。在其它实施例中,通过对RAID环境中的数据单元段进行散列处理来产生数据单元的散列。在其它实施例中,可以通过对RAID环境中的数据单元的奇偶进行散列处理来产生数据单元的散列。
在非易失性存储设备210中产生散列并仅传送该散列可以释放客户端208上的资源(例如,RAM 112、处理器周期和其它资源),并且可以减少在非易失性存储设备210与具有去重代理110的主机计算设备(例如客户端208)之间的通信连接上的业务量。在特定实施例中,非易失性存储设备210可以中断产生数据单元的散列的过程,以执行其它操作,例如从非易失性存储装置214读取数据单元以及将数据单元写入非易失性存储装置214。非易失性存储设备210可以存储散列产生中的中间结果,以及一旦完成了更高优先级的操作,就继续该散列产生的过程。因此,去重过程不需要使非易失性存储设备210在非易失性存储设备210产生散列时不能访问更高优先级的操作。在特定实施例中,如果在散列产生例程期间更新数据单元,则可以终止、延期或重新调度散列产生例程。因此,散列产生可以独立于数据单元访问。在特定实施例中,非易失性存储设备210可以传送散列以及请求的散列所对应的数据单元。
在特定实施例中,非易失性存储设备210可以从去重代理110接收散列请求,并标记该特定数据单元,使得稍后产生散列。在这种实施例中,非易失性存储设备210可以等待,直到确定到了产生并发送散列的适宜时间。例如,在非易失性存储设备210上操作的散列产生装置320可以产生散列,作为数据整理操作(例如垃圾收集或去重)的一部分、对数据单元的读取操作的一部分、或者其它操作。
尽管图2讨论了在非易失性存储设备210中产生散列并将该散列传送至去重代理110以在去重过程中使用,但是非易失性存储设备210产生的散列还可以用于其它目的。类似地,其它过程可以得益于以下操作:在非易失性存储设备210中产生数据单元的散列,然后将该散列传送到诸如客户端208之类的另外的设备上。例如,如上所述,散列还可以用作DIF、CFC、校验和、或其它函数。通过按照本申请中描述的方式产生DIF、CFC和校验和,系统可以获得附加的性能益处。
此外,尽管图2示出并讨论了散列产生装置230位于非易失性存储设备210上,但是在特定实施例中,散列产生装置230可以位于存储系统中的其它地方。例如,散列产生装置230可以被实现在与掌管去重代理110的客户端208相连的计算设备上、网络设备上或其它位置。将结合图15更详细地讨论用于散列产生装置230的备选位置。
图3示出了用于改进的去重的系统300的一个实施例。系统300只是落在本发明范围内的可能系统配置的一个示例。系统300包括客户端208和非易失性存储设备210。在特定实施例中,客户端208包括RAM 112、去重代理110、索引116和散列表114。在一个实施例中,客户端208充当了非易失性存储设备210与需要非易失性存储设备210上存储的数据单元的实体(例如,应用程序、其它计算设备等)之间的中间部件。例如,客户端208可以是诸如SAN或NAS之类的存储系统中的存储管理设备。客户端208可以包括比示出的元件更多的元件或与示出的元件不同的元件;例如,客户端208典型地包括处理器以启用其功能。在特定实施例中,客户端208可以指示需要来自非易失性存储设备210的数据单元的计算设备使用远程直接存储器存取(RDMA)和/或直接存储器存取(DMA)来存储和获取非易失性存储设备210中的数据单元。
在一个实施例中,去重代理110向实现了散列产生装置230的非易失性存储设备210发送散列请求302。在所描述的实施例中,将散列产生装置230实现为存储控制器212的一部分。还可以在非易失性存储设备210的其它地方实现散列产生装置230;例如,散列产生装置230可以全部或部分是硬件。非易失性存储设备210经由第二通信连接350与客户208共享信息。第二通信连接350可以是网络、总线或允许在客户208与非易失性存储设备210之间共享电信息的其它连接。第二通信连接350与第一通信连接360分离,其中第一通信连接360允许存储控制器212发送和获取来自非易失性存储装置214的信息。
散列请求302请求在实现了散列产生装置230的计算设备中存储的数据单元的散列;在这种情况下,实现了散列产生装置230的计算设备是非易失性存储设备210的非易失性存储装置214。散列请求包括数据单元标识符,所述数据单元标识符标识了请求的散列所对应的数据单元。标识符可以是名称(例如文件名)、地址、范围、逻辑地址、或标识非易失性存储装置214中的数据单元的其它方式。在特定实施例中,数据单元标识符还可以是列表或其它数据结构,所述列表或其它数据结构包括针对数据单元组成部分的PBA或LBA。散列请求302还可以包括读取数据单元的请求。
在特定实施例中,去重代理110可以跟踪其已经去重了哪些数据单元以及其尚未去重哪些数据单元。在该实施例中,去重代理110可以发送散列请求302,该散列请求302标识尚未被去重的数据单元并且请求这些数据单元的散列。去重代理110可以发送多个散列请求302,或者包括多个数据单元标识符的单个散列请求302。
在其它实施例中,散列产生装置230可以负责跟踪已经去重了哪些数据单元。在该实施例中,散列产生装置230可以包括跟踪模块318。跟踪模块318跟踪已经去重了主机设备(在本文中是非易失性存储装置214)上的哪些数据单元。跟踪模块318可以存储对非易失性存储装置214中哪些数据单元需要去重加以标识的信息,或者可以使用其它存储装置来维持该信息。在一个实施例中,每个数据单元包括元数据标记,所述元数据标记指示是特定数据单元是否已被去重。在该实施例中,跟踪模块318可以在易失性存储器中存储去重跟踪数据,并且在电源故障的情况下,或者在引起跟踪数据丢失的其它情况下,使用元数据标记重新创建去重跟踪数据。
在由跟踪模块318管理去重跟踪数据的情况下,去重代理110可以请求由跟踪模块318确定的需要去重的一个或多个数据单元的散列。例如,去重代理110可以发送指示,以指示其准备好从非易失性存储设备120接收散列。在其它实施例中,散列产生装置230向去重代理110推送散列,而不用去重代理110请求这些散列。
存储模块310将从客户端208接收的数据单元写入非易失性存储装置214。存储模块310还在请求时从非易失性存储装置214读取数据单元。在特定实施例中,客户端208可以是诸如远程计算机之类的实体,该实体使用RDMA和/或DMA方法发送要写入非易失性存储装置214的数据单元。请求将数据单元写入非易失性存储装置214或者从非易失性存储装置214读取数据单元的设备或应用程序是客户端208。
输入模块312从请求实体接收散列请求302。请求实体是请求散列模块314产生数据单元的散列的设备、应用程序、模块、或者其它实体。去重代理110可以是请求实体。请求实体可以是另外的非易失性存储设备。请求实体可以是非易失性存储设备210内的另外的模块,例如跟踪模块318。尽管图3示出了散列请求302是以利用客户端208上的去重代理110发出的,但是散列请求302还可以是在散列请求产生装置230内发出的。
例如,在特定实施例中,跟踪模块318可以请求对非易失性存储装置214中存储的数据单元进行去重。跟踪模块318可以在上一次去重(或者上一次更新数据单元)后经过特定时间段之后发送一个或多个散列请求302,或者可以在阈值数目的数据单元尚未被去重时向输入模块312发送散列请求302。在该实施例中,以及在非易失性存储设备210内部的模块发送散列请求302的其它实施例中,内部模块是请求实体。存储控制器212内的其它模块也可以是请求实体;例如,如下所述,垃圾收集模块可以触发去重操作。因此,图3中的箭头示出了来自外部设备的散列请求302,其并不限制请求实体所处的位置。
散列请求302请求指定数据单元的散列,并包括数据单元标识符,其中该数据单元标识符指示了请求的散列所对应的一个或多个数据单元。在特定实施例中,从客户端208发送散列请求302,该散列请求302与以下请求一起发送或者作为其一部分来发送:在非易失性存储设备210上存储请求的散列所对应的数据单元的请求。散列模块314产生在散列请求302中标识的数据单元的散列。散列模块314使用针对数据单元而执行的散列函数产生数据单元的散列。在特定实施例中,散列模块314可以使用消息摘要算法5(MD5)、安全散列算法(SHA-1,SHA-2)、纠错码、指纹、或者可以用于产生散列的其它算法,所述散列适于标识产生的散列所对应的数据单元。还可以使用用于产生散列的其它方法。
在特定实施例中,当输入模块312接收散列请求302时,散列模块314产生数据单元的散列。输入模块312可以向散列模块314发送产生散列的指令,或调用散列模块314的散列产生功能。例如,输入模块312可以接收散列请求302,并且命令散列模块314产生所标识的数据单元的散列。然后,作为响应,散列模块314可以产生散列。
在其它实施例中,在针对数据单元的写入过程期间,散列模块314可以产生散列。例如,存储模块310可以接收要写入非易失性存储装置214的数据单元。作为写入过程的一部分,存储模块310可以请求散列模块314产生数据单元的散列。然后,散列模块314可以产生散列,将散列存储在非易失性存储装置214(或易失性存储器)中,以及将散列与数据单元相关联。在另一实施例中,可以在对数据单元进行读取操作期间调用散列模块314产生散列。散列的实际生成可以不与读取操作同步。在非易失性存储设备210中,例如在以上引用的“Apparatus,System,and Method for Managing Data Using a DataPipeline”中描述的非易失性存储设备中,散列模块314可以是写入数据管线或读取数据管线的一部分,或者可以当数据单元移动通过写入数据管线或读取数据管线或垃圾收集旁路时调用散列模块314。
响应于输入模块312接收到散列请求302,传输模块316向接收实体发送散列。在一个实施例中,接收实体可以与请求实体相同;例如,去重代理110可以是发送散列请求302的请求实体,也可以是接收响应于散列请求302而产生的散列304的接收实体。在一个实施例中,接收实体使用散列304,以确定特定数据单元是否是已经存储在存储系统中的数据单元的副本。
响应于输入模块312接收到散列请求302,传输模块316向接收实体发送散列,这并不排除散列请求302的接收与散列304的传输之间出现中间操作304。例如,作为中间步骤,散列模块314可以产生数据单元的散列304。本申请中讨论的其它动作也可以被实现为中间步骤。
在一个实施例中,传输模块316确定是否在输入模块213接收到散列请求之前已经由散列模块314产生了数据单元的散列。例如,当正在将数据单元写入非易失性存储装置214时,可能已经由散列模块314创建了散列304,该写入操作可以在输入模块312接收到散列请求302之前就已经发生。如果散列模块314已经产生了数据单元的散列304,则传输模块316接收散列304,并向接收实体发送散列304。
在特定实施例中,传输模块316在向接收实体发送散列304之前,还验证数据单元的预产生的散列304是否仍然有效。例如,可能在接收到散列请求302之前已经产生了散列304,但是可能自创建散列304以来已经对数据单元进行了修改。在这种情况下,散列304可能不再有效,在该情况下,传输模块316可以命令散列模块314使用数据单元的当前版本产生数据单元的新散列。
在图3所示的实施例中,去重代理110是请求实体。去重代理110向非易失性存储设备210发送散列请求302。存储控制器212的输入模块312接收散列请求302,其中该散列请求302包括数据单元标识符并请求数据单元的散列。散列模块314可能已经产生了数据单元的散列304,或者可以响应于输入模块312接收散列请求302而产生散列304。传输模块316向接收实体发送散列304;在这种情况下,接收实体是去重代理110,经由客户端208与非易失性存储设备210之间的通信连接发送散列。
因此,在特定实施例中,减少了掌管去重代理110的客户端208与非易失性存储设备210之间的连接上的业务量。并不经由连接向去重代理110传送整个数据单元,而是传送较小的散列304。此外,极大地减小了或者同时避免了客户端208的资源(例如,RAM 112)方面的压力。此外,在特定实施例中,去重代理110从不接触数据;即,去重代理110从不必须创建数据单元的本地版本(例如,通过在RAM 112中存储数据单元)来执行数据去重。去重代理110通过经由控制路径传递信息来执行去重。
图4示出了具备改进的去重的系统400的说明性示例。系统400包括客户端208(基本上与上述客户端208类似)、RAID控制器410和非易失性存储设备210a-c。在系统400中,非易失性存储设备210a-c被布置成独立驱动器的冗余阵列或者RAID(通常也被称作廉价磁盘冗余阵列或缩写的其它变型)。
RAID控制器410在非易失性存储设备210a-c阵列上实现了RAID存储方案。RAID控制器410可以是软件RAID控制器或硬件RAID控制器。典型地,客户端208或其它附属计算设备将只见RAID虚拟磁盘;即,非易失性存储设备210a-c对于客户端208而言是透明的。RAID控制器410可以将非易失性存储设备210a-c组织成RAID 0、RAID1、RAID 5、RAID10、RAID 50或其它RAID配置。在一个实施例中,RAID控制器410接收散列请求302,并针对返回散列进行必要的分配和确定。在其它实施例中,该功能分布在诸如非易失性存储设备210a-c之类的多个设备上。
在多种实施例中,RAID控制器410从客户端208接收RAID数据块(例如文件),将RAID数据块划分为RAID数据段,并以RAID数据条的形式将数据段条带化在非易失性存储设备210a-c上。RAID控制器410还可以产生奇偶段,并将这些奇偶段存储在非易失性存储设备210a-c上。在该实施例中,在独立非易失性存储设备210a-c中存储的数据单元可以是针对RAID数据块产生的RAID数据条的段(例如数据段或奇偶段)。
如上所述,客户端208可以包括去重代理110。去重代理110可以发送散列请求302,该散列请求302标识用于去重的特定RAID数据块并且请求数据块的散列。在一个实施例中,RAID控制器410接收散列请求302,并且确定要被去重的RAID数据块的数据段所处的位置。然后,RAID控制器410可以将散列请求302转换为多个散列请求302a-c,其中所述多个散列请求302a-c对非易失性存储设备210a-c中的每个非易失性存储设备上的相关数据段加以标识,并且向每个相关非易失性存储设备210a-c请求这些数据分段的散列。
在特定实施例中,RAID控制器410可以向非易失性存储设备210a-c传送散列请求302。在该实施例中,相应非易失性存储设备210a-c的输入模块312a-c可以访问信息,以确定由非易失性存储设备210a-c存储的哪些数据段与散列请求302相关,其中该信息与向非易失性存储设备210a-c提供的数据单元的标识符与数据单元的实际存储之间的关系相关。例如,非易失性存储设备210a-c可以能够将文件名称映射到特定LBA。然后,在接收到散列请求302之后,非易失性存储设备210a-c可以分别产生在每个非易失性存储设备210a-c中存储的数据段的适当散列。例如,可以将请求RAID数据块A的散列的散列请求302转发至非易失性存储设备210a。非易失性存储设备210a可以接收散列请求302,确定其存储了RAID数据块A的数据段A1,产生数据段A1的散列,以及向适当接收实体发送该散列。类似地,非易失性存储设备210b可以接收相同的散列请求302,确定其存储了RAID数据块A的数据段A2,产生数据段A2的散列,以及向适当接收实体发送该散列。
向非易失性存储设备210a-c传输散列请求302的方法也可以基于RAID配置而改变。例如,在RAID1镜中,因为每个非易失性存储设备210a-c将返回相同的散列,所以RAID控制器410可以仅向非易失性存储设备210a-c之一传送散列请求302。
在一个实施例中,RAID控制器410从非易失性存储设备210a-c接收散列304a-c,并使用部分散列304a-c创建整个数据块的散列304,其中散列304a-c代表了针对每个相应的非易失性存储设备210a-c内的数据分段产生的散列304的部分结果。在其它实施例中,散列304a-c还可以到达客户端208,并且在客户端208处使用部分结果304a-c组装成散列304。在特定实施例中,例如图4描述的实施例中,每个非易失性存储设备210a-c经由通信连接向RAID控制器410发送针对相关数据单元产生的散列304a-c。
在特定实施例中,每个非易失性存储设备210a-c可以产生在特定非易失性存储设备210a-c中存储的数据单元的散列304a-c,而不是由另外的非易失性存储设备210a-c产生该散列。例如,非易失性存储设备210a可以存储第一数据段A1,而非易失性存储设备210b可以存储数据块A的第二数据段A2,其中第二数据段A2是如散列请求302指示的要去重的数据段。特定散列算法可以允许非易失性存储设备210b计算第二数据段A2的散列,而不用知道在非易失性存储设备210a上存储的第一数据段A1的散列。在该实施例中,非易失性存储设备210a和非易失性存储设备210b可以并行地产生散列304a和304b,并将散列304a和304b发送至RAID控制器410,RAID控制器410可以根据非易失性存储设备210a和210b提供的部分结果构建完整的散列304。
这些散列算法通常是指独立的散列算法;即,可以针对每个数据段独立地产生散列,代表部分结果的散列可以被合并以整体上形成RAID数据块的散列。例如,可以将RAID数据块A划分为两个数据段A1和A2。对A执行散列算法得到的结果与对A1和A2执行散列算法然后合并部分结果得到的结果相同。
在其它实施例中,如上所述,向非易失性存储设备210a-c广播散列请求302,非易失性存储设备210a-c确定该散列请求302影响了哪些数据单元,产生关于受影响数据单元的散列304a-c,并向诸如RAID控制器410之类的请求实体返回散列304a-c。在其它实施例中,非易失性存储设备210a-c可以向客户端208传送散列304a-c,而非向RAID控制器410传送。在该实施例中,输入模块312a-c可以确定非易失性存储装置214a-c包括作为散列请求302一部分的数据单元,并且指示散列模块314a-c产生数据单元的散列。然后,传输模块316a-c发送该散列至接收实体,例如RAID控制器410、客户端208、或者非易失性存储设备210a-c之一。
例如,RAID控制器410可以广播散列请求302,该散列请求302将数据块A标识为要去重的数据块。输入模块312a接收该散列请求302,并确定非易失性存储设备214a包括数据段A1,其中该数据段A1是RAID数据块A的段。传输模块316a将数据条A1的散列发送至接收实体,在特定实施例中,该接收实体可以是RAID控制器410、客户端208、或者包括数据段A2的非易失性存储设备210b。对于数据条A2,非易失性存储设备210b可以经历类似的过程。输入模块312c可以确定其保持有针对数据块A的奇偶条,并且确定不需要返回关于奇偶条的散列。在特定实施例中,散列模块314c不产生关于是奇偶段的数据单元的散列。在其它实施例中,非易失性存储设备210c可以产生奇偶段的散列。
在一个实施例中,散列产生过程顺序地进行,以产生RAID数据块的散列,其中使用在先结果按照指定的顺序产生各个散列。例如,RAID控制器410可以关于数据段A1向非易失性存储设备210a发送散列请求302a。RAID控制器410可以等待,一直到非易失性存储设备210a向RAID控制器410发送了数据分段A1的散列时,才向第二非易失性存储设备210b发送散列请求302b。然后,在特定实施例中,RAID控制器410向非易失性存储设备210b发送数据段A1的散列,非易失性存储设备210b在产生数据段A2的散列的过程中将该数据段A1的散列用作种子。
图5示出了用于RAID环境中改进的去重的系统500的第二实施例。系统包括:客户端208,其可以实质上与上述客户端208类似;和非易失性存储设备210a-c,被配置为RAID系统中的存储装置。如上所述,系统500可以被配置为RAID 0、RAID 5或其它RAID配置。系统500和描述作为示例给出,并非限制本发明。
在一个实施例中,RAID控制器功能位于非易失性存储设备210a-c中的一个或多个非易失性存储设备上。RAID控制器可以分布在非易失性存储设备210a-c之间。在所描述的实施例中,存储控制器212a-c中的每一个均包括RAID模块502a-c。David Flynn、John Strasser、JonathanThatcher和Michael Zappe于2007年12月6日提交的题为“Apparatus,System,and Method for a Front-end,Distributed RAID”的专利申请11/952,116教导了一种针对分布式RAID的方法,在此并入其全部以供参考。在一个实施例中,如前述申请在第268段至第345段中所教导的,RAID模块502a-c是前端分布式RAID装置。RAID模块502a-c可以是软件RAID或硬件RAID模块。
在一个实施例中,客户端208向非易失性存储设备210c发送散列请求302。在一个实施例中,客户端208可以知道主RAID模块502,并向主RAID模块502发送散列请求302。在所描述的实施例中,RAID模块502c可以是主RAID模块,并且从客户端208接收散列请求。在其它实施例中,客户端208可以向所有非易失性存储设备210a-c广播散列请求302,RAID模块502a-c适当地确定对如何处理散列请求302。例如,在一个实施例中,如果RAID模块502a-c确定与RAID模块502a-c相关联的非易失性存储设备210a-c不具有要去重的RAID数据块中的第一数据段,则RAID模块502a-c可以忽略散列请求302。
在特定实施例中,通过独立地产生关于数据条的子散列并合并子散列,无法产生RAID数据块的散列304;即,数据条A1的散列对于产生数据条A2等的散列是必要的,以此类推。因此,必须顺序地产生部分散列,以构建整个数据块的散列。
在一个实施例中,RAID模块502c确定非易失性存储设备210c具有要去重的特定数据块中的第一数据段。然后,RAID模块502c可以充当请求实体,并向输入模块312c发送散列请求302。在一个实施例中,请求实体(在该情况下,RAID模块502c)还可以发送种子。在该实施例中,种子模块(例如种子模块510a-c)接收该种子,并向散列模块314a-c提供该种子。散列模块413a-c使用该种子产生数据段的散列。
在特定实施例中,可以将种子作为散列请求302的一部分来发送。在其它实施例中,可以与散列请求302分离地发送种子。在一个实施例中,持有RAID数据块的第一数据段的非易失性存储设备210c不接收种子。在其它实施例中,针对持有第一数据段的非易失性存储设备210c的种子可以全部设为零的一组比特。
散列模块314c产生第一数据段的散列,传输模块316c向接收实体发送该数据段的散列。在一个实施例中,如在图5所示的实施例中,另外的非易失性存储设备210b是接收实体。在一个实施例中,传输模块316c将该数据段的散列作为散列请求302的一部分向非易失性存储设备210b发送。在一个实施例中,RAID模块502c知道第二数据段所处的位置,并且命令传输模块316c将第一数据段的散列作为散列请求一部分向具有第二数据段的实体(在该情况下,非易失性存储设备210b)发送。还可以由具有第二数据段的实体向RAID模块502c推送第一数据段的散列。在一个实施例中,传输模块510c还指示第一数据段的散列是用于产生第二段的散列的种子。
输入模块312b从非易失性存储设备210c接收散列请求302,其中从输入模块312b的角度看,非易失性存储设备210c是请求实体。种子模块510c接收种子,在该示例中,该种子是散列模块314c产生的关于第一数据段的散列。散列模块314b将第一数据段的散列用作种子,以产生在非易失性存储设备210b中存储的第二数据条的散列。
在一个实施例中,继续进行产生散列并向非易失性存储设备210a-c发送该散列以用作种子的过程,直到完成作为散列请求302的目标的数据块的完整散列。一旦产生了完整的散列,就将散列304发送至适当的实体。在一个实施例中,适当的实体是客户端208上的去重代理110。在其它实施例中,适当实体可以是一个或多个非易失性存储设备210c,例如具有主RAID模块502c的非易失性存储设备210c。
在特定实施例中,通过诸如网络或总线之类的通信连接来连接非易失性存储设备210a-c,该通信连接与将非易失性存储设备210a-c与客户端208相连的通信连接相分离。在该实施例中,非易失性存储设备210a-c可以彼此之间通信,而不对非易失性存储设备210a-c与客户端208之间的连接造成干扰或者增加业务量。因此,可以在非易失性存储设备210a-c上进行去重操作,而在将非易失性存储设备210a-c链接至客户端208的总线(或其它连接)负担最小。此外,在进行去重操作时,客户端208可以对非易失性存储设备210a-c执行其它读取和写入操作。在特定实施例中,可以中断或停止去重过程(包括散列的产生),以允许其它操作优先进行。因此,从数据路径去除去重操作改善了实用性和性能。
在一个实施例中,去重代理110位于非易失性存储设备210a-c上,而非客户端208上。在该实施例中,将非易失性存储设备210a-c与客户端208相连的通信连接上的业务量可以随着去重操作而进一步减少,相关的请求和数据只在将非易失性存储设备210a-c互连的通信连接上移动。去重代理110还可以位于系统400中的其它位置中,包括:在非易失性存储设备210a-c中的一个非易失性存储设备内、在RAID控制器410内、分布在多个非易失性存储设备210a-c或客户端208上,或者其它位置。
在特定实施例中,直到种子模块510a-c接收到种子散列并将该种子提供给散列模块314a-c之后,散列模块314a-c才产生在非易失性存储设备210a-c中存储的特定数据单元的散列。在一个实施例中,直到发送散列请求302,散列模块314a-c才接收种子并产生散列。因此,在一个实施例中,过程的流程可以是:第一输入模块310c接收散列请求302,第一种子模块510c接收种子;散列模块314c使用该种子产生散列;传输模块316c向非易失性存储设备210b发送该散列请求和用作种子的该散列。然后,对于在非易失性存储设备210c中存储的下一数据段,重复过程。
在其它实施例中,散列模块314a-c和种子模块510a-c可以在接收到针对数据块的散列请求302之前,产生并存储该数据块的散列。例如,RAID模块502c可以接收要存储的数据块A,并指示将数据段A1、A2和奇偶段A3存储到非易失性存储设备210a-c内。在一个实施例中,在非易失性存储设备210a-c上条带化数据块A之前,RAID模块502c命令散列模块314c产生关于数据块A的散列并将该散列存储到易失性或非易失性存储装置214c中。
在另一实施例中,在接收到散列请求302之前且在非易失性存储设备210a-c上条带化数据块之后,RAID模块502c可以命令散列模块314c产生数据块A的散列。在一个实施例中,RAID模块502c指示散列模块314c产生数据段A1的散列,并指示传输模块316c向存储了数据段A2的非易失性存储设备210b发送该散列,以用作种子。按照这种方式,RAID模块502c可以使用在非易失性存储设备210a-c中存储的数据段的部分散列,来协调对数据块A的散列的创建。RAID模块502c可以在非易失性存储装置214c中存储散列,以当请求实体请求数据块A的散列时进行获取。
在另一实施例中,RAID模块502c可以请求非易失性存储设备210a-b向RAID模块502c发送数据段。作为写入操作的一部分,或者结合写入操作,RAID模块502c还可以请求非易失性存储设备210a-b向客户端208发送数据段。然后,RAID模块502c可以组装数据块A,命令散列模块314c产生关于数据块A的散列,并在非易失性存储设备210a-c中存储该散列。然后,当请求实体请求数据块A的散列时,可以获取数据块A的散列。RAID模块502c可以等待,以在适宜的时间触发散列产生;例如,在发起散列的产生之前,RAID模块502c可以等待,直到在非易失性存储设备210a-c之间的通信连接上存在空闲周期和低业务量为止。在其它实施例中,RAID模块502c可以根据系统管理员限定的设定时间表来发起散列的产生。在其它实施例中,RAID模块502c将散列产生过程标识为低优先级过程,其中,只有在执行了高优先级过程(例如,数据单元的读取和写入)之后才执行所述低优先级过程。
在其它实施例中,在适宜的时间触发散列产生包括:结合其它操作产生散列。例如,可以结合以下操作来触发散列产生,针对数据单元的重建操作、逐步RAID操作、垃圾收集操作、备份操作、高速缓存加载操作、高速缓存刷新操作、数据刷洗操作、碎片整理操作、或影响特定数据单元的全部或部分的其它操作。
因此,在各种示例实施例中,RAID模块502c可以通过以下操作来协调在非易失性存储设备210a-c上条带化的RAID数据块的散列产生:将本地存储的数据段的散列与控制一起传送至本地存储了数据条的另一数据段的不同非易失性存储设备210b。RAID模块502c还可以通过以下操作来协调RAID数据块的散列产生:非易失性存储设备210a-b发送用于重构RAID数据块所必要的相关数据段,同时散列模块314c产生数据块的散列。
图6示出了RAID系统600的附加实施例,其中非易失性存储设备210a-d被配置为RAID。在一个实施例中,系统600包括如图4所示的RAID控制器410;在其它实施例中RAID控制器分布在非易失性存储设备210a-d上,作为如图5所示的RAID模块502。在所描述的实施例中,客户端208发送RAID数据块A,以存储在非易失性存储设备210a-d中。RAID数据块A可以是文件、对象、或者可以被客户端208存储在RAID系统中的其它数据集。在特定实施例中,系统600的RAID控制器410产生RAID数据块A的数据段610A-C。此外,RAID控制器410可以产生针对数据块A的奇偶段。
在一个实施例中,如在“Apparatus,System,and Method for aFront-end,Distributed RAID”中所描述的,非易失性存储设备210a-d中的一个或多个非易失性存储设备被配置为奇偶镜像存储设备。在其它实施例中,奇偶镜像分配可以在非易失性存储设备210a-d中旋转,旋转方式类似于奇偶分配在诸如RAID5之类的特定RAID配置中的旋转方式。在该实施例中,除了在非易失性存储设备210b-d上条带化数据段610A-B之外,RAID控制器410还可以将数据段610A-C写入奇偶镜像存储设备(图6中,是非易失性存储设备210a)。稍后,可以根据在非易失性存储设备210a上存储的数据段610A-C计算RAID数据块A的奇偶数据。在该实施例中,非易失性存储设备210a-d可以包括奇偶级数模块,所述奇偶级数模块产生奇偶数据,以在存储合并操作期间替换奇偶镜像存储设备(在图6所示的示例中,非易失性存储设备210a)上的数据段610A-C。
在一个实施例中,非易失性存储设备210a包括先前讨论的模块,使得非易失性存储设备210a可以结合奇偶产生过程产生散列。在一个实施例中,在存储合并操作期间,散列模块使用镜像奇偶存储设备上的数据段610A-C产生散列,其中存储合并操作根据数据段610A-C产生奇偶段。在一个实现中,奇偶级数模块是请求实体,所述请求实体发送散列请求,以触发关于数据段610A-C的散列产生。在另一实现中,类似地,执行存储合并操作并触发奇偶级数模块的实体被配置为以类似方式触发散列的产生。
在一个实施例中,产生与针对数据块A而产生的奇偶数据有关的散列。因此,奇偶级数模块可以产生数据段610A-C的奇偶,散列模块使用数据段610A-C的奇偶而非数据段610A-C本身,来产生散列。
在特定实施例中,存储在奇偶镜像设备上的数据段610A-C的散列被存储在奇偶镜像设备上。在其它实施例中,将数据条610A-C的散列存储在不同的非易失性存储设备210a-c上。在特定实施例中,可以选择非易失性存储设备210a-d之一来存储在系统600中存储的数据的散列。在其它实施例中,散列分布在系统600中的非易失性存储设备210a-d上。
图7示出了非易失性存储设备210的一个实施例,其中非易失性存储装置是固态存储装置702。固态存储装置702可以是NAND闪存、PRAM、SRAM或其它非易失性固态存储技术。在所描述的实施例中,固态存储装置702包括擦除块710a-c。此外,将存储控制器212描述为包括存储模块310、垃圾收集模块702、碎片整理模块706和散列产生装置230。在特定实施例中,散列产生装置230可以共享用于产生奇偶数据、DIF、CRC、校验或其它数据保护的逻辑的全部或部分。在其它实施例中,可以独立地实现散列产生装置230。
在多种存储设备中,例如在具有固态存储装置的非易失性存储设备210中,存储器可以得益于数据整理。数据整理涉及管理操作,所述管理操作包括:重新定位存储器(例如,固态存储装置702)内的数据以实现数据完整性、保存和设备管理,而与从非易失性存储设备210读取或写入数据单元的客户端无关。数据整理操作的示例包括垃圾收集以及逻辑或物理碎片整理。在一定数目的读取干扰之后移动数据的数据刷新操作也是数据整理操作。也可以由非易失性存储设备210提供其它数据整理操作。
很多固态存储器技术允许向页或扇区写入或者从页或扇区读出数据,其中页或扇是擦除块710a-c的子划分。然而,擦除操作发生在擦除块710a-c级;即,擦除擦除块710a-c中的所有页一起被擦除。固态存储器702一般不支持重写操作;即,当需要更新页中的数据时,必须将擦除块710a-c中的所有内容都读入缓冲器中,擦除整个擦除块710a-c,然后必须将整个擦除块710a-c的内容以及针对该特定页的已更新数据写回。这造成了固态存储装置702中不必要的延迟,以及对固态存储装置702不必要的磨损。
为了避免不必要的读取、擦除和写入,固态存储装置702的存储控制器212可以包括垃圾收集模块704。从广义的广度来讲,当更新页上的数据时,并不根据上述方法将更新后的数据存在相同的页中,而是将更新后的数据存储在不同的页中并将原始存储的数据标记为无效。一旦块内足够多的数据被标记为无效,垃圾收集模块704就从擦除块中移出余下的有效数据,并且对擦除块执行擦除操作,从而将擦除块710a-c改回成可用于存储。
垃圾收集模块704恢复擦除块710a-c,以用于存储。David Flynn,Bert Lagerstedt,John Strasser,Jonathan Thatcher,John Walker和MichaelZappe的题为“Apparatus,System,and Method for Storage Space Recoveryin Solid-state Storage”的编号为11/952,101的专利申请描述了固态存储装置702中的垃圾收集方法,在此并入作为参考。具体地,第200段至第210段讨论了垃圾收集。在一个实施例中,根据上述申请实现垃圾收集模块704。垃圾收集模块704还可以实现多种垃圾收集技术,已知这些垃圾收集技术对于固态存储装置702中的空间的恢复是有效的。
在所描述的实施例中,存储控制器212还包括去重代理110。去重代理110可以确定特定数据单元是否是已经在固态存储装置702中存储的数据单元的副本。在一个实施例中,去重代理110根据上述方法进行确定。去重代理110还可以使用多种方法,这些方法对于使用数据单元的散列来确定数据单元是否是在存储系统中存储的另一数据单元的副本而言是有效的。
在一个实施例中,去重代理110仅确定在固态存储装置702中存储的特定数据单元是否是在固态存储装置702中存储的另一数据单元的副本。在存在多个非易失性存储设备210的其它实施例中,去重代理110还确定特定数据单元是否是在另一非易失性存储设备中存储的数据单元的副本。在其它实施例中,例如图3所示,去重代理110可以位于非易失性存储设备210的外部。
在一个实施例中,在针对擦除块710a-c的垃圾收集过程中,垃圾收集模块704触发散列请求。擦除块710a-c可以是物理擦除块或逻辑擦除块。在一个实施例中,垃圾收集模块704是发送该散列请求的请求实体。在其它实施例中,垃圾收集模块704通过控制消息请求去重代理110发送该散列请求,在该情况下,去重代理110是请求实体。
在一个实施例中,垃圾收集模块714标识正在被恢复的擦除块610a-c中的所有有效数据单元。垃圾收集模块714确定哪些有效数据单元已经是去重操作的对象。在特定实施例中,垃圾收集模块714将还没有去重的有效数据单元放入缓冲器中,请求去重代理110对这些数据单元执行去重操作(确定数据单元是否是副本),并且等待结果。一旦去重操作完成,去重代理110就标识缓存中的哪些数据单元是副本,哪些不是副本。然后,垃圾收集模块704可以存储不是副本的有效数据单元,并且刷新缓冲器,而不用保存是副本的数据单元。
在一个实施例中,非易失性存储设备210在固态存储装置702中维持多于一个的附加点。在一个实施例中,存储模块310在一个附加点存储并未经历去重操作的所有输入的数据单元,在另一附加点存储已经历去重操作的所有输入的数据单元。特定擦除块710a-c可以包括未去重的数据和已去重的数据的混合。垃圾收集模块704可以被配置为:在垃圾收集过程中,将已去重的目标的数据单元移至一个附加点,而将未去重的数据单元移至另一附加点。因为尚未去重的数据单元与已去重的等价数据单元相比更可能是无效的,所以将类似数据单元存储在一起可以有助于改善固态存储装置702上的磨损。在该实施例中,垃圾收集模块704可以但非必须,作为垃圾收集操作的先驱或作为垃圾收集操作一部分来触发去重。
在一个实施例中,在发起垃圾收集过程之前,垃圾收集模块714请求执行去重操作。例如,一旦虚拟数据块内的一定数目的数据无效时,就可以发起垃圾收集。一旦特定数目的数据单元被标记为无效,垃圾收集模块704就可以发起对特定虚拟擦除块内的数据单元的去重操作。用于触发去重的阈值可以被设置为高于或低于用于垃圾收集的阈值。
在一个实施例中,垃圾收集模块704标识正处于垃圾收集中的擦除块710a-c内尚未去重的数据单元,并且触发对这些数据单元的去重操作。垃圾收集模块704可以将所述数据单元写入新擦除块710a-c中,而不用等待去重操作的结果。垃圾收集模块704还可以将擦除块710a-c内的每个数据单元标记为已经被去重。在这样的实施例中,在新擦除块710a-c中,被去重代理110确定为副本的数据单元被标记为无效,其中在垃圾收集期间数据单元被移至所述新擦除块710a-c。在一个实施例中,在附加点存储尚未去重的数据单元,而将新数据单元写入固态存储装置702。
在一个实施例中,非易失性存储设备210包括碎片整理模块706。碎片整理模块706检测高度碎化的数据单元,并且合并这些数据单元。例如,诸如文件之类的特定数据单元可以散布在多个分离的擦除块710a-c上。在一个实施例中,碎片整理模块706读取数据单元,并且通过更紧凑地存储数据单元来合并数据单元。在特定实施例中,碎片整理模块706可以结合对数据单元的碎片整理来触发去重操作。对于高度碎化的数据单元,可以将碎片整理模块706作为去重过程的一部分来调用。例如,已经接收到散列请求的输入模块312可以确定请求的散列所对应的数据单元是高度碎化的,并且命令碎片整理模块706产生该数据单元的散列,散列模块314执行碎片整理操作。
图8示出了包括主机802和存储装置120的系统800的附加实现。在图8所示的实施例中,非易失性存储设备210与主机802相连,并且包括高速缓存模块804。主机802可以是服务器、个人计算机、或其它计算设备。在所描述的实施例中,主机802包括文件服务器810和去重代理110。
主机802与存储装置120相连,使得主机802可以从存储装置120写入和读取数据。存储装置120可以是带、硬盘、固态存储装置或其它计算机可读存储介质。主机802可以通过总线、网络或其它机制与存储装置120相连,以允许主机802与存储装置120之间的数据传输。存储装置120可以在主机802的内部或外部。
在一个实施例中,非易失性存储设备210可以包括整理器模块820。整理器模块820对在非易失性存储设备210中存储的数据执行各种数据整理操作。在特定实施例中,整理器模块820包括结合图7描述的垃圾收集模块704和碎片整理模块706。整理器模块820可以与散列产生装置230协同工作,以结合数据整理操作来执行散列产生操作,使得在适宜时间产生散列。
在特定实施例中,非易失性存储设备210充当了多个客户端设备的高速缓存。例如,在一个实施例中,主机802与多个客户端相连,并且协调客户端发送的数据与客户端请求的数据在存储装置120上的存储。在这样的实施例中,主机802可以将非易失性存储设备210用作针对客户端800的整个系统的高速缓存。非易失性存储设备210可以是系统存储器的一部分,并且主机802可以包括多个非易失性存储设备210。非易失性存储设备210可以被配置为对于主机802而言表现为单个逻辑存储实体。
在一个实施例中,非易失性存储设备210是固态存储装置,其中,与存储装置120的访问参数相比,非易失性存储设备210的访问参数更快。在存储装置120是SAN或NAS的情况下,非易失性存储设备210可以充当针对SAN或NAS的高速缓存。高速缓存模块804实现了高速缓存算法,所述高速缓存算法确定何时从存储装置120获取数据并将数据移到非易失性存储设备210上,以及何时将数据从非易失性存储设备210移到存储装置120上。在一个实施例中,在非易失性存储设备210中保持定期访问的数据单元,而将变冷的数据单元移入存储装置120。
在所描述的实施例中,非易失性存储设备210包括散列产生装置230。散列产生装置230可以执行上述散列产生功能。在其它实施例中,散列产生装置230位于存储装置120中。在其它实施例中,散列产生装置230分布在多个设备上。
在所描述的实施例中,非易失性存储设备210包括高速缓存模块804。高速缓存模块804实现了针对非易失性存储设备210的高速缓存算法,并且确定何时应该将特定数据单元从非易失性存储设备210移到存储装置120上。在一个实施例中,高速缓存模块804还可以参与对去重代理110的去重处理的管理。
在一个实施例中,当数据单元要从非易失性存储设备210移到存储装置120上时,高速缓存模块804发起针对该数据单元的去重过程。在特定实施例中,在将数据单元移至存储装置120上之前,高速缓存模块804请求去重代理110确定该数据单元是否是副本。高速缓存模块804可以请求去重代理110管理该过程,并且当去重过程完成时简单地进行肯定应答。在其它实施例中,高速缓存模块804充当了请求实体,并且产生散列请求,散列请求被发送至输入模块312。
在一个实施例中,高速缓存模块804为去重代理110提供与在非易失性存储设备210中定期访问的数据单元相关的信息。例如,可以通过读取请求、写入请求或修改请求访问数据单元。高速缓存模块804可以将定期更新的特定数据单元标识为热数据,而将没有频繁更新的数据单元标识为冷数据单元。在特定实施例中,高速缓存模块804可以具有预定的访问次数(例如,每小时的访问),并且将计算得到的访问次数在预定访问次数以上的所有数据单元指定为热数据单元。
去重代理110可以被配置为:将被高速缓存模块804标识为数据去重的非理想候选的数据单元的任何数据单元上的去重操作延迟。在一个实施例中,高速缓存模块804将热数据单元标识为数据去重的非理想候选。在特定实施例中,如果数据单元是去重的非理想候选,则去重代理110可以延迟或拒绝对该数据单元的任何去重操作。在一个实施例中,高速缓存模块804命令去重代理110向非理想候选中添加特定数据单元和/或从非理想候选中去除特定数据单元。在其它实施例中,高速缓存模块804以规则的间隔发送非理想候选的更新列表,并且使用更新列表替代旧列表。
在一个实施例中,去重代理110以及上述其它模块不对高速缓存模块804标识为非理想候选的这些数据单元执行去重操作。例如,高速缓存模块804阻止对频繁更新的数据单元进行散列产生操作和去重操作。因为这些数据单元可能在很短时间内再次改变,所以对热数据单元执行去重可能是低效的。
在特定实施例中,高速缓存模块804与整理器模块820交换与哪些数据单元是去重的非理想候选相关的信息。在特定实施例中,整理器模块820页可以不请求对标识为非理想候选的数据单元进行散列产生操作,即使在对这些数据单元进行数据整理操作时。
在特定实施例中,数据单元可以存在于非易失性存储设备210和存储装置120中。还可以将数据单元固定在非易失性存储设备210中。在这样的实施例中,去重操作不必须从高速缓存中去除数据单元使得数据单元的仅一个拷贝被存储在系统中的任何地方;而是,去重操作允许系统维持的数据单元的已知副本。与之不同,如下文所讨论地,去重操作允许数据单元的单个逻辑拷贝的多个物理拷贝。被配置为高速缓存的非易失性存储设备210中的数据单元的拷贝以及存储装置120中存储的数据单元的拷贝可以是数据单元的单个逻辑拷贝的一部分。
图9示出了用于改进的去重的系统900的模型。在一个实施例中,系统900是基于块的系统。应用程序910使用系统调用接口912从非易失性存储设备210读取和写入数据。去重代理914为系统900执行数据去重操作。在特定实施例中,去重代理914是文件系统的一部分。该文件系统可以被虚拟化为具有两个部分:用户组件916和存储组件918。
典型地,文件系统为非易失性存储设备210中存储的数据单元提供一到多的映射。文件系统将数据单元标签(例如文件名、对象ID、信息节点、路径等)映射到在非易失性存储设备210中存储数据单元的多个位置(例如LBA或PBA)。用户组件916为应用程序910提供访问逻辑数据结构的接口,并且通常接收上述数据单元标签之一。因此,对于堆栈中在用户组件916以上的设备和应用程序,在很大程度上隐藏了存储数据单元的复杂性;例如,应用程序910只需要提供文件名,而不需要知道非易失性存储设备210中的数据单元的LBA或PBA的细节。
存储组件918将该数据单元标签映射到对存储数据单元的位置加以标识的多个位置。如上所述,多个位置可以是逻辑块地址(LBA)、诸如物理块地址(PBA)之类的物理地址等。因此,例如,用户组件916可以接收文件名作为数据单元标签,存储组件918使用多种数据结构将该文件名映射到LBA,在LBA处在非易失性存储设备210中存储与该文件名相关联的数据。存储组件918可以使用例如索引、映射表等数据结构执行关联。按照这种方式,数据单元标签可以标识在非易失性存储设备210中存储数据单元的多个位置。
在特定实施例中,非易失性存储设备210不具有足够的信息来确定数据单元标签与实际存储了数据的LBA或PBA之间的关系。例如,在图9所示的系统900中,非易失性存储设备210不包括关于存储组件918的信息。因此,如果非易失性存储设备210接收的数据单元标签标识符仅仅是文件名、对象ID或其它数据单元标签,则非易失性存储设备210没有足够的上下文信息来将该数据单元标签与LBA和/或PBA相关联。
在这样的实施例中,如上所述,对请求的散列所对应的数据单元加以标识的数据单元标识符可能不只是数据单元标签。在这样的实施例中,数据单元标识符可以是数据结构,所述数据结构包括所述一个或多个数据单元位置,所述一个或多个数据单元位置标识了请求的散列所对应的数据单元在非易失性存储设备210上的存储位置。例如,数据单元标识符可以是LBA的链表。数据单元标识符还可以是指定信息在设备上的存储位置的物理地址列表,例如柱面-磁头-扇区(CHS)值、PBA值或在数据存储设备中使用的其它值。
在一个实施例中,应用程序910请求将数据单元写入非易失性存储设备210。去重代理914接收该请求,并且产生针对该数据单元的写请求,通过所描述的层将该写请求发送至非易失性存储设备210。在一个实施例中,由去重代理914产生的写入请求不包括要写入的数据单元,但是包括针对该数据单元的散列请求。然后,非易失性存储设备210可以例如通过DMA操作从应用程序910接收该数据单元。非易失性存储设备210将该数据单元写入非易失性存储装置924,并且产生针对该数据单元的散列。然后,非易失性存储设备210可以产生数据单元被成功写入的肯定应答,所述肯定应答与针对该数据单元的散列一起被返回给去重代理914。在特定实施例中,以上讨论的传输模块将该散列作为肯定应答的一部分来发送。
图10示出了用于改进的去重的系统1000的模型的第二实施例。在所描述的实施例中,文件系统的存储组件918位于非易失性存储设备210中。在一个实施例中,系统1000是间接地址存储系统。在所示出的实施例中,去重代理914可以将数据单元标签用作向非易失性存储设备210发送的数据单元标识符。非易失性存储设备210可以接收该数据单元标签,并且将其与非易失性存储装置924上的数据单元位置进行适当的关联。
例如,去重代理914可以请求在非易失性存储设备210上存储的名为“fusion.pdf”的文件的散列。去重代理914可以将文件名“fusion.pdf”作为数据单元标签来发送,由非易失性存储设备210接收该文件名。在所描述的实施例中,非易失性存储设备210使用存储组件918来确定哪些LBA包括了针对fusion.pdf文件的数据。存储组件918包括将文件名与非易失性存储装置924中的数据单元位置相关联的数据结构,例如索引、表等。
在例如图10所示的实施例中,去重代理914可以提供针对数据单元的数据单元标签,非易失性存储设备210可以使用该数据单元标签来适当地确定该数据单元在非易失性存储装置924上的物理存储位置。在其它实施例中,例如图9所示的实施例中,去重代理914可能需要提供数据结构,该数据结构指定了请求的散列所对应的特定数据单元的数据单元位置(例如LBA和/或PBA)。
在特定实施例中,即使非易失性存储设备210包括诸如存储组件918之类的信息,非易失性存储设备210也可以接收指定了数据单元位置的数据结构,这在给出了数据单元标签的情况下将允许非易失性存储设备210确定数据单元位置。在特定实施例中,存储组件908可以存在于非易失性存储设备210的外部(如图9所示)以及非易失性存储设备210的内部(如图10所示)。
图11示出了去重代理110的一个实施例,去重代理110包括标识模块1102、请求模块1104、接收模块1106、去重模块1108、删除模块1110和更新模块1112。在一个实施例中,去重代理110被实现为在计算系统上工作的文件系统的一部分,该计算系统与非易失性存储设备相分离并通信地相连,并且与一个或多个远程计算设备相分离并通信地相连。还可以在非易失性存储设备上实现去重代理110。
标识模块1102对包括一个或多个非易失性存储设备的存储系统内的要去重的数据单元加以标识。在特定实施例中,例如,标识模块1102通过跟踪哪些数据单元被写入了非易失性存储设备以及哪些数据单元已被去重和尚未被去重,来协调所述一个或多个远程计算设备上散列的产生。在一个实施例中,当去重数据单元时,标识模块1102标记存储系统中存储的数据单元。在其它实施例中,非易失性存储设备跟踪哪些数据单元已经被去重以及哪些数据单元还没有被去重。在其它实施例中,发送要存储的数据单元的远程计算设备针对这些远程计算设备请求存储的每个数据单元产生散列;在这样的实施例中,可能没有必要跟踪哪些数据单元已经被去重以及哪些数据单元还没有被去重。
请求模块1104向存储系统中的非易失性存储设备发送散列请求,该散列请求指定了请求的散列所针对的特定数据单元。这种实施例可以被描述为“拉”配置,在“拉”配置中去重代理110从远程计算设备请求(拉)散列。如上所述,散列请求包括数据单元标识符,数据单元标识符标识了请求的散列所对应的数据单元。在特定实施例中,请求模块1104可以请求与数据单元的散列一起发送该数据单元。
在特定实施例中,去重代理110不需要数据单元的散列,而仅仅是接收由存储系统内的远程计算设备产生的散列。这种实施例可以被描述为“推”配置,在“推”配置中去重代理110接收散列,而无需请求散列。例如,远程计算设备可以是非易失性存储设备、请求存储数据单元的客户端设备、或者诸如桥接器、路由器、开关或其它网络设备之类的网络设备。
在特定实施例中,请求模块1104向远程计算设备(诸如非易失性存储设备、客户端设备等)发送与数据单元相关联的种子,该远程计算设备使用该种子来产生数据单元的散列。可以与散列请求一起发送种子;在其它实施例中,其它实体产生散列请求,请求模块1104仅提供种子。例如,在图4中,去重代理110的请求模块1104可以向非易失性存储设备210a-c发送种子。
接收模块1106从产生数据单元的散列的远程计算设备接收数据单元的散列;因此,去重代理110并不产生散列,而是仅仅是接收散列。因此,去重代理110不需要接触该数据单元来确定该数据单元是否是已有数据单元的副本。
副本模块1108通过使用由远程计算设备产生并由接收模块1106接收的散列,来确定数据单元是否是已经在存储系统中存储的已有数据单元的副本。在一个实施例中,副本模块1108维持在存储系统内存储的数据单元的散列表,并且将由接收模块1106接收的散列与在所述表中存储的其它数据单元的散列相比较。副本模块1108还可以使用其它数据结构和其它数据(例如数据单元元数据)来便于确定数据单元是否是副本。在特定实施例中,去重代理110接收数据单元元数据以及该数据单元的散列。
删除模块1100使存储系统中的非易失性存储设备维持该存储系统中的数据单元的单个逻辑拷贝。单个逻辑拷贝可以是要存储的数据单元,或者可以是已有数据单元。在一个实施例中,如果确定数据单元是在存储系统中存储的已有数据单元的副本,删除模块1100就发送删除数据单元的请求。可以向持有数据单元的远程计算设备发送删除请求。
在特定实施例中,删除模块1100可以使用与已有数据单元和数据单元的新接收版本有关的信息来决定要删除哪个数据单元。例如,在一个实施例中,删除模块1100与整理器模块820通信,以确定要删除哪个数据单元以及要在存储装置中保存哪个数据单元。例如,删除模块1100可以使用与如下信息来确定要删除哪个数据单元:已有数据单元在高速缓存中的读取、写入次数、存在与否,数据单元在存储系统的存储介质的各层中的存储位置,存储数据单元的区域中的错误率,以及其他参数。在一个实施例中,删除模块1110使用关于RAID环境的信息来确定是否保持已有拷贝或新拷贝。
因此,在存储系统中主要维持数据单元(例如文件)的仅单个逻辑拷贝。应该注意,在存储系统内可以存在多个物理拷贝——例如,当读取或操作数据单元时,在存储系统中(例如在非易失性存储设备、RAM等中)可以存在数据单元的多个物理拷贝,这些物理拷贝是操作中的固有的。此外,可以存在数据单元的多个物理拷贝,以提供冗余和故障保护。例如,存储系统可以具有镜像存储装置;因此,存储系统维持了单个逻辑拷贝,但却具有相应的物理拷贝以及在冗余存储装置中的另一物理拷贝。简而言之,在上述系统中,存在用于提供数据保护的计划冗余,但是却避免了不必要地使用诸如存储空间之类的系统资源的非计划冗余。
类似地,当发现数据单元是副本时,去重操作可以包括去除构成单个逻辑数据单元的多个物理拷贝。例如,如果特定文件是副本,则去重处理可以包括从如下位置去除该文件:SAN、针对SAN的高速缓存、后备存储装置和其它位置。类似地,去重处理可以包括进行适当的改变,以确保针对数据单元的这些物理拷贝的请求被重定向到所保持的数据单元的拷贝上。
在一个实施例中,删除模块1100命令非易失性存储设备删除数据单元,该数据单元的散列被请求并且该数据单元被确定是已有数据单元的副本。在其它实施例中,删除模块1100命令非易失性存储设备删除已有数据单元。
去重代理110还可以被配置为能够管理与数据单元相关的同步和锁定。例如,在多个客户端同时使用相同数据单元的情况下,去重代理110可能需要确保该数据单元没有被破坏。该过程的一部分可以包括智能地判定该数据单元何时不再是副本;即,当一个客户端改变了该数据单元使得其与其它客户端使用地数据单元不相同时。此外,去重代理110还可以智能地判定当多个客户端独立地访问数据单元时对该数据单元进行的高速缓存的处理。本领域技术人员将会想到可以解决同步和锁定问题的各种方法。
如果确定数据单元是存储系统中存在的数据单元的副本,则更新模块1112将该数据单元与已有数据单元相关联。在一个实施例中,更新模块1112改变索引,使得针对该数据单元和已有数据单元的请求被转发至相同的数据单元。例如,客户端可以请求被确定为已有数据单元的副本并因而从存储系统中删除的数据单元。更新模块1112可以更新索引,使得在截取请求时,删除模块1100将该请求重定向到相同数据单元,而远离已删除的数据单元。按照这种方式,去重代理110可以以对请求这些数据单元的客户端而言透明的方式从系统中去除作为副本的数据单元。
在一个实施例中,更新模块1112还维持了散列表,并且在副本模块1108确定数据单元不是已经在存储系统中存储的数据单元的副本的情况下,将该数据单元的散列添加到该散列表中。
图12示出了系统1200的一个实施例,该系统1200包括客户端1202a-b、存储管理器1204和非易失性存储设备210a-c。客户端1202a-b、存储管理器1204和非易失性存储设备210a-c可以通过总线或网络相连。在一个实施例中,这些组件通过SAN相连。客户端1202a-b可以是独立的计算机工作站、计算机服务器、服务器刀片、CPU核或从非易失性存储设备210a-c存取和获取数据的其它虚拟和/或物理的计算设备。系统1200可以具体是膝上型计算机、台式计算机、刀片服务器、群集或其它计算环境,并且可以实现直接附着存储(DAS)、NAS、SAN、存储类存储器(SCM)或其它存储解决方案。存储管理器1204管理客户端1202a-b与非易失性存储设备210a-c之间的控制路径。在一个实施例中,存储管理器1204包括文件服务器,并且如图12所示,还可以包括去重代理110。与图12所示的组件相比,可以存在更多或更少的客户端1202a-b、非易失性存储设备210a-c和存储管理器1204。类似地,在系统中可以存在多个去重代理110,并且去重代理110可以分布在多种系统组件上。
在一个实施例中,非易失性存储设备210a-c是基于块的存储装置。在另外的实施例中,非易失性存储设备210a-c是基于对象的存储装置。如上所述,非易失性存储设备210a-c能够产生在非易失性存储设备210a-c中存储的指定数据单元的散列。在所描述的实施例中,客户端1202a-b通过与控制路径相分离的数据路径直接向非易失性存储设备210a-c发送数据。在客户端1202a-b与存储管理器1204之间共享控制消息。类似地,在非易失性存储设备210a-c与存储管理器1204之间共享控制消息。
在一个实施例中,当客户端1202a-b需要将数据单元写入非易失性存储设备210a-c时,客户端1202a-b向存储管理器1204发送控制消息。存储管理器1204在准备写入操作时向非易失性存储设备210a-c发送控制消息。在一个实施例中,由存储管理器1204向非易失性存储设备210a-c发送的控制消息包括散列请求。
一旦非易失性存储设备210a-c准备好接收数据单元,客户端1202a-b就经由数据路径向非易失性存储设备210a-c发送数据。在特定实施例中,可以通过DMA/RDMA操作发送数据单元。在特定实施例中,作为响应,非易失性存储设备210a-c存储数据单元并产生散列。然后,非易失性存储设备210a-c可以使用控制路径发送数据单元被写入了存储管理器1204的肯定应答,并且发送将该数据单元的散列与该肯定应答一起发送。
在优选实施例中,从客户端1202a-b向非易失性存储设备210a-c传输数据单元,而不用去重代理110接触该数据;即,去重代理110不需要接收和/或制造数据单元的拷贝或近似拷贝来执行去重操作。去重代理110接收并产生控制消息,以支持去重。例如,去重代理110可以接收数据单元的散列,而不接收数据单元本身。
图13示出了产生数据单元的散列的方法1300的一个实施例,该方法用于诸如非易失性存储设备210a-c之类的非易失性存储设备。尽管方法1300示出了方法步骤可能出现的一种说明性的顺序,但是在各种实现中,可以对该方法步骤进行重新排序。方法1300以非易失性存储设备接收1302数据单元为开始。非易失性存储设备将该数据单元写入1304其非易失性存储装置中。非易失性存储设备可以是硬盘、固态存储装置(例如闪存)、或其它适宜的非易失性存储装置。方法1300还包括:非易失性存储设备产生1306该数据单元的散列。响应于非易失性存储设备从去重代理接收到散列请求(作为垃圾收集处理的一部分)或其它触发事件,可以作为写入处理的一部分来产生散列。
方法1300还可以包括存储1308该数据单元的散列。在一个实施例中,非易失性存储设备存储该散列。在另外的实施例中,与非易失性存储设备相分离但通过通信连接(例如网络或总线)相连的设备存储该散列。例如,在远程服务器上运行的去重代理可以在散列表中存储散列。
方法1300还可以包括接收1310散列请求,该散列请求请求数据单元的散列。如上所述,该散列请求还包括数据单元标识符,数据单元标识符对请求的散列对应的数据单元加以标识。方法1300还可以包括向接收实体发送1312该散列。在一个实施例中,该接收实体是产生散列请求的请求实体。在其它实施例中,该接收实体是不同的非易失性存储设备。
图14示出了用于改进的去重的方法1400的一个实施例。在一个实施例中,该方法被实现为计算机可读介质上的计算机程序,其中当执行该计算机程序时,所述计算机程序执行方法1400的步骤。在特定实施例中,方法1400可以包括除了所示步骤以外的附加步骤或比所示步骤更少的步骤。此外,方法1400的步骤执行的顺序可以根据图14所示的顺序而改变。
方法1400以标识1402要去重的数据单元为开始。在一个实施例中,由去重代理来标识要去重的数据单元。在其它实施例中,可以由存储数据单元的非易失性存储设备来标识数据单元。在特定实施例中,可以使用标记来标识已去重的数据单元和尚未去重的数据单元。例如,可以在与数据单元相关联的元数据中实现标记。
方法1400还包括:向非易失性存储设备发送1404散列请求。在一个实施例中,由去重代理使用控制路径来发送散列请求。可以在带内(inband)或带外(out of band)发送散列请求和散列本身以及数据单元本身。非易失性存储设备接收散列请求并发送散列。方法1400包括:接收由非易失性存储设备发送的数据单元的散列1406。
对于散列,方法包括:确定1408数据单元是否是在存储系统中存储的已有数据单元的副本。在一个实施例中,通过利用去重代理将该散列与在散列表中存储的散列相比较来进行这种确定。如果在散列表中存在相同的散列,则该数据单元是已有数据单元的副本。
如果该数据单元不是存储系统中的已有数据的副本,则将该数据单元的散列存储1408在数据结构中,以用于在将来确定该数据单元是否是副本。例如,可以在散列表中存储散列。如果数据单元是副本,则方法包括从存储系统中检测1410作为副本的数据单元之一。可以删除数据单元或已有数据单元。方法还包括将数据单元与已有数据单元相关联1412。例如,文件系统可以通过诸如表或索引之类的数据结构将数据单元与已有数据单元相关联。当针对删除的数据单元向文件系统提出请求时,文件系统使用将删除的数据单元与已有数据单元相关联的数据结构,以将请求重定向到已有数据单元。因此,去重操作按照对请求数据单元的客户端而言透明的方式去除作为副本的数据单元。
图15示出了用于改进的去重的存储系统1500的一个实施例。系统1500包括客户端1202、网络1512、非易失性存储设备210和存储装置120。在特定实施例中,系统1500包括附属于多个网络1512的多个客户端1202以及多个非易失性存储设备210。非易失性存储设备210可以是针对存储装置120的高速缓存,所述存储装置120可以是SAN、NAS、SCM或其它存储系统的一部分。例如,存储装置120可以是磁带备份、硬盘驱动器或其它非易失性存储介质。类似地,系统1500可以包括在不同计算设备上工作的多个去重代理110。在这样的实施例中,去重代理110可以共享信息,如,散列、与多种数据单元的去重状态相关的元数据以及其它信息。
如其它附图一样,图15仅示出了系统1500的一个实施例。在许多实施例中,系统1500可以包括多于一个的客户端1202、多于一个的非易失性存储设备210以及多于一个的存储装置120。图15仅仅是系统1500的一个实施例,可以包括比所示组件更多或更少的组件。此外,系统1500内的设备的布置可以改变。例如,存储系统120可以与网络1512直接相连、与非易失性存储设备210直接相连、或通过网络1512或某种其它方式与非易失性存储设备210相连。以上这些连接方式同样适用于客户端1202与其它设备直接的连接以及去重代理110与其它设备之间的连接。
典型地,带宽随着从CPU 1502向存储装置120的移动而下降,而延迟随着从CPU 1502向存储装置120的移动而增加。例如,CPU 1502处的操作可以利用高带宽和低延迟。而在存储装置120处执行的操作则必须导致与其相关的低带宽和高延迟。此外,在更高级别(例如在客户端1202中)产生数据单元的散列可以减少本来由于移动作为副本的数据单元而在网络1512与总线1508上产生的业务量。
在所描述的实施例中,客户端1202包括CPU1502、桥接器1504、SDRAM 1506、总线1508、固态存储装置702、RAID控制器410和NIC 1510。然而,所示配置是客户端1202的配置的一个示例。在不同实现中,客户端1202可以包括其它组件或更少的组件。在特定实施例中,客户端1202可以是虚拟计算设备。
在一个实施例中,散列产生装置230被实现为在计算机可读介质上存储的软件,并且由CPU 1502执行。在特定实施例中,如在多核CPU 1502中,由CPU 1502的一个核来处理对散列产生装置230的功能的执行。在这样的实施例中,散列产生装置230可以产生由客户端1202上运行的应用程序来处理的数据单元的散列,并且向去重代理110发送该散列。尽管去重代理110被描述为与网络1512相连,但是可以在存储系统1500中的不同位置实现去重代理110。如果去重代理110确定其接收的散列所针对的数据单元是副本,则CPU 1502不使该数据单元存储到非易失性存储设备210或存储装置120。通过对数据单元执行去重而不在总线1508和网络1512上移动数据单元,在CPU 1502处散列产生装置230的实现可以减少总线1508和网络1512上的业务量。
在其它实施例中,散列产生装置230可以被实现为以下组件上的硬件:客户端1202上的桥接器1504、总线1508、NIC1510或其它组件。例如,可以在客户端1202的北桥(也被称作存储器控制器集线器或集成存储器控制器)上实现散列产生装置230。在特定实施例中,可以将北桥物理地并入CPU 1502中。在特定实施例中,还可以在客户端1202上运行去重代理110。
散列产生装置230还可以软件、固件或硬件的形式被实现在客户端1202的不同位置。如上所述,在客户端1202处实现散列产生装置230或其部分,可以减少经由诸如网络1512之类的通信连接发送的业务量。在这样的实施例中,可能不需要从实现散列产生装置230的特定组件中传出数据单元。因此,可以减少移动通过存储系统1500的多余数据量。此外,散列可以被用作数据完整性字段。
在特定实施例中,散列产生装置230可以被实现在网络1512(例如,路由器、开关、桥接器或现有技术已知的其它网路组件)上,或者如上所详尽描述的,被实现在非易失性存储设备210上。可以将散列产生装置230以硬件、固件或软件的形式引入存储系统1500内的不同位置。
在特定实施例中,系统1500可以包括在系统内的不同位置实现的多个散列产生装置230,系统内的不同位置例如是客户端1202、网络1512、非易失性存储设备210和存储装置120。在这样的实施例中,当移动数据单元通过系统1500时,可以使用散列产生装置230来帮助证实和验证该数据单元。在一个实施例中,可以将散列与数据单元一起存储在存储装置120中。在具有散列产生装置230的系统1500中的一个或多个设备可以在数据单元移动通过系统时产生该数据单元的散列,并且将产生的散列与跟数据单元一起存储的散列相比较。
例如,当将数据单元和存储的散列从非易失性存储设备210移入网络1512时,在网络1512中实现了散列产生装置230并作为数据单元传输的一部分接收数据单元的拷贝和所述散列的一个或多个设备可以产生该数据单元的散列。然后,散列产生装置可以将产生的散列与存储的散列相比较,以证实该数据单元。在特定实施例中,如果散列不匹配,则散列产生装置230产生错误或中断,但是如果散列匹配,则散列产生装置230转发该数据单元和存储的散列。可以在网络1512中的不同位置重复该过程,也可以在客户端1202内的不同位置(如,NIC1510、总线或其它位置)重复该过程。
在特定实施例中,系统1500实现了散列传递协议,以使能系统中的去重代理110与系统中的散列产生装置之间的通信。散列传递协议可以是语言、是请求和响应的封装,并且可以是可扩展的。在一个实施例中,散列产生装置根据散列传递协议将散列打包,以传送至去重代理110。然后,散列产生装置向去重代理110发送该散列包,去重代理110接收该散列包并且解包出该散列。然后,去重代理110可以使用该散列来确定特定数据单元是否是副本。
类似地,散列产生装置可以使用协议与对等散列产生装置通信。如上所讨论的,散列产生装置可以与对等端传输诸如种子之类的信息。在一个实施例中,发送种子的散列产生装置将该种子打包,并且根据散列传递协议发送该种子。协议可以允许散列产生装置与对等端一样唯一地标识种子。还可以使用散列传递协议向对等端传输其它相关信息。
在一个实施例中,散列传递协议提供发现例程,该发现例程允许散列产生装置发现其对等端和去重代理110。在其它实施例中,管理员可以提供与去重代理110和对等端的位置有关的信息以及连接信息。可以使用多种方法来初始化散列产生装置/去重装置系统的组件之间的通信。
在一个实施例中,散列传递协议提供应用编程接口(API),该应用编程接口(API)指示了使用散列传递协议在交换组件之间交换信息的方式。API还可以提供方法和例程,其中可以调用所述方式和例程以便于去重和散列产生。
散列传递协议允许散列产生系统的组件(如,多个散列产生装置和去重代理110等)是广泛分布的、冗余的、位置上灵活的。散列传递协议可以提供需要的功能,这在系统中定位散列产生装置和去重代理110时给予了系统管理员或系统设计者灵活性。
在不背离本发明的精神或实质特征的情况下,可以以其它具体形式实现本发明。所描述的实施例应认为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而非前述描述来指示。在权利要求的等同含义和限度内的所有改变均包含在权利要求的范围内。

Claims (29)

1.一种用于在非易失性存储设备中产生在所述非易失性存储设备中存储的数据单元的散列的装置,所述装置包括:
输入模块,被实现在所述非易失性存储设备上,并且从请求实体接收散列请求,所述散列请求包括数据单元标识符,所述数据单元标识符标识了请求的散列所对应的数据单元;
其中数据单元标识符所标识的数据单元被存储在所述非易失性存储设备中,所述非易失性存储设备包括通过第一通信连接相连的存储控制器和非易失性存储装置,所述非易失性存储设备被配置为通过与第一通信连接相分离的第二通信连接来与一个或多个外部设备相连;
散列模块,被实现在所述非易失性存储设备上,并且在所述非易失性存储设备内产生由数据单元标识符标识的数据单元的散列;
其中散列标识了产生的散列所对应的数据单元;以及
传输模块,被实现在所述非易失性存储设备上,并且经由第二通信连接向接收实体发送散列。
2.如权利要求1所述的装置,其中所述数据单元标识符是:
数据单元标签,引用了所述非易失性存储设备上存储数据单元的一个或多个数据单元位置,其中所述非易失性存储设备包括将所述数据单元标签和所述一个或多个数据单元位置相关联的一个或多个数据结构;或者
包括一个或多个数据单元位置的数据结构,所述一个或多个数据单元位置标识了请求的散列所对应数据单元被存储在所述非易失性存储设备上的一个或多个位置。
3.如权利要求2所述的装置,其中所述数据单元标签是文件名、对象ID或信息节点,所述一个或多个数据单元位置是逻辑块地址或物理地址。
4.如权利要求1所述的装置,其中所述散列模块响应于输入模块从请求实体接收到散列请求,来产生数据单元的散列。
5.如权利要求1所述的装置,其中所述散列请求是用于将数据单元写入的请求的一部分。
6.如权利要求1所述的装置,其中所述传输模块发送散列作为肯定应答的一部分,所述肯定应答是:数据单元已被成功写入所述非易失性存储设备。
7.如权利要求1所述的装置,其中所述非易失性存储设备是RAID系统的一部分,所述RAID系统包括多个非易失性存储设备,其中数据单元是针对RAID数据块产生的RAID数据条的数据段。
8.如权利要求7所述的装置,还包括种子模块,所述种子模块执行以下操作:
接收用于产生散列的种子;以及
将种子提供至散列模块,所述散列模块响应于从种子模块接收到所述种子,来使用所述种子产生散列。
9.如权利要求8所述的装置,其中所述种子是RAID数据条的第一数据段的散列;所述散列模块使用所述种子产生RAID数据条的第二数据段的散列。
10.如权利要求9所述的装置,其中所述接收实体是具有RAID数据条的第二数据段的第二非易失性存储设备,所述散列是针对第二数据段的种子。
11.如权利要求7所述的装置,其中所述非易失性存储设备是奇偶镜像非易失性存储设备,所述奇偶镜像非易失性存储设备在本地存储RAID数据条的每个数据段,所述奇偶镜像非易失性存储设备的散列模块结合产生RAID数据条的奇偶段的操作来产生RAID数据条的散列,其中所述散列模块使用本地存储的数据段来产生散列。
12.如权利要求1所述的装置,其中所述请求实体响应于确定数据单元在高速缓存中下移至少一级,来发送散列请求。
13.如权利要求1所述的装置,其中所述请求实体响应于确定数据单元是数据整理操作的目标并且数据单元尚未被去重,来发送散列请求。
14.如权利要求13所述的装置,其中所述数据整理操作是垃圾收集操作、碎片整理操作或刷新操作。
15.如权利要求1所述的装置,其中所述接收实体是请求实体或第二非易失性存储设备。
16.如权利要求1所述的装置,其中所述请求实体在所述非易失性存储设备内部或在所述非易失性存储设备外部。
17.一种在计算设备上执行改进的去重操作的装置,所述装置包括:
接收模块,用于从通过网络与所述计算设备相连的一个或多个远程计算设备接收数据单元的散列,其中所述一个或多个远程计算设备产生数据单元的散列并且经由网络传输所述散列;
副本模块,用于在不接触数据单元的情况下确定数据单元是否是存储系统中已有数据单元的副本,其中使用由所述一个或多个远程计算设备提供的散列来进行所述确定;
删除模块,用于使存储系统中的一个或多个非易失性存储设备维持单个逻辑拷贝,所述单个逻辑拷贝是所述数据单元或所述存储系统中的已有数据单元;以及
更新模块,用于响应于确定所述数据单元是所述已有数据单元的副本,将所述数据单元与所述已有数据单元相关联,使得针对所述数据单元和所述已有数据的请求被指引到存储系统中存储的数据单元的逻辑拷贝。
18.如权利要求17所述的装置,还包括对所述一个或多个远程计算设备上散列的产生进行协调。
19.如权利要求17所述的装置,还包括以下模块中的至少一个:
请求模块,用于向一个或多个远程计算设备发送散列请求,所述散列请求请求数据单元的散列并且包括数据单元标识符;以及
所述接收模块,在没有向所述一个或多个远程计算设备请求散列的情况下,从所述一个或多个远程计算设备接收数据单元的散列。
20.如权利要求17所述的计算机程序产品,其中所述装置是在包括处理器和存储器的计算设备上工作的文件系统的一部分。
21.如权利要求17所述的计算机程序产品,所述请求模块还被配置为向所述一个或多个远程计算设备发送与数据单元相关联的种子,所述一个或多个远程计算设备使用所述种子产生数据单元的散列。
22.如权利要求17所述的装置,其中所述一个或多个远程计算设备是客户端设备,所述散列是在远程客户端设备的CPU、桥接器、总线、控制器、存储器或网络接口卡NIC中产生的。
23.一种用于改进的去重的系统,所述系统包括:
去重代理,通过使用数据单元的散列来确定所述数据单元是否是存储系统中的已有数据单元的副本,所述存储系统包括一个或多个非易失性存储设备,所述去重代理工作在第一计算设备上;
散列产生装置,用于产生数据单元的散列,所述散列产生装置工作在第二计算设备上,所述第二计算设备在第一计算设备的远程处并且通过通信连接与第一计算设备相连,所述散列产生装置包括:
输入模块,从请求实体接收散列请求,所述散列请求包括数据单元标识符,所述数据单元标识符标识了请求的散列所对应的数据单元;
散列模块,产生由所述数据单元标识符标识的数据单元的散列,其中所述散列标识了产生的散列所对应的数据单元;以及
传输模块,响应于所述输入模块接收到散列请求,向接收实体发送散列。
24.如权利要求23所述的系统,其中所述非易失性存储设备被配置为RAID系统,其中所述数据单元是针对RAID数据块而产生的RAID数据条的数据段。
25.如权利要求24所述的系统,还包括种子模块,所述种子模块执行以下操作:
接收用于产生散列的种子;以及
向散列模块提供种子,所述散列模块响应于从种子模块接收到所述种子,来使用所述种子产生数据条的散列。
26.如权利要求23所述的系统,其中所述请求实体是所述去重代理。
27.如权利要求23所述的系统,其中所述第一计算设备是非易失性存储设备、网络设备、网络接口卡NIC、RAID控制器、桥接器或总线,所述第二计算设备是非易失性存储设备、网络设备、网络接口卡NIC、RAID控制器、桥接器或总线。
28.如权利要求23所述的系统,其中,所述散列产生装置使用散列传递协议与去重代理通信。
29.如权利要求23所述的系统,还包括一个或多个附加散列产生装置,在数据存储操作和数据获取操作期间接触数据单元的每个设备的散列产生装置产生用于数据保护的散列。
CN201080048834.XA 2009-08-28 2010-08-27 用于改进的数据去重的装置、系统及方法 Active CN102598020B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/550,260 US20110055471A1 (en) 2009-08-28 2009-08-28 Apparatus, system, and method for improved data deduplication
US12/550,260 2009-08-28
PCT/US2010/047012 WO2011025967A2 (en) 2009-08-28 2010-08-27 Apparatus, system, and method for improved data deduplication

Publications (2)

Publication Number Publication Date
CN102598020A true CN102598020A (zh) 2012-07-18
CN102598020B CN102598020B (zh) 2016-12-21

Family

ID=43626529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080048834.XA Active CN102598020B (zh) 2009-08-28 2010-08-27 用于改进的数据去重的装置、系统及方法

Country Status (3)

Country Link
US (1) US20110055471A1 (zh)
CN (1) CN102598020B (zh)
WO (1) WO2011025967A2 (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103645940A (zh) * 2013-12-04 2014-03-19 清华大学 远程调用方法及系统
CN103970670A (zh) * 2013-01-31 2014-08-06 国际商业机器公司 用于使用rdma的数据传输的方法和设备
CN104049911A (zh) * 2013-03-14 2014-09-17 Lsi公司 存储设备辅助的数据去重复
CN104850872A (zh) * 2014-02-19 2015-08-19 恩智浦有限公司 传送数据的方法、计算机程序和标签
CN105094690A (zh) * 2014-05-09 2015-11-25 纬创资通股份有限公司 储存丛集化系统与提供对丛集式储存的存取的方法
CN105190526A (zh) * 2013-02-08 2015-12-23 微软技术许可有限责任公司 对用于非易失性存储设备的存储器重新编址
CN105659222A (zh) * 2013-11-27 2016-06-08 英特尔公司 用于计算消息摘要的系统和方法
CN106662980A (zh) * 2014-05-29 2017-05-10 桑迪士克科技有限责任公司 用于非易失性存储器中的分布式计算的系统和方法
CN107111528A (zh) * 2015-03-04 2017-08-29 闪迪技术有限公司 用于存储错误管理的系统和方法
CN107273397A (zh) * 2016-03-31 2017-10-20 三星电子株式会社 用于有效的存储器在线重复删除应用的虚拟桶多哈希表
CN107533443A (zh) * 2015-06-04 2018-01-02 英特尔公司 在半导体器件中提供多个根
CN107992269A (zh) * 2017-12-08 2018-05-04 华中科技大学 一种基于去重ssd的事务写入方法
CN108228083A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于数据去重的方法和设备
WO2018165959A1 (zh) * 2017-03-17 2018-09-20 深圳市秀趣品牌文化传播有限公司 电商数据清理系统及方法
CN109783010A (zh) * 2017-11-14 2019-05-21 三星电子株式会社 使用键值固态驱动器的数据去重
CN111435943A (zh) * 2019-01-14 2020-07-21 阿里巴巴集团控股有限公司 数据处理方法、设备、系统及存储介质
US11388233B2 (en) 2019-04-30 2022-07-12 Clumio, Inc. Cloud-based data protection service

Families Citing this family (215)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2414926A1 (en) * 2009-09-18 2012-02-08 Hitachi, Ltd. Storage system for eliminating duplicated data
US8380894B2 (en) * 2009-12-11 2013-02-19 International Business Machines Corporation I/O mapping-path tracking in a storage configuration
US9501365B2 (en) * 2009-12-28 2016-11-22 Netapp, Inc. Cloud-based disaster recovery of backup data and metadata
US9043548B2 (en) * 2010-01-28 2015-05-26 Cleversafe, Inc. Streaming content storage
US8402250B1 (en) * 2010-02-03 2013-03-19 Applied Micro Circuits Corporation Distributed file system with client-side deduplication capacity
US8627000B2 (en) * 2010-02-08 2014-01-07 Microsoft Corporation Virtual disk manipulation operations
US8650157B1 (en) * 2010-02-10 2014-02-11 Symantec Corporation Systems and methods for deduplicating data transferred via physical storage media
AU2010200866B1 (en) * 2010-03-08 2010-09-23 Quantum Corporation Data reduction indexing
US8108447B2 (en) * 2010-03-11 2012-01-31 Symantec Corporation Systems and methods for garbage collection in deduplicated data systems
US9442748B2 (en) 2010-03-17 2016-09-13 Zerto, Ltd. Multi-RPO data protection
US9389892B2 (en) 2010-03-17 2016-07-12 Zerto Ltd. Multiple points in time disk images for disaster recovery
US11256529B2 (en) 2010-03-17 2022-02-22 Zerto Ltd. Methods and apparatus for providing hypervisor level data services for server virtualization
US9710294B2 (en) 2010-03-17 2017-07-18 Zerto Ltd. Methods and apparatus for providing hypervisor level data services for server virtualization
US10649799B2 (en) 2010-03-17 2020-05-12 Zerto Ltd. Hypervisor virtual server system, and method for providing data services within a hypervisor virtual server system
US8453031B2 (en) * 2010-03-24 2013-05-28 International Business Machines Corporation Data deduplication using CRC-seed differentiation between data and stubs
US10447767B2 (en) 2010-04-26 2019-10-15 Pure Storage, Inc. Resolving a performance issue within a dispersed storage network
US8625635B2 (en) * 2010-04-26 2014-01-07 Cleversafe, Inc. Dispersed storage network frame protocol header
US8849773B2 (en) * 2010-04-28 2014-09-30 Dell Products L.P. Methods and apparatus for active optimization of data
US8244992B2 (en) * 2010-05-24 2012-08-14 Spackman Stephen P Policy based data retrieval performance for deduplicated data
US8924360B1 (en) 2010-09-30 2014-12-30 Axcient, Inc. Systems and methods for restoring a file
US9235474B1 (en) 2011-02-17 2016-01-12 Axcient, Inc. Systems and methods for maintaining a virtual failover volume of a target computing system
US8589350B1 (en) 2012-04-02 2013-11-19 Axcient, Inc. Systems, methods, and media for synthesizing views of file system backups
US8954544B2 (en) 2010-09-30 2015-02-10 Axcient, Inc. Cloud-based virtual machines and offices
US9705730B1 (en) * 2013-05-07 2017-07-11 Axcient, Inc. Cloud storage using Merkle trees
US10284437B2 (en) 2010-09-30 2019-05-07 Efolder, Inc. Cloud-based virtual machines and offices
US8443114B2 (en) * 2010-12-09 2013-05-14 Dell Products, Lp System and method for mapping a logical drive status to a physical drive status for multiple storage drives having different storage technologies within a server
US8966188B1 (en) * 2010-12-15 2015-02-24 Symantec Corporation RAM utilization in a virtual environment
US9442671B1 (en) * 2010-12-23 2016-09-13 Emc Corporation Distributed consumer cloud storage system
US8352447B2 (en) * 2011-03-01 2013-01-08 Hitachi, Ltd. Method and apparatus to align and deduplicate objects
EP2687974A4 (en) 2011-03-18 2014-08-13 Fujitsu Ltd STORAGE DEVICE, CONTROL DEVICE, AND CONTROL METHOD
US8756474B2 (en) * 2011-03-21 2014-06-17 Denso International America, Inc. Method for initiating a refresh operation in a solid-state nonvolatile memory device
US9223511B2 (en) 2011-04-08 2015-12-29 Micron Technology, Inc. Data deduplication
KR101954995B1 (ko) * 2011-04-27 2019-05-31 시게이트 테크놀로지 엘엘씨 저장 매체에 라이트 된 데이터 머지 방법, 저장 매체에 대한 라이트 동작 제어 방법, 이를 적용한 저장 장치, 컴퓨터 시스템 및 저장 매체
US8943315B1 (en) * 2011-06-08 2015-01-27 Google Inc. System and method for controlling the upload of data already accessible to a server
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US9069477B1 (en) * 2011-06-16 2015-06-30 Amazon Technologies, Inc. Reuse of dynamically allocated memory
JP5673396B2 (ja) * 2011-07-04 2015-02-18 富士通株式会社 情報処理システム、情報処理プログラム、情報処理方法
US8996800B2 (en) 2011-07-07 2015-03-31 Atlantis Computing, Inc. Deduplication of virtual machine files in a virtualized desktop environment
US8589640B2 (en) * 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
JP5509164B2 (ja) * 2011-08-18 2014-06-04 株式会社日立製作所 計算機、管理方法及びプログラム
US8825626B1 (en) * 2011-08-23 2014-09-02 Emc Corporation Method and system for detecting unwanted content of files
US8756249B1 (en) 2011-08-23 2014-06-17 Emc Corporation Method and apparatus for efficiently searching data in a storage system
US8620886B1 (en) 2011-09-20 2013-12-31 Netapp Inc. Host side deduplication
KR20130064518A (ko) * 2011-12-08 2013-06-18 삼성전자주식회사 저장 장치 및 그것의 동작 방법
WO2013095381A1 (en) * 2011-12-20 2013-06-27 Intel Corporation Method and system for data de-duplication
US9904565B2 (en) * 2012-02-01 2018-02-27 Veritas Technologies Llc Subsequent operation input reduction systems and methods for virtual machines
US9026503B2 (en) 2012-02-29 2015-05-05 Netapp, Inc. Fragmentation control for performing deduplication operations
US20130232124A1 (en) * 2012-03-05 2013-09-05 Blaine D. Gaither Deduplicating a file system
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
US9417811B2 (en) 2012-03-07 2016-08-16 International Business Machines Corporation Efficient inline data de-duplication on a storage system
US8788468B2 (en) * 2012-05-24 2014-07-22 International Business Machines Corporation Data depulication using short term history
US8762353B2 (en) * 2012-06-13 2014-06-24 Caringo, Inc. Elimination of duplicate objects in storage clusters
US9465737B1 (en) * 2012-07-02 2016-10-11 Toshiba Corporation Memory systems including a duplicate removing filter module that is separate from a cache module
WO2014051558A1 (en) * 2012-09-26 2014-04-03 Empire Technology Development Llc Shared secret identification for secure communication
US9785647B1 (en) 2012-10-02 2017-10-10 Axcient, Inc. File system virtualization
US9852140B1 (en) 2012-11-07 2017-12-26 Axcient, Inc. Efficient file replication
US9332083B2 (en) 2012-11-21 2016-05-03 International Business Machines Corporation High performance, distributed, shared, data grid for distributed Java virtual machine runtime artifacts
US9378179B2 (en) 2012-11-21 2016-06-28 International Business Machines Corporation RDMA-optimized high-performance distributed cache
US9569400B2 (en) 2012-11-21 2017-02-14 International Business Machines Corporation RDMA-optimized high-performance distributed cache
US8898118B2 (en) 2012-11-30 2014-11-25 International Business Machines Corporation Efficiency of compression of data pages
US8924425B1 (en) 2012-12-06 2014-12-30 Netapp, Inc. Migrating data from legacy storage systems to object storage systems
US9069472B2 (en) 2012-12-21 2015-06-30 Atlantis Computing, Inc. Method for dispersing and collating I/O's from virtual machines for parallelization of I/O access and redundancy of storing virtual machine data
US9277010B2 (en) 2012-12-21 2016-03-01 Atlantis Computing, Inc. Systems and apparatuses for aggregating nodes to form an aggregated virtual storage for a virtualized desktop environment
WO2014105019A1 (en) * 2012-12-27 2014-07-03 Empire Technology Development, Llc Virtual machine monitor (vmm) extension for time shared accelerator management and side-channel vulnerability prevention
US9158468B2 (en) * 2013-01-02 2015-10-13 International Business Machines Corporation High read block clustering at deduplication layer
CN103116618B (zh) * 2013-01-28 2015-09-30 南开大学 基于客户端持久缓存的远程文件系统镜像方法及系统
US9218314B2 (en) 2013-02-01 2015-12-22 International Business Machines Corporation Boosting remote direct memory access performance using cryptographic hash based approach
KR20140100113A (ko) * 2013-02-05 2014-08-14 삼성전자주식회사 저장 장치 및 그것의 데이터 처리 방법
US9430164B1 (en) * 2013-02-08 2016-08-30 Emc Corporation Memory efficient sanitization of a deduplicated storage system
US9317218B1 (en) * 2013-02-08 2016-04-19 Emc Corporation Memory efficient sanitization of a deduplicated storage system using a perfect hash function
US9372865B2 (en) * 2013-02-12 2016-06-21 Atlantis Computing, Inc. Deduplication metadata access in deduplication file system
US9250946B2 (en) 2013-02-12 2016-02-02 Atlantis Computing, Inc. Efficient provisioning of cloned virtual machine images using deduplication metadata
US9471590B2 (en) 2013-02-12 2016-10-18 Atlantis Computing, Inc. Method and apparatus for replicating virtual machine images using deduplication metadata
US9397907B1 (en) 2013-03-07 2016-07-19 Axcient, Inc. Protection status determinations for computing devices
US9292153B1 (en) 2013-03-07 2016-03-22 Axcient, Inc. Systems and methods for providing efficient and focused visualization of data
US9952969B1 (en) * 2013-03-14 2018-04-24 EMC IP Holding Company LLC Managing data storage
US9183142B2 (en) * 2013-03-15 2015-11-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing flash memory write amplification and latency
KR20150067583A (ko) * 2013-12-10 2015-06-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
KR102140792B1 (ko) 2013-12-24 2020-08-03 삼성전자주식회사 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들
US9305326B2 (en) * 2013-12-26 2016-04-05 Industrial Technology Research Institute Apparatus and method for tile elimination
US10031703B1 (en) * 2013-12-31 2018-07-24 Emc Corporation Extent-based tiering for virtual storage using full LUNs
US9141292B2 (en) * 2014-01-03 2015-09-22 Smart High Reliability Solutions Llc Enhanced interface to firmware operating in a solid state drive
US8935463B1 (en) * 2014-01-03 2015-01-13 Fastor Systems, Inc. Compute engine in a smart SSD exploiting locality of data
US20150213047A1 (en) * 2014-01-24 2015-07-30 Netapp Inc. Coalescing sequences for host side deduplication
US9946724B1 (en) * 2014-03-31 2018-04-17 EMC IP Holding Company LLC Scalable post-process deduplication
WO2015150976A1 (en) * 2014-04-03 2015-10-08 Strato Scale Ltd. Cluster-wide memory management using similarity-preserving signatures
US20150286414A1 (en) * 2014-04-03 2015-10-08 Strato Scale Ltd. Scanning memory for de-duplication using rdma
US20150312366A1 (en) * 2014-04-24 2015-10-29 Strato Scale Ltd. Unified caching of storage blocks and memory pages in a compute-node cluster
CN104239518B (zh) * 2014-09-17 2017-09-29 华为技术有限公司 重复数据删除方法和装置
CN107077456B (zh) 2014-09-25 2020-06-26 慧与发展有限责任合伙企业 用于存储数据的装置、方法和存储介质
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
WO2016068877A1 (en) * 2014-10-28 2016-05-06 Hewlett Packard Enterprise Development Lp Determine unreferenced page in deduplication store for garbage collection
US9652311B2 (en) 2014-10-28 2017-05-16 International Business Machines Corporation Optimization of non-volatile memory in message queuing
US20160162218A1 (en) * 2014-12-03 2016-06-09 International Business Machines Corporation Distributed data deduplication in enterprise networks
US9626121B2 (en) 2014-12-19 2017-04-18 International Business Machines Corporation De-duplication as part of other routinely performed processes
US10101938B2 (en) 2014-12-30 2018-10-16 International Business Machines Corporation Data storage system selectively employing multiple data compression techniques
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
CN106233265A (zh) 2015-02-26 2016-12-14 斯特拉托斯卡莱有限公司 将访问频率层次结构用于逐出目标的选择
US10416915B2 (en) * 2015-05-15 2019-09-17 ScaleFlux Assisting data deduplication through in-memory computation
US9665534B2 (en) 2015-05-27 2017-05-30 Red Hat Israel, Ltd. Memory deduplication support for remote direct memory access (RDMA)
US10019276B2 (en) 2015-05-27 2018-07-10 Red Hat Israel, Ltd. Dynamic non-uniform memory architecture (NUMA) locality for remote direct memory access (RDMA) applications
US9940337B2 (en) * 2015-05-31 2018-04-10 Vmware, Inc. Predictive probabilistic deduplication of storage
US9588767B2 (en) * 2015-06-25 2017-03-07 International Business Machines Corporation Silent store detection and recording in memory storage
US9697079B2 (en) 2015-07-13 2017-07-04 International Business Machines Corporation Protecting data integrity in de-duplicated storage environments in combination with software defined native raid
US20170052889A1 (en) * 2015-08-17 2017-02-23 Strato Scale Ltd. Cache-aware background storage processes
US10515055B2 (en) * 2015-09-18 2019-12-24 Netapp, Inc. Mapping logical identifiers using multiple identifier spaces
US10649974B1 (en) 2015-09-30 2020-05-12 EMC IP Holding Company User-level processes in a shared multi-tenant de-duplication system
US10380098B1 (en) 2015-09-30 2019-08-13 EMC IP Holding Company LLC Fine-grained shared multi-tenant de-duplication system
US9690512B2 (en) 2015-11-23 2017-06-27 Samsung Electronics Co., Ltd. Method of similarity testing by syndromes and apparatus therefore
US9846538B2 (en) 2015-12-07 2017-12-19 International Business Machines Corporation Data integrity and acceleration in compressed storage environments in combination with software defined native RAID
SG11201707075SA (en) 2015-12-29 2017-09-28 Huawei Tech Co Ltd Deduplication method and storage device
CN106933701A (zh) * 2015-12-30 2017-07-07 伊姆西公司 用于数据备份的方法及设备
US10222987B2 (en) 2016-02-11 2019-03-05 Dell Products L.P. Data deduplication with augmented cuckoo filters
US9575681B1 (en) 2016-04-29 2017-02-21 International Business Machines Corporation Data deduplication with reduced hash computations
US10558363B2 (en) 2016-08-09 2020-02-11 International Business Machines Corporation Hybrid compressed media in a tiered storage environment
US10664200B2 (en) 2016-08-30 2020-05-26 International Business Machines Corporation Directing read request with disk deduplication
US10691349B2 (en) 2016-10-28 2020-06-23 International Business Machines Corporation Mitigating data loss
US10635639B2 (en) * 2016-11-30 2020-04-28 Nutanix, Inc. Managing deduplicated data
US10417202B2 (en) 2016-12-21 2019-09-17 Hewlett Packard Enterprise Development Lp Storage system deduplication
US10228957B2 (en) 2017-01-20 2019-03-12 International Business Machines Corporation Online method handle deduplication
US10637648B2 (en) * 2017-03-24 2020-04-28 Micron Technology, Inc. Storage device hash production
US10795859B1 (en) 2017-04-13 2020-10-06 EMC IP Holding Company LLC Micro-service based deduplication
US10795860B1 (en) 2017-04-13 2020-10-06 EMC IP Holding Company LLC WAN optimized micro-service based deduplication
CN115129618A (zh) * 2017-04-17 2022-09-30 伊姆西Ip控股有限责任公司 用于优化数据缓存的方法和设备
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10496335B2 (en) * 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
US10860212B1 (en) 2017-07-21 2020-12-08 EMC IP Holding Company LLC Method or an apparatus to move perfect de-duplicated unique data from a source to destination storage tier
US11461269B2 (en) 2017-07-21 2022-10-04 EMC IP Holding Company Metadata separated container format
US10949088B1 (en) 2017-07-21 2021-03-16 EMC IP Holding Company LLC Method or an apparatus for having perfect deduplication, adapted for saving space in a deduplication file system
US10936543B1 (en) 2017-07-21 2021-03-02 EMC IP Holding Company LLC Metadata protected sparse block set for SSD cache space management
US10459633B1 (en) 2017-07-21 2019-10-29 EMC IP Holding Company LLC Method for efficient load balancing in virtual storage systems
US11113153B2 (en) 2017-07-27 2021-09-07 EMC IP Holding Company LLC Method and system for sharing pre-calculated fingerprints and data chunks amongst storage systems on a cloud local area network
US20190034282A1 (en) * 2017-07-28 2019-01-31 EMC IP Holding Company LLC Offline repopulation of cache
US10481813B1 (en) 2017-07-28 2019-11-19 EMC IP Holding Company LLC Device and method for extending cache operational lifetime
US10929382B1 (en) 2017-07-31 2021-02-23 EMC IP Holding Company LLC Method and system to verify integrity of a portion of replicated data
US11093453B1 (en) 2017-08-31 2021-08-17 EMC IP Holding Company LLC System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication
US10789002B1 (en) * 2017-10-23 2020-09-29 EMC IP Holding Company LLC Hybrid data deduplication for elastic cloud storage devices
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10664619B1 (en) 2017-10-31 2020-05-26 EMC IP Holding Company LLC Automated agent for data copies verification
US10659483B1 (en) * 2017-10-31 2020-05-19 EMC IP Holding Company LLC Automated agent for data copies verification
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
JP6552583B2 (ja) * 2017-11-29 2019-07-31 華為技術有限公司Huawei Technologies Co.,Ltd. データ重複排除方法及びストレージアレイ
US11132335B2 (en) * 2017-12-12 2021-09-28 Interset Software, Inc. Systems and methods for file fingerprinting
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US10838753B2 (en) * 2018-02-21 2020-11-17 Red Hat, Inc. Efficient memory deduplication by hypervisor initialization
WO2019183459A1 (en) * 2018-03-23 2019-09-26 Micron Technology, Inc. Storage device authenticated modification
US11153094B2 (en) * 2018-04-27 2021-10-19 EMC IP Holding Company LLC Secure data deduplication with smaller hash values
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US10877949B2 (en) * 2018-09-05 2020-12-29 International Business Machines Corporation Transaction monitoring through a dual-layer datastore based on a hash filter
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US11822489B2 (en) 2018-12-21 2023-11-21 Micron Technology, Inc. Data integrity protection for relocating data in a memory system
US11469881B2 (en) * 2018-12-26 2022-10-11 Korea Institute Of Science And Technology Apparatus and method for forgery prevention of digital information
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US10860420B2 (en) 2019-02-05 2020-12-08 Alibaba Group Holding Limited Method and system for mitigating read disturb impact on persistent memory
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11010077B2 (en) 2019-02-25 2021-05-18 Liveramp, Inc. Reducing duplicate data
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10783035B1 (en) 2019-02-28 2020-09-22 Alibaba Group Holding Limited Method and system for improving throughput and reliability of storage media with high raw-error-rate
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) * 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US10921987B1 (en) * 2019-07-31 2021-02-16 EMC IP Holding Company LLC Deduplication of large block aggregates using representative block digests
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US10997019B1 (en) 2019-10-31 2021-05-04 Alibaba Group Holding Limited System and method for facilitating high-capacity system memory adaptive to high-error-rate and low-endurance media
JP7323801B2 (ja) * 2019-11-06 2023-08-09 富士通株式会社 情報処理装置および情報処理プログラム
US11200159B2 (en) 2019-11-11 2021-12-14 Alibaba Group Holding Limited System and method for facilitating efficient utilization of NAND flash memory
US11119847B2 (en) 2019-11-13 2021-09-14 Alibaba Group Holding Limited System and method for improving efficiency and reducing system resource consumption in a data integrity check
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US20210303156A1 (en) * 2020-03-25 2021-09-30 Samsung Electronics Co., Ltd. Dynamic quantization in storage devices using machine learning
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
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)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11144319B1 (en) * 2020-07-28 2021-10-12 International Business Machines Corporation Redistribution of architected states for a processor register file
CN114077569B (zh) 2020-08-18 2023-07-18 富泰华工业(深圳)有限公司 压缩数据的方法及设备、解压缩数据的方法及设备
TWI758825B (zh) * 2020-08-18 2022-03-21 鴻海精密工業股份有限公司 壓縮資料之方法及設備、解壓縮資料之方法及設備
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11809282B2 (en) * 2020-09-29 2023-11-07 EMC IP Holding Company LLC Optimized pipeline to boost de-dup system performance
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11487664B1 (en) * 2021-04-21 2022-11-01 EMC IP Holding Company LLC Performing data reduction during host data ingest
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1512353A (zh) * 2002-12-27 2004-07-14 国际商业机器公司 性能改善的数据存储和方法
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
CN1577326A (zh) * 2003-07-23 2005-02-09 英特尔公司 高性能散列系统
US20050131900A1 (en) * 2003-12-12 2005-06-16 International Business Machines Corporation Methods, apparatus and computer programs for enhanced access to resources within a network
US20070005935A1 (en) * 2005-06-30 2007-01-04 Khosravi Hormuzd M Method and apparatus for securing and validating paged memory system
US7389393B1 (en) * 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
US20080183986A1 (en) * 2007-01-26 2008-07-31 Arm Limited Entry replacement within a data store
US20080276088A1 (en) * 2007-05-03 2008-11-06 Ahlquist Brent M Continuous isochronous read access and measurement of data stored in non-volatile memory
US20090089337A1 (en) * 2007-10-01 2009-04-02 Microsoft Corporation Efficient file hash identifier computation

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
WO1996025801A1 (en) * 1995-02-17 1996-08-22 Trustus Pty. Ltd. Method for partitioning a block of data into subblocks and for storing and communicating such subblocks
US6704730B2 (en) * 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US6795903B2 (en) * 2002-01-17 2004-09-21 Thomas Licensing S.A. System and method for searching for duplicate data
US6928526B1 (en) * 2002-12-20 2005-08-09 Datadomain, Inc. Efficient data storage system
US7424498B1 (en) * 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7281006B2 (en) * 2003-10-23 2007-10-09 International Business Machines Corporation System and method for dividing data into predominantly fixed-sized chunks so that duplicate data chunks may be identified
US7200604B2 (en) * 2004-02-17 2007-04-03 Hewlett-Packard Development Company, L.P. Data de-duplication
US7301448B1 (en) * 2004-04-30 2007-11-27 Sprint Communications Company L.P. Method and system for deduplicating status indications in a communications network
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US8165221B2 (en) * 2006-04-28 2012-04-24 Netapp, Inc. System and method for sampling based elimination of duplicate data
US8412682B2 (en) * 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US7921077B2 (en) * 2006-06-29 2011-04-05 Netapp, Inc. System and method for managing data deduplication of storage systems utilizing persistent consistency point images
US9465823B2 (en) * 2006-10-19 2016-10-11 Oracle International Corporation System and method for data de-duplication
US7920700B2 (en) * 2006-10-19 2011-04-05 Oracle International Corporation System and method for data encryption
US20080104146A1 (en) * 2006-10-31 2008-05-01 Rebit, Inc. System for automatically shadowing encrypted data and file directory structures for a plurality of network-connected computers using a network-attached memory with single instance storage
US8161353B2 (en) * 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
JP5026213B2 (ja) * 2007-09-28 2012-09-12 株式会社日立製作所 ストレージ装置及びデータ重複排除方法
US8074047B2 (en) * 2008-05-16 2011-12-06 International Business Machines Corporation System and method for content replication detection and elimination in main memory
US8099571B1 (en) * 2008-08-06 2012-01-17 Netapp, Inc. Logical block replication with deduplication
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
CN102378969B (zh) * 2009-03-30 2015-08-05 惠普开发有限公司 拷贝卷中存储的数据的去重复

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
CN1512353A (zh) * 2002-12-27 2004-07-14 国际商业机器公司 性能改善的数据存储和方法
CN1577326A (zh) * 2003-07-23 2005-02-09 英特尔公司 高性能散列系统
US20050131900A1 (en) * 2003-12-12 2005-06-16 International Business Machines Corporation Methods, apparatus and computer programs for enhanced access to resources within a network
US7389393B1 (en) * 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
US20070005935A1 (en) * 2005-06-30 2007-01-04 Khosravi Hormuzd M Method and apparatus for securing and validating paged memory system
US20080183986A1 (en) * 2007-01-26 2008-07-31 Arm Limited Entry replacement within a data store
US20080276088A1 (en) * 2007-05-03 2008-11-06 Ahlquist Brent M Continuous isochronous read access and measurement of data stored in non-volatile memory
US20090089337A1 (en) * 2007-10-01 2009-04-02 Microsoft Corporation Efficient file hash identifier computation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘德刚等: "P2P环境中的空间数据索引模型和生成算法研究", 《计算机工程与应用》 *

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970670A (zh) * 2013-01-31 2014-08-06 国际商业机器公司 用于使用rdma的数据传输的方法和设备
CN103970670B (zh) * 2013-01-31 2017-06-16 国际商业机器公司 用于使用rdma的数据传输的方法和设备
CN105190526A (zh) * 2013-02-08 2015-12-23 微软技术许可有限责任公司 对用于非易失性存储设备的存储器重新编址
CN105190526B (zh) * 2013-02-08 2018-03-30 微软技术许可有限责任公司 对用于非易失性存储设备的存储器重新编址
CN104049911A (zh) * 2013-03-14 2014-09-17 Lsi公司 存储设备辅助的数据去重复
CN105659222B (zh) * 2013-11-27 2019-09-17 英特尔公司 用于计算消息摘要的系统和方法
CN105659222A (zh) * 2013-11-27 2016-06-08 英特尔公司 用于计算消息摘要的系统和方法
US10120608B2 (en) 2013-11-27 2018-11-06 Intel Corporation System and method for computing message digests
CN103645940A (zh) * 2013-12-04 2014-03-19 清华大学 远程调用方法及系统
CN104850872A (zh) * 2014-02-19 2015-08-19 恩智浦有限公司 传送数据的方法、计算机程序和标签
CN104850872B (zh) * 2014-02-19 2018-01-02 恩智浦有限公司 传送数据的方法、计算机可读介质和标签
US9911014B2 (en) 2014-02-19 2018-03-06 Nxp B.V. Method of transferring data, computer program product and tag
CN105094690B (zh) * 2014-05-09 2018-05-15 纬创资通股份有限公司 储存丛集化系统与提供对丛集式储存的存取的方法
CN105094690A (zh) * 2014-05-09 2015-11-25 纬创资通股份有限公司 储存丛集化系统与提供对丛集式储存的存取的方法
CN106662980A (zh) * 2014-05-29 2017-05-10 桑迪士克科技有限责任公司 用于非易失性存储器中的分布式计算的系统和方法
CN107111528A (zh) * 2015-03-04 2017-08-29 闪迪技术有限公司 用于存储错误管理的系统和方法
CN107111528B (zh) * 2015-03-04 2021-06-08 闪迪技术有限公司 用于存储错误管理的系统和方法
CN107533443A (zh) * 2015-06-04 2018-01-02 英特尔公司 在半导体器件中提供多个根
CN107273397A (zh) * 2016-03-31 2017-10-20 三星电子株式会社 用于有效的存储器在线重复删除应用的虚拟桶多哈希表
CN107273397B (zh) * 2016-03-31 2022-02-18 三星电子株式会社 用于有效的存储器在线重复删除应用的虚拟桶多哈希表
US10936560B2 (en) 2016-12-21 2021-03-02 EMC IP Holding Company LLC Methods and devices for data de-duplication
CN108228083A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于数据去重的方法和设备
WO2018165959A1 (zh) * 2017-03-17 2018-09-20 深圳市秀趣品牌文化传播有限公司 电商数据清理系统及方法
CN109783010B (zh) * 2017-11-14 2021-06-01 三星电子株式会社 键值固态驱动器及在其上使用的去重方法
CN109783010A (zh) * 2017-11-14 2019-05-21 三星电子株式会社 使用键值固态驱动器的数据去重
US11194496B2 (en) 2017-11-14 2021-12-07 Samsung Electronics Co., Ltd. Data deduplication using KVSSD
CN107992269A (zh) * 2017-12-08 2018-05-04 华中科技大学 一种基于去重ssd的事务写入方法
CN111435943A (zh) * 2019-01-14 2020-07-21 阿里巴巴集团控股有限公司 数据处理方法、设备、系统及存储介质
CN111435943B (zh) * 2019-01-14 2022-07-19 阿里巴巴集团控股有限公司 数据处理方法、设备、系统及存储介质
US11388233B2 (en) 2019-04-30 2022-07-12 Clumio, Inc. Cloud-based data protection service

Also Published As

Publication number Publication date
CN102598020B (zh) 2016-12-21
US20110055471A1 (en) 2011-03-03
WO2011025967A2 (en) 2011-03-03
WO2011025967A3 (en) 2011-06-16

Similar Documents

Publication Publication Date Title
CN102598020A (zh) 用于改进的数据去重的装置、系统及方法
US10198356B2 (en) Distributed cache nodes to send redo log records and receive acknowledgments to satisfy a write quorum requirement
US9734027B2 (en) Synchronous mirroring in non-volatile memory systems
US8793531B2 (en) Recovery and replication of a flash memory-based object store
US7159150B2 (en) Distributed storage system capable of restoring data in case of a storage failure
US8819362B1 (en) Managing replication and reservations
US7774565B2 (en) Methods and apparatus for point in time data access and recovery
KR101694984B1 (ko) 비대칭 클러스터링 파일시스템에서의 패리티 산출 방법
US7844643B2 (en) Storage management system with integrated continuous data protection and remote copy
EP2879040B1 (en) Data storage method, data storage apparatus, and storage device
US20140208012A1 (en) Virtual disk replication using log files
US20110238625A1 (en) Information processing system and method of acquiring backup in an information processing system
US20080183988A1 (en) Application Integrated Storage System Volume Copy and Remote Volume Mirror
US7822827B2 (en) Continuous data protection and remote block-level storage for a data volume
CN107924354A (zh) 动态镜像
KR20150129839A (ko) 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피
CN105190622A (zh) 用于分布式数据库系统的快速崩溃恢复
CN102084360A (zh) 用于确认从数据存储设备读取正确的数据段的装置、系统和方法
CN104541252A (zh) 用于实现基于服务器的分层大容量存储系统的系统和方法
CN102084331A (zh) 在多处理器/多线程环境下协调存储请求的装置、系统和方法
US10803012B1 (en) Variable data replication for storage systems implementing quorum-based durability schemes
CN104583966A (zh) 用于去重复文件系统的备份和恢复系统以及对应的服务器和方法
US20110167233A1 (en) Computing system and backup method
JP6376626B2 (ja) データ格納方法、データストレージ装置、及びストレージデバイス
US20110320507A1 (en) System and Methods for Digest-Based Storage

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SANDISK CORPORATION

Free format text: FORMER OWNER: FUSION-IO INC.

Effective date: 20150512

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: Utah, USA

Applicant after: Iverson IO - LLC

Address before: Utah, USA

Applicant before: Fusion-io, Inc.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: FUSION MULTISYSTEMS INC TO: FUSION-IO INC.

Free format text: CORRECT: ADDRESS; FROM:

TA01 Transfer of patent application right

Effective date of registration: 20150512

Address after: Texas, USA

Applicant after: SANDISK TECHNOLOGIES Inc.

Address before: Utah, USA

Applicant before: Iverson IO - LLC

CB02 Change of applicant information

Address after: Texas, USA

Applicant after: SANDISK TECHNOLOGIES LLC

Address before: Texas, USA

Applicant before: SANDISK TECHNOLOGIES Inc.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant