CN109313538A - 内联去重 - Google Patents

内联去重 Download PDF

Info

Publication number
CN109313538A
CN109313538A CN201780036628.9A CN201780036628A CN109313538A CN 109313538 A CN109313538 A CN 109313538A CN 201780036628 A CN201780036628 A CN 201780036628A CN 109313538 A CN109313538 A CN 109313538A
Authority
CN
China
Prior art keywords
hash table
block
block number
data
target
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
CN201780036628.9A
Other languages
English (en)
Other versions
CN109313538B (zh
Inventor
M·沙玛
K·拉坦卡
D·N·帕瓦
V·特拉
K·N·斯里尼瓦桑
R·卡恩德尔瓦尔
A·沙玛
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.)
NetApp Inc
Original Assignee
NetApp Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NetApp Inc filed Critical NetApp Inc
Publication of CN109313538A publication Critical patent/CN109313538A/zh
Application granted granted Critical
Publication of CN109313538B publication Critical patent/CN109313538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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

提供了一种或多种用于内联去重的技术和/或计算设备。例如,校验和散列表和/或块号散列表可以被维护在存储器内(例如,存储控制器可以将散列表维护在核内)。校验和散列表可以用于内联去重以标识可以包括与传入存储操作相同的数据的潜在供体块。核内缓冲区高速缓存内的数据符合潜在的供体块,使得可以使用来自核内缓冲区高速缓存的数据来执行内联去重,这可以减少对核内缓冲区高速缓存被用于高速缓存的底层存储装置的盘访问。诸如对于不再适合作为潜在供体块的块(例如,删除的块、从核内缓冲区高速缓存中被去除的块等),块号散列表可以用于更新散列表或从散列表中移除条目。

Description

