CN104040516A - 用于数据去重的方法、设备和系统 - Google Patents

用于数据去重的方法、设备和系统 Download PDF

Info

Publication number
CN104040516A
CN104040516A CN201180076259.9A CN201180076259A CN104040516A CN 104040516 A CN104040516 A CN 104040516A CN 201180076259 A CN201180076259 A CN 201180076259A CN 104040516 A CN104040516 A CN 104040516A
Authority
CN
China
Prior art keywords
data
storage
fingerprint
front end
write command
Prior art date
Application number
CN201180076259.9A
Other languages
English (en)
Other versions
CN104040516B (zh
Inventor
M.T.琼斯
Original Assignee
英特尔公司
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 英特尔公司 filed Critical 英特尔公司
Priority to PCT/US2011/061246 priority Critical patent/WO2013074106A1/en
Publication of CN104040516A publication Critical patent/CN104040516A/zh
Application granted granted Critical
Publication of CN104040516B publication Critical patent/CN104040516B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0602Dedicated interfaces to storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0628Dedicated interfaces to 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; 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, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0668Dedicated interfaces to 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; 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, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0628Dedicated interfaces to 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

Abstract

用于限制存储后端中副本数据存储的技术和机制。在一个实施例中,存储后端的存储装置从存储前端接收规定将数据写入存储后端的写命令。在另一实施例中,存储装置计算是写命令的对象的数据的数据签名,并提供给存储前端。基于由存储装置提供的数据签名,存储前端的去重引擎确定是否要执行去重操作。

Description

用于数据去重的方法、设备和系统

技术领域

[0001] 本文讨论的实施例一般涉及计算机数据存储。更具体地说,某些实施例以各种方式涉及用于提供存储的数据的去重(deduplication)的技术。

背景技术

[0002] 通常,数据去重技术计算表示存储在存储系统的一个或多个数据块中的数据的哈希值。保存哈希值以便随后在哈希值字典中引用,哈希值各自表示当前存储在存储系统中的相应数据。对将附加数据存储在存储系统中的随后请求根据附加数据的哈希是否匹配字典中的任何哈希值进行处理。如果附加数据的哈希匹配表示当前存储的数据的哈希,则存储系统有可能已经存储了附加数据的副本。因此,可避免向存储系统写附加数据,以便改进存储空间的利用。

[0003] 常规数据去重一般依赖于两种主要方法一在线(in-line)去重和后处理去重之一。用在线去重,存储前端在附加数据可被写入存储后端之前标识附加数据是否有可能是某个当前存储的数据的副本。在此类附加数据被确定为可能是副本的情况下,存储前端事先阻止向存储后端写副本附加数据。

[0004] 用后处理去重,存储前端向存储后端装置写附加数据。随后,存储前端从存储后端读回附加数据,并且标识已经写入的附加数据是否有可能是某个其它当前存储的数据的副本。在此类已经写入的附加数据被确定为可能是副本的情况下,存储前端命令存储后端擦除已经写入的附加数据。

[0005] 在线去重倾向于在存储前端与存储后端之间使用比较小的通信带宽,并且倾向于使用比较少的存储后端资源,二者都导致性能节省。然而,通过服务于未决的写请求而在线计算和检查哈希需要存储后端中的更鲁棒、昂贵的处理硬件,并且倾向于降低通过存储前端的存储路径的性能。相比之下,更常见的后处理去重对于存储前端的更低处理要求权衡存储前端与存储后端之间通信带宽的附加使用和存储后端资源的附加使用。

附图说明

[0006] 在附图中作为示例而非限制图示了本发明的实施例,并且附图中:

图1是图示根据实施例实现存储去重的系统的元件的框图。

[0007] 图2是图示根据实施例实现存储去重的系统的元件的框图。

[0008] 图3是图示根据实施例交换去重信息的存储前端的元件的框图。

[0009] 图4是图示根据实施例确定去重信息的存储装置的元件的框图。

[0010] 图5是图示根据实施例用于实现数据去重的方法的元素的流程图。

[0011] 图6是图示根据实施例用于确定数据去重信息的方法的元素的流程图。

[0012] 图7是图示根据实施例提供数据去重信息的计算机平台的元件的框图。

具体实施方式[0013] 图1图示了根据实施例用于实现数据去重的存储系统100的元件。存储系统100例如可包含存储前端120和耦合到其的一个或多个客户端装置(由说明性客户端110a、...、IlOn表示)。尽管存储系统100的特征在本文中依据由客户端110a、…、IlOn请求的数据存储进行讨论,但根据不同实施例,此类讨论可扩展成应用于各种各样一个或多个附加或备选客户端中的任一客户端。

[0014] 其中一个或多个客户端110a、...、IlOn可与存储系统100的存储后端140通信——例如以各种方式请求对存储后端140的数据读访问和/或数据写访问。存储前端120例如可包括计算机平台的硬件、固件和/或软件以提供支持来自客户端110a、…、I 1n的请求的一个或多个存储管理服务。由存储前端120提供的一个或多个存储管理服务例如可包含数据去重服务,以便评估存储在存储后端140中的数据是否可能是已经存储在存储后端140中的其它数据的副本。例如,存储前端120可包含去重引擎122——例如硬件、固件和/或软件逻辑——以执行此类去重评估。

[0015] 在实施例中,存储前端120提供支持由存储后端140的数据存储的一个或多个附加服务。作为说明而非限制,存储前端120可提供一个或多个安全服务以保护存储后端140中的一些或所有。例如,存储前端120可包含或者以其它方式访问一个或多个恶意检测、阻止和/或响应服务——例如以降低病毒、蠕虫、木马、间谍软件和/或影响存储前端120的操作或对存储前端120的访问的其它恶意软件的威胁。在一个实施例中,恶意软件检测可至少部分基于数据指纹信息的评估,诸如根据本文讨论的各种技术交换的数据指纹信息。

[0016] 在实施例中,存储前端120中的一些或所有例如包含个人计算机或者以其它方式驻留在其上,个人计算机诸如台式计算机、膝上型计算机、手持计算机——例如平板、掌上电脑、手机、媒体播放器等——和/或用于服务于来自客户端的存储请求的其它此类计算机。备选地或此外, 存储前端120中的一些或所有可包含用于服务于此类存储请求的服务器、工作站或其它此类装置。

[0017] 客户端110a、-UlOn可通过各种各样的共享通信通路和/或专用通信通路中的任何通路以各种方式耦合到存储前端120。作为说明而非限制,客户端110a、…、IlOn中的一些或所有可通过各种各样的网络组合中的任何网络耦合到存储前端120,所述网络包含但不限于专用存储区域网络(SAN)、局域网(LAN)、广域网(WAN)、虚拟LAN (VLAN)、因特网等中的一个或多个网络。

[0018] 存储后端140可包含一个或多个存储组件——例如由说明性存储组件150a、…、150x表示——其各包含一个或多个存储装置。存储后端140根据不同实施例可包含一个或多个附加或备选存储组件的各种各样组合中的任何组合。存储组件150a、…、150x可以各种方式包含硬盘驱动器、固态驱动器、光学驱动器等中的一个或多个。在实施例中,存储组件150a、-U50x中的一些或所有包含相应计算机平台。例如,存储后端140可包含多个连网的计算机平台一或备选地只有单个计算机平台一其与实现存储前端120的计算机平台截然不同。在实施例中,存储前端120和存储后端140的至少一个存储装置驻留在同一计算机平台上。

[0019] 存储后端140可经由一个或多个通信信道(包括存储系统100的硬件接口 130)耦合到存储前端120。硬件接口 130例如可包含一个或多个连网元件——例如包含交换机、路由器、桥、集线器等中的一个或多个一以支持实现存储前端120的计算机平台与包含存储组件150a、…、150x中的一些或所有的计算机平台之间的网络通信。备选地或此外,硬件接口 130可包含一个或多个计算机总线一例如以便将实现存储前端120的计算机平台的处理器、芯片集和/或其它元件与包含存储组件150a、…、150x中的一些或所有的相同计算机平台的其它元件耦合。作为说明而非限制,硬件接口 130可包含外围组件互连(PIC)Express总线、符合串行高级技术附件(SATA)的总线、小计算机系统接口(SCSI)总线等中的一个或多个。

[0020] 在实施例中,存储后端140的至少一个存储组件包含本地计算由那个存储组件存储的数据的数据指纹的逻辑。作为说明而非限制,存储组件150a可包含数据指纹生成器155——例如硬件、固件和/或软件逻辑——以生成表示存储前端120已经指示要由存储组件150a存储的对应数据的哈希值或其它指纹值。

[0021] 存储组件150a可进一步包含向存储前端120提供标识由数据指纹生成器155计算的数据指纹的信息的逻辑。基于来自存储组件150a的信息,去重引擎122或类似去重逻辑可以确定要存储在存储组件150a中的数据是否是已经存储在存储后端140中的其它信息的副本。

[0022] 例如,存储前端120可包含或者以其它方式可以访问指纹信息贮存库124以存储表示当前存储在存储前端140中的相应数据的指纹值。去重引擎122可搜索指纹信息贮存库124以确定与已经存储在存储后端140中的数据关联的数据指纹是否匹配与存储在存储组件150a中的数据对应的数据指纹。在指纹信息贮存库124中发现匹配的数据指纹的情况下,去重引擎122可发起一个或多个补救措施以阻止或校正副本数据在存储组件150a中的存储。

[0023] 图2图示了根据实施例用于实现数据去重的系统200的元件。系统200可包含能够经由主机系统220与 存储后端240交换命令和数据的一个或多个客户端210a、…、210η。主机系统220可包括耦合到芯片集265的主机中央处理单元(CPU) 270。主机CPU 270例如可包括可从加利福尼亚州圣克拉拉的英特尔公司得到的Intel® Pentium® IV微处理器的功能性。备选地,主机CPU 270可包括来自各种制造商的各种各样其它类型微处理器中的任何类型微处理器,而不脱离此实施例。

[0024] 芯片集265例如可包括可将主机CPU 270、存储器275和用户接口系统285彼此耦合并耦合到总线系统225的主机桥/集线器系统。芯片集265还可包含可将主机桥/总线系统耦合到总线系统225的I/O桥/集线器系统(未示出)。芯片集265可包括集成电路芯片,例如包含图形存储器和/或I/O控制器集线器芯片集组件,尽管也可使用或者备选地可使用其它集成电路芯片,而不脱离此实施例。用户接口系统285例如可包括键盘、定点装置和显示系统,其可允许人类用户向系统200输入命令并监视系统200的操作。

[0025] 总线系统225可包括符合可从PCI特别兴趣小组波特兰或美国得到的2002年7月22日公布的外围组件互连(PCI) Express™基本规范修订1.0的总线(本文下面称为“PCI Express ™总线”)。备选地或此外,总线系统225可包括符合可从上述PCI特别兴趣小组波特兰或美国得到的2000年7月24日的PC1-X规范修订1.0a的总线(本文下面称为“PC1-X总线”)。而且,总线系统225备选地或此外可包括各种其它类型和配置的总线系统之一,而不脱离此实施例。主机系统220的主机CPU 270、系统存储器275、芯片集265、总线系统225和一个或多个其它组件可包含在单个电路板诸如例如系统母板中。[0026] 在实施例中,存储前端功能性可由主机CPU 270的一个或多个过程和/或芯片集265的一个或多个组件实现。此类前端功能性可包含去重逻辑,诸如去重引擎122的去重逻辑一例如,至少部分由在主机CPU 270上执行的过程实现的此类去重逻辑。在实施例中,主机系统220的存储前端功能性包含控制存储装置250a、…、250x中的一个或多个的操作的硬件和/或软件。作为说明而非限制,此类前端功能性可包含存储控制器280——例如I/O控制器集线器、平台控制器集线器或用于控制对存储后端240的访问(例如数据读访问和/或数据写访问)的其它此类机制。在实施例中,存储控制器280是芯片集265的组件。

[0027] 存储后端240例如可包括一个或多个存储装置——由说明性存储装置250a、…、250x表示一其例如可包含一个或多个硬盘驱动器(HDD)、固态驱动器(SDD)等各种各样组合中的任何组合。存储装置250a、…、250x中的一些或所有例如可由主机系统220的存储控制器280独立访问,和/或可以能够由存储控制器280例如使用盘标识(盘ID)信息进行标识。备选地或此外,存储装置250a、…、250x中的一些或所有可在其上将数据存储在所选单元,例如逻辑块地址(LBA)、扇区、集群和/或它们的任何组合中。存储后端240可包含在一个或多个相应外壳中,所述外壳例如可与装入主机系统220母板以及其中包含的组件的外壳分开。备选地或此外,存储后端240中的一些或所有可被集成到主机系统220中。

[0028] 存储控制器280可耦合到存储后端240并控制其操作。在实施例中,存储控制器280经由一个或多个相应通信链路、计算机平台总线线路等耦合到一个或多个存储装置250a、…、250x。存储控制器280可以各种方式与存储装置250a、...、250x中的一些或所有交换数据和/或命令——例如使用各种各样不同通信协议(例如光纤信道(FC)、串行高级技术附件(SATA)和/或串行附连的小计算机系统接口(SAS)协议)中的一个或多个协议。备选地,存储控制器280可使用其它和/或附加通信协议以各种方式与存储装置250a、...、250x中的一些或所有交换数据和/或命令,而不脱离此实施例。

[0029] 根据实施例,如果存储控制器280使用FC协议与存储后端240交换数据和/或命令,则它可与在ANSI标准光纤信道(FC)物理和信令接口 -3X3.303:1998规范中描述的接口 /协议符合或兼容。如果存储控制器280使用SATA协议与存储后端240交换数据和/或命令,则它可与在2011年7月由串行ATA国际组织(SATA-1O)发布的串行ATA修订

3.1规范或各种以后或早前的SATA规范中描述的协议符合或兼容。如果存储控制器280使用SAS协议与存储后端240交换数据和/或命令,则它可与在由美国国家标准协会在2002年10月19日公布的国际信息技术标准委员会的美国国家标准(INCITS) TlO技术委员会、项目 T10/1562-D、修订 2b 的工作草案 “ Informat1n Technology—Serial Attached SCSI(SAS) ” (下文称为“SAS标准”)和/或SAS标准的以后公布的版本中描述的协议符合或兼容。

[0030] 存储控制器280可被耦合以经由总线系统225与系统存储器275、主机CPU 270、用户接口系统285、芯片集265和/或一个或多个客户端210a、《"、210n交换数据和/或命令。在总线系统225包括PCI Express ™总线或PC1-X总线的情况下,存储控制器280例如可经由与扩展插槽或类似接口(未示出)兼容或符合的PCI Express™或PC1-X总线例如耦合到总线系统225。

[0031] 取决于如何格式化一个或多个存储装置250a、…、250x中每个存储装置的介质,存储控制器280可控制读和/或写操作以访问采用逻辑块地址(LBA)格式的盘数据,即,其中从装置中在预先选择的逻辑块单元中读取数据。当然,访问存储在一个或多个存储装置250a、…、250x中的盘数据——例如经由网络通信链路和/或计算机平台总线——的其它操作一般在本文中可想到,并且例如可包括按集群、按扇区、按字节和/或数据的其它单位度量访问数据。

[0032] 存储在一个或多个存储装置250a、…、250x中的数据例如可根据文件分配表(FAT)格式、新技术文件系统(NTFS)格式和/或其它盘格式中的一个或多个进行格式化。如果存储装置使用FAT格式进行格式化,则此类格式可与在由微软公司在2000年12月6 日公布的修订 1.3 “Microsoft Extensible Firmware Initiative FAT 32 File SystemSpecificat1n”中描述的格式化标准符合或兼容。如果存储在大容量存储装置中的数据使用NTFS格式进行格式化,则此类格式可与诸如可公开得到的NTFS格式化标准符合或兼容。

[0033] 在实施例中,存储后端240中的至少一个存储装置包含本地计算要由那个存储组件存储的数据的数据指纹的逻辑。作为说明而非限制,存储组件250a可包含数据指纹生成器255——例如硬件、固件和/或软件逻辑——以生成表示在主机系统220内实现的存储前端已经指示要由存储组件250a存储的对应数据的哈希值或其它指纹值。指纹值可由数据指纹生成器255提供——例如以便存储前端确定可执行的去重操作。

[0034] 一个或多个客户端210a、…、210η可各包含适当的网络通信电路(未示出)以请求主机系统220的存储前端功能性以便访问存储后端240。此类访问例如可经由网络215,包含局域网(LAN)、广域网(WAN)、存储区域网络(SAN)或其它无线和/或有线网络环境中的一个或多个。

[0035] 图3是根据实施例用于提供数据去重的存储前端300的元件的功能表示。存储前端300例如可包含存储前端 120的其中一些或所有特征。在实施例中,存储前端300的功能元件以各种方式由包含主机系统220的一些或所有特征的计算机平台的逻辑——例如硬件、固件和/或软件实现。

[0036] 存储前端300可包含客户端接口 310,以交换与客户端(诸如客户端210a、…、210η之一)的通信——例如以接收对于存储前端300访问存储后端(未示出)的客户端请求。客户端接口 310可包含各种各样有线和/或无线网络接口逻辑中的任何逻辑——例如诸如网络接口 260的逻辑——以便与此类客户端通信。在实施例中,存储前端300可包含耦合到客户端接口 310的一个或多个协议引擎320,一个或多个协议引擎320以各种方式支持与相应客户端通信的一个或多个协议。作为说明而非限制,一个或多个协议引擎320可支持网络文件系统(NFS)通信、TCP/IP通信、代表性状态转移(ReST)通信、因特网小计算机系统接口(iSCSI)通信、基于以太网的通信(诸如经由通过以太网的光纤信道(FCoE)的通信)和/或用于在客户端与存储前端300之间交换数据存储请求的各种各样其它协议中的任何协议。一个或多个协议引擎320例如可包含是芯片集265的一部分或在芯片集265的控制下操作的专用硬件。

[0037] 存储后端例如可包含直接或间接耦合到存储前端300的存储接口 340的一个或多个存储组件。备选地或此外,存储后端可包含驻留在实现存储前端300的计算机平台上的一个或多个存储组件。客户端接口 310和存储接口 340备选地可合并到同一物理接口硬件中,尽管某些实施例不限于这方面。[0038] 在实施例中,存储前端300提供支持客户端将数据存储在存储后端中的请求的一个或多个管理服务。例如,存储前端300可包含存储管理器330——例如包含硬件(诸如存储控制器280中的硬件)和/或软件逻辑(诸如在主机CPU 270中执行的一个或多个过程)——以保存当前存储在存储后端中的数据的哈希信息贮存库370。哈希信息贮存库370例如可位于主机系统220的存储器275或某个非易失性存储装置(未示出)中。在备选实施例中,哈希贮存库370可由存储前端300管理(但仍然在存储前端300外部)——例如其中哈希贮存库370被存储在(例如分布在)存储后端的一个或多个存储装置中。存储管理器330可保存各种各样附加或备选数据指纹贮存库中的任何贮存库以便引用以确定执行去重操作。尽管某些实施例的特征在本文中依据哈希值的存储、比较等进行讨论,但本领域技术人员将认识到,此类讨论可被扩展成各种各样附加或备选类型的数据指纹信息中的任何类型信息。

[0039] 在实施例中,哈希信息贮存库370包含一个或多个条目,每个条目对应于存储在后端存储中的相应数据。在给定时间点,哈希信息贮存库370中的一个或多个条目各可存储表示对应于那个条目的所存储数据的哈希的相应值。哈希信息贮存库370可由存储管理器330基于向存储后端写数据和/或从存储后端删除数据而偶尔更新。作为说明而非限制,存储管理器330可基于对应于从存储后端删除那个条目的数据而从哈希信息贮存库370中移除条目。备选地或此外,存储管理器330可基于修改对应于那个条目的数据的写操作而修订存储在哈希信息贮存库370的条目中的哈希值。

[0040] 在实施例中,存储前端300包含耦合到(或备选地包含在)存储管理器330的去重引擎350。去重引擎350例如可由在主机CPU 270中执行的过程实现。在实施例中,去重引擎350评估被考虑用于将来有效存储在存储后端中的数据的哈希值——例如存储在存储前端的哈希寄存器360中的哈希值。例如,如果尚未确定正讨论的数据是否是当前存储在存储后端中的任何其它数据的副本,则数据可考虑将来有效存储在存储后端中。在正讨论的数据被确定为是副本数据的情况下,可阻止正讨论的数据被写入存储后端。备选地,在其存储在存储后端之后,此类数据可从存储后端删除和/或可以其它方式无效。

[0041] 在实施例中,响应于考虑的数据由存储前端发送以便暂时存储在存储后端,由存储后端提供所存储的哈希值——例如用于存储在哈希寄存器360中。此类存储可被视为暂时的,例如,至少目前为止此类数据服从于由去重引擎350进行评估的结果可被移除或者以其它方式无效。评估哈希寄存器360中的哈希值例如可包含:去重引擎350搜索哈希信息贮存库370以确定是否其中的任何哈希值匹配存储在哈希寄存器360中的值。

[0042] 在实施例中,存储管理器330可基于存储前端300确定此类数据不是与已经在哈希信息贮存库370中的任何条目对应的数据的副本而允许或者以其它方式实现数据在存储后端中的将来有效存储——并且可进一步向哈希信息贮存库370添加对应条目。根据各种实施例,存储管理器330可提供各种各样附加或备选存储管理服务中的任何服务。例如,存储管理器330可以确定如何将数据分布在存储后端的一个或多个存储组件上。作为说明而非限制,存储管理器330可选择数据应该驻留在存储后端哪里一例如包含:基于具体驱动器的当前利用级别、基于盘的年龄等选取那个驱动器来存储数据的拷贝。附加地或备选地,存储管理器330可提供认证和/或授权服务一例如以确定准许客户端访问存储后端。某些实施例不限于任何服务,除了去重相关的服务,这些服务可进一步由存储管理器330提供。

[0043] 图4图示了根据实施例用于提供支持数据去重的信息的存储装置400的功能元件。存储装置400例如可包含存储装置250a的一些或所有特征。在实施例中,存储装置400向具有存储前端300的一些或所有特征的存储前端提供数据签名信息。

[0044] 存储装置400可包含计算机平台或驻留在计算机平台中,该计算机平台与实现存储前端功能性的另一计算机平台截然不同。存储装置400例如可包含用于从远离存储装置400的平台接收一个或多个数据存储命令的接口 410,平台作为存储前端操作。在此类实施例中,接口 410可包含各种各样有线和/或无线网络接口中的任何网络接口。

[0045] 备选地,存储装置400可以是实现用于一个或多个存储后端组件(包含存储装置400)的存储前端功能性的计算机平台中的组件——例如其中存储装置400与实现此类存储前端功能性的计算机平台的逻辑截然不同。在此类实施例中,接口 410备选地可包含连接器硬件以将存储装置400直接或间接耦合到平台的一个或多个其它组件——例如包含I/O控制器、处理器、平台控制器集线器等中的一个或多个的组件。作为说明而非限制,接口 410可包含外围组件互连(PIC)总线连接器、外围组件互连Express (PICe)总线连接器、SATA连接器、小计算机系统接口(SCSI)连接器等。在实施例中,接口 410包含发送和/或接收一个或多个命令的电路逻辑,所述命令与非易失性存储器主机控制器接口(NVMHCI)规范(诸如由NVMHCI工作组在2008年4月发布的NVMHCI规范1.0)符合或以其它方式兼容,尽管某些实施例不限于这方面。

[0046] 存储装置400可经由接口 410从存储前端接收写命令——例如NVMHCI写命令——其规定将数据存储在存储装置400的存储介质440中。存储介质440例如可包含其中一个或多个固态介质——例如NAND闪存、NOR闪存等——磁阻随机存取存储器、纳米线存储器、相变存储器、磁硬盘介质、光盘介质等。在实施例中,存储装置400包含协议逻辑420——例如根据协议评估写命令和/或根据协议确定一个或多个操作以对写命令起作用或以其它方式对写命令响应的电路逻辑。

[0047] 存储器装置400可进一步包含访问逻辑430以实现对存储介质440的写——例如写命令所指导的。作为说明而非限制,访问逻辑430可包含或者以其它方式控制操作(例如选择、锁存、驱动等)地址信号线和/或数据信号线(未示出)用于向存储介质440中的一个或多个位置写数据的逻辑。在实施例中,访问逻辑430包含独立于存储装置400的主机处理器访问存储介质440的直接存储器访问逻辑——例如在存储器装置400包含具有此类主机处理器的计算机平台的实施例中。

[0048] 访问逻辑430可包含或耦合到哈希生成逻辑450——例如执行计算以生成表示被写入存储介质440的数据的哈希值的电路逻辑。

[0049] 哈希生成逻辑450可包含状态机或其它硬件以接收正写入或要写入存储介质440的数据的版本作为输入。基于输入数据,哈希生成逻辑可执行各种各样计算中的任何计算以生成哈希值——例如MD5消息摘要算法哈希值、安全哈希算法SHA-265哈希值或各种各样附加或备选哈希值中的任何哈希值——表示正写入存储介质440的对应数据。哈希生成逻辑450可存储此类哈希值——例如在哈希寄存器460中——以便随后发送到存储前端。在实施例中,可存储多个哈希值——例如每个存储到多个哈希寄存器中的不同哈希寄存器——每个哈希值用于要写入的数据的相应部分。例如,由8512字节块组成的4KB大块数据写可能要求在不同的相应哈希槽中存储8个哈希值,其中8个哈希值一起用于表示大块数据。

[0050] 在实施例中,协议逻辑420可在对存储前端的应答通信中包含用于标识存储在哈希寄存器460中的哈希值的信息。例如,从存储前端经由接口 410接收的写命令根据通信协议可导致来自存储后端的写响应消息以确认接收到消息和/或完成了请求的数据写。作为说明而非限制,eNVMHCI通过在由驱动器或发送命令的其它代理直接可见的寄存器的命令状况字段中写状况信息来响应于命令诸如写命令的完成。各种实施例将此类协议扩展成规定在成功写的上下文中返回一个或多个哈希值——例如在命令状况的通信内或附加于命令状况的通信。例如,协议逻辑420可规定此类协议的扩展——例如凭此根据该协议存储在哈希寄存器460中的值被添加到常规写响应通信,或者以其它方式连同常规写响应通信一起发送。

[0051] 备选地,存储在哈希寄存器460中的哈希值可在暂时数据写之后执行的独立通信中提供。在实施例中,物理或虚拟装置——例如由虚拟逻辑单元号标识——可将块号以及它们关联的哈希值存储在日志中。在此类实例中,存储前端可请求读以从日志中拉取(pull)哈希信息——例如以懒惰方式捕获大量哈希值。

[0052] 图5图示了根据实施例用于提供数据去重的方法500的选择元素。方法500可在存储前端执行,该存储前端例如包含存储前端300的一些或所有特征。

[0053] 方法500可包含在510从存储前端向存储后端的存储装置发送写命令。此类存储装置例如可包含存储装置400的一些或所有特征。存储前端例如可包含在计算机平台的处理器和那个计算机平台的芯片集的一个或多个组件上执行的至少一个过程。在此类实例中,存储后端可经由硬件接口——例如网络接口、I/O总线等——稱合到处理器和芯片集。例如,存储装置可以是包含实现存储前端功能性的处理器和芯片集的相同计算机平台的组件。备选地,存储装置可驻留在第二计算机平台内,它与计算机平台连网实现此类存储前端功能性。

[0054] 存储前端响应于存储客户端请求访问存储后端或者以其它方式代表存储客户端请求访问存储后端而将在510发送的写命令提供给存储装置。在实施例中,写命令规定将第一数据写入存储装置。例如,写命令可包含正讨论的数据,或者以其它方式与之一起发送。

[0055] 在实施例中,存储装置存储是写命令的对象的数据——例如其中数据存储最初至少在暂时的基础上。例如,在最初存储在存储装置中之后,数据可考虑将来有效存储在存储后端。此类将来有效存储例如可取决于关于暂时存储的数据是否是已经存储在存储后端中的任何其它数据的副本的确定。

[0056] 支持此类评估,存储装置可响应于接收到写命令而本地计算第一数据的数据指纹——例如哈希。而且,存储装置可进一步发送传递所计算的数据指纹的消息。

[0057] 方法500可包含在520从存储装置接收第一数据的数据指纹。响应于接收到数据指纹,方法500可在530确定是否要执行去重操作。例如,根据通信协议,可在存储前端与存储装置之间交换写命令。在此类实例中,在520,存储前端可在对应于写命令的响应消息中接收数据指纹——例如其中通信协议需要写命令的此类响应消息。存储前端的一个或多个附加操作可基于接收到此类响应消息来执行。例如,在存储装置暂时存储数据之前,存储前端可存储数据的拷贝——例如在存储前端的高速缓存中。存储前端可进一步响应于响应消息而从高速缓存中冲掉第一数据的此类拷贝。在530,存储前端可生成传递此类确定结果的信号。

[0058] 在实施例中,在530确定是否要执行去重操作包含访问包含一个或多个数据指纹的贮存库。一个或多个指纹例如可各表示当前存储在存储后端中的相应数据。搜索贮存库以确定是否贮存库的一个或多个数据指纹中的任何数据指纹匹配第一数据的数据指纹。搜索贮存库例如可包含评估表示存储在存储后端的某个第二存储装置中的数据的数据指纹。数据指纹与某个其它数据指纹之间的匹配可指示暂时存储在存储装置中的数据与当前存储在存储后端中的某个其它信息一样——例如其中其它数据存储在接收到写命令的存储装置中,或备选地,存储在存储后端的某个其它存储装置中。

[0059] 如果第一数据由存储前端确定为是存储在存储后端中的其它数据的副本,则存储前端可进一步发信号通知要执行去重操作。例如,正讨论的数据可暂时存储在存储装置中的第一存储器位置。在此类实例中,去重操作例如可包含从第一存储器位置删除数据。备选地或此外,去重操作可包含删除指示数据存储在第一存储器位置的元数据。基于在530的确定的去重操作例如可包含用于移除此类副本数据或者以其它方式使此类副本数据无效的各种各样常规技术中的任何技术。

[0060] 在实施例中,方法500可进一步包含:确定在530确定要执行的任何去重的时间和/或方式。例如,可响应于在530的确定立即执行去重。备选地,去重通知可被排队以便以懒惰方式管理此类去重。在实施例中,执行去重可响应于存储前端上的一些载荷落在某个阈限以下一例如指示处理循环可用于投资于去重数据擦除的载荷下降。

[0061] 方法500的方法的一个优点例如是,它允许计算哈希所需的处理载荷随着存储系统中的盘或其它存储装置的数量而容易地缩放。在传统存储系统中,单个节点计算所有哈希,因为数据被移动了,这可降低性能。相比之下,某些实施例以各种方式允许哈希计算被推送(即分布)到一个或多个远程驱动器,由此散布那个处理载荷,并使其更容易缩放到更大存储系统。

[0062] 图6图示了根据实施例用于提供支持数据去重的信息的方法600的选择元素。方法600可在存储前端的存储装置处执行——例如存储装置包含存储装置400的一些或所有特征。在实施例中,方法600表示结合实现方法500的存储前端的存储装置的操作。

[0063] 方法600可包含在610接收从存储前端发送的写命令,该写命令——例如NVMHCI写命令——规定将数据写入存储装置。在实施例中,写命令规定将第一数据写入存储装置。例如,写命令可包含是写命令的对象的数据,或者以其它方式与之一起发送。

[0064] 在实施例中,存储装置存储是写命令的对象的数据——例如其中数据存储最初至少在暂时的基础上。例如,在最初存储在存储装置中之后,数据可考虑将来有效存储在存储后端。此类将来有效存储例如可取决于关于暂时存储的数据是否是已经存储在存储后端中的任何其它数据的副本的确定。

[0065] 支持此类评估,方法600可包含在620存储装置计算第一数据的数据指纹,该计算响应于接收到写命令。而且,在630,存储装置可进一步向存储前端传递本地计算的数据指纹。例如,响应于NVMHCI写命令而传递本地计算的数据指纹,尽管某些实施例不限于这方面。[0066] 响应于数据指纹的传递,存储前端的去重引擎可确定是否要执行去重操作。例如,此类确定例如可对应于在530的确定。在实施例中,存储装置可从存储前端接收指导存储后端执行数据的去重操作的消息。例如,正讨论的数据可暂时存储在存储装置中的第一存储器位置。在此类实例中,去重操作例如可包含存储装置从第一存储器位置删除数据。备选地或此外,去重操作可包含存储装置删除或者以其它方式改变指示数据有效存储在第一存储器位置的元数据。备选地或此外,存储在存储装置外部的元数据可被存储前端删除或者以其它方式改变——此类改变/删除反映数据未有效存储在第一存储器位置。

[0067] 图7是可实现本发明实施例的示例计算机系统700的一个实施例的图示。在一个实施例中,计算机系统700包含计算机平台705,计算机平台705例如可包含存储组件150a的一些或所有特征。计算机平台705例如可包含存储后端和/或存储组件(例如存储装置),存储组件是此类存储后端的组件。

[0068] 计算机平台705可包含耦合到总线725的处理器710,处理器710具有一个或多个处理器核712。存储器718、存储装置740、非易失性存储装置720、显示器控制器730、输入/输出控制器750以及调制解调器或网络接口 745也耦合到总线725。计算机平台705可通过网络接口 745对接到一个或多个外部装置。此接口 745可包含调制解调器、集成服务数字网(ISDN)调制解调器、电缆调制解调器、数字订户线(DSL)调制解调器、T-1线路接口、T-3线路接口、以太网接口、WiFi接口、WiMax接口、蓝牙接口、或耦合到另一计算机的各种各样其它此类接口中的任何接口。在说明性示例中,可建立网络连接760以便计算机平台705经由网络接口 745接收和/或传送与计算机网络765 (诸如例如局域网(LAN)、广域网(WAN)或因特网)的通信。在一个实施例中,计算机网络765进一步耦合到实现存储前端功能性的远程计算机(未示出)。

[0069] 处理器710可包含常规微处理器的特征,包含但不限于英特尔公司x86、Pentium®或Itanium®处理器系列微处理器、摩托罗拉系列微处理器等的特征。存储器718可包含但不限于动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、Rambus动态随机存取存储器(RDRAM)等。显示器控制器730可以用常规方式控制显示器735,显示器735在一个实施例中可以是阴极射线管(CRT)、液晶显示器(LCD)、有源矩阵显示器等。耦合到输入/输出控制器750的输入/输出装置755可以是键盘、盘驱动器、打印机、扫描仪以及其它输入和输出装置,包含鼠标、跟踪球、触控板、游戏杆或其它定点装置。

[0070] 计算机平台705还可包含其上可存储固件和/或数据的非易失性存储装置720。非易失性存储装置包含但不限于只读存储器(ROM)、闪存、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等。

[0071] 存储装置740在一个实施例中可以是磁硬盘、光盘或用于大量数据的另一形式的存储装置。在计算机平台705中执行软件期间,一些数据可通过直接存储器存取过程被写到存储器718中。例如,存储器管理单元(MMU) 715可便于在存储器718与外设(未示出)之间的DMA交换。备选地,存储器718可被直接耦合到总线725——例如其中MMU 715被集成到处理器710的非核中一尽管各种实施例不限于这方面。认识到,软件和/或数据可驻留在存储装置740、存储器718、非易失性存储装置720中,或者可经由调制解调器或网络接口 745传送或接收。[0072] 计算机平台705可从存储前端(未示出)接收写命令,写命令规定将数据写入计算机平台705的存储介质。此类数据例如可被存储到存储器718、存储装置740等。计算机平台705的数据指纹生成器逻辑(未示出)例如可驻留在存储器管理单元715、I/O控制器750或计算机平台705的其它此类组件中。作为说明而非限制,存储器管理单元715或I/O控制器750的DMA引擎(未示出)或其它此类硬件可包含或可以使用用于自动生成已写入、正写入或要写入计算机平台705的数据的哈希或其它数据指纹的逻辑。

[0073] 本文描述了用于管理数据存储的技术和架构。在以上描述中,为了说明的目的,阐述了大量特定细节以便提供对某些实施例的透彻理解。然而,本领域技术人员要明白,在没有这些特定细节的情况下也可实行某些实施例。在其它实例中,以框图形式示出了结构和装置以免使描述模糊不清。

[0074] 在说明书中提及“一个实施例”或“实施例”意味着,结合该实施例描述的具体特征、结构或特性包含在本发明的至少一个实施例中。在说明书中各处出现的短语“在一个实施例中”不一定全都是指同一实施例。

[0075] 具体实施方式的一些部分依据对计算机存储器内的数据位的操作的算法和符号表示而呈现。这些算法描述和表示是计算领域的技术人员用于最有效地将它们工作的实质传达给本领域技术人员所用的手段。算法在此并且一般地被视为导致期望结果的步骤的自我一致的序列。这些步骤是需要物理量的物理操纵的那些步骤。通常,尽管不是必需的,这些量采取能够被存储、转移、组合、比较以及以其它方式操控的电信号或磁信号的形式。已经证明方便的是,有时主要是出于习惯使用的原因,把这些信号称为位、值、元素、符号、字符、项、数字等。

[0076] 然而,应该牢记的是,所有这些以及类似的术语都与适当的物理量关联,并且仅仅是应用于这些量的方便标记。除非特别声明,否则根据本文讨论显然的是,认识到在说明书通篇利用诸如“处理”或“计算”或“计算”或“确定”或“显示”等术语的讨论是指计算机系统或类似电子计算装置的动作和过程,其将计算机系统的寄存器和存储器内表示为物理(电子)量的数据操控并转变成在计算机系统存储器或寄存器或其它此类信息存储、传送或显示装置内类似地表示为物理量的其它数据。

[0077] 某些实施例还涉及用于执行本文操作的设备。此设备可特别为了所需目的构造,或者它可包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质上,诸如但不限于任何类型盘(包含软盘、光盘、CD-ROM以及磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)诸如动态RAM (DRAM)、EPROM、EEPR0M、磁卡或光卡、或适用于存储电指令并耦合到计算机系统总线的任何类型介质。

[0078] 本文呈现的算法和显示器不是固有地涉及任何具体计算机或其它设备。各种通用系统可与根据本文教导的程序一起使用,或者它可以证明是便于构造更专业化设备以执行所需的方法步骤。各种各样这些系统的所需结构根据本文描述将显而易见。此外,某些实施例未参考任何具体编程语言进行描述。将认识到,各种各样的编程语言都可用于实现本文所描述的此类实施例的教导。

[0079] 除了本文所描述的之外,还可对所公开实施例及其实现进行各种修改,而不脱离它们的范围。因此,本文的图示和示例应该以说明性而非约束性意义来解释。本发明的范围应该仅参考随附权利要求进行量度。

Claims (20)

1.一种在第一计算机平台提供存储前端的方法,所述方法包括: 从所述存储前端向存储后端的存储装置发送写命令,所述写命令规定将第一数据写入所述存储装置; 从所述存储装置接收所述第一数据的数据指纹,所述数据指纹由所述存储装置响应于所述写命令而计算; 响应于接收所述数据指纹而确定是否要执行去重操作;以及 如果所述第一数据被确定为是存储在所述存储后端中的其它数据的副本,则发信号通知要执行所述去重操作。
2.如权利要求1所述的方法,其中所述存储前端包含如下至少一项: 在所述第一计算机平台的处理器上执行的过程;以及 所述第一计算机平台的芯片集的一个或多个组件; 其中所述存储后端经由硬件接口耦合到所述处理器和所述芯片集。
3.如权利要求2 所述的方法,其中耦合到所述第一计算机平台的第二计算机平台包含所述存储装置。
4.如权利要求1所述的方法,其中确定是否要执行所述去重操作包含: 访问包含一个或多个数据指纹的贮存库,每个数据指纹表示存储在所述存储后端中的相应数据;以及 搜索所述贮存库以确定是否所述贮存库的所述一个或多个数据指纹中的任何数据指纹匹配所述第一数据的所述数据指纹。
5.如权利要求1所述的方法,其中所述存储装置是所述第一计算机平台的组件,所述方法进一步包括: 在所述存储装置接收所述写命令; 响应于接收所述写命令而通过所述存储装置计算所述数据指纹;以及 通过所述存储装置向所述存储前端发送所述数据指纹。
6.如权利要求5所述的方法,其中所述写命令根据通信协议交换,其中发送所述数据指纹包含所述存储装置向所述存储前端发送对应于所述写命令的响应消息,所述响应消息根据所述通信协议。
7.如权利要求1所述的方法,其中所述去重操作包含如下一项: 从第一存储器位置删除所述第一数据;以及 删除指示所述第一数据存储在所述第一存储器位置的元数据。
8.一种用于提供存储前端的计算机系统,所述计算机系统包括: 所述存储前端的协议引擎,所述协议引擎向存储后端的存储装置发送写命令,所述写命令规定将第一数据写入所述存储装置; 所述存储前端的去重引擎,所述去重引擎从所述存储装置接收所述第一数据的数据指纹,所述存储装置响应于所述写命令而计算所述数据指纹,所述去重引擎进一步基于接收的数据指纹确定是否要执行去重操作,其中如果所述第一数据被确定为是存储在所述存储后端中的其它数据的副本,则所述去重引擎进一步发信号通知要执行所述去重操作。
9.如权利要求8所述的计算机系统,其中所述存储前端包含如下至少一项: 在计算机系统的处理器上执行的过程;以及所述计算机系统的芯片集的一个或多个组件; 其中所述存储后端经由硬件接口耦合到所述处理器和所述芯片集。
10.如权利要求9所述的计算机系统,其中所述计算机系统耦合到包含所述存储装置的计算机平台。
11.如权利要求8所述的计算机系统,其中所述去重引擎确定是否要执行所述去重操作包含: 所述去重引擎访问包含一个或多个数据指纹的贮存库,每个数据指纹表示存储在所述存储后端中的相应数据;以及 所述去重引擎搜索所述贮存库以确定是否所述贮存库的所述一个或多个数据指纹中的任何数据指纹匹配所述第一数据的所述数据指纹。
12.如权利要求8所述的计算机系统,进一步包括所述存储装置,其中所述存储装置包含: 协议逻辑,用于接收所述写命令;以及 耦合到所述协议逻辑的指纹生成器逻辑,所述指纹生成器逻辑响应于所述写命令而计算所述第一数据的所述数据指纹; 其中所述协议逻辑进一 步向所述存储前端发送所述数据指纹。
13.如权利要求8所述的计算机系统,其中所述去重操作包含如下之一: 从所述第一存储器位置删除所述第一数据;以及 删除指示所述第一数据存储在所述第一存储器位置的元数据。
14.如权利要求8所述的计算机系统,其中所述写命令根据通信协议交换,其中传递所述数据指纹包含所述存储装置向所述存储前端发送对应于所述写命令的响应消息,所述响应消息根据所述通信协议。
15.一种存储装置,包含: 协议逻辑,用于接收从存储前端发送的写命令,所述写命令规定将第一数据写入所述存储装置;以及 耦合到所述协议逻辑的指纹生成器逻辑,所述指纹生成器逻辑响应于接收的写命令而计算所述第一数据的数据指纹; 其中所述协议逻辑进一步向所述存储前端传递所述数据指纹;并且 其中响应于所述数据指纹的传递,所述存储前端的去重引擎确定是否要执行去重操作。
16.如权利要求15所述的存储装置,其中所述存储前端包含如下至少一项: 在第一计算机平台的处理器上执行的过程;以及 第一计算机平台的芯片集的一个或多个组件; 其中所述存储后端经由硬件接口耦合到所述处理器和所述芯片集。
17.如权利要求16所述的存储装置,其中所述存储装置要作为所述第一计算机平台的组件操作。
18.如权利要求13所述的存储装置,其中所述存储装置要作为耦合到所述第一计算机平台的第二计算机平台的组件操作。
19.如权利要求15所述的存储装置,其中所述去重引擎在所述第一数据存储在所述存储装置中的第一存储器位置之后确定要执行所述去重操作,并且其中所述去重操作包含如下之一: 从所述第一存储器位置删除所述第一数据;以及 删除指示所述第一数据存储在所述第一存储器位置的元数据。
20.如权利要求15所述的存储装置,其中所述写命令根据通信协议交换,其中传递所述数据指纹包含所述存储装置向所述存储前端发送对应于所述写命令的响应消息,所述响应消息根据所述通信 协议。
CN201180076259.9A 2011-11-17 2011-11-17 用于数据去重的方法、设备和系统 CN104040516B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2011/061246 WO2013074106A1 (en) 2011-11-17 2011-11-17 Method, apparatus and system for data deduplication

Publications (2)

Publication Number Publication Date
CN104040516A true CN104040516A (zh) 2014-09-10
CN104040516B CN104040516B (zh) 2017-03-15

Family

ID=48430009

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180076259.9A CN104040516B (zh) 2011-11-17 2011-11-17 用于数据去重的方法、设备和系统

Country Status (3)

Country Link
US (1) US20130311434A1 (zh)
CN (1) CN104040516B (zh)
WO (1) WO2013074106A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391915A (zh) * 2014-11-19 2015-03-04 湖南国科微电子有限公司 一种数据重删方法

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160077924A1 (en) * 2013-05-16 2016-03-17 Hewlett-Packard Development Company, L.P. Selecting a store for deduplicated data
US9619167B2 (en) * 2013-11-27 2017-04-11 Intel Corporation System and method for computing message digests
KR20150074564A (ko) * 2013-12-24 2015-07-02 삼성전자주식회사 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들
US20150269568A1 (en) 2014-03-19 2015-09-24 Capital Payments, LLC Systems and methods for facilitating decryption of payloads received from encryption devices
US9461973B2 (en) 2014-03-19 2016-10-04 Bluefin Payment Systems, LLC Systems and methods for decryption as a service
US9716755B2 (en) 2015-05-26 2017-07-25 Pure Storage, Inc. Providing cloud storage array services by a local storage array in a data center
US9594678B1 (en) * 2015-05-27 2017-03-14 Pure Storage, Inc. Preventing duplicate entries of identical data in a storage device
US9300660B1 (en) 2015-05-29 2016-03-29 Pure Storage, Inc. Providing authorization and authentication in a cloud for a user of a storage array
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US9588691B2 (en) 2015-06-10 2017-03-07 Pure Storage, Inc. Dynamically managing control information in a storage device
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US9892071B2 (en) 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US9851762B1 (en) 2015-08-06 2017-12-26 Pure Storage, Inc. Compliant printed circuit board (‘PCB’) within an enclosure
US10198194B2 (en) 2015-08-24 2019-02-05 Pure Storage, Inc. Placing data within a storage device of a flash array
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
US10374868B2 (en) 2015-10-29 2019-08-06 Pure Storage, Inc. Distributed command processing in a flash storage system
US9740414B2 (en) 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
US10353777B2 (en) 2015-10-30 2019-07-16 Pure Storage, Inc. Ensuring crash-safe forward progress of a system configuration update
US9760479B2 (en) 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US10326836B2 (en) 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
US10162835B2 (en) 2015-12-15 2018-12-25 Pure Storage, Inc. Proactive management of a plurality of storage arrays in a multi-array system
US10346043B2 (en) 2015-12-28 2019-07-09 Pure Storage, Inc. Adaptive computing for data compression
US9886314B2 (en) 2016-01-28 2018-02-06 Pure Storage, Inc. Placing workloads in a multi-array system
US9760297B2 (en) 2016-02-12 2017-09-12 Pure Storage, Inc. Managing input/output (‘I/O’) queues in a data storage system
US9959043B2 (en) 2016-03-16 2018-05-01 Pure Storage, Inc. Performing a non-disruptive upgrade of data in a storage system
US9841921B2 (en) 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US9811264B1 (en) 2016-04-28 2017-11-07 Pure Storage, Inc. Deploying client-specific applications in a storage system utilizing redundant system resources
US10303390B1 (en) 2016-05-02 2019-05-28 Pure Storage, Inc. Resolving fingerprint collisions in flash storage system
US9507532B1 (en) 2016-05-20 2016-11-29 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
US10146585B2 (en) 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US10235229B1 (en) 2016-09-07 2019-03-19 Pure Storage, Inc. Rehabilitating storage devices in a storage array that includes a plurality of storage devices
US10331588B2 (en) 2016-09-07 2019-06-25 Pure Storage, Inc. Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling
US10007459B2 (en) 2016-10-20 2018-06-26 Pure Storage, Inc. Performance tuning in a storage system that includes one or more storage devices
US10162566B2 (en) 2016-11-22 2018-12-25 Pure Storage, Inc. Accumulating application-level statistics in a storage system
US10198205B1 (en) 2016-12-19 2019-02-05 Pure Storage, Inc. Dynamically adjusting a number of storage devices utilized to simultaneously service write operations
US10365982B1 (en) 2017-03-10 2019-07-30 Pure Storage, Inc. Establishing a synchronous replication relationship between two or more storage systems
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
WO2018223130A1 (en) 2017-06-02 2018-12-06 Bluefin Payment Systems Llc Systems and methods for managing a payment terminal via a web browser
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US10275285B1 (en) 2017-10-19 2019-04-30 Pure Storage, Inc. Data transformation caching in an artificial intelligence infrastructure
US10360214B2 (en) 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
US10296258B1 (en) 2018-03-09 2019-05-21 Pure Storage, Inc. Offloading data storage to a decentralized storage network

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230158B1 (en) * 1996-08-09 2001-05-08 Altavista Company Method for indexing duplicate records of information of a database
US20080005141A1 (en) * 2006-06-29 2008-01-03 Ling Zheng System and method for retrieving and using block fingerprints for data deduplication
WO2010019596A2 (en) * 2008-08-12 2010-02-18 Netapp, Inc. Scalable deduplication of stored data
US20100250858A1 (en) * 2009-03-31 2010-09-30 Symantec Corporation Systems and Methods for Controlling Initialization of a Fingerprint Cache for Data Deduplication
WO2011133443A1 (en) * 2010-04-19 2011-10-27 Greenbytes, Inc. A method for optimizing the memory usage and performance of data deduplication storage systems

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319772A1 (en) * 2008-04-25 2009-12-24 Netapp, Inc. In-line content based security for data at rest in a network storage system
US20100199065A1 (en) * 2009-02-04 2010-08-05 Hitachi, Ltd. Methods and apparatus for performing efficient data deduplication by metadata grouping
US8327250B1 (en) * 2009-04-21 2012-12-04 Network Appliance, Inc. Data integrity and parity consistency verification
US8725977B2 (en) * 2010-02-17 2014-05-13 Seagate Technology Llc NVMHCI attached hybrid data storage

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230158B1 (en) * 1996-08-09 2001-05-08 Altavista Company Method for indexing duplicate records of information of a database
US20080005141A1 (en) * 2006-06-29 2008-01-03 Ling Zheng System and method for retrieving and using block fingerprints for data deduplication
WO2010019596A2 (en) * 2008-08-12 2010-02-18 Netapp, Inc. Scalable deduplication of stored data
US20100250858A1 (en) * 2009-03-31 2010-09-30 Symantec Corporation Systems and Methods for Controlling Initialization of a Fingerprint Cache for Data Deduplication
WO2011133443A1 (en) * 2010-04-19 2011-10-27 Greenbytes, Inc. A method for optimizing the memory usage and performance of data deduplication storage systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391915A (zh) * 2014-11-19 2015-03-04 湖南国科微电子有限公司 一种数据重删方法
CN104391915B (zh) * 2014-11-19 2016-02-24 湖南国科微电子股份有限公司 一种数据重删方法

Also Published As

Publication number Publication date
CN104040516B (zh) 2017-03-15
US20130311434A1 (en) 2013-11-21
WO2013074106A1 (en) 2013-05-23

Similar Documents

Publication Publication Date Title
US9690487B2 (en) Storage apparatus and method for controlling storage apparatus
US9116812B2 (en) Systems and methods for a de-duplication cache
US8762789B2 (en) Processing diagnostic requests for direct block access storage devices
US9405684B1 (en) System and method for cache management
US9547591B1 (en) System and method for cache management
US10359972B2 (en) Systems, methods, and interfaces for adaptive persistence
KR101079910B1 (ko) 바이러스 방지 스캔 서비스를 제공하는 디바이스, 시스템 및 방법
US8990581B2 (en) Preserving redundancy in data deduplication systems by encryption
TWI528281B (zh) 平臺韌體防護方法、設備、系統以及相關的機器可讀媒體
DE102013112672A1 (de) Datenspeicher für eine Remote-Umgebung
CN101273338B (zh) 用于数据集及数据集“异或”的dma传送的方法、装置及系统
US9235524B1 (en) System and method for improving cache performance
CN102707900B (zh) 虚拟盘存储技术
US9104529B1 (en) System and method for copying a cache system
US8627012B1 (en) System and method for improving cache performance
US8930947B1 (en) System and method for live migration of a virtual machine with dedicated cache
JP5932973B2 (ja) 仮想記憶ディスク技術
CN103098043B (zh) 随需虚拟机映像流式传输的方法和系统
US20140189212A1 (en) Presentation of direct accessed storage under a logical drive model
CN1934568B (zh) 将源数据迁移成目标数据的方法、系统和程序
US8165177B2 (en) System and method for hybrid virtual machine monitor file system operations
KR101289581B1 (ko) 데이터 저장 장치에 대한 원격 서버로부터의 안전한 스캔을 위한 방법 및 장치
CN1925926A (zh) 协作嵌入式代理
CN102165418A (zh) 涡轮引导系统和方法
CN101488092A (zh) 不停止系统运行而使用系统管理程序环境更新设备驱动器或固件的系统和方法

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
C14 Grant of patent or utility model