CN108027713B - 用于固态驱动器控制器的重复数据删除 - Google Patents
用于固态驱动器控制器的重复数据删除 Download PDFInfo
- Publication number
- CN108027713B CN108027713B CN201680054387.6A CN201680054387A CN108027713B CN 108027713 B CN108027713 B CN 108027713B CN 201680054387 A CN201680054387 A CN 201680054387A CN 108027713 B CN108027713 B CN 108027713B
- Authority
- CN
- China
- Prior art keywords
- signature
- information
- ssd
- controller
- library
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0032—Serial ATA [SATA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种由控制器执行的用于固态驱动器的重复数据删除方法。控制器接收一个数据块的签名。控制器执行签名与所述签名库的信息的比较,并确定签名是否匹配该信息。控制器发送指示比较结果的信号。如果签名和信息匹配,则所述信号具有指示数据块已经存储在SSD上的第一值;如果签名和信息不匹配,则信号具有与第一值不同的第二值。
Description
技术领域
本发明涉及存储技术领域,具体涉及用于固态驱动器SSD的重复数据删除方法。本发明同时涉及一种固态驱动器SSD。
背景技术
当代商业在数据库中积累了巨大的数据(例如,PB,petabyte),这些数据库存储于诸如磁带,硬盘驱动器,固态驱动器(SSD)等各种介质中。法律规定,政府规则和规章,商业规则及最佳实践需要数据库经常存档并备份。结果,数千PB的数据已被存储,且存储的数据量不断激增。
重复数据删除方法和系统用于减少数据量以提高效率并降低成本。通常,重复数据删除系统会在不同的数据文件中找到相同的部分,并将这些相同的部分仅存储一次。重复数据删除系统也维护元数据,以便数据文件可以在稍后访问时组织和重建。然而,大量的数据被存储以检验现有重复数据删除方法和系统的极限。现有的重复数据删除方法和系统适用于数PB的数据,但并不适用于数千PB量级数据量的数据。
使用固态硬盘SSD(替代其它存储介质,例如随机存取存储器(RAM))来存储大量数据带来了一些挑战。SSD相对于例如双数据速率三型同步动态随机存储器(double datarate type three synchronous dynamic RAM,DDR3 DRAM)有较长的读取和写入延迟。并且,SSD在写入之前会被擦除,并且在耗尽之前只能擦除有限的次数。
在另一方面,固态硬盘具有很多优点,使它们成为存储大量数据的不错选择。对于重复数据删除,文件被分割成通常称为与元数据相关联的“块(chunks)”(例如,4千字节(KB),16KB或256KB块)的块(blocks)或片段。每个独有的块都与其元数据一起存储。元数据的大小例如可以是16字节(B),32B,128B或256B。对于512PB数据,假设每个块的大小为16KB,并假定每块的元数据为32B,元数据的存储空间为一个PB。使用RAM来存储这些数据是不实际的,但使用SSD是有效的。
而且,为了满足上述法规和要求,元数据需要被硬写入到存储器中。当RAM的电源断电或中断时,RAM所保存的数据将丢失。SSD使用基于NAND的闪速存储器,例如,其无需电源保持数据。
因此,SSD的优势包括其容量和非易失性。为了缓解其较长的访问时间(读取和写入延迟),数据并行写入。每个SSD读/写操作的基本单位被称为页面。对于16KB的页面大小,假设每块大小为128B的元数据,则可以在页面内并行读取或写入128个块的元数据。
针对每块中的元数据包括唯一标识该块的哈希值或签名。因此,为了确定是否有必要存储新的块(以确定先前是否存储了相同的块),可以将新块的签名与已经存储的块的签名进行比较。如果新块的签名与现有签名相匹配,则新的块无需被存储。
如上所述,一SSD读/写操作的基本单元是页面。为获得一块的签名与其它签名进行比较,整个页面(例如,16K字节)被读出并由SSD传输至中央处理单元(CPU)。该传输会占用CPU以及内存带宽和总线带宽的大量资源。
更具体地,具有要存储在存储服务器上的数据的客户端将数据分成块并计算每个块的签名。在一实现中,客户端将每个签名发送到签名服务器,该签名服务器包含已存储在存储服务器上的块的签名库。签名服务器的作用是确定来自客户端的签名是否与签名库中的任何签名相匹配。为了达到此目的,针对每个签名将整个页面(例如,16KB)传输到内存中,并且CPU将在页面内定位和提取签名并将提取的签名与来自客户端的签名进行比较。但是,签名可能只有32B的大小。因此,要获得签名与其它签名进行比较,高达所需数据500倍的数据被读出并被传输(例如,16KB的数据被读取以获得32B签名)。
此外,基于请求签名比较的客户端的数量和签名服务器的数量,可以估计每个签名服务器的比较数量。每个比较至少需要两次输入/输出(I/O)访问,因此,还可以估计每个签名服务器的每秒I/O操作数(IOPS)。考虑到CPU和SSD功能,IOPS要求变得非常大,需要大量的签名服务器,而且还需要使用更昂贵的、更高带宽的快速外设组件互连标准(PCIe)SSD来提供必要的容量。
总之,传统的重复数据删除的方法是低效的、昂贵的,并且占据大量的CPU、存储器和总线的资源。
发明内容
根据本发明的实施例,通过在SSD中完成签名比较来解决上述问题。这样可以减少CPU的工作负载,并减少SSD与CPU之间传输的数据量,从而减少对内存和总线带宽的影响。
在根据本发明的实施例中,由SSD的控制器执行重复数据删除方法。所述控制器接收来自CPU的块或片段数据的第一签名(“块”)。控制器执行第一签名和签名库中的信息的比较,并确定第一签名是否匹配该信息。控制器向CPU发送指示比较结果的信号。如果第一签名与签名库中的信息匹配,则该信号具有第一值,该第一值指示该块数据已经存储于SSD;如果第一签名与签名库中的信息不匹配,则该信号具有与第一值不同的第二值。如果第一签名与签名库中的信息不匹配(例如,如果信号具有第二值),则从其源(例如,客户端)接收数据块并将其写入SSD。
在一个实施例中,控制器还从CPU接收与第一签名相关联的地址。在这样的实施例中,控制器使用该地址来定位签名库中的条目。然后控制器将签名与该条目中的信息进行比较。该信息可能是第二个签名,也可能是空值(例如,该条目可能不包含任何信息)。控制器然后向CPU发送信号以指示上述比较结果。
在一个实施例中,由SSD控制器向CPU的信号由单个二进制比特组成,该单个二进制比特在第一签名与签名库中的信息匹配时具有第一值,在第一签名与签名库中的信息不匹配时具有第二值。
在一个实施例中,如果第一签名与签名库中的信息匹配,则与该数据块相关联的计数器递增。如果第一签名与签名库中的信息不匹配,则第一签名被添加到签名库,并且与该数据块相关联的计数器被初始化并递增。
在一个实施例中,除了常规组件之外,控制器还包括比较第一签名和来自签名库的信息的去重复处理器。在一个这样的实施例中,去重复处理器包括多个门,它们执行对第一签名和来自签名库的信息的逐比特比较。
在一个实施例中,SSD是串行高级技术附件(Serial Advanced TechnologyAttachment,SATA)SSD。
根据本发明的实施例可以用于大规模数据应用中的高效重复数据删除,其中存储的数据量以EB(Exabyte,EB)为单位进行度量。需要更少的IOPS,因此根据本发明的实施例可以使用较便宜的SATA SSD来实现。
本领域的普通技术人员在阅读各个附图中所示的实施例的以下详细描述之后将认识到本发明的各种实施例的这些和其它目的和优点。
附图说明
附图被并入本说明书并形成本说明书的一部分,并且其中相同标号表示相同元件,附图示出了本公开的实施例,并且与详细描述一起用于解释本公开的原理。
图1是示出在根据本发明的实施例中去重复系统可被实现的系统的示例的框图。
图2是示出根据本发明的实施例中的计算机系统的元件的框图。
图3是示出根据本发明的实施例中的SATA SSD和中央处理单元之间的连接的框图。
图4是根据本发明的实施例中的去重复方法的流程图。
图5示出了可用于实现根据本发明的实施例中的去重复处理器的电路。
图6是根据本发明实施例的由控制器为SSD执行的重复数据删除方法的流程图。
图7为根据本发明实施例中由包括CPU和SSD的签名服务器执行的重复数据删除方法的流程图。
图8是示出在根据本发明一个实施例中去重复系统的实现方式的示例的框图。
具体实施方式
现在将详细说明本公开的各种实施例,其示例在附图中示出。在结合这些实施例描述时,但应当理解的是,它们并非意图将本公开限制于这些实施例。相反,本公开旨在覆盖可包括在由所附权利要求限定的本公开的精神和范围内的替代、修改和等同物。此外,在本公开的以下详细描述中,阐述了许多具体细节以提供对本公开的透彻理解。然而,将理解的是,可以在没有这些具体细节的情况下实践本公开。在其他情况下,没有详细描述公知的方法、过程、组件和电路,以免不必要地模糊本公开的各方面。
下面的详细描述的一些部分是按照程序、逻辑块、处理以及计算机存储器内的数据比特的操作的其他符号表示来呈现的。这些描述和表示是数据处理领域的技术人员用来将其工作的实质最有效地传达给本领域其他技术人员的手段。在本申请中,程序、逻辑块、处理等被认为是导致期望结果的步骤或指令的自洽序列。这些步骤是利用物理量的物理操作的步骤。通常,虽然不一定,但这些量采取能够在计算机系统中存储、传输、组合、比较和以其他方式操作的电或磁信号的形式。主要由于普遍使用的原因,将这些信号称为事务、比特、值、元素、符号、字符、样本、像素等已经被证明有时是方便的。
但应该记住,所有这些和类似的术语都与适当的物理量相关联,并且仅仅是适用于这些量的便利标签。除非从下面的讨论特别说明,否则如显而易见的,应理解,在整个本公开中,讨论使用诸如“接收”、“存储”、“读”、“写”、“索引”、“执行”、“发送”、“比较”、“添加”、“访问”、“定位”、“使用”、“确定”、“生成”、“递增”、“信令”、或类似术语是装置或计算机系统或类似电子计算设备或处理器(例如,计算机系统的图2的200)的指动作和过程(例如,流程图图4、6和7中400,600,700)。计算机系统或类似的电子计算设备操作并转换在存储器、寄存器的表示为物理(电子)量数据或其他这样的存储、传输或显示设备内的信息。
这里描述的实施例可以在驻留在某种形式的计算机可读存储介质(例如程序模块)上的计算机可执行指令的一般场景中讨论,计算机可执行指令由一个或多个计算机或其他设备执行。作为示例而非限制,计算机可读存储介质可以包括非暂时性计算机存储介质和通信介质。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。程序模块的功能可以根据需要在各种实施例中组合或分配。
计算机存储介质包括在任何方法或技术实现的、用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于随机存取存储器(RAM),只读存储器(ROM),电可擦除可编程ROM(EEPROM),闪存(例如SSD)或其他存储器技术,光盘ROM(CD-ROM),数字通用盘(DVD)或其他光存储器,盒式磁带,磁带,磁盘存储器或其他磁存储设备或可用于存储所需信息并可被访问以取回信息的介质。
通信介质可以收录计算机可执行指令、数据结构和程序模块,并且包括任何信息传递介质。作为示例而非限制,通信媒体包括诸如有线网络或直接有线连接的有线介质,以及诸如声学,射频(RF),红外和其它无线介质的无线介质。上述任何组合也可以被包括在计算机可读介质的范围内。
图1是示出在根据本发明的实施例中可以实现去重复系统的网络或系统100的示例的框图。在图1的示例中,系统100包括:多个客户端101a、101b、101c、...、101m,其可以被单独地称为客户端101m或统称为客户端101;一个或多个配置服务器102;以及可被单独称为签名服务器103n并统称为签名服务器103的多个签名服务器103a、103b 103c...103n。客户端101、签名服务器103和配置服务器102经由网络104(例如,因特网,但并不局限于此)通信地联接(有线或无线)。
客户端101本身可以是服务器。通常,客户端101具有它们已经生成的、或者由其它设备或系统(未示出)接收的数据文件。客户端101m将其具有的数据文件分割成小块(例如,块或片段,通常被称为块)。对于每个这样的块,客户端101m计算签名SCP,它唯一地标识块,并将签名发送到签名服务器103。在一个实施例中,来自客户端101m的签名以批处理模式发送;因此可以将多个签名(例如,数百个签名)分组为单个数据分组并发送至签名服务器103以供比较。
在一个实施例中,块的签名是通过将散列函数应用于块的内容来计算的。在一个实施例中,元数据与每个块相关联,并且块的签名被包括在用于该块的元数据中。块的元数据可以包括除了块的签名之外的信息。例如,元数据可以包含这样的信息,即,该信息可以用来将数据块和与数据文件关联的其它块组合起来,以重构数据文件。例如,除了签名之外,元数据还可以包含地址,该地址指向存储块的数据所在的位置,以及附录,用来标识该数据块如何(例如,按照什么顺序)与其他块组合以重构数据文件。
配置服务器102调度和控制客户端101和签名服务器103之间的通信。配置服务器102将来自客户端101的签名引导到适当的签名服务器。
签名服务器103n接收配置服务器102引导的、来自客户端101的签名,在其签名库查找条目(内容或信息,例如,签名),比较客户的签名和签名库中的信息,针对每一个其接收到的签名Scp,通知客户关于签名Scp是否匹配其签名库中的信息。
如前所述,去重复包括通过比较已经被存储的块的签名与新块的签名,来确定与新块相同的块是否先前已被存储,进而确定是否有必要存储新块。如果新块的签名与现有签名匹配,则新块不需要被存储。
图2是示出根据本发明的实施例中的计算机系统200的元件的框图。在一个实施例中,计算机系统200表示用于实现签名服务器103(图1)的平台。在图2的示例中,计算机系统200包括中央处理单元(CPU)201,存储器203和固态驱动器(SSD)205。存储器203可以是例如动态随机存取存储器(DRAM)。在一个实施例中,SSD 205是SATA SSD,并且经由SATA总线207联接到CPU 201。计算机系统200可以包括除了所示的那些之外的元件。
图3是示出根据本发明的实施例中的SATA SSD 301、302和303与CPU 201之间的连接的框图。SSD 301-303分别经由SATA总线311、312和313联接到主机总线适配器(HBA)320。在一个实施例中,HBA适配器320包括SATA接口321,高级主机控制器接口(AHCI)引擎322(例如,允许软件与SATA设备通信的硬件机制;总线主控器到系统存储器),PCIe到AHCI桥接器323(例如,用于在SATA和PCIe格式之间转换数据)以及PCIe接口324。HBA 320经由PCIe总线330联接到CPU 201。
再次参考图2,SSD 205包括控制器210和多个存储元件,具体地为用于存储数据的多个管芯(die)或芯片(chip)240a-240k。管芯240a-240k可以被单独地称为管芯240k并统称为管芯240。在一个实施例中,管芯240是NAND管芯,因此SSD 205可以被称为NAND闪存器件。
控制器210可以被实现为被嵌入在SSD 205的专用集成电路(application-specific integrated circuit,ASIC)或现场可编程门阵列(field-programmable gatearray,FPGA)。在图2的实施例中,控制器210包括闪存转换层(FTL),其可以实现为固件或软件。控制器210还包括写入路径和读取路径。写入路径开始于接口211,其包括例如物理层(PHY)接口,和在模拟域和数字域(从模拟到数字,以及从数字到模拟)之间转换数据的串行器/解串器。写路径可以包括一个数据压缩模块212、加密块213以及纠错码(errorcorrection code,ECC)编码块214。SSD控制器通过接口220(例如,开放NAND接口,ONFI)联接到所述管芯240。使用同步和异步触发模式(切换)将数据移动到管芯240。
数据通过相同的触发机制和接口220从管芯240移动到读取路径。读取路径可以包括ECC解码块216、解密块217和解压缩块218。
重要的是,与传统SSD控制器相比,控制器210在读取路径中包括去重复处理器230。如将在下面更充分地描述的,去重复处理器230执行至少两个主要功能:它从管芯240提取信息(例如,签名),并且将这些签名与从客户端101m接收的签名进行比较,以确定来自客户端的该签名与提取的信息是否匹配(例如,签名是否匹配任何提取的签名)。
图4是根据本发明的实施例中的去重复方法的流程图400。由流程图400中的框代表的所有或一些操作可以实现为驻留在某种形式的非暂时性计算机可读存储介质上的计算机可执行指令,并且由签名服务器或计算机系统执行,诸如签名服务器103n或图1和2的计算机系统200。
在图4的框402中,从客户端(例如,图1的客户端101m)接收针对数据的块(例如,块)的签名Scp。
在图4的框404中,在一个实施例中,基于签名Scp来计算读取地址(Raddr)。
在框406中,签名Scp被发送到SSD控制器210(图2)。在一个实施例中,读取地址Raddr也被发送到SSD控制器210。在这样的实施例中,控制器使用读取地址Raddr来定位存储在管芯240(图2)上的签名库中的条目。更具体地说,控制器210可以使用读地址Raddr作为存储在其中一个管芯240(例如,管芯240k)的签名库中的特定条目的索引。条目可以是签名,也可以是空值(例如,条目可以是空的)。一般来说,在由读地址Raddr索引的条目中有内容或信息Rssd;该内容可能是也可能不是签名,甚至由缺乏内容(例如,无效或空白条目)传递信息。
在图4的框408中,SSD控制器210比较签名Scp与信息Rssd。在一个实施例中,所述比较使用去重复处理器230(图2)执行。将在下面的图5中提供附加的信息。
如果签名Scp匹配信息Rssd,则流程图400进入框410;否则,流程图进入框414。
在图4的框410中,签名Scp匹配信息Rssd。在这种情况下时,信息Rssd构成与第一签名Scp相同的第二签名,这表明与签名相关联的Scp已经被存储在SSD 205,没有必要重写数据块到SSD。因此,控制器210将信号发送到CPU 201。在一个实施例中,信号由单个二进制比特组成。该比特值具有第一值(例如二进制1或高)以指示签名Scp匹配信息Rssd。
继续参照图4,在框412中,与签名Scp相关联的元数据被更新并且映射计数被递增。元数据被用于恢复或帮助恢复数据文件,该数据文件包括与所述签名Scp相关联的块。映射计数标识该块使用了多少次(例如,有多少数据文件包含该块)。
在框414中,签名Scp与信息Rssd不匹配,这表明与签名Scp相关联的数据块当前未被存储在SSD 205上,并且,因此可以将数据块写入SSD。如框410中那样,控制器210向CPU201发送信号。在一个实施例中,所述信号同样包含单个二进制位。然而,比特值具有第二值(例如,二进制零或低)以指示签名Scp与信息Rssd不匹配。
在框416,控制器210将签名Scp添加到签名库。在一个实施例中,控制器210将签名Scp添加到由读取地址Raddr标识的签名库中的条目中。
在框418中,数据块被写入SSD 205。在一个实施例中,数据块被写入存储由读取地址Raddr索引的签名库的管芯240k。而且,通过控制器210,与签名Scp相关联的元数据被更新并且该块的映射计数开始(递增)。控制器210还可以确认该签名库已更新,并且确认该块被保存。
在框420中,如果存在针对另一个数据块的另一个签名,则流程图400返回到框402。
根据本发明的实施例不限于使用读取地址Raddr来找到用于与签名Scp进行比较的条目,该比较用于确定该数据块是否已经存储在SSD 205上。其他技术可以用于将签名Scp与签名库中的信息进行比较。一种这样的技术被称为布谷鸟搜索算法。其他被称为粒子群优化、微分进化和人工蜂群算法的技术也可以使用。
如上所述,来自客户端101的签名可以以批处理模式发送;因此可以将多个签名(例如,数百个签名)分组为单个数据分组并发送到签名服务器103,在这种情况下,可以针对每个签名并行执行流程图400的操作。在一个实施例中,这可以通过使用SSD和CPU之间的多比特总线来实现,其中所述总线的每个比特表示是否单个签名已经与如上所述的签名库中的信息匹配。这个功能可以用一个多位寄存器来实现,而这个寄存器可以定期轮询以获得它的状态。
同样如上所述,返回参考图2,控制器210在读取路径中包括去重复处理器230。图5示出了可用于实现根据本发明的实施例中的去重复处理器230的电路。在图5中,使用“A”指签名Scp,并且,使用“B”指与签名Scp相比较的信息(例如,在由读地址Raddr索引的条目处的信息,或使用诸如上述算法搜索的签名库中的信息)。A中的比特被标识为A[0],...,A[n-1],并且B中的比特被标识为B[0],...,B[n-1]。
在图4的框406描述的操作中,在控制器210的写入路径中,签名Scp(A)可以在缓冲器(未示出)中保持一定量的时间,直到信息(B)被读取为止。然后,在读取信息(B)之后,可以使用图5的去重复处理器230对签名Scp(A)和信息(B)进行逐比特比较。
在图5的实施例中,去重复处理器230包括以XOR门501和502例示的多个异或(XOR)门。异或门501将签名Scp(A)的第一位(A[0]A)与信息(B)的第一位(B[0])相比较,另一异或门(未示出)将签名Scp(A)的第二位与信息(B)的第二位进行比较,以此类推,通过异或门502将签名Scp(A)的最后一位(A[n-1])与信息(B)的最后一位(B[n-1])进行比较。如果所有位都匹配,则或门511将输出二进制零;否则,或门的输出将是二进制1。这可以表示为:Out=(A==B)?1'b0:1'b1。
因此,去重复处理器230可以使用基本电路元件(例如,门)来实现。因而,去重复处理器230可以很容易地且低成本地加入至常规的SSD控制器的设计。此外,去重复处理器230可以与SSD控制器中的其他模块共享一些电路元件,诸如ECC解码块216、解密块217和/或解压缩块218,从而进一步帮助控制成本。
综上,在根据本发明的实施例中,SSD的内部处理电路被设计成使得签名比较可以由SSD(具体地,由SSD控制器)来执行,而不是在CPU上。因此,CPU的工作负载减少,SSD与CPU之间的数据传输量大幅减少。
所述CPU发送一个签名SCP至SSD。在一个实施例中,CPU还发送基于签名Scp的读取地址Raddr到SSD。SSD向CPU发送信号,指示签名Scp是否与签名库中的信息匹配。多个签名、读取地址和信号可以以批处理模式发送并且如前所述并行处理。
根据本发明的实施例,有效利用了SSD的块写入和块读取特性(例如,NAND闪存设备)。此外,与传统方法相反,将非使用数据从SSD传输至CPU上不再消耗带宽。因此,SSD上的每秒输入/输出操作(IOPS)数量显著降低,从约500,000到约9,000。要求的性能得以维持,但在CPU、存储器和带宽消耗方面成本降低。
另外,通过提高处理数据的效率,SATA SSD可以在签名服务器中使用,这比PCIeSSD要便宜。此外,还可以配置更多的SATA SSD,而非PCIeSSD,并将其与每个CPU核心进行连接。因此,硬件成本也降低了。
图6是在根据本发明一个实施例中的由SSD控制器执行的重复数据删除方法(例如,图2的控制器210)流程图600。
在图6的块602中,由控制器从CPU接收针对数据块(片段、片、块)的签名Scp。在一个实施例中,也通过控制器从CPU接收与签名相关联的地址Raddr。
在框604中,通过控制器来访问在签名库的信息。在一个实施例中,地址Raddr被控制器用来索引一个在签名库中的条目。
在框606中,由控制器判定所述签名Scp是否与签名数据库中的信息匹配。也就是说,控制器确定签名Scp是否与签名库中的任何其他签名相匹配。在一个实施例中,控制器确定签名Scp是否与由地址Raddr寻址的条目的信息相匹配。
在块608中,信号用于指示来自框606的结果从控制器发送给CPU。如果签名Scp与签名库中的信息匹配,则该信号具有指示数据块已经存储在SSD上的第一值。如果签名Scp与签名库中的信息不匹配,那么信号具有不同于第一值的第二值。
如果该签名Scp与签名库中信息不匹配,则将数据块写入到SSD。如果签名Scp与签名库中的信息不匹配,则签名被添加到签名库中,并且与该数据块相关联的计数器被初始化并递增。如果签名Scp与签名库中的信息匹配,则与该数据块相关联的计数器递增。
图7是在根据本发明的一个实施例中的通过包含CPU和SSD的签名服务器103n(图1)与SSD控制器执行重复数据删除方法的流程图700。
在图7的框702,从客户端101m接收用于块(片,片段,块)的数据签名Scp。CPU将签名发送给SSD控制器。
在框704,在一实施例中,基于签名的地址Raddr被确定(例如,由CPU)。在这样的实施例中,CPU发送地址Raddr到SSD控制器。
在框706中,通过SSD控制器访问在签名库中的信息。在一实施例中,由SSD控制器使用地址Raddr来定位在签名库中的一个条目。
在框708中,SSD控制器比较签名Scp和来自签名库的信息。在一个实施例中,SSD控制器比较签名和在签名库中的由地址Raddr寻址的信息。
在框710,控制器产生表示该签名与签名库中的信息相匹配的信号,并将该信号发送到CPU。如果签名Scp与签名库中的信息相匹配,则该数据块已经存储在SSD中。如果签名Scp与签名库中的信息不匹配,则该信号从签名服务器发送到客户端,响应于所述信号,来自客户端的该数据块在签名服务器处被接收,并将该数据块写入SSD。
图8是示出了根据本发明的一个实施例中的重复数据删除系统800的一个实现方式的示例的框图。去重复系统800可以部署在存储集群上,并且可以直接在由应用程序802存储的备份副本804、805、806和807上工作。在全局层面分析数据的冗余,则去重复系统800移除重复块,仅保留独特的块,同时也更新相关的元数据。之后,当特定数据被访问或更新时,所述元数据和独特的块被修改。通过这种机制,备份副本804-807所消耗的存储量(例如,按数量级)显著减少。
SATA SSD而非PCIe SSD可如上述那样使用。每个签名服务器都能够驱动更多SSD,例如,12个SATA SSD与4个PCIe卡。由于本发明的结果,每个SATA SSD在满足去重复需求方面的性能和PCIe SSD一样好。因此,每个签名服务器的性能都是提高了三倍。换句话说,对于相同的性能,签名服务器的数量可以减少三分之一。因此,降低成本是因为SATA SSD的成本低于PCIeSSD,并且需要更少的签名服务器。此外,通过消除回收大量不必要数据的需要,节省了计算机资源。
尽管前面的公开使用特定的框图,流程图,以及实例展示的每个框图部件,流程图步骤,操作阐述的各种实施例和/或组件描述和/或示出可被单独地和/或共同,使用各种硬件,软件或固件(或其任何组合)配置。此外,其他组件中包含的组件的任何公开都应被视为示例,因为可以实现许多其他体系结构以实现相同的功能。
本文所描述和/或说明的步骤参数和步骤仅以示例方式给出,并可根据需要进行更改。例如,尽管本文所描述和/或描述的步骤可以以特定的顺序示出或讨论,但这些步骤并不一定需要在演示或讨论的顺序中执行。本文所描述和/或说明的各种示例方法也可以忽略本文中描述或说明的一个或多个步骤,或者除了所公开的步骤之外还包括附加步骤。
虽然,已经在全功能计算系统的上下文中描述和/或说明了各种实施例,但是这些示例实施例中的一个或多个可以作为各种形式的程序产品来分发,而不管所使用的实际执行分发的计算机可读介质的具体类型。这里公开的实施例还可以使用执行特定任务的软件模块来实现。这些软件模块可以包括可以存储在计算机可读存储介质上或计算系统中的脚本、批处理或其他可执行文件。这些软件模块可以配置计算系统以执行这里公开的示例实施例中的一个或多个。这里公开的一个或多个软件模块可以在云计算环境中实现。云计算环境可以通过互联网提供各种服务和应用程序。这些基于云的服务器(例如,软件作为服务器,平台作为服务器,基础架构作为服务器等)可通过Web浏览器或其他远程接口访问。这里描述的各种功能可以通过远程桌面环境或任何其他基于云的计算环境来提供。
尽管本主题已经以特定于结构特征和/或方法动作的语言进行了描述,但是应当理解的是,在本发明中定义的主题不必限于上述具体特征或动作。而是,上面描述的具体特征和行为被公开为实现本公开的示例形式。
根据本发明的实施方式。尽管已经在特定实施例中描述了本公开,但应该认识到,本发明不应该被解释为受这些实施例的限制,而是根据本申请的权利要求来解释。
Claims (19)
1.一种由控制器执行的用于固态驱动器SSD的重复数据删除方法,所述方法包括:
由所述控制器从中央处理单元CPU接收数据块的签名;
由所述控制器确定所述签名是否与签名库中的信息相匹配;以及
从所述控制器向所述CPU发送指示所述确定的结果的信号,其中,如果所述签名与所述签名库中的信息相匹配,则所述信号具有指示所述数据块已经存储在所述SSD上的第一值,并且如果所述签名与所述签名库中的信息不匹配,则所述信号具有不同于所述第一值的第二值;
其中,所述控制器为SSD控制器,所述SSD控制器包括去重复处理器,所述去重复处理器比较签名和所述签名库中的信息。
2.根据权利要求1所述的方法,其中,所述方法还包括:
由所述控制器从CPU接收与所述签名关联的地址;
所述控制器使用所述地址来索引在所述签名库中的条目;以及
由所述控制器确定所述签名是否与在所述签名库中的所述条目处的所述信息相匹配。
3.根据权利要求1所述的方法,其中,所述信号包括单个二进制比特,其中,如果所述签名与所述签名库中的信息相匹配,则所述比特是所述第一值,并且如果所述签名与所述签名库中的信息不匹配,则所述比特是所述第二值。
4.根据权利要求1所述的方法,其中,如果所述签名与所述签名库中的信息相匹配,则该方法还包括递增与所述数据块相关联的计数器。
5.根据权利要求1所述的方法,其中,如果所述签名与所述签名库中的信息不匹配,则所述方法还包括:
接收所述数据块并将所述数据块写入所述SSD;以及
将所述签名添加到所述签名库并递增与所述数据块相关联的计数器。
6.根据权利要求1所述的方法,其中,所述去重复处理器包括多个门,所述多个门执行逐比特比较所述签名与所述签名库中的信息。
7.根据权利要求1所述的方法,其中,所述SSD是串行高速技术附件SATA SSD。
8.一种由包括中央处理单元CPU和固态驱动器SSD的服务器执行的重复数据删除方法,所述SSD包括控制器,所述方法包括:
从客户端接收数据块的签名;
基于所述签名确定地址;
利用所述控制器并使用所述地址来定位签名库的条目;
利用所述控制器比较所述签名与在所述签名库中的所述条目处的信息;
利用所述控制器产生指示所述签名是否与所述信息匹配的信号,其中,如果所述签名和所述信息匹配,则所述数据块已经存储在所述SSD上,并且其中,如果所述签名和所述信息不匹配,则该方法还包括:
给客户端发信号;
从所述客户端接收响应于所述信号的所述数据块;和
将所述数据块写入所述SSD;
其中,所述控制器为SSD控制器,所述SSD控制器包括去重复处理器,所述去重复处理器比较签名和所述签名库中的信息。
9.根据权利要求8所述的方法,其中,所述信号包括单个二进制比特,其中,如果所述签名与所述信息相匹配,则所述比特是第一值,并且如果所述签名与所述信息不匹配,则所述比特是第二值。
10.根据权利要求8所述的方法,其中,如果所述签名和所述信息匹配,则所述方法进一步包括递增与所述数据块相关联的计数器。
11.根据权利要求8所述的方法,其中,如果所述签名和所述信息不匹配,则所述方法进一步包括将所述签名添加到所述签名库,并递增与所述数据块相关联的计数器。
12.根据权利要求8所述的方法,其中,所述控制器包括多个异或XOR门,多个门中的每一个门将来自所述签名的比特值和来自所述签名库中的所述信息的每一比特值进行比较。
13.根据权利要求8所述的方法,其中,所述SSD是串行高速技术附件SATA SSD。
14.一种固态驱动器SSD,其包括:
多个存储元件;和
联接到所述存储元件的控制器;
所述控制器从中央处理单元CPU可操作地接收用于数据块的签名和基于所述签名的地址,其中,由所述CPU从所述数据块的源接收所述签名;
所述控制器可操作以使用所述地址来定位签名库中的条目,用于比较所述签名与所述签名库中的所述条目的信息,并且用于生成指示所述签名是否与所述信息匹配的信号并用于将所述信号发送给所述CPU;
该控制器进一步可操作用于,在响应于指示所述签名与所述签名库中的信息不匹配的信号接收到所述数据块时,将所述数据块写入至所述多个存储元件中的一个存储元件;
其中,所述控制器为SSD控制器,所述SSD控制器包括去重复处理器,所述去重复处理器比较签名和所述签名库中的信息。
15.根据权利要求14所述的SSD,其中,所述信号包括单个二进制比特,其中,如果所述签名与所述信息相匹配,则所述比特是第一值,并且如果所述签名与所述信息不匹配,则所述比特是第二值。
16.根据权利要求14所述的SSD,其中,如果所述签名和所述信息匹配,则与所述数据块相关联的计数器递增。
17.根据权利要求14所述的SSD,其中,如果所述签名和所述信息不匹配,则所述签名被添加到所述签名库,并且与所述数据块相关联的计数器递增。
18.根据权利要求14所述的SSD,其中,所述去重复处理器包括多个异或XOR门,多个门中的每一个门将来自所述签名的比特值和来自所述签名库中的所述信息的每一比特值进行比较。
19.根据权利要求14所述的SSD,其中,所述SSD是串行高速技术附件SATA SSD,并且所述存储元件包括NAND管芯。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/858,257 US9665287B2 (en) | 2015-09-18 | 2015-09-18 | Data deduplication using a solid state drive controller |
US14/858257 | 2015-09-18 | ||
PCT/US2016/052222 WO2017049142A1 (en) | 2015-09-18 | 2016-09-16 | Data deduplication using a solid state drive controller |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027713A CN108027713A (zh) | 2018-05-11 |
CN108027713B true CN108027713B (zh) | 2021-10-12 |
Family
ID=58282696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680054387.6A Active CN108027713B (zh) | 2015-09-18 | 2016-09-16 | 用于固态驱动器控制器的重复数据删除 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9665287B2 (zh) |
EP (1) | EP3350683B1 (zh) |
JP (1) | JP2018527681A (zh) |
KR (1) | KR20180052739A (zh) |
CN (1) | CN108027713B (zh) |
WO (1) | WO2017049142A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9665287B2 (en) | 2015-09-18 | 2017-05-30 | Alibaba Group Holding Limited | Data deduplication using a solid state drive controller |
CN107402725B (zh) * | 2017-03-20 | 2020-08-25 | 威盛电子股份有限公司 | 非易失性存储装置及其数据去重复方法 |
US10318202B2 (en) * | 2017-03-20 | 2019-06-11 | Via Technologies, Inc. | Non-volatile memory apparatus and data deduplication method thereof |
CN109669623B (zh) * | 2017-10-13 | 2021-09-03 | 杭州海康威视系统技术有限公司 | 一种文件管理方法、文件管理装置、电子设备及存储介质 |
CN108920964B (zh) * | 2018-06-21 | 2020-09-29 | 深圳忆联信息系统有限公司 | 可重构硬件加解密方法、系统、计算机设备及存储介质 |
CN109062514B (zh) * | 2018-08-16 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种基于命名空间的带宽控制方法、装置和存储介质 |
CN110968537B (zh) * | 2018-09-28 | 2021-02-02 | 方一信息科技(上海)有限公司 | 一种基于pcie ssd的fpga搜索匹配方法 |
US11029874B2 (en) | 2019-07-30 | 2021-06-08 | Western Digital Technologies, Inc. | Rolling XOR protection in efficient pipeline |
KR20210034897A (ko) | 2019-09-23 | 2021-03-31 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
CN113365282B (zh) * | 2021-06-22 | 2023-04-07 | 成都信息工程大学 | 一种wsn障碍性区域覆盖部署方法 |
US12007968B2 (en) | 2022-05-26 | 2024-06-11 | International Business Machines Corporation | Full allocation volume to deduplication volume migration in a storage system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201007452A (en) * | 2008-06-04 | 2010-02-16 | Initio Corp | SSD with a controller accelerator |
US7761425B1 (en) * | 2007-03-29 | 2010-07-20 | Symantec Corporation | Low-overhead means of performing data backup |
CN101882141A (zh) * | 2009-05-08 | 2010-11-10 | 北京众志和达信息技术有限公司 | 一种实现重复数据数据删除的方法和系统 |
CN102591947A (zh) * | 2010-12-28 | 2012-07-18 | 微软公司 | 用于数据去重复的快速且低ram占用的索引 |
CN103473266A (zh) * | 2013-08-09 | 2013-12-25 | 记忆科技(深圳)有限公司 | 固态硬盘及其删除重复数据的方法 |
CN103547991A (zh) * | 2010-12-29 | 2014-01-29 | 亚马逊科技公司 | 数据系统中的接收器侧数据重复删除 |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7636767B2 (en) | 2005-11-29 | 2009-12-22 | Cisco Technology, Inc. | Method and apparatus for reducing network traffic over low bandwidth links |
US8412682B2 (en) | 2006-06-29 | 2013-04-02 | Netapp, Inc. | System and method for retrieving and using block fingerprints for data deduplication |
US7840537B2 (en) | 2006-12-22 | 2010-11-23 | Commvault Systems, Inc. | System and method for storing redundant information |
US20090132616A1 (en) | 2007-10-02 | 2009-05-21 | Richard Winter | Archival backup integration |
US7962452B2 (en) | 2007-12-28 | 2011-06-14 | International Business Machines Corporation | Data deduplication by separating data from meta data |
US8825617B2 (en) | 2008-03-14 | 2014-09-02 | International Business Machines Corporation | Limiting deduplication based on predetermined criteria |
US7567188B1 (en) | 2008-04-10 | 2009-07-28 | International Business Machines Corporation | Policy based tiered data deduplication strategy |
US7814149B1 (en) | 2008-09-29 | 2010-10-12 | Symantec Operating Corporation | Client side data deduplication |
WO2010045262A1 (en) | 2008-10-14 | 2010-04-22 | Wanova Technologies, Ltd. | Storage-network de-duplication |
US8082228B2 (en) * | 2008-10-31 | 2011-12-20 | Netapp, Inc. | Remote office duplication |
JP5444728B2 (ja) * | 2009-01-26 | 2014-03-19 | 日本電気株式会社 | ストレージシステム、ストレージシステムにおけるデータ書込方法及びデータ書込プログラム |
US8407186B1 (en) | 2009-03-31 | 2013-03-26 | Symantec Corporation | Systems and methods for data-selection-specific data deduplication |
US8812874B1 (en) | 2009-03-31 | 2014-08-19 | Symantec Corporation | Content deduplication in enterprise rights management |
US8281066B1 (en) * | 2009-04-30 | 2012-10-02 | Netapp, Inc. | System and method for real-time deduplication utilizing an electronic storage medium |
US8442954B2 (en) | 2009-07-21 | 2013-05-14 | Stephen Philip SPACKMAN | Creating and managing links to deduplication information |
US8204867B2 (en) | 2009-07-29 | 2012-06-19 | International Business Machines Corporation | Apparatus, system, and method for enhanced block-level deduplication |
US20110093439A1 (en) | 2009-10-16 | 2011-04-21 | Fanglu Guo | De-duplication Storage System with Multiple Indices for Efficient File Storage |
US8321648B2 (en) | 2009-10-26 | 2012-11-27 | Netapp, Inc | Use of similarity hash to route data for improved deduplication in a storage server cluster |
US8478933B2 (en) | 2009-11-24 | 2013-07-02 | International Business Machines Corporation | Systems and methods for performing deduplicated data processing on tape |
US8407193B2 (en) | 2010-01-27 | 2013-03-26 | International Business Machines Corporation | Data deduplication for streaming sequential data storage applications |
JP5434705B2 (ja) | 2010-03-12 | 2014-03-05 | 富士通株式会社 | ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法 |
US8370593B2 (en) | 2010-04-14 | 2013-02-05 | Hitachi, Ltd. | Method and apparatus to manage groups for deduplication |
US9047301B2 (en) | 2010-04-19 | 2015-06-02 | Greenbytes, Inc. | Method for optimizing the memory usage and performance of data deduplication storage systems |
US8639658B1 (en) | 2010-04-21 | 2014-01-28 | Symantec Corporation | Cache management for file systems supporting shared blocks |
US9053032B2 (en) | 2010-05-05 | 2015-06-09 | Microsoft Technology Licensing, Llc | Fast and low-RAM-footprint indexing for data deduplication |
US8489855B2 (en) | 2010-05-07 | 2013-07-16 | Ocz Technology Group Inc. | NAND flash-based solid state drive and method of operation |
US20120173795A1 (en) * | 2010-05-25 | 2012-07-05 | Ocz Technology Group, Inc. | Solid state drive with low write amplification |
US8370315B1 (en) | 2010-05-28 | 2013-02-05 | Symantec Corporation | System and method for high performance deduplication indexing |
US9092151B1 (en) | 2010-09-17 | 2015-07-28 | Permabit Technology Corporation | Managing deduplication of stored data |
US10162553B2 (en) * | 2010-11-24 | 2018-12-25 | Western Digital Technologies, Inc. | Methods and systems for object level de-duplication for solid state devices |
US8898119B2 (en) | 2010-12-15 | 2014-11-25 | Netapp, Inc. | Fingerprints datastore and stale fingerprint removal in de-duplication environments |
US8332372B2 (en) | 2010-12-16 | 2012-12-11 | International Business Machines Corporation | Method and system for processing data |
US8495304B1 (en) | 2010-12-23 | 2013-07-23 | Emc Corporation | Multi source wire deduplication |
US9116909B2 (en) * | 2010-12-29 | 2015-08-25 | Amazon Technologies, Inc. | Reduced bandwidth data uploading in data systems |
US9223511B2 (en) | 2011-04-08 | 2015-12-29 | Micron Technology, Inc. | Data deduplication |
US8600949B2 (en) | 2011-06-21 | 2013-12-03 | Netapp, Inc. | Deduplication in an extent-based architecture |
US8589640B2 (en) * | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US8533231B2 (en) | 2011-08-12 | 2013-09-10 | Nexenta Systems, Inc. | Cloud storage system with distributed metadata |
US8484170B2 (en) | 2011-09-19 | 2013-07-09 | International Business Machines Corporation | Scalable deduplication system with small blocks |
US8620886B1 (en) * | 2011-09-20 | 2013-12-31 | Netapp Inc. | Host side deduplication |
CN103034659B (zh) | 2011-09-29 | 2015-08-19 | 国际商业机器公司 | 一种重复数据删除的方法和系统 |
US8898120B1 (en) | 2011-10-09 | 2014-11-25 | Symantec Corporation | Systems and methods for distributed data deduplication |
US8572312B2 (en) | 2011-12-07 | 2013-10-29 | Jeffrey Tofano | Data de-duplication and solid state memory device |
KR20130064518A (ko) * | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
CN102646069B (zh) * | 2012-02-23 | 2014-12-10 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
US20130282672A1 (en) * | 2012-04-18 | 2013-10-24 | Hitachi Computer Peripherals Co., Ltd. | Storage apparatus and storage control method |
US9177028B2 (en) | 2012-04-30 | 2015-11-03 | International Business Machines Corporation | Deduplicating storage with enhanced frequent-block detection |
US8930648B1 (en) | 2012-05-23 | 2015-01-06 | Netapp, Inc. | Distributed deduplication using global chunk data structure and epochs |
US8788468B2 (en) | 2012-05-24 | 2014-07-22 | International Business Machines Corporation | Data depulication using short term history |
US8930612B2 (en) | 2012-05-31 | 2015-01-06 | Seagate Technology Llc | Background deduplication of data sets in a memory |
CN102981969A (zh) * | 2012-11-21 | 2013-03-20 | 记忆科技(深圳)有限公司 | 重复数据删除的方法及其固态硬盘 |
US9952936B2 (en) * | 2012-12-05 | 2018-04-24 | Hitachi, Ltd. | Storage system and method of controlling storage system |
US8935222B2 (en) | 2013-01-02 | 2015-01-13 | International Business Machines Corporation | Optimizing a partition in data deduplication |
US9219784B2 (en) * | 2013-03-07 | 2015-12-22 | International Business Machines Corporation | Synchronization of a server side deduplication cache with a client side deduplication cache |
US9244937B2 (en) | 2013-03-15 | 2016-01-26 | International Business Machines Corporation | Efficient calculation of similarity search values and digest block boundaries for data deduplication |
US9116941B2 (en) | 2013-03-15 | 2015-08-25 | International Business Machines Corporation | Reducing digest storage consumption by tracking similarity elements in a data deduplication system |
CN104246722B (zh) * | 2013-03-29 | 2017-02-22 | 株式会社东芝 | 用于基于哈希表排除数据重复的存储系统,存储控制器及方法 |
US20140304464A1 (en) | 2013-04-03 | 2014-10-09 | Lsi Corporation | Methods and systems for performing deduplication in a data storage system |
GB2518158A (en) * | 2013-09-11 | 2015-03-18 | Ibm | Method and system for data access in a storage infrastructure |
KR20150067583A (ko) * | 2013-12-10 | 2015-06-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 |
US10380072B2 (en) * | 2014-03-17 | 2019-08-13 | Commvault Systems, Inc. | Managing deletions from a deduplication database |
US10254989B2 (en) * | 2014-05-30 | 2019-04-09 | Hitachi, Ltd. | Method and apparatus of data deduplication storage system |
CN104407982B (zh) | 2014-11-19 | 2018-09-21 | 湖南国科微电子股份有限公司 | 一种ssd盘片垃圾回收方法 |
US10416915B2 (en) * | 2015-05-15 | 2019-09-17 | ScaleFlux | Assisting data deduplication through in-memory computation |
US20170017571A1 (en) * | 2015-07-17 | 2017-01-19 | Samsung Electronics Co., Ltd. | Method and apparatus fori n-line deduplication in storage devices |
US9665287B2 (en) | 2015-09-18 | 2017-05-30 | Alibaba Group Holding Limited | Data deduplication using a solid state drive controller |
JP6067819B1 (ja) * | 2015-10-21 | 2017-01-25 | 株式会社東芝 | 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法 |
-
2015
- 2015-09-18 US US14/858,257 patent/US9665287B2/en active Active
-
2016
- 2016-09-16 JP JP2018514841A patent/JP2018527681A/ja active Pending
- 2016-09-16 EP EP16847431.0A patent/EP3350683B1/en active Active
- 2016-09-16 CN CN201680054387.6A patent/CN108027713B/zh active Active
- 2016-09-16 KR KR1020187010549A patent/KR20180052739A/ko unknown
- 2016-09-16 WO PCT/US2016/052222 patent/WO2017049142A1/en active Application Filing
-
2017
- 2017-05-08 US US15/589,256 patent/US9864542B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7761425B1 (en) * | 2007-03-29 | 2010-07-20 | Symantec Corporation | Low-overhead means of performing data backup |
TW201007452A (en) * | 2008-06-04 | 2010-02-16 | Initio Corp | SSD with a controller accelerator |
CN101882141A (zh) * | 2009-05-08 | 2010-11-10 | 北京众志和达信息技术有限公司 | 一种实现重复数据数据删除的方法和系统 |
CN102591947A (zh) * | 2010-12-28 | 2012-07-18 | 微软公司 | 用于数据去重复的快速且低ram占用的索引 |
CN103547991A (zh) * | 2010-12-29 | 2014-01-29 | 亚马逊科技公司 | 数据系统中的接收器侧数据重复删除 |
CN103473266A (zh) * | 2013-08-09 | 2013-12-25 | 记忆科技(深圳)有限公司 | 固态硬盘及其删除重复数据的方法 |
Non-Patent Citations (1)
Title |
---|
"一种基于历史信息的一致性Hash集群重复数据删除路由策略";邢玉轩 等;《计算机研究与发展》;20141215(第2014年第S2期);第182-188页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3350683B1 (en) | 2023-05-10 |
KR20180052739A (ko) | 2018-05-18 |
US9864542B2 (en) | 2018-01-09 |
US9665287B2 (en) | 2017-05-30 |
US20170242616A1 (en) | 2017-08-24 |
US20170083245A1 (en) | 2017-03-23 |
EP3350683A1 (en) | 2018-07-25 |
CN108027713A (zh) | 2018-05-11 |
EP3350683A4 (en) | 2019-04-24 |
WO2017049142A1 (en) | 2017-03-23 |
JP2018527681A (ja) | 2018-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027713B (zh) | 用于固态驱动器控制器的重复数据删除 | |
US10642522B2 (en) | Method and system for in-line deduplication in a storage drive based on a non-collision hash | |
US10545833B1 (en) | Block-level deduplication | |
US9740403B2 (en) | Methods for managing storage in a data storage cluster with distributed zones based on parity values and devices thereof | |
US9846642B2 (en) | Efficient key collision handling | |
US10303797B1 (en) | Clustering files in deduplication systems | |
US9405684B1 (en) | System and method for cache management | |
US8683156B2 (en) | Format-preserving deduplication of data | |
US11874815B2 (en) | Key-value storage device and method of operating the same | |
US10614038B1 (en) | Inline deduplication of compressed data | |
US11074124B2 (en) | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage | |
US11132137B2 (en) | Methods and systems for providing read-optimized scalable offline de-duplication for blocks of data | |
US11068208B2 (en) | Capacity reduction in a storage system | |
CN115114054B (zh) | 管理发生故障的多层级存储器单元的存储空间减小和再用 | |
CN115114055B (zh) | 管理归因于存储装置故障的容量减小和恢复 | |
US12008254B2 (en) | Deduplication of storage device encoded data | |
US10922003B1 (en) | Realizing host-assisted device-level data deduplication on solid-state data storage devices with embedded non-volatile memory | |
US11681436B2 (en) | Systems and methods for asynchronous input/output scanning and aggregation for solid state drive | |
US20240028234A1 (en) | Multi-fingerprint deduplication processing | |
US11392547B2 (en) | Using prefix-delete operations for data containers | |
US20210117084A1 (en) | Managing data block compression in a storage system |
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 |