内联去重
相关申请
本申请要求于2016年4月26日提交的题为“INLINE DEDUPLICATION”的美国非临时专利申请No.15/138,435的优先权,其通过引用方式并入本文。
背景技术
许多存储环境可以实现用于改进存储效率的功能。例如,存储控制器可以托管存储虚拟机和多个虚拟机备份文件,这些虚拟机备份文件具有重叠的操作系统数据,该操作系统数据被存储为存储设备内的冗余数据块。存储冗余数据可能会浪费大量存储资源。因此,存储控制器可以实现去重以减少存储在存储设备内的冗余数据量。例如,存储控制器可以确定数据块是否已经存储在存储设备中。如果数据块已经存储在存储设备中,则存储控制器可以仅存储代替数据块的引用,该引用指向已经包括数据块的存储设备内的位置。
去重技术可以对已经存储在存储设备内的数据进行操作。遗憾的是,在去重期间访问存储设备会导致写放大和不必要的输入/输出(I/O)成本。写放大具有对诸如闪存存储或混合存储聚合SSD层的固态存储(SSD)设备的负面影响。因此,需要在对存储设备执行写操作和/或对存储设备的最小访问之前高效地执行去重,这可能有益于批量复制、虚拟机迁移、虚拟桌面基础结构修补、相同数据在短时间内被复制多次的场景等。
附图说明
图1是图示了根据本文阐述的一个或多个规定的示例性集群网络的组件框图。
图2是图示了根据本文阐述的一个或多个规定的示例数据存储系统的组件框图。
图3是图示了内联去重的示例性方法的流程图。
图4A是图示了用于内联去重的示例性计算设备的组件框图。
图4B是图示了用于内联去重的示例性计算设备的组件框图,其中对写操作的数据进行去重。
图4C是图示了用于内联去重的示例性计算设备的组件框图,其中针对写操作的数据,在校验和散列表和块号散列表内创建条目。
图4D是了图示了用于内联去重的示例性计算设备的组件框图,其中针对删除操作所针对的数据,从校验和散列表和块号散列表中移除条目。
图5是根据本文阐述的一个或多个规定的计算机可读介质的示例。
具体实施方式
现在参考附图描述所要求保护的主题的一些示例,其中在整个说明书中,类似的附图标记通常用于指代类似的元件。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对所要求保护的主题的理解。然而,显而易见的是,可以在没有这些具体细节的情况下实践所要求保护的主题。该详细描述中的任意内容均不被认为是现有技术。
本文提供了用于内联去重的一种或多种技术和/或计算设备。例如,校验和散列表和/或块号散列表在存储器(例如,核内存储器)中被维护,用于标识可用于存储操作数据(例如,将要通过写操作写存储装置的数据)的去重的潜在供体块。内联去重使用存储在核内缓冲区高速缓存中的潜在供体块(例如,最近在核内缓冲区高速缓存中写的尚未冲刷到存储设备的数据),在稍后将数据冲刷到磁盘之前诸如在一致性点期间,数据被缓存在核内缓冲区高速缓存中。当内联复制作为一致性点的一部分完成时,可以利用对接收者buftree和供体引用计数(refcounts)的批处理操作,则在批处理操作可以利用供体元数据和接收者buftree的引用的局部性的复制情况下是有用的。由于大多数复制是作为文件系统后端的一部分完成的,因此写路径中的客户端延迟影响被减少。
使用核内缓冲区高速缓存内的数据执行内联去重减少了磁盘访问量,否则会导致诸如针对SSD盘的写放大(例如,没有诸如读I/O的额外的I/O被执行到盘以进行字节到字节的比较目的,这将减轻读放大)。对新写的数据执行内联去重,而供体集合可以来自核内缓冲区高速缓存中最近写或读的块。在示例中,供体集合可以来自扩展高速缓存,诸如性能加速器模块(PAM)卡。减少对SSD的写的数目可以降低存储的维护和更换成本。由于校验和散列表和块号散列表被存储在存储器中,因此潜在的供体块查找被高效地执行。在一个示例中,散列表以持久方式保持在核心中,以避免中央处理单元(CPU)和盘资源,否则用于读磁盘上密钥值存储映射(或指纹数据库)。在示例中,校验和散列表可以实现为紧密散列存储,以便高速缓存行未命中在查找期间被最小化。大量的去重工作流可能与客户端写路径异步发生,因此客户端延迟受到的影响最小。在一个示例中,与文件系统类似的校验和可以用于指纹识别,以便校验和计算成本可以被摊销。去重可用于各种数据存储场景,诸如虚拟桌面基础设施结构修补、虚拟机迁移、数据复制(例如,在短时间内多次复制类似数据的工作负载)等。
为了提供内联去重的上下文,图1图示了集群网络环境100或网络存储环境的实施例。然而,可以理解,本文描述的技术等可以在集群网络环境100、非集群网络环境和/或诸如桌面计算环境的各种其他计算环境内实现。也就是说,包括所附权利要求的范围的立即的公开内容并不意味着限于本文提供的示例。应当理解,在后面的附图中图示了相同或相似的组件、元件、特征、项目、模块等,但是其关于先前的附图被预先讨论,当描述后续附图时(例如,出于简化和易于理解的目的)可以省略对相同内容的相似(例如,冗余)的讨论。
图1是图示可以实现本文描述的技术和/或系统的至少一些实施例的集群网络环境100的框图。集群网络环境100包括通过集群结构106耦合的数据存储系统102和104,诸如体现为私有Infiniband,光纤通道(FC)或以太网网络的计算网络,集群结构106促进数据存储系统102和104(以及其中的一个或多个模块、组件等,例如诸如节点116和118)之间的通信。应当理解,虽然图1中图示了两个数据存储系统102和104以及两个节点116和118,但是可以预期任意合适数目的这种组件。在示例中,节点116、118包括存储控制器(例如,节点116可以包括主要或本地存储控制器,并且节点118可以包括辅助或远程存储控制器),其向诸如主机设备108、110的客户端设备提供对数据存储设备128、130中存储的数据的访问。类似地,除非本文另外特别提供,否则对于本文引用和/或在附图中图示的其他模块、元件、特征、项目等也是如此。也就是说,本文公开的特定数目的组件、模块、元件、特征、项目等不意味着以限制方式解释。
将进一步理解,集群网络不限于任意特定地理区域,并且可以本地和/或远程集群。因此,在一个实施例中,集群网络可以分布在位于多个地理位置的多个存储系统和/或节点上;而在另一个实施例中,集群网络可以包括驻留在相同地理位置(例如,在数据存储设备的单个现场机架中)的数据存储系统(例如102、104)。
在所示示例中,可以包括例如客户端设备、个人计算机(PC)、用于存储的计算设备(例如存储服务器)、以及其他计算机或外围设备(例如打印机)的一个或多个主机设备108、110通过存储网络连接112、114耦合到相应的数据存储系统102、104。网络连接可以包括例如局域网(LAN)或广域网(WAN),其利用网络附加存储(NAS)协议,诸如用于交换数据分组的通用因特网文件系统(CIFS)协议或网络文件系统(NFS)协议、诸如小型计算机系统接口(SCSI)或者光纤通道协议(FCP)的存储区域网络(SAN)协议、诸如S3的对象协议等。示意性地,主机设备108、110可以是运行应用的通用计算机,并且可以使用用于信息的交换的客户机/服务器模型来与数据存储系统102、104交互。也就是说,主机设备可以从数据存储系统请求数据(例如,由被配置为处理由主机设备针对存储设备发出的I/O命令的网络存储控制所管理的存储设备上的数据),并且数据存储系统可以经由一个或多个存储网络连接112、114将请求的结果返回给主机设备。
集群数据存储系统102、104上的节点116、118可以包括作为集群被互连的网络或主机节点,以例如诸如向具有远程位置的企业、云存储(例如,存储端点可以被存储在数据云等中)等提供数据存储和管理服务。例如,集群网络环境100中的这种节点可以是附接到网络的设备,作为连接点、再分配点或通信端点。节点可以能够通过网络通信信道发送、接收和/或转发信息,并且可以包括满足任意或所有这些标准的任意设备。节点的一个示例可以是附接到网络的数据存储和管理服务器,其中服务器可以包括通用计算机或特别配置为作为数据存储和管理系统中的服务器操作的计算设备。
在一个示例中,诸如节点116、118的第一节点集群(例如,被配置为提供对包括一个或多个存储设备的第一逻辑分组的第一存储聚合的访问的第一存储控制器集合)可以位于第一个存储站点。未图示的第二节点集群可以位于第二存储站点(例如,第二存储控制器集合被配置为提供对包括一个或多个存储设备的第二逻辑分组的第二存储聚合的访问)。第一节点集群和第二节点集群可以根据灾难恢复配置来被配置,其中灾难在包括灾难集群节点的灾难存储站点处发生的情况下,幸存的节点集群提供对节点的灾难集群的存储设备的切换访问(例如,在第二存储站点发生灾难的情况下,第一节点集群向客户端设备提供对第二存储聚合的存储设备的切换数据访问)。
如集群网络环境100中所示,节点116、118可以包括协调以为集群提供分布式存储架构的各种功能组件。例如,节点可以包括网络模块120、122和数据模块124、126。网络模块120、122可以被配置为允许节点116、118(例如,网络存储控制器)通过存储网络连接112、114与主机设备108、110连接,例如允许主机设备108、110访问存储在分布式存储系统中的数据。此外,网络模块120、122可以通过集群结构106提供与一个或多个其他组件的连接。例如,在图1中,节点116的网络模块120可以通过第二节点118的数据模块126发送请求来访问第二数据存储设备130。
数据模块124、126可以被配置为将诸如盘或盘阵列、闪存或一些其他形式的数据存储装置的一个或多个数据存储设备128、130连接到节点116、118。节点116、118可以由集群结构106互连,例如允许集群中的各个节点访问连接到集群中的不同节点的数据存储设备128、130上的数据。通常,数据模块124、126根据诸如例如SCSI或FCP的SAN协议与数据存储设备128、130通信。因此,如从节点116、118上的操作系统所看到的,数据存储设备128、130可以表现为本地附接到操作系统。以这种方式,不同的节点116、118等可以通过操作系统访问数据块,而不是明确地请求抽象文件。
应当理解,虽然集群网络环境100图示了同等数量的网络和数据模块,但是其他实施例可以包括不同数目的这些模块。例如,可能存在在集群中互连的多个网络和数据模块,该集群在网络和数据模块之间不具有一对一的对应关系。也就是说,不同的节点可以具有不同数目的网络和数据模块,并且相同节点可以具有与数据模块不同数目的网络模块。
此外,主机设备108、110可以通过存储网络连接112、114与集群中的节点116、118联网。作为示例,联网到集群的各个主机设备108、110可以请求集群中的节点116、118的服务(例如,以数据分组的形式交换信息),并且节点116、118可以将所请求的服务的结果返回到主机设备108、110。在一个实施例中,主机设备108、110可以与驻留在数据存储系统102、104中的节点116、118(例如,网络主机)中的网络模块120、122交换信息。
在一个实施例中,数据存储设备128、130包括卷132,其是例如将信息存储到盘驱动器或盘阵列或其他存储装置(例如,闪存)上作为针对数据的文件系统的实现。例如,卷可以跨越盘的一部分、盘的集合或盘的多个部分,并且通常定义存储系统中的盘空间上的文件存储的整体逻辑布置。在一个实施例中,卷可以包括存储的数据作为驻留在卷内的分层目录结构中的一个或多个文件。
通常以可以与特定存储系统相关联的格式来配置卷,并且相应的卷格式通常包括向卷提供功能的特征,诸如向卷提供形成集群的能力。例如,在第一存储系统可以将第一格式用于其卷的情况下,第二存储系统可以将第二格式用于其卷。
在集群网络环境100中,主机设备108、110可以利用数据存储系统102、104来存储和取回来自卷132的数据。在该实施例中,例如,在该实施例中,例如主机设备108可以向数据存储系统102内的节点116中的网络模块120发送数据分组。节点116可以使用数据模块124向数据存储设备128转发数据,其中数据存储设备128包括卷132A。以这种方式,在该示例中,主机设备可以使用由网络连接112连接的数据存储系统102来访问卷132A,以存储和/或取回数据。此外,在该实施例中,主机设备110可以与数据存储系统104内的节点118中的网络模块122(例如,其可以远离数据存储系统102)交换数据。节点118可以使用数据模块126向数据存储设备130转发数据,从而访问与数据存储设备130相关联的卷132B。
可以理解,可以在集群网络环境100内实现内联去重。在示例中,节点116可以将校验和散列表和/或块号散列表存储在存储器中(例如,核内中),这可以用于使用存储在核内缓冲区内的潜在供体块来对数据进行去重,以便最小化对数据存储设备128的访问。可以理解,内联去重可以被实现用于任意类型的计算环境和/或在任意类型的计算环境之间实现,并且可以在物理设备(例如节点116、节点118、台式计算机、平板计算机、膝上型计算机、可穿戴设备、移动设备、存储设备、服务器等)和/或云计算环境(例如,远离集群网络环境100)之间传送。
图2是数据存储系统200(例如图1中的102、104)的示意性示例,提供了可以实现本文描述的技术和/或系统中的一个或多个的组件的实施例的进一步细节。数据存储系统200包括节点202(例如,图1中的主机节点116、118)和数据存储设备234(例如,图1中的数据存储设备128、130)。节点202可以是例如通用计算机,或者特别配置为作为存储服务器操作的一些其他计算设备。主机设备205(例如,图1中的108、110)可以通过网络216连接到节点202,例如以提供对在数据存储设备234上存储的文件和/或其他数据的访问。在示例中,节点202包括存储控制器,该存储控制器向诸如主机设备205的客户端设备提供对存储在数据存储设备234内的数据的访问。
数据存储设备234可以包括大容量存储设备,诸如盘阵列218、220、222的盘224、226、228。可以理解,本文描述的技术和系统不受示例实施例的限制。例如,盘224、226、228可以包括任意类型的大容量存储设备,包括但不限于磁盘驱动器、闪存、以及适于存储包括例如数据(D)和/或奇偶校验(P)信息的信息的任意其他类似介质。
节点202包括由系统总线242互连的一个或多个处理器204、存储器206、网络适配器210、集群访问适配器212和存储适配器214。数据存储系统200还包括在节点202的存储器206中安装的操作系统208,其可以例如实现独立(或廉价)磁盘冗余阵列(RAID)优化技术,以优化阵列中故障磁盘的数据的重建过程。
操作系统208还可以管理数据存储系统的通信,以及可以在集群网络中的诸如连接到集群结构215(例如,图1中的106)的其他数据存储系统之间的通信。因此,诸如网络存储控制器的节点202可以响应于主机设备请求以根据这些主机设备请求来管理数据存储设备234(例如,或附加的集群设备)上的数据。操作系统208通常可以在数据存储系统200上建立一个或多个文件系统,其中文件系统可以包括例如实现文件和目录的持久分层命名空间的软件代码和数据结构。作为示例,当将新数据存储设备(未图示)添加到集群网络系统时,操作系统208被通知与新数据存储设备相关联的新文件将被存储在现有目录树中的何处。这通常被称为“安装”文件系统。
在示例数据存储系统200中,存储器206可以包括可由处理器204和适配器210、212、214可寻址的以用于存储相关的软件应用程序代码和数据结构的存储位置。处理器204和适配器210、212、214可以例如包括处理元件和/或逻辑电路,其被配置为执行软件代码并操纵数据结构。操作系统208尤其通过调用存储操作以支持由存储系统实现的文件服务来在功能上组织存储系统,操作系统208的部分通常驻留在存储器206中并由处理元件执行。对于本领域技术人员来说显而易见的是,包括各种计算机可读介质的其他处理和存储器机制可以用于存储和/或执行与本文描述的技术有关的应用指令。例如,操作系统还可以利用一个或多个控制文件(未图示)来辅助虚拟机的供应。
网络适配器210包括通过网络216将数据存储系统200连接到主机设备205所需的机械、电气和信令电路,其可以尤其包括点对点连接或者共享媒体,诸如局域网。主机设备205(例如,图1的108、110)可以是被配置为执行应用的通用计算机。如上所述,主机设备205可以根据信息传递的客户端/主机模型与数据存储系统200交互。
存储适配器214与在节点202上执行的操作系统208协作以访问主机设备205请求的信息(例如,访问由网络存储控制器管理的存储设备上的数据)。该信息可以存储在任意类型的附加可写介质阵列上,诸如磁盘驱动器、闪存和/或适于存储信息的任意其他类似介质。在示例数据存储系统200中,信息可以存储在磁盘224、226、228上的数据块中。存储适配器214可以包括输入/输出(I/O)接口电路,其通过诸如存储区域网络(SAN)协议(例如,小型计算机系统接口(SCSI)、iSCSI、hyperSCSI、光纤通道协议(FCP))的I/O互连布置耦合到盘。该信息由存储适配器214取回,并且如果必要的话,在通过系统总线242转发到网络适配器210(和/或集群访问适配器212,如果发送到集群中的另一节点)之前由一个或多个处理器204(或存储适配器214本身)处理,其中信息被格式化为数据分组并通过网络216返回到主机设备205(和/或通过集群结构215返回到附接到集群的另一节点)。
在一个实施例中,盘阵列218、220、222上的信息存储可以实现为一个或多个存储卷230、232,其包括定义磁盘空间的整体逻辑布置的盘集群224、226、228。包括一个或多个卷的盘224、226、228通常被组织为一组或多组RAID。作为示例,卷230包括盘阵列218和220的聚合,其包括磁盘集群224和226。
在一个实施例中,为了促进对盘224、226、228的访问,操作系统208可以实现文件系统(例如,在任意地方写文件系统),该文件系统在逻辑上将信息组织为盘上目录和文件的分层结构。在该实施例中,相应文件可以被实现为被配置为存储信息的盘块集合,而目录可以被实现为其中关于其他文件和目录的信息被存储的特殊格式化的文件。
无论该数据存储系统200内的基础物理配置如何,数据都可以作为文件被存储在物理和/或虚拟卷中,其可以与诸如文件系统标识符(FSID)的相应卷标识符相关联,其可以是在一个示例中长度为32位。
物理卷对应于其地址、可寻址空间、位置等不改变的物理存储设备的至少一部分,诸如一个或多个数据存储设备234(例如,独立(或廉价)磁盘冗余阵列(RAID系统))中的至少一些。通常,物理卷的位置不会改变,因为用于访问它的地址(的范围)通常保持不变。
相反,虚拟卷存储在不同物理存储设备的不同部分的聚合上。虚拟卷可以是不同物理存储设备位置的不同可用部分的集合,诸如来自盘224、226和/或228中的每一个的一些可用空间。可以理解,因为虚拟卷不被“捆绑”到任意一个特定存储设备,可以说虚拟卷包括抽象或虚拟化层,这允许在某些方面调整其大小和/或灵活性。
此外,虚拟卷可以包括一个或多个逻辑单元号(LUN)238、目录236、Qtree 235和文件240。除此之外,这些特征,但更具体地说LUN,例如允许数据被存储的不同存储器位置被标识并且被分组为数据存储单元。这样,LUN 238可以被表征为构成虚拟盘或驱动器,虚拟卷内的数据被存储在聚合中的该虚拟磁盘或驱动器上。例如,LUN通常被称为虚拟驱动器,使得它们模仿来自通用计算机的硬盘驱动器,而它们实际上包括存储在卷的各个部分中的数据块。
在一个实施例中,一个或多个数据存储设备234可以具有一个或多个物理端口,其中每个物理端口可以被分配目标地址(例如,SCSI目标地址)。为了表示在数据存储设备上存储的各个卷,数据存储设备上的目标地址可以用于标识一个或多个LUN 238。因此,例如,当节点202通过存储适配器214连接到卷230、232时,节点202与该卷下面的一个或多个LUN238之间的连接被创建。
在一个实施例中,相应的目标地址可以标识多个LUN,使得目标地址可以表示多个卷。可以实现为存储适配器214中的电路和/或软件或者作为驻留在存储器206中并由处理器204执行的可执行代码的I/O接口例如可以通过使用标识一个或多个LUN 238的一个或多个地址连接到卷230。
可以理解,可以为数据存储系统200实现内联去重。在示例中,节点202可以将校验和散列表和/或块号散列表存储在存储器中(例如,核内),其可以用于使用存储在核内缓冲区内的潜在供体块来对数据进行去重,以便最小化对一个或多个数据存储设备234的访问。可以理解,内联去重可以被实现用于任意类型的计算环境和/或在任意类型的计算环境之间实现,并且可以在物理设备(例如节点202、主机设备205、台式计算机、平板计算机、膝上型计算机、可穿戴设备、移动设备、存储设备、服务器等)和/或云计算环境(例如远程到节点202和/或主机设备205)之间传送。
图3的示例性方法300图示了内联去重的一个实施例。在302,可以在存储器中维护校验和散列表(例如,由存储控制器在核内维护)。校验和散列表可以包括将指纹(例如存储在存储控制器的核内缓冲区高速缓存内的块(诸如4kb块)的指纹,诸如由alder32RAID校验和或基于校验和的强度选择以减少误报的散列冲突、CPU计算负载和/或校验和的大小的任意其他校验和或指纹技术创建的指纹)映射到与存储装置(例如,存储设备,诸如固态存储(SSD)设备、混合存储聚合的SSD层、或任意其他类型的存储介质)相关联的核内缓冲区高速缓存内的块的块数目(例如,虚拟卷块数目)的条目。例如,RAID层使用的校验和(例如,alder32)可以被重用以避免RAID层的校验和计算,因为内联去重计算的校验和可以被重用。此外,由RAID层计算的读路径校验和可以由内联去重直接使用,因此针对在散列表中的插入不存在重新计算。校验和散列表中的条目可以包括:数据块要从核内缓冲区高速缓存被写到的卷的卷标识符、块的虚拟卷块号、块的物理卷块号等。在混合存储聚合的示例中,校验和散列表可以被维护为写阶段块校验散列表和/或读高速缓存块校验和表。
在一个示例中,可以为校验和散列表指定指纹主键(例如,指纹可以是用于查询校验和散列表内的条目的主键,以便标识由这样的指纹表示的块的对应块号)。
在304处,校验和散列表可用于执行内联去重。例如,可以接收以存储装置为目标的写操作(例如,或任意其他存储操作)。可以对写操作的数据执行校验和操作(例如,指纹操作)以确定写操作的指纹。可以评估校验和散列表以确定写操作的指纹是否被映射到潜在供体块(例如核内缓冲区高速缓存内的可以包括与写操作的数据相同的数据的数据块)的块号(例如,虚拟卷块号)。潜在供体块可包括压缩数据或未压缩数据。
在一个示例中,可以检查潜在供体块的块号的引用计数值以查看引用计数值是否不超过阈值(例如否则潜在供体块可能被取消资格以用于去重)。响应于标识潜在供体块,可以做出关于潜在供体块是否驻留在核内缓冲区高速缓存中的确定。响应于驻留在核内缓冲区高速缓存内的潜在供体块,可以在将写操作写到存储器之前对写操作执行内联去重。例如,可以在写操作的数据和潜在的供体块的数据之间执行逐字节比较。如果逐字节比较指示写操作的数据和潜在供体块的数据相同,则可以执行内联去重(例如否则可以不执行内联去重)。在内联去重的示例中,可以将潜在供体块的虚拟卷块号和/或物理卷块号复制到接收者间接缓冲区,并且可以模仿用于写操作的盘写。可以理解,可以对写操作的数据执行任意类型的去重技术。响应于完成内联去重,可以递增块号的引用计数值。通过这种方式,可以使用核内缓冲区高速缓存内的数据内联地执行去重,同时最小化对存储装置的盘访问,因为逐字节比较是使用核内缓冲区高速缓存内的数据执行的。在一个示例中,诸如响应于在高速缓存的数据将从核内缓冲区高速缓存冲刷到存储装置的情况下遇到一致性点,可以针对一批写操作执行内联去重。
在校验和散列表内没有识别出潜在供体块的示例中,可以在校验和散列表内创建新条目。新条目可以将写操作的指纹映射到写操作的数据的新块号。
在306处,可以在存储器(例如,核内)中维护块号散列表。块号散列表可以包括将核内缓冲区高速缓存内的块的块号映射到指纹的条目。在示例中,校验和散列表可以被维护为用于标识潜在供体块的转发表,而块号散列表可以被维护为用于标识要在校验和散列表和/或块号散列表内更新或移除的条目的反向表,在308处。在一个示例中,可以为块号散列表指定虚拟卷主键(例如,虚拟卷块号可以是用于查询块号散列表内的条目的主键,以便于标识由这种虚拟卷块号引用的数据的对应指纹)。
在使用块号散列表的示例中,可以接收以存储装置为目标的删除操作。要通过删除操作删除的目标块作为用于去重的潜在供体块可能变得不合格。因此,可以评估块号散列表以确定块号散列表是否包括将删除操作的目标块号(例如,要通过删除操作删除的数据的虚拟卷块号)映射到目标指纹的目标条目。响应于标识目标条目,可以从校验和散列表中移除将目标指纹映射到目标块号的条目,并且可以从块号散列表中移除目标条目。
在使用块号散列表的另一示例中,目标块可以被确定为已经从核内缓冲区高速缓存中被去除。目标块可能变得不适合作为去重的潜在供体块。因此,可以评估块号散列表以确定块号散列表是否包括将目标块的目标块号映射到目标指纹的目标条目。响应于标识目标条目,可以从校验和散列表中移除将目标指纹映射到目标块号的条目,并且可以从块号散列表中移除目标条目。
在使用块号散列表的另一示例中,可以接收以存储装置为目标的重写操作。可以评估块号散列表以确定块号散列表是否包括将重写操作的目标块号映射到目标指纹的目标条目。响应于标识目标条目,可以在校验和散列表内更新将目标指纹映射到目标块号的条目,并且可以基于重写操作在块号散列表内更新目标条目。
图4A-4D图示了用于内联去重的系统400的示例。图4A图示了存储控制器402,其将诸如客户端数据的数据存储在底层存储装置410(例如混合存储聚合、固态存储设备或任意其他类型的存储)内。存储控制器402可以包括核内缓冲区高速缓存408,其中存储控制器402可以在将这样的数据写到底层存储装置410之前高速缓存数据。例如,存储控制器402可以在一致性点期间将诸如数据块(A)、数据块(B)和/或其他数据块的数据(例如由存储控制器402处理的写操作新创建或修改的数据)冲刷到底层存储装置410。
校验和散列表404和/或块号散列表406可以保持在存储控制器402的存储器内。校验和哈希表404可以包括将指纹(例如,数据的唯一标识符,诸如由alder32RAID校验和或任何其他散列、指纹或校验和创建技术创建的校验和)映射到核内缓冲区高速缓存408内的块的块号(例如,块(A)、块(B)等的虚拟卷块号和/或物理卷块号)的条目。例如,指纹(A)和卷ID(A)可以被映射到块(A)的虚拟卷块号(1)和物理卷块号(1),指纹(B)和卷ID(A)可以被映射到块(B)的虚拟卷块号(2)和物理卷块号(2)等。块号码散列表406可以包括将核内缓冲区高速缓存408内的块的块号(例如,块(A)、块(B)等的虚拟卷块号和/或物理卷块号)映射到指纹的条目。
图4B图示了存储控制器402接收写操作414,该写操作414将数据(B)写具有卷ID(A)的卷(A)。可以(例如,通过散列算法、指纹创建算法,校验和创建算法等)生成数据(B)的指纹。例如,可以从数据(B)生成指纹(B)。指纹(B)可用于查询校验和散列表404以确定条目416将指纹(B)和卷ID(A)映射到核内缓冲区408内的块(B)的虚拟卷块号(2)和物理卷块号(2)。因此,可以对写操作414的数据(B)执行内联去重418(例如,可以使用到块(B)的引用/指针来代替数据(B),用于随后将数据从核内缓冲区高速缓存408写到底层存储装置410,并且还共享核内块指针),并且虚拟卷块号(2)的引用计数可以被更新。
图4C图示了存储控制器402接收第二写操作420,该第二写操作420将数据(C)写具有卷ID(A)的卷(A)。可以(例如,通过散列算法、指纹创建算法、校验和创建算法等)生成数据(C)的指纹。例如,可以从数据(C)生成指纹(C)。指纹(C)可以用于查询校验和散列表404以确定校验和散列表404不包括将指纹(C)和卷ID(A)映射到核内缓冲区高速缓存408内的潜在供体块的块编号的任意条目(例如,数据(C)不存在于核内缓冲区408内)。因此,可以将数据(C)写核内缓冲区高速缓存408以创建块(C)428。将指纹(C)和卷ID(A)映射到块(C)428的虚拟卷块号(3)和物理卷块号(3)的新条目422可以在校验和散列表404内创建。将虚拟卷块号(3)和卷ID(A)映射到指纹(C)的新条目424可以在块号散列表406内创建。以这种方式,为校验和散列表404和/或块号散列表406内的数据(C)(例如,块(C)428)创建新条目426,用于后续的内联去重。
图4D图示了存储控制器402接收删除操作430,用于删除与和虚拟卷块号(3)相关联的块(C)428相对应的数据(C)。虚拟卷块号(3)和/或卷ID(A)可用于查询块号散列表406以确定虚拟卷块号(3)和卷ID(A)被新条目424映射到指纹(C)。因此,可以从校验和散列表404中删除新条目422,可以从块号散列表406中删除新条目424,和/或可以从核内缓冲区高速缓存408中删除块(C)428。
又一实施例涉及一种包括处理器可执行指令的计算机可读介质,所述处理器可执行指令被配置为实现本文中呈现的一种或多种技术。以这些方式设计的计算机可读介质或计算机可读设备的示例实施例在图5中图示,其中实现500包括其上编码有计算机可读数据506的计算机可读介质508,诸如可记录光盘(CD-R)、可记录数字多功能光盘(DVD-R)、闪存驱动器、硬盘驱动器盘等。诸如包括零或一中的至少一个的二进制数据的该计算机可读数据506进而包括处理器可执行计算机指令504,其被配置为根据本文阐述的原理中的一个或多个进行操作。在一些实施例中,处理器可执行计算机指令504被配置为执行方法502,诸如例如图3的示例性方法300中的至少一些。在一些实施例中,处理器可执行计算机指令504被配置为实现系统,诸如例如图4A-4D的示例性系统400中的至少一些。预期许多这样的计算机可读介质以根据本文呈现的技术操作。
应当理解,本文描述的过程、架构和/或程序可以以硬件、固件和/或软件实现。还应当理解,本文阐述的规定可以适用于任意类型的专用计算机(例如,文件主机、存储服务器和/或存储服务设备)和/或体现为或包括存储系统的通用计算机,包括独立计算机或其部分。此外,本文的教导可以被配置为各种存储系统架构,包括但不限于网络附接存储环境和/或直接附接到客户端或主计算机的存储区域网络和盘组件。因此,除了被配置为执行存储功能并与其他设备或系统相关联的任意子系统之外,存储系统应当广泛地包括这些布置。
在一些实施例中,本公开中描述和/或图示的方法可以全部或部分地在计算机可读介质上实现。计算机可读介质可以包括被配置为实现本文呈现的方法一个或多个的处理器可执行指令,并且可以包括用于存储此后可以由计算机系统读取的数据的任意机制。计算机可读介质的示例包括(硬)驱动器(例如,可经由网络附加存储(NAS)访问)、存储区域网络(SAN)、诸如只读存储器(ROM)、随机访问存储器(RAM)、电可擦除可编程只读存储器(EEPROM)和/或闪存的易失性和非易失性存储器、光盘只读存储器(CD-ROM)、CD-R、可重写光盘(CD-RW)、DVD、盒式磁带、磁带、磁盘存储器、光学或非光学数据存储设备和/或可用于存储数据的任意其他介质。
尽管已经用结构特征或方法动作专用的语言描述了本主题,但应理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上面描述的具体特征和动作是作为实现至少一些权利要求的示例形式而被公开的。
本文提供了实施例的各种操作。描述操作中的一些或全部的顺序不应被解释为暗示这些操作必须依赖于顺序。考虑到本说明书的益处,将理解替代排序。此外,应当理解,并非所有操作都必须存在于本文提供的每个实施例中。此外,应当理解,在一些实施例中并非所有操作都是必需的。
此外,所要求保护的主题被实现为使用标准应用或工程技术以生产软件、固件、硬件或其任意组合,以控制计算机实现所公开的主题的方法、装置或制品。本文使用的术语“制品”旨在涵盖可从任意计算机可读设备、载体或介质访问的计算机应用程序。当然,在不脱离所要求保护的主题的范围或精神的情况下,可以对该配置进行许多修改。
如在本申请中所使用的,术语“组件”、“模块”、“系统”、“接口”等通常旨在指代与计算机相关的实体,或者硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件包括在处理器上运行的进程、处理器、对象、可执行程序、执行的线程、应用程序或计算机。作为说明,在控制器上运行的应用程序和控制器两者都是可以是组件。驻留在进程或执行线程中的一个或多个组件和组件可以位于一台计算机上或分布在两台或多台计算机之间。
此外,“示例性”在本文中用于表示用作示例、实例、说明等,并且不一定是有利的。如在本申请中所使用的,“或”旨在表示包括性的“或”而非排他性的“或”。另外,本申请中使用的“一”和“一个”通常被解释为表示“一个或多个”,除非另有说明或从上下文清楚地指向单数形式。此外,A和B等中的至少一个通常表示A或B和/或A和B两者。此外,对于使用“包括”、“具有”、“有”、“具备”或其变体来说,这些术语旨在以与术语“包含”类似的方式是包括性的。
在不脱离所要求保护的主题的范围或精神的情况下,可以对本公开做出许多修改。除非另有说明,否则“第一”、“第二”等不旨在暗示时间方面、空间方面、排序等。相反,这些术语仅用作特征、元素、项等的标识符、名称等,例如,第一信息集合和第二信息集合通常对应于信息集合A和信息集合B或两个不同或两个相同的信息集合或相同的信息集合。
此外,尽管已经关于一个或多个实现示出并描述了本公开,但是对于本领域技术人员基于对本说明书和附图的阅读和理解将想到等同的改变和修改。本公开包括所有这些修改和变更,并且仅受所附权利要求的范围限制。特别地,关于由上述组件(例如元件、资源等)执行的各种功能,除非另有说明,否则用于描述这些组件的术语旨在与执行所描述组件的指定功能的任意组件相对应(例如在功能上等同的),即使在结构上不等同于所公开的结构。另外,尽管公开的特定特征可能仅关于若干实现中一个实现被公开,但是如对于任意给定或特定应用可能是期望的和有利的,这样的特征可以与其他实现的一个或多个其他特征组合。

Claims (22)

1.一种方法,包括:
由存储服务器维护存储器中的校验和散列表,所述校验和散列表包括将指纹映射到与所述存储装置相关联的核内缓冲区高速缓存内的块的块号的条目;
接收以所述存储装置为目标的写操作;
评估所述校验和散列表以确定所述写操作的指纹是否被映射到潜在供体块的块号;
响应于标识所述潜在供体块,确定所述潜在供体块是否驻留在所述核内缓冲区高速缓存中;以及
响应于所述潜在供体块驻留在所述核内缓冲区高速缓存中,在所述写操作被写到所述存储装置之前执行针对所述写操作的内联去重。
2.根据权利要求1所述的方法,其中执行内联去重包括:
更新针对所述块号的引用计数值。
3.根据权利要求1或2所述的方法,其中执行内联去重包括:
在所述写操作的数据和所述潜在供体块的数据之间执行逐字节比较。
4.根据任一前述权利要求所述的方法,其中如果针对所述块号的引用计数值不超过阈值,则所述内联去重被执行。
5.根据前述任一项权利要求所述的方法,还包括:
响应于未标识所述潜在供体块,在所述校验和散列表内创建新条目,所述新条目将所述写操作的所述指纹映射到所述写操作的数据的新块号。
6.根据任一前述权利要求所述的方法,其中所述内联去重包括:
将所述潜在供体块的虚拟卷块号和物理卷块号复制到接收者间接缓冲区;以及
模仿针对所述写操作的盘写入。
7.根据任一前述权利要求所述的方法,其中所述潜在供体块对应于压缩数据。
8.根据任一前述权利要求所述的方法,其中所述校验和散列表的条目包括与所述核内缓冲区高速缓存内的块相关联的卷标识符、虚拟卷块号、和物理卷块号。
9.根据任一前述权利要求所述的方法,还包括:
维护块号散列表,所述块号散列表包括将所述核内缓冲区高速缓存内的块的块号映射到指纹的条目。
10.根据权利要求9所述的方法,还包括:
接收以所述存储装置为目标的删除操作;
评估所述块号散列表以确定所述块号散列表是否包括将所述删除操作的目标块号映射到目标指纹的目标条目;以及
响应标识所述目标条目:
从所述校验和散列表中移除将所述目标指纹映射到所述目标块号的条目;以及
从所述块号散列表中移除所述目标条目。
11.根据权利要求9所述的方法,还包括:
确定目标块从所述核内缓冲区高速缓存中被去除;
评估所述块号散列表以确定所述块号散列表是否包括将所述目标块的目标块号映射到目标指纹的目标条目;以及
响应标识所述目标条目:
从所述校验和散列表中移除将所述目标指纹映射到所述目标块号的条目;以及
从所述块号散列表中移除所述目标条目。
12.根据权利要求9所述的方法,还包括:
接收以所述存储装置为目标的重写操作;
评估所述块号散列表以确定所述块号散列表是否包括将所述重写操作的目标块号映射到目标指纹的目标条目;以及
响应于标识所述目标条目,更新所述校验和散列表内将所述目标指纹映射到所述目标块号的条目。
13.根据权利要求12所述的方法,包括:
响应于识别所述目标条目,更新所述块号散列表内的所述目标条目。
14.根据权利要求9至13中任一项所述的方法,其中维护所述块号散列表包括:
指定针对所述块号散列表虚拟卷块号主键。
15.根据任一前述权利要求所述的方法,还包括:
响应于遇到其中高速缓存数据被冲刷到所述存储装置的一致性点,执行针对一批写操作的内联去重。
16.根据任一前述权利要求所述的方法,其中所述存储装置对应于包括固态存储层的混合存储聚合。
17.根据权利要求16所述的方法,还包括:
维护写分段块校验和散列表和读高速缓存块校验和表,以用于执行针对所述混合存储聚合执行内联去重。
18.根据任一前述权利要求所述的方法,其中维护校验和散列表包括:
指定针对所述校验和散列表的指纹主键。
19.一种非暂态机器可读介质,其上存储有用于执行包括机器可执行代码的方法的指令,所述机器可执行代码在由至少一个机器执行时使所述机器执行根据任一前述权利要求所述的方法。
20.一种非暂态机器可读介质,其上存储有用于执行包括机器可执行代码的方法的指令,所述机器可执行代码在由至少一个机器执行时使得所述机器:
在存储器中维护校验和散列表,所述校验和散列表包括将指纹映射到与存储装置相关联的核内缓冲区高速缓存内的块的块号的条目;
接收以所述存储装置为目标的写操作;
评估所述校验和散列表以确定所述写操作的指纹是否被映射到潜在供体块的块号;
响应于标识所述潜在供体块,确定所述潜在供体块是否驻留在所述核内缓冲区高速缓存中;
响应于所述潜在供体块驻留在所述核内缓冲区高速缓存中,在所述写操作的数据和所述潜在供体块的高速缓存数据之间执行逐字节比较;以及
响应于所述逐字节比较指示所述写操作的所述数据与所述潜在供体块的所述高速缓存数据相同:
在所述写操作被写到所述存储装置之前,执行针对所述写操作的内联去重;以及
更新针对所述块号的引用计数值。
21.一种计算设备,包括:
包含机器可读介质的存储器,所述机器可读介质包括机器可执行代码,在所述机器可读介质上存储有用于执行写操作的弹性复制方法的指令;以及
处理器,被耦合到所述存储器,所述处理器被配置为执行所述机器可执行代码以使所述处理器执行权利要求1到18中任一项所述的方法。
22.一种计算设备,包括:
存储器,包含机器可读介质,所述机器可读介质包括机器可执行代码,在所述机器可读介质上存储有用于执行写操作的弹性复制的方法的指令;以及
处理器,被耦合到所述存储器,所述处理器被配置为执行所述机器可执行代码以使得所述处理器:
维护存储器中的校验和散列表,所述校验和散列表包括将指纹映射到与存储装置相关联的核内缓冲区高速缓存内的块的块号的条目;
利用所述校验和散列表执行针对以所述核内缓冲区高速缓存中的块为目标的写操作的内联去重;
维护块号散列表,所述块号散列表包括将所述核内缓冲区高速缓存内的块的块号映射到指纹的条目;以及
利用块号散列表来识别条目以基于删除操作、重写操作和高速缓存去除操作来更新所述校验和散列表和所述块号散列表。
CN201780036628.9A 2016-04-26 2017-04-25 内联去重 Active CN109313538B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/138,435 2016-04-26
US15/138,435 US10585611B2 (en) 2016-04-26 2016-04-26 Inline deduplication
PCT/US2017/029242 WO2017189476A1 (en) 2016-04-26 2017-04-25 Inline deduplication

Publications (2)

Publication Number Publication Date
CN109313538A true CN109313538A (zh) 2019-02-05
CN109313538B CN109313538B (zh) 2021-11-19

Family

ID=58699270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780036628.9A Active CN109313538B (zh) 2016-04-26 2017-04-25 内联去重

Country Status (4)

Country Link
US (2) US10585611B2 (zh)
EP (1) EP3449351A1 (zh)
CN (1) CN109313538B (zh)
WO (1) WO2017189476A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101923661B1 (ko) * 2016-04-04 2018-11-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US10585611B2 (en) 2016-04-26 2020-03-10 Netapp Inc. Inline deduplication
CN109074226B (zh) * 2016-09-28 2020-03-20 华为技术有限公司 一种存储系统中重复数据删除方法、存储系统及控制器
US10402394B2 (en) * 2016-11-03 2019-09-03 Veritas Technologies Llc Systems and methods for flushing data in a virtual computing environment
US11644992B2 (en) * 2016-11-23 2023-05-09 Samsung Electronics Co., Ltd. Storage system performing data deduplication, method of operating storage system, and method of operating data processing system
US10361973B2 (en) 2017-06-15 2019-07-23 Cisco Technology, Inc. Multi-destination packet redaction
US10545696B2 (en) 2017-11-14 2020-01-28 Samsung Electronics Co., Ltd. Data deduplication using KVSSD
CN108415669A (zh) * 2018-03-15 2018-08-17 深信服科技股份有限公司 存储系统的数据去重方法及装置、计算机装置及存储介质
CN110427347A (zh) * 2019-07-08 2019-11-08 新华三技术有限公司成都分公司 重复数据删除的方法、装置、存储节点及存储介质
US11301427B2 (en) * 2019-10-15 2022-04-12 EMC IP Holding Company LLC Inline and post-process data deduplication for a file system
US11429573B2 (en) * 2019-10-16 2022-08-30 Dell Products L.P. Data deduplication system
US20220164311A1 (en) * 2020-11-23 2022-05-26 Microsoft Technology Licensing, Llc Weak references of allocated logical clusters

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8290972B1 (en) * 2009-04-29 2012-10-16 Netapp, Inc. System and method for storing and accessing data using a plurality of probabilistic data structures
CN103389882A (zh) * 2012-05-07 2013-11-13 国际商业机器公司 在计算环境中提高散列索引密钥查找高速缓存性能
US20140365449A1 (en) * 2013-06-06 2014-12-11 International Business Machines Corporation Inline learning-based selective deduplication for primary storage systems
CN104778193A (zh) * 2014-12-23 2015-07-15 北京锐安科技有限公司 数据去重方法及装置
CN105446895A (zh) * 2014-08-25 2016-03-30 北京云巢动脉科技有限公司 一种存储系统非同源数据运行时io去重的方法及系统
CN106257403A (zh) * 2015-06-19 2016-12-28 Hgst荷兰公司 用于关于数据传送的单通熵检测的装置和方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8849767B1 (en) * 2005-04-13 2014-09-30 Netapp, Inc. Method and apparatus for identifying and eliminating duplicate data blocks and sharing data blocks in a storage system
US8412682B2 (en) * 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US8099571B1 (en) * 2008-08-06 2012-01-17 Netapp, Inc. Logical block replication with deduplication
US8086799B2 (en) * 2008-08-12 2011-12-27 Netapp, Inc. Scalable deduplication of stored data
US9009429B2 (en) * 2009-03-30 2015-04-14 Hewlett-Packard Development Company, L.P. Deduplication of data stored in a copy volume
US8868520B1 (en) * 2012-03-01 2014-10-21 Netapp, Inc. System and method for removing overlapping ranges from a flat sorted data structure
EP2898424B8 (en) * 2012-09-19 2019-08-21 Hitachi Vantara Corporation System and method for managing deduplication using checkpoints in a file storage system
US10585611B2 (en) 2016-04-26 2020-03-10 Netapp Inc. Inline deduplication

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8290972B1 (en) * 2009-04-29 2012-10-16 Netapp, Inc. System and method for storing and accessing data using a plurality of probabilistic data structures
CN103389882A (zh) * 2012-05-07 2013-11-13 国际商业机器公司 在计算环境中提高散列索引密钥查找高速缓存性能
US20140365449A1 (en) * 2013-06-06 2014-12-11 International Business Machines Corporation Inline learning-based selective deduplication for primary storage systems
CN105446895A (zh) * 2014-08-25 2016-03-30 北京云巢动脉科技有限公司 一种存储系统非同源数据运行时io去重的方法及系统
CN104778193A (zh) * 2014-12-23 2015-07-15 北京锐安科技有限公司 数据去重方法及装置
CN106257403A (zh) * 2015-06-19 2016-12-28 Hgst荷兰公司 用于关于数据传送的单通熵检测的装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SRINIVASAN,K等: "iDedup:latency-aware,inline data deduplication for primary storage", 《IN FAST》 *

Also Published As

Publication number Publication date
WO2017189476A1 (en) 2017-11-02
US10585611B2 (en) 2020-03-10
US11010078B2 (en) 2021-05-18
CN109313538B (zh) 2021-11-19
US20170308320A1 (en) 2017-10-26
EP3449351A1 (en) 2019-03-06
US20200159432A1 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
CN109313538A (zh) 内联去重
US10795788B2 (en) Remote data replication method and system
US10698773B2 (en) Replicating a source data set to a target data store
US11461015B2 (en) Available storage space in a system with varying data redundancy schemes
JP6240071B2 (ja) ストレージシステムにおけるマッピングテーブルを効果的に管理するコンピューターシステムおよびその方法
US9454476B2 (en) Logical sector mapping in a flash storage array
US9043540B2 (en) Systems and methods for tracking block ownership
US8370593B2 (en) Method and apparatus to manage groups for deduplication
US20170075780A1 (en) Clustered raid assimilation management
US20200117362A1 (en) Erasure coding content driven distribution of data blocks
US20170149886A1 (en) Directory level incremental replication
CN106105161A (zh) 在维持存储效率的同时向云数据存储装置备份数据
CN107924354A (zh) 动态镜像
CN109313595B (zh) 跨平台复制
US11003558B2 (en) Systems and methods for sequential resilvering
US20190034103A1 (en) Remote direct memory access
US10620843B2 (en) Methods for managing distributed snapshot for low latency storage and devices thereof
US10031682B1 (en) Methods for improved data store migrations and devices thereof
US20190026038A1 (en) Remote direct memory access
US10331362B1 (en) Adaptive replication for segmentation anchoring type
US9111598B2 (en) Increased I/O rate for solid state storage

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant