CN108089817B - 存储***及其操作方法和操作数据处理***的方法 - Google Patents
存储***及其操作方法和操作数据处理***的方法 Download PDFInfo
- Publication number
- CN108089817B CN108089817B CN201711180803.XA CN201711180803A CN108089817B CN 108089817 B CN108089817 B CN 108089817B CN 201711180803 A CN201711180803 A CN 201711180803A CN 108089817 B CN108089817 B CN 108089817B
- Authority
- CN
- China
- Prior art keywords
- data
- index
- host
- storage system
- reference count
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000012545 processing Methods 0.000 title claims abstract description 48
- 230000015654 memory Effects 0.000 claims abstract description 77
- 238000013507 mapping Methods 0.000 claims abstract description 32
- 230000004044 response Effects 0.000 claims description 26
- 230000006870 function Effects 0.000 claims description 17
- 230000003936 working memory Effects 0.000 claims description 11
- 238000012005 ligant binding assay Methods 0.000 description 26
- 238000007726 management method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 238000013523 data management Methods 0.000 description 11
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 8
- 102100023116 Sodium/nucleoside cotransporter 1 Human genes 0.000 description 7
- 101710123675 Sodium/nucleoside cotransporter 1 Proteins 0.000 description 7
- 102100021470 Solute carrier family 28 member 3 Human genes 0.000 description 4
- 101710186856 Solute carrier family 28 member 3 Proteins 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000845082 Panama Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000005442 molecular electronic Methods 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and 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/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种执行数据去重的存储***、操作存储***的方法和操作数据处理***的方法。存储***包括:存储装置,其构造为存储从主机接收的数据;和控制器,其构造为从主机接收数据和索引,索引与从主机接收的数据关联。控制器包括:存储器,其构造为存储映射信息和参考计数,映射信息将从主机接收的索引与存储***的物理地址关联,参考计数与从主机接收的索引关联。控制器构造为通过从存储器读取映射信息和参考计数来确定从主机接收的数据是否对应于先前存储在存储装置中的数据的副本,所述读取操作基于从主机接收到的索引。控制器构造为通过在从主机接收的数据对应于先前存储在存储装置中的数据的副本的情况下更新参考计数来执行去重处理。
Description
相关申请的交叉引用
本申请要求于2016年11月23日在USPTO提交的美国临时申请No.62/425,686以及于2017年3月14日在韩国知识产权局提交的韩国专利申请No.10-2017-0031808的优先权,它们各自的公开通过引用方式全文并入本文中。
技术领域
本发明构思涉及一种存储***,更具体地说,涉及一种执行数据去重的存储***、操作存储***的方法和操作数据处理***的方法。
背景技术
数据去重技术确定将被存储在存储***中的数据是否已经存储在存储***中了。当数据去重技术确定所述数据已经存储时,不将数据重复地存储在存储***中,并且仅管理指向已经存储的数据的链接,因此,可有效地利用存储空间。由于去重技术可提高存储***的使用效率,因此用于大量数据的存储***需要去重技术。
然而,为了使用去重技术,需要管理诸如数据(或哈希索引)和与其对应的数据存储位置(例如,逻辑/物理地址)的各种信息,因此,会出现用于管理用于去重的信息的资源增加的问题。
发明内容
本发明构思提供了一种用于减轻管理涉及去重的信息的负担的存储***。
本发明构思提供了一种操作存储***的方法。
本发明构思还提供了一种操作数据处理***的方法。
根据本发明构思的示例实施例,提供了一种存储***,包括:
存储装置,其构造为存储从主机接收到的数据;以及控制器,其构造为从主机接收数据和索引,所述索引与从主机接收到的数据关联。所述控制器包括:存储器,其构造为存储映射信息和参考计数,所述映射信息将从主机接收到的索引与存储***的物理地址关联,所述参考计数与从主机接收到的索引关联。控制器构造为通过从存储器读取映射信息和参考计数来确定从主机接收到的数据是否对应于先前存储在存储装置中的数据的副本,所述读取操作基于从主机接收到的索引。
所述控制器构造为通过在从主机接收到的数据对应于先前存储在存储装置中的数据的副本的情况下更新参考计数来执行去重处理。
根据本发明构思的示例实施例,提供了一种操作存储***的方法,所述方法包括步骤:从主机接收第一数据和第一索引,第一索引与第一数据关联;确定所述第一索引是否与对应于先前存储在存储***中的数据的索引相同;响应于确定所述第一索引与对应于先前存储在存储***中的数据的索引相同,通过更新参考计数而不写所述第一数据执行数据去重,参考计数先前存储在存储***中;以及将更新的参考计数提供至主机。
根据本发明构思的示例实施例,提供了一种操作包括存储***的数据处理***的方法,所述方法包括步骤:将映射信息存储在存储***中,映射信息包括利用来自外部***的数据产生的索引与指示数据的存储位置的物理地址之间的映射;在存储***中接收包括额外数据和对应于所述额外数据的索引的写请求;在存储***中确定所述额外数据是否对应于已经存储在存储***中的数据的副本;以及在所述额外数据对应于已经存储在存储***中的数据的副本的情况下,通过更新存储在存储***中的参考计数执行去重处理。
附图说明
通过以下结合附图的详细描述将更清楚地理解本发明构思的实施例,其中:
图1是根据本发明构思的实施例的数据处理***的框图;
图2和图3是示出数据处理***的具体实施的框图;
图4是示出通过根据本发明构思的实施例的数据处理***的主机执行的功能的框图;
图5是根据本发明构思的实施例的存储***的框图;
图6是示出存储在图5的工作存储器中的各种模块的示例的框图;
图7A和图7B是示出根据本发明构思的实施例的在主机和存储***中管理的信息的示例的示图;
图8是示出根据本发明构思的实施例的数据处理***的数据读写操作的示例的框图;
图9是示出根据本发明构思的实施例的操作主机的方法的流程图;
图10是示出根据本发明构思的实施例的操作存储***的方法的流程图;
图11至图18是示出根据本发明构思的实施例的数据处理***中的主机与存储***之间的通信的示例的示图;以及
图19是包括根据本发明构思的实施例的服务器***的网络***的框图。
具体实施方式
下文中,将参照附图详细描述本发明构思的实施例。
图1是根据本发明构思的实施例的数据处理***10的框图。
参照图1,数据处理***10可包括主机100和存储***200。存储***200可包括控制器210和存储装置220。根据本发明构思的实施例,主机100可包括索引产生器110,并且存储***200的控制器210可包括索引表211。在图1的示例中,索引表211示为提供在控制器210中。然而,本发明构思的实施例不限于此。例如,索引表211可存储在存储***200中的控制器210以外的存储器中。
数据处理***10可包括存储介质,其用于基于外部***(例如,计算节点)的请求存储数据。作为示例,存储***200可包括一个或多个固态盘(SSD)。当存储***200包括SSD时,存储***200可包括基于非易失性方案存储数据的多个闪速存储器芯片(例如,NAND存储器芯片)。存储***200可包括一个闪速存储器装置。存储***200可包括具有一个或多个闪速存储器芯片的存储卡。
当存储***200包括闪速存储器时,闪速存储器可包括二维(2D)NAND存储器阵列或三维(3D)或竖直NAND存储器阵列。3D存储器阵列按照单片方式形成在在硅衬底上或中形成的电路的至少一个物理层级中,作为涉及包括具有布置在硅衬底上的有源区的存储器单元的阵列的操作的电路,或者作为涉及存储器单元的操作的电路。术语“按照单片方式”意指所述阵列的各个层级的层直接堆叠在所述阵列的各个下一层级的层上。
在根据本发明构思的示例实施例中,3D存储器阵列包括在竖直方向上排列的竖直NAND串,以使得至少一个存储器单元位于另一存储器单元上方。所述至少一个存储器单元可包括电荷俘获层。
美国专利No.7,679,133、No.8,553,466、No.8,654,587和No.8,559,235以及美国专利申请公开No.2011/0233648公开了包括多个层级和在所述层级之间共享的字线和/或位线的3D存储器阵列,并且它们通过在本说明书中引用全文被包含于此。
作为另一示例,存储***200可包括其它各种类型的存储器。例如,存储***200可包括非易失性存储器,诸如磁性RAM(MRAM)、自旋转移矩MRAM、导电桥RAM(CBRAM)、铁电RAM(FeRAM)、相位RAM(PRAM)、电阻式RAM、纳米管RAM、聚合物RAM(PoRAM)、纳米浮栅存储器(NFGM)、全息存储器、分子电子存储器和/或绝缘体电阻改变存储器。
主机100可在数据处理***10中执行数据的管理操作。作为示例,主机100可向存储***200提供数据写请求或数据读请求。另外,响应于来自主机100的数据擦除请求,存储***200可对主机100指示的区域的数据执行擦除操作。
主机100可通过各种接口与存储***200通信。主机100可包括能够针对存储***200执行数据访问的各种类型的装置。例如,主机100可为或者可包括与基于闪速存储器的存储***200通信的应用处理器(AP)。根据示例实施例,主机100可经各种接口与存储***200通信,诸如通用串行总线(USB)、多媒体卡(MMC)、快速PCI(PCI-E)、AT附件(ATA)、串行AT附件(SATA)、并行AT附件(PATA)、小型计算机***接口(SCSI)、串行连接SCSI(SAS)、增强型小型磁盘接口(ESDI)和集成驱动电子器件(IDE)。
根据示例实施例,数据处理***10可使用数据去重技术。在使用去重技术的情况下,当请求写入的数据是已经存储在存储***200中的数据的副本(或者与该数据相同)时,可通过仅管理针对已经存储的数据的链接而非重复存储所述请求写入的数据来完成针对写请求的处理。因此,可更有效地使用存储***200的存储空间。
可管理存储***200中的索引表211,以确定请求写入的数据是否是重复数据。根据实施例,主机100的索引产生器110可产生对应于请求写入的数据的索引Index,并且将索引Index提供至存储***200。索引Index可具有用于识别数据Data的信息,并且作为示例,可产生针对各个数据具有唯一值的索引并且将该索引提供至存储***200。
索引产生器110可按照各种方式实施。例如,索引产生器110可包括通过硬件实施的运算电路。作为替代或者另外地,索引产生器110可通过执行算法功能的软件实施。根据实施例,索引产生器110可对应于哈希引擎,其通过利用针对数据Data的哈希函数的操作来计算哈希值作为索引。当索引产生器110对应于哈希引擎时,索引产生器110可通过利用各种哈希算法计算哈希值,诸如GOST、HAVAL、MD2、MD4、MD5、PANAMA、RadioGatun、RIPEMD、RIPEMD-128/256、RIPEMD-160、RIPEMD-320、SHA-0、SHA-1、SHA-256/224、SHA-512/384、SHA-3、和/或WHIRLPOOL。
基于数据写请求,存储***200可接收数据Data并接收通过数据Data产生的索引Index来作为用于识别数据Data的信息。在数据写操作中,存储***200的控制器210可将索引Index与物理地址(例如,物理块地址PBA)映射,并且将数据Data存储在对应于映射的物理地址PBA的位置。可在索引表211中存储和管理索引Index与物理地址PBA之间的映射信息。
根据示例实施例,主机100可向存储***200提供数据Data和与其对应的索引Index作为用于写数据的信息,而不用运行或连接文件***,该文件***连接用于基于逐文件(file-by-file)的方式管理数据或者用于产生针对存储***200的逻辑地址。另外,当存储***200包括闪速存储器时,控制器210可包括闪存转换层(FTL),以提供主机100与存储装置220之间的接口,并且可通过经由FTL的地址映射操作执行索引Index与物理地址PBA之间的映射。
下面将描述关于根据本发明构思的实施例的数据去重的操作示例。
由于外部***请求写数据,主机100可从外部***接收数据Data和与其对应的逻辑地址(未示出)。另外,可在主机100中存储通过索引产生器110产生的索引Index。作为示例,主机100可包括存储器(未示出),并且索引Index可与接收到的逻辑地址对齐(align)并且作为树结构存储在存储器中。
存储***200可从主机100接收数据Data和索引Index,可通过利用索引Index确定数据Data是否是重复的,并且根据确定结果执行去重处理。作为示例,存储***200可将从主机100接收到的索引Index与对应于先前存储在存储***200中的数据的索引进行比较,并且可根据比较结果确定数据Data是否是重复的。
为了利用索引确定是否存在重复数据,当在索引表211中存储先前接收到的索引时,可以通过接收到的索引与存储在索引表211中的索引之间的比较操作确定数据是否可能是重复的。当索引表211中不存在与接收到的索引相同的索引时,存储***200可将数据Data存储在通过新映射至接收到的索引Index的物理地址PBA指示的位置。然而,当索引表211中存在与接收到的索引相同的索引时,存储***200可确定接收到的数据Data是重复数据,并且可通过不将接收到的数据Data存储在存储装置220中来执行去重处理。
由于执行了基于去重的写数据,可从外部***通过多个逻辑地址查阅(或访问)先前存储在存储***200中的数据。根据示例实施例,存储***200还可存储计数信息(例如,参考计数),以管理先前存储的数据的查阅次数。例如,可在索引表211中存储和管理参考计数。根据实施例,当主机100请求写入的数据Data对应于重复数据时,存储***200可对参考计数执行更新操作,并且为主机100提供更新的参考计数以及指示已执行去重处理的信息。
在示例实施例中,物理地址PBA和参考计数可与索引表211中的索引Index对齐并且存储在索引表211中。根据实施例,索引Index的实际信息可不存储在索引表211中。可按照各种方式执行上述对重复数据的确定。例如,可通过检查与接收到的索引Index对齐的存储的信息(例如,物理地址和/或参考计数)来确定是否存在重复数据。
根据上述实施例,主机100可将通过处理数据Data产生的索引Index直接提供至存储***200作为用于写/读数据Data的信息,因此,可减少用于数据去重的管理的信息量,并且可减少主机100中的用于存储信息的存储器空间。例如,在常规情况下,主机100通过文件***等的操作分离地管理索引与文件ID(或者存储***200的逻辑块地址)之间的映射信息。然而,根据本发明构思的实施例,主机100可处理数据去重,而不用运行文件***或者根据运行的结果存储和管理信息。
图2和图3是示出数据处理***300A和300B的具体实施的框图。在下面的实施例中,假设上述索引产生器对应于用于产生哈希值的哈希引擎,并且索引是哈希索引。另外,数据处理***300A可压缩来自外部的数据并且可存储压缩的数据。然而,本发明构思的实施例不限于此。
参照图2,数据处理***300A可包括主机310A和存储***320A,并且可从外部***(例如,外部计算节点)接收数据Data和对应的逻辑地址LBA。假设先前已从外部***提供了第一逻辑地址LBA 1至第三逻辑地址LBA 3和与其对应的数据Data,第一逻辑地址LBA 1至第三逻辑地址LBA 3与第一哈希索引Hash Index 1至第三哈希索引Hash Index 3之间的映射信息可存储在主机310A中,并且可在存储***320A中存储第一哈希索引Hash Index 1至第三哈希索引Hash Index 3与第一物理地址PBA 1至第三物理地址PBA 3之间的映射信息。另外,可从外部***提供第四逻辑地址LBA 4和与其对应的数据Data,并且可从数据Data产生第四哈希索引Hash Index 4。
主机310A可包括作为索引产生器的哈希引擎311A,并且还可包括存储产生的哈希索引的存储器312A。哈希引擎311A可响应于具有特定(或者,作为替代,预定)大小的数据Data产生具有多个比特的哈希索引。可不同地限定数据Data的大小和哈希索引的大小。例如,可从4kB数据Data中产生128比特的哈希索引。
根据实施例,第一哈希索引Hash Index 1至第三哈希索引Hash Index 3可与第一逻辑地址LBA 1至第三逻辑地址LBA 3对齐,并且存储在存储器312A中。当从外部***接收到用于写数据或读数据的逻辑地址LBA时,可从存储器312A读出对应于逻辑地址LBA的先前存储的哈希索引。
另外,存储***320A可包括存储器321A和压缩数据Data的压缩器322A。作为示例,存储***320A可产生对应于接收到的哈希索引的物理地址PBA,并且存储器321A可将哈希索引与物理地址PBA之间的映射信息作为表存储。作为示例,第一哈希索引Hash Index 1至第三哈希索引Hash Index 3和第一物理地址PBA 1至第三物理地址PBA 3可一起存储在存储器321A中。另外或者作为替代,第一物理地址PBA 1至第三物理地址PBA 3可与第一哈希索引Hash Index 1至第三哈希索引Hash Index 3对齐,并且存储在存储器321A中。在这种情况下,第一哈希索引Hash Index 1至第三哈希索引Hash Index 3实际上可不存储在存储器321A中。
根据示例实施例,存储器321A还可存储对应于哈希索引的参考计数。例如,存储器321A还可存储对应于第一哈希索引Hash Index 1至第三哈希索引Hash Index 3的参考计数Ref CNT 1至Ref CNT 3。例如,在本发明构思的实施例中,可在存储***320A中管理参考计数Ref CNT 1至Ref CNT 3。
下面将描述数据去重操作的示例。
主机310A可接收第四逻辑地址LBA 4和与其对应的数据Data,并且哈希引擎311A可从数据Data中产生第四哈希索引Hash Index 4。可在存储器312A中存储产生的第四哈希索引Hash Index 4与第四逻辑地址LBA 4之间的映射信息。另外,主机310A可在将数据写请求提供至存储***320A的过程中将第四哈希索引Hash Index 4和对应的数据Data提供至存储***320A。
存储***320A可利用第四哈希索引Hash Index 4确定是否存在重复数据。例如,存储***320A可确定对应于先前存储的数据的第一哈希索引Hash Index 1至第三哈希索引Hash Index 3中的任一个是否与第四哈希索引Hash Index 4相同。如果存储***320A确定在存储器321A中不存在与第四哈希索引Hash Index 4相同的哈希索引,则存储***320A可将第四哈希索引Hash Index 4映射至第四物理地址PBA 4,并且将数据Data存储在由第四物理地址PBA 4指示的位置。另外,可在存储器321A中存储第四哈希索引Hash Index 4与第四物理地址PBA 4之间的映射信息。
然而,如果第四哈希索引Hash Index 4与任一个哈希索引(例如,第一哈希索引Hash Index 1)相同,则可通过去重处理跳过数据Data的重复存储,并且可通过第四逻辑地址LBA 4查阅对应于第一哈希索引Hash Index 1的数据。根据实施例,当执行去重处理时,可更新对应于第一哈希索引Hash Index 1的第一参考计数Ref CNT 1的值,并且作为示例,第一参考计数Ref CNT 1的值可增大一。另外,根据实施例,可从存储***320A将更新后的第一参考计数Ref CNT 1与指示已执行去重处理的信息一起提供至主机310A。
图3示出用于压缩数据Data的压缩器设置在主机中的示例。如图3所示,数据处理***300B可包括主机310B和存储***320B。主机310B可包括哈希引擎311B、存储器312B和压缩器313B。另外,存储***320B可包括存储哈希索引与物理地址之间的映射信息的存储器321B。图3所示的数据处理***300B也可按照与上述实施例中的相同的方式执行数据去重。例如,存储***320B可使用从主机310B提供的哈希索引来确定是否存在重复数据,并且可根据确定结果执行数据去重。
根据上述实施例的用于存储各种映射信息的存储器可包括各种类型的存储器或者通过各种类型的存储器来实现,例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、晶闸管RAM(T-RAM)、零电容RAM(Z-RAM)和/或双晶体管RAM(TTRAM)。
图4是示出通过根据本发明构思的示例实施例的数据处理***400的主机执行的功能的框图。
参照图4,数据处理***400可包括主机410和存储***420,并且主机410可包括由硬件和/或软件实施的各种模块。例如,主机410可包括远程程序调用(RPC)模块411、块服务模块412、去重管理模块413和/或压缩模块414。
RPC模块411可与另一***或者另一服务器执行通信。例如,RPC模块411可执行调用用于数据发送/接收的另一服务器的功能。块服务模块412可以执行用于以块为基础的处理数据管理的功能。去重管理模块413可设为在主机410中执行用于数据去重的一部分功能。例如,去重管理模块413可包括利用数据产生哈希索引的哈希引擎。去重管理模块413还可包括用于存储来自外部***的逻辑地址与哈希索引之间的映射信息的存储器。压缩模块414可压缩数据,并且将压缩的数据提供至存储***420。
根据本发明构思的示例实施例,可将哈希索引直接提供至存储***420,作为与存储和读数据相关的信息。因此,主机410不需要运行用于以文件为基础管理数据的文件***或者用于管理数据的块层,所述块层的大小根据对应于逻辑块的大小通过压缩而变化。例如,可减少结合数据去重所需的主机410的存储器资源,并且由于可不运行文件***和/或块层的至少一些功能,因此可提高***性能。
图5是根据本发明构思的实施例的存储***500的框图。存储***500可包括控制器和存储装置,并且图5所示的构造对应于控制器的实施例。
参照图5,存储***500可包括作为处理器的中央处理单元510、主机接口520、存储器接口530和工作存储器540。根据示例实施例,存储***500还可包括哈希引擎550。工作存储器540可存储索引表541,并且在修改的实施例中,存储***500中的另一存储器可存储索引表541。
中央处理单元510可通过运行机器可读指令控制存储***500的全部操作,所述机器可读指令包括存储在工作存储器540中的各种程序。可在工作存储器540中加载除存储***500的功能之外包括关于数据去重的各种程序的软件。工作存储器540可通过随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器或其他存储器实施或者可包括它们。
根据上述实施例,主机可为来自外部***的数据产生哈希索引,并且可将该哈希索引提供至存储***500。存储***500还可包括哈希引擎550。根据实施例,哈希引擎550还可对从主机提供的哈希索引和/或数据执行哈希操作。例如,由于存储***500进一步设有哈希引擎550,存储在存储***500中的信息量可减少。
将参照图5和图6描述本发明构思的更多特定构造和操作。图6是示出各种模块的示例的框图。模块可包括硬件或存储在图5的工作存储器540中的软件。当存储***500包括闪速存储器时,可将图6所示的各种模块限定为包括在FTL中的那些。
可在工作存储器540中存储上述索引表541,并且还可在工作存储器540中存储通过中央处理单元510的操作执行各种功能的模块。作为示例,在工作存储器540中还可存储地址转换模块542、去重控制模块543和数据管理模块544。
地址转换模块542将从主机提供的哈希索引转换为物理地址。作为示例,可在索引表541中存储哈希索引与物理地址之间的映射信息。如在上述示例中,索引表541可按照与哈希索引对齐的形式存储物理地址,并且可从索引表541中读取对应于主机提供的哈希索引的物理地址。
去重控制模块543可执行用于防止以冗余方式存储数据的各种功能。例如,去重控制模块543可检查主机提供的哈希索引和存储在索引表541中的信息,以确定请求写入的数据是否对应于重复数据。去重控制模块543还可执行用于将参考计数信息存储在索引表541中的操作和管理参考计数信息的操作。例如,当存在与来自主机的哈希索引相同的哈希索引时,可更新(例如,可增大)对应于相同的索引的参考计数值。
数据管理模块544可执行各种数据管理操作。例如,数据管理模块544可在闪速存储器中执行数据管理操作。根据实施例,数据管理模块544可利用关于数据去重的信息执行数据管理操作。例如,可根据存储在索引表541中的参考计数的值调整数据管理操作。例如,可基于参考计数的值执行诸如数据移动、备份和垃圾收集的各种管理操作。
在图5和图6的实施例中,示出了通过软件执行根据本发明构思的实施例的去重处理的示例。然而,本发明构思的实施例不限于此。作为示例,用于去重处理的至少一些功能可通过硬件或者硬件和软件的组合来实施。
图7A和图7B是示出根据本发明构思的实施例的在主机和存储***中管理的信息的示例的示图。根据本发明构思的实施例,图7A示出了在主机方确定数据重复的一般情况,图7B示出了在存储***方确定数据重复的示例。
参照图7A,主机可从外部***接收逻辑地址LBA 1至LBA 3和对应的数据,并且为数据产生索引(例如,哈希索引Hash Index 1至Hash Index 3)。另外,可在存储器中存储和管理逻辑地址LBA 1至LBA 3与哈希索引Hash Index 1至Hash Index 3之间的映射信息。
另外,主机可操作文件***以访问存储***。在执行去重之后,主机可在存储器中存储哈希索引Hash Index 1至Hash Index 3和与其对应的文件信息(例如,文件标识FileID 1至File ID 3)。另外,还可存储对应于哈希索引Hash Index 1至Hash Index 3和文件信息File ID 1至File ID 3的参考计数Ref CNT 1至Ref CNT 3。另外,主机可将针对存储***的逻辑地址LBA S1至LBA S3经文件***提供至存储***,并且存储***可存储逻辑地址LBA S1至LBA S3与物理地址PBA 1至PBA 3之间的映射信息。也就是说,主机可通过执行双表管理来执行数据去重,因此,存储器的使用量会增加,并且信息检索时间会增加。
作为替代,如图7B所示,根据本发明构思的实施例,主机可仅管理来自外部***的逻辑地址LBA 1至LBA 3和与其对应的哈希索引Hash Index 1至Hash Index 3之间的映射信息。因此,主机不需要重复地管理一张表,并且可减轻主机方处理信息的负担。
主机可将哈希索引Hash Index 1至Hash Index 3提供至存储***,并且存储***可存储并管理哈希索引Hash Index 1至Hash Index 3与物理地址PBA 1至PBA 3之间的映射信息。存储***还可存储对应于哈希索引Hash Index 1至Hash Index 3和物理地址PBA1至PBA 3的参考计数Ref CNT 1至Ref CNT 3。
图8是示出根据本发明构思的实施例的数据处理***600的数据读写操作的示例的框图。在图8所示的实施例中,存储***620是包括NAND存储器的SSD,并且示出了键-值SSD。
根据实施例的数据处理***600可包括多个存储***。存储***中的一个或多个可构造为键-值存储,并且数据处理***600可按照将实际数据存储在另一存储***中的方式操作。例如,可由具有低计算能力的低性能节点和SSD构造键-值存储,并且外部客户可访问键-值存储,以请求存储和读数据。在这种情况下,作为存储***之一的存储***620可接收键作为上述实施例中的索引,并且还可接收值作为数据。另外,与上述实施例相似,可通过对于从外部***提供的数据的哈希操作产生键。
参照图8,数据处理***600可包括主机610和存储***620。根据上述实施例,存储***620可存储并管理键Key作为索引,并且通过利用存储的键执行数据去重。
主机610可接收数据写请求和/或数据读请求。作为写操作的示例,可通过对数据User Data的哈希操作产生键Key,并且可通过对数据User Data的压缩处理产生对应于压缩的数据的值Value。另外,可通过键和值接口命令处理产生写请求Put(Key,Value)和读请求Get(Key),并且可通过SSD装置驱动器将产生的请求Put(Key,Value)和Get(Key)提供至存储***620。
存储***620可利用接收到的键Key和接收到的值Value执行基于去重的写/读操作。例如,存储***620可通过参照接收到的键Key和存储在索引表中的信息确定数据是否是重复的。例如,假设确定接收到的键Key是否与先前存储的键相同,当不存在相同的键时,存储***620可在索引表中额外存储接收到的键Key同与其对应的物理地址PBA之间的映射信息,并且可将值Value存储在NAND存储器中的通过物理地址PBA指示的位置。作为存储的示例,接收到的键Key、值Value和与其对应的元数据Meta data可一起存储在NAND存储器的一页中。
根据示例实施例,还可将参考计数存储在索引表中。当存在相同的键时,可通过更新对应于相同的键的参考计数完成数据写操作,而不用在NAND存储器中重复地存储键Key和值Value。根据实施例,还可相对于键Key和值Value在存储***620中执行哈希操作处理,并且可进一步减小存储在存储***620中的键Key和值Value的大小。
作为读操作的示例,主机610可通过哈希引擎产生对应于数据User Data的键Key,并且将产生的键Key提供至存储***620,作为用于读取数据的信息。作为示例,可经SSD装置驱动器将利用键Key的读请求Get(Key)提供至存储***620。
存储***620可接收针对对应于键Key的数据User Data的读请求Get(Key),通过索引表确定映射至键Key的物理地址PBA,并且从由物理地址PBA指示的位置读取数据。根据实施例,可读取对应于存储在NAND存储器中的信息中的数据的值Value,并且将其提供至主机610,并且主机610可通过对值Value进行解压来恢复数据User Data。
图9是示出根据本发明构思的实施例的操作主机的方法的流程图。
参照图9,主机接收作为外部***方的地址的逻辑地址LBA和对应于逻辑地址LBA的数据Data(操作S11)。主机可通过对数据Data的操作处理产生索引Index,并且将产生的索引Index存储在主机中,如操作S12所示。作为示例,主机可利用哈希函数产生哈希索引,并且可将产生的哈希索引与逻辑地址LBA对齐地存储在存储器中。
主机可将数据Data和与其对应的索引Index提供至存储***(例如,SSD),如操作S13所示。存储***可响应于来自主机的写请求在应用了数据去重的情况下执行写操作,并且当根据实施例执行数据去重时,主机可从存储***接收参考计数信息,如操作S14所示。接收到的参考计数信息可用于后续数据管理操作。
图10是示出根据本发明构思的实施例的操作存储***的方法的流程图。
存储***可从主机接收数据Data和与其对应的索引Index,如操作S21所示,并且可搜索先前存储在索引表中的用于数据去重的信息,如操作S22所示。根据搜索结果,可确定与接收到的索引对齐地存储的信息,或者可确定是否存在与接收到的索引相同的索引,并且可基于确定结果来确定从主机接收到的数据Data是否是重复数据。
如果确定从主机接收的数据Data不是重复数据,则存储***可产生对应于接收到的索引Index的物理地址PBA,并且存储索引Index与物理地址PBA之间的映射信息,如操作S24所示。由于不存在相同的索引,因此从主机提供的数据Data首先被存储在存储***中,从而数据Data可被存储在对应于物理地址PBA的位置,如操作S25所示。
然而,如果确定从主机接收到的数据Data是重复数据,则可确定存在与从主机提供的数据Data相同的数据,因此,可在不重复地存储数据Data的情况下完成针对写请求的处理。作为示例,可更新对应于与从主机提供的索引Index相同的索引的参考计数,如操作S26所示,并且可将关于更新的参考计数的信息提供至主机,如操作S27所示。可通过增大或减小参考计数的值来执行参考计数的更新,并且作为示例,每当接收到针对相同索引的写请求时,参考计数可增大1。
下文中,相对于数据去重,描述了可应用于本发明构思的实施例的各种操作性示例。图11至图18是示出根据本发明构思的实施例的数据处理***中的主机与存储***之间的通信的示例的示图。在下面的实施例中,假设存储***为键-值SSD KV SSD,并且值Value可称作数据。
在图11的示例中,在不考虑数据冲突的情况下描述数据去重操作。例如,利用哈希函数等产生的键Key的大小小于数据Value的大小,因此,会发生即使数据Value具有不同的值也产生了相同的键的数据冲突。
参照图11,主机在接收数据写请求时从数据Value中产生了键Key,并且将写请求PUT(Key,Value)提供至存储***。存储***可利用键Key执行数据重复检查操作。当数据Value对应于重复数据时,存储***可仅更新参考计数Ref CNT,而不重复地存储数据Value。存储***可为主机提供指示已对写请求PUT(Key,Value)执行去重处理的信息Info_DD,并且还可将更新的参考计数Ref CNT提供至主机。主机可基于信息Info_DD确定已经执行了数据去重。
图12和图13示出了考虑了数据冲突的数据去重操作的示例。图12示出了在主机方执行了数据冲突确定的示例,并且图13示出了在存储***方执行了数据冲突确定的示例。
参照图12,如图11的实施例中那样,主机从数据Value中产生了键Key并且将写请求PUT(Key,Value)提供至存储***。存储***利用键Key执行数据重复检查操作。当数据Value对应于重复数据时,存储***可读取对应于接收到的键Key的数据Value,并且除指示已发生数据重复的信息Info_D以外,还为主机提供读取的数据Value。
主机可通过将从外部***请求写入的数据Value与从存储***提供的数据Value进行比较来检查是否存在数据冲突。作为示例,主机可通过以比特或字节为单位将从外部***请求写入的数据Value与从存储***提供的数据Value进行比较来确定是否存在相同数据,并且可将确定结果Res_C提供至存储***。
根据指示请求写入的数据Value与从存储***提供的数据Value相同的确定结果Res_C,存储***可仅更新参考计数Ref CNT而不重复存储数据Value,并且为主机提供指示已执行去重的信息Info_DD。另外,还可将更新的参考计数Ref CNT提供至主机。
当请求写入的数据Value与从存储***提供的数据Value不同时,可确定发生数据冲突,并且主机可执行用于消除数据冲突的管理操作。可根据各种方法执行数据冲突消除。例如,主机可产生与冲突的数据Value具有不同的哈希值的键Key'。根据实施例,主机可在数据冲突事件中将新的写请求PUT(Key',Value)提供至存储***,并且可在存储***响应于写请求PUT(Key',Value)存储数据Value的同时防止数据冲突。
参照图13,如在上述图11和图12的实施例中,主机通过哈希函数产生键Key,并且将写请求PUT(Key,Value)提供至存储***。存储***可利用键Key执行数据重复检查操作。
当根据利用键Key的数据重复检查操作存在重复数据时,数据存储可确定是否发生数据冲突。例如,存储***可读取对应于键Key的数据Value,并且确定读取的数据Value是否与从主机提供的数据Value相同。如果读取的数据Value与从主机提供的数据Value相同,则可确定不存在数据冲突。因此,存储***可仅更新参考计数Ref CNT而不重复地存储数据Value。另外,存储***可为主机提供指示已执行去重的信息Info_DD和更新的参考计数Ref CNT。
另一方面,当发生数据冲突时,存储***可为主机提供指示已出现数据冲突的信息Info_C。主机可按照与上述实施例中的方式基本相同的方式执行用于消除数据冲突的管理操作。例如,主机可针对冲突的数据Value产生具有不同的哈希值的键Key',并且将新的写请求PUT(Key',Value)提供至存储***。
在上述实施例中,描述了执行新哈希操作以消除数据冲突的示例。然而,本发明构思的实施例不限于此。例如,可通过将冲突的数据写入存储***中并且将表信息作为链接列表进行管理来消除数据冲突。另外,可对冲突次数计数,并且可基于冲突数量执行数据冲突管理,并且可使用各种管理方法来消除数据冲突。
在示出下面的实施例的附图中,假设数据Value对应于“ABCD”并且从该数据Value产生对应于“123”的键。图14示出了关于参考计数的管理的数据处理***的操作的示例。
参照图14,主机从该数据Value产生对应于“123”的键,并且将用于该数据Value的写请求PUT(123,ABCD)提供至存储***。存储***可确定接收到的数据Value不对应于重复数据,并且根据写请求PUT(123,ABCD)正常写数据Value,并且还为主机提供指示写已完成的信号。
然后,主机可将针对重复数据“ABCD”的写请求提供至存储***。存储***可通过利用键的检查操作确定接收到的写请求对应于用于重复数据的写请求,并且可为主机提供指示已发生数据重复的信息Info_D。主机可响应于信息Info_D为存储***提供包括对应于“123”的键的读请求GET(123),并且存储***可响应于读请求GET(123)读取数据Value并且将读取的数据Value提供至主机。
主机可按照与上述实施例中的相同方式利用从存储***中读出的数据Value确定是否已发生数据冲突。作为确定的结果,当从存储***接收到的数据Value与请求写入的数据相同时,由于未发生数据冲突,主机可请求存储***增加针对对应于“123”的键的参考计数。存储***可响应于主机的请求通过增大(或者更新)针对对应于“123”的键的参考计数完成写操作。
根据上述实施例,可在存储***中管理针对键的参考计数,但是,可通过主机执行调整针对键的参考计数的操作。例如,对于重复数据的写请求,可通过主机确定是否发生数据冲突,并且可基于确定结果通过主机管理存储***中的参考计数。
图15示出了利用存储***中的参考计数信息的操作的示例。
参照图15,如上述实施例中所示,主机从数据Value“ABCD”产生对应于“123”的键,并且将针对数据Value的写请求PUT(123,ABCD)提供至存储***。存储***可确定数据Value是否是重复的,并且可根据确定结果写数据Value或者仅更新参考计数而不写数据Value。另外,可将指示已执行去重的信息Info_DD提供至主机。
主机可根据外部***的请求执行覆写或者对现有数据Value执行部分更新操作。作为示例,主机提供请求PUT_OVERWRITE以用另一值覆写与对应于“123”的键相对应的数据Value,或者提供请求PUT_PARTIAL_UPDATE以更新对应于所述键的数据Value中的一些。
存储***可确定是执行主机的覆写请求还是部分更新请求。例如,存储***可通过检查与对应于“123”的键相对应的参考计数来确定是执行覆写请求还是部分更新请求。作为检查参考计数的结果,如果与对应于“123”的键相对应的数据是通过外部***方的多个逻辑地址参照的数据,则存储***可为主机提供指示不可改变数据的信息“Failed”。主机可基于存储***的信息“Failed”再次确定是否数据已经改变。
图16示出了通过主机确定数据去重的示例。
参照图16,如上述实施例中所示,主机从数据Value“ABCD”产生了对应于“123”的键,并且将针对数据Value的写请求PUT(123,ABCD)提供至存储***。存储***可利用键执行重复检查操作,并且将确定结果提供至主机。当数据Value不是重复数据时,正常写入被请求写入的数据。当数据是重复数据时,可将指示已发生数据重复的信息Info_D提供至主机。
主机可选择性地执行数据去重。例如,主机可根据数据去重模式进行操作,并且当主机处于数据去重模式时,主机可将数据去重请求Req_Dedup提供至存储***。存储***可响应于数据去重请求Req_Dedup更新对应于所述键的参考计数,并且为主机提供指示已执行数据去重的信息Info_DD。另一方面,当主机未处于去重模式时,主机可将数据重复请求Req_Dup提供至存储***,并且存储***可重复地存储数据Value,并且为主机提供已正常存储数据Value的信息指示。
可基于各种标准执行如上所述的去重的应用。例如,主机可根据数据Value确定数据Value的重要性,并且可请求以冗余方式存储相对重要的数据(或者需要存储稳定性的数据)。因此,数据去重可应用于相对不重要的数据。
根据实施例,存储***可将存储在其中的参考计数提供至主机,并且主机可在应用数据去重时确定参考计数的值。作为示例,当对应于特定键的参考计数的值相对大时,其可指示对应于特定键的数据被频繁参照。在这种情况下,主机可确定对应于特定键的参考计数的值是否超过阈值。在写对应于特定键的数据的操作中,可以根据参考计数的值与阈值之间的比较结果应用或不应用数据去重。
图17示出了在数据处理***中利用参考计数的操作的示例。省略了对图17所示的特征中的与在先前实施例中描述的那些相同的特征的详细描述。
参照图17,根据本发明构思的实施例的数据处理***可包括主机和存储***,并且对应于键的参考计数可存储在存储***中。存储***还可将参考计数提供至主机。可按照各种方式从存储***将参考计数提供至主机。作为示例,每当应用数据去重时,可将对应于所述键的参考计数提供至主机。作为替代,不管是否数据去重,可定期或不定期地将存储在存储***中的存储器中的参考计数提供至主机。
主机可存储从存储***提供的参考计数,并且可确定参考计数以执行数据管理操作。例如,针对具有相对大(或超过阈值)的参考计数的键,主机可确定对应于所述键的数据的重要性高,并且根据数据执行管理操作。在实施例中,主机可针对对应于所述键的数据向存储***提供备份请求。作为替代,主机可请求存储***将对应于所述键的数据移动至可靠存储区域(例如,NAND存储器中的单电平单元(SLC)区域)。存储***可根据主机的管理请求执行操作。
图18示出了在数据处理***中利用参考计数的操作的示例。省略了对图18所示的特征中的与在先前实施例中描述的那些相同的特征的详细描述。
图18中示出了在存储***中存储参考计数但是从主机将参考计数的值提供至存储***的示例。另外,虽然在图18中示出了在主机中执行用于确定数据是否是重复的或者确定是否存在数据冲突的操作的示例,但是本发明构思的实施例不限于此。例如,即使未执行数据冲突管理,也可应用当前实施例,或者在存储***方执行数据冲突管理。
参照图18,主机可从数据Value“ABCD”产生对应于“123”的键,并且由于将针对数据Value的写请求PUT(123,ABCD)提供至存储***,存储***可存储数据Value。然后,当产生了相同的键(例如,“123”)时,主机可确定发生了数据重复,并且可为存储***提供用于读取与对应于“123”的键相对应的数据Value的请求。存储***可为主机提供对应于所述键的参考计数(例如,1)以及对应于所述键的数据Value。
主机使用从存储***接收到的数据Value来确定是否发生了数据冲突。如果确定已发生数据冲突,则主机可根据上述实施例执行数据冲突管理操作。另一方面,如果确定未发生数据冲突,则主机可再次将数据写请求提供至存储***,并且可将对应于所述键的参考计数改变为值2,并且将值2提供至存储***。存储***可基于数据去重执行写操作。例如,存储***可根据从主机提供的信息将对应于所述键的参考计数从1更新为2,而不写重复数据。
图19是根据本发明构思的实施例的包括服务器***710的网络***700的框图。除服务器***710之外,图19中示出了多个端子731_1至731_n(例如,计算节点),并且可根据上述实施例利用数据处理***实施服务器***710。
参照图19,网络***700可包括经网络720与服务器***710通信的多个端子731_1至731_n。服务器***710可包括服务器711和作为存储***的SSD 712。服务器711可执行上述实施例中的主机的功能。
服务器711可处理从连接至网络720的多个端子731_1至731_n发送的请求。作为示例,服务器711可在SSD 712中存储从多个端子731_1至731_n提供的数据。另外,根据上述实施例,服务器711可通过利用数据去重功能减少或防止相同数据的重复存储,因此,可有效地使用SSD 712的存储空间。
SSD 712可根据上述实施例管理哈希索引和参考计数。根据实施例,SSD 712可从主机接收数据和与其对应的哈希索引,利用哈希索引确定数据是否是重复的,并且根据确定结果执行用于存储数据和更新参考计数的操作。另外,当对应于特定键的参考计数的值较大时,与其对应的数据可对应于在多个端子731_1至731_n中的一个或多个中使用的数据,并且可根据上述实施例执行利用参考计数的数据管理操作。
虽然已经参照本发明构思的实施例具体示出和描述了本发明构思,但是应该理解,在不脱离权利要求的精神和范围的情况下,可在其中作出各种形式和细节上的改变。
Claims (23)
1.一种存储***,包括:
存储装置,其构造为存储从主机接收到的数据;以及
控制器,其构造为从所述主机接收数据和索引,所述索引与从主机接收到的数据关联,
所述控制器包括存储器,该存储器构造为存储映射信息和参考计数,所述映射信息将从所述主机接收到的索引与所述存储***的物理地址关联,所述参考计数与从所述主机接收到的索引关联,
所述控制器构造为通过从所述存储器读取所述映射信息和所述参考计数中的至少一个来确定从所述主机接收到的数据是否对应于先前存储在所述存储装置中的数据的副本,所述读取操作基于从所述主机接收到的索引,并且
所述控制器构造为通过在从所述主机接收到的数据对应于先前存储在所述存储装置中的数据的副本的情况下更新所述参考计数来执行去重处理,
其中,所述存储装置是键-值存储装置,其构造为将从所述主机接收到的数据作为值来存储,并且构造为将从所述主机接收到的索引作为与所述值关联的键来存储,并且
从所述主机接收到的索引是通过数据的哈希函数产生的哈希值。
2.根据权利要求1所述的存储***,其中,如果与先前存储在所述存储装置中的数据关联的索引与从所述主机接收到的索引相同,则所述控制器构造为确定从所述主机接收到的数据对应于先前存储在所述存储装置中的数据的副本。
3.根据权利要求2所述的存储***,其中,
所述存储器构造为存储对应于第一索引至第N索引的第一参考计数至第N参考计数,其中N是等于或大于2的整数,并且
所述控制器构造为:响应于从所述主机接收到的索引与所述第一索引相同,通过增大对应于所述第一索引的所述第一参考计数来执行所述去重处理。
4.根据权利要求1所述的存储***,其中,所述控制器构造为将更新的参考计数提供至所述主机。
5.根据权利要求1所述的存储***,其中,所述控制器构造为向所述主机提供第一信息,其指示从所述主机接收到的数据是先前存储在所述存储装置中的数据的副本,并且构造为从所述主机接收参考计数更新请求并且响应于所述参考计数更新请求对所述参考计数执行更新。
6.根据权利要求1所述的存储***,其中,所述控制器包括压缩器,其构造为压缩从所述主机接收到的数据并且将压缩的数据提供至所述存储装置。
7.根据权利要求1所述的存储***,其中,所述控制器包括哈希引擎,其构造为对从所述主机接收到的数据和从所述主机接收到的索引中的至少一个执行所述哈希函数。
8.根据权利要求1所述的存储***,其中,所述控制器包括:
处理器,其构造为执行机器可读指令,以及
工作存储器,其构造为存储去重控制模块,其用于确定从所述主机接收到的数据是否是先前存储在所述存储装置中的数据的副本并且用于控制所述参考计数的更新操作,其中,所述去重控制模块是所述处理器可执行的程序。
9.一种操作存储***的方法,所述方法包括步骤:
从主机接收第一数据和第一索引,所述第一索引与所述第一数据关联;
确定所述第一索引是否与对应于先前存储在所述存储***中的数据的索引相同;
响应于确定所述第一索引与对应于先前存储在所述存储***中的数据的索引相同,通过更新参考计数而不写所述第一数据来执行数据去重,所述参考计数先前存储在所述存储***中;以及
将更新的参考计数提供至所述主机,
其中,所述存储***包括键-值存储装置,其构造为将从所述主机接收到的数据作为值来存储,并且构造为将从所述主机接收到的索引作为与所述值关联的键来存储。
10.根据权利要求9所述的方法,其中,所述存储***构造为存储第二索引至第N索引以及与所述第二索引至所述第N索引对应的第二参考计数至第N参考计数,其中N是等于或大于3的整数,并且所述方法还包括步骤:
响应于所述第一索引与所述第二索引相同,增大对应于所述第二索引的所述第二参考计数。
11.根据权利要求10所述的方法,其中,提供更新的参考计数的步骤包括为所述主机提供所述第二参考计数。
12.根据权利要求9所述的方法,还包括步骤:
响应于确定所述第一索引与对应于先前存储在所述存储***中的数据的索引不是相同的索引,将所述第一索引新映射至第一物理地址;
响应于确定所述第一索引与对应于先前存储在所述存储***中的数据的索引不是相同的索引,将所述第一数据写在由所述第一物理地址指示的位置;以及
响应于确定所述第一索引与对应于先前存储在所述存储***中的数据的索引不是相同的索引,存储所述第一物理地址和对应于所述第一索引的第一参考计数。
13.根据权利要求9所述的方法,还包括步骤:
响应于确定所述第一索引与对应于先前存储在所述存储***中的数据的索引是相同的索引,为所述主机提供指示所述第一数据是重复数据的信息;以及
响应于确定所述第一索引与对应于先前存储在所述存储***中的数据的索引是相同的索引,从所述主机接收去重请求或者重复存储请求中的至少一个,
其中,响应于来自所述主机的去重请求执行所述数据去重,并且
响应于来自所述主机的重复存储请求重复地存储所述第一数据。
14.根据权利要求9所述的方法,还包括步骤:
响应于确定所述第一索引与对应于先前存储在所述存储***中的数据的索引是相同的索引,读取对应于相同的索引的数据;以及
响应于确定所述第一索引与对应于先前存储在所述存储***中的数据的索引是相同的索引,通过将读取的数据与所述第一数据进行比较,决定是否发生了数据冲突,
其中,如果决定是否发生了数据冲突的步骤决定未发生数据冲突,则执行所述数据去重。
15.根据权利要求14所述的方法,还包括步骤:
在发生了数据冲突的情况下将指示已发生数据冲突的信息提供至所述主机;
接收对应于所述第一数据已经改变的第一索引;以及
将所述第一数据写在由新映射至已改变的第一索引的第一物理地址指示的位置。
16.根据权利要求9所述的方法,还包括步骤:
响应于确定存在与所述第一索引相同的索引,为所述主机提供指示所述第一数据是重复数据的第一信息;以及
响应于确定存在与所述第一索引相同的索引,从所述主机接收指示改变的参考计数的第二信息,
其中,更新参考计数的步骤包括更新所述参考计数以对应于从所述主机提供的所述第二信息。
17.一种操作包括存储***的数据处理***的方法,所述方法包括步骤:
将映射信息存储在所述存储***中,所述映射信息包括利用来自外部***的数据产生的索引与指示所述数据的存储位置的物理地址之间的映射;
在所述存储***中接收包括额外数据和对应于所述额外数据的索引的写请求;
在所述存储***中确定所述额外数据是否对应于已经存储在所述存储***中的数据的副本;以及
在所述额外数据对应于已经存储在所述存储***中的数据的副本的情况下,通过更新存储在所述存储***中的参考计数执行去重处理,
其中,所述存储***包括键-值存储装置,其构造为将从主机接收到的数据作为值来存储,并且构造为将从该主机接收到的索引作为与所述值关联的键来存储。
18.根据权利要求17所述的方法,其中,所述数据处理***还包括主机,并且所述方法还包括步骤:
在所述主机中通过所述额外数据的哈希函数产生索引;以及
将所述额外数据和对应于所述额外数据的索引提供至所述存储***。
19.根据权利要求18所述的方法,还包括步骤:
在所述主机中压缩从所述外部***接收到的所述额外数据。
20.根据权利要求18所述的方法,还包括步骤:
将更新的参考计数从所述存储***提供至所述主机。
21.根据权利要求18所述的方法,还包括步骤:
将第一信息从所述存储***提供至所述主机,所述第一信息指示所述写请求是针对先前存储在所述存储***中的数据的副本的写请求;以及
提供第二信息,所述第二信息请求所述去重处理,所述第二信息从所述主机提供至所述存储***,
其中,所述存储***构造为响应于所述第二信息执行所述去重处理。
22.根据权利要求18所述的方法,还包括步骤:
从所述存储***读取数据,该读取的数据对应于所述索引;
响应于确定所述写请求是针对重复数据的写请求,将该读取的数据提供至所述主机;以及
在所述主机中通过将所述数据与该读取的数据进行比较来确定是否发生了数据冲突。
23.根据权利要求18所述的方法,还包括步骤:
在所述主机中检查对应于从所述存储***提供的多个索引的参考计数;以及
基于检查的结果,针对对应于超过阈值的参考计数的数据向所述存储***提供备份请求。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662425686P | 2016-11-23 | 2016-11-23 | |
US62/425,686 | 2016-11-23 | ||
KR1020170031808A KR102306672B1 (ko) | 2016-11-23 | 2017-03-14 | 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법 |
KR10-2017-0031808 | 2017-03-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108089817A CN108089817A (zh) | 2018-05-29 |
CN108089817B true CN108089817B (zh) | 2023-12-19 |
Family
ID=62146965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711180803.XA Active CN108089817B (zh) | 2016-11-23 | 2017-11-23 | 存储***及其操作方法和操作数据处理***的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11644992B2 (zh) |
CN (1) | CN108089817B (zh) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884926B2 (en) | 2017-06-16 | 2021-01-05 | Alibaba Group Holding Limited | Method and system for distributed storage using client-side global persistent cache |
US10678443B2 (en) | 2017-07-06 | 2020-06-09 | Alibaba Group Holding Limited | Method and system for high-density converged storage via memory bus |
US10642522B2 (en) * | 2017-09-15 | 2020-05-05 | Alibaba Group Holding Limited | Method and system for in-line deduplication in a storage drive based on a non-collision hash |
US10789011B2 (en) | 2017-09-27 | 2020-09-29 | Alibaba Group Holding Limited | Performance enhancement of a storage device using an integrated controller-buffer |
US10789002B1 (en) * | 2017-10-23 | 2020-09-29 | EMC IP Holding Company LLC | Hybrid data deduplication for elastic cloud storage devices |
US10860334B2 (en) | 2017-10-25 | 2020-12-08 | Alibaba Group Holding Limited | System and method for centralized boot storage in an access switch shared by multiple servers |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10891239B2 (en) | 2018-02-07 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for operating NAND flash physical space to extend memory capacity |
US10831404B2 (en) | 2018-02-08 | 2020-11-10 | Alibaba Group Holding Limited | Method and system for facilitating high-capacity shared memory using DIMM from retired servers |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
CN111902804B (zh) | 2018-06-25 | 2024-03-01 | 阿里巴巴集团控股有限公司 | 用于管理存储设备的资源并量化i/o请求成本的***和方法 |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US10871921B2 (en) | 2018-07-30 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for facilitating atomicity assurance on metadata and data bundled storage |
US10747673B2 (en) | 2018-08-02 | 2020-08-18 | Alibaba Group Holding Limited | System and method for facilitating cluster-level cache and memory space |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10852948B2 (en) | 2018-10-19 | 2020-12-01 | Alibaba Group Holding | System and method for data organization in shingled magnetic recording drive |
US10795586B2 (en) | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
US10769018B2 (en) | 2018-12-04 | 2020-09-08 | Alibaba Group Holding Limited | System and method for handling uncorrectable data errors in high-capacity storage |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US10884654B2 (en) | 2018-12-31 | 2021-01-05 | Alibaba Group Holding Limited | System and method for quality of service assurance of multi-stream scenarios in a hard disk drive |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US11086837B2 (en) * | 2019-01-15 | 2021-08-10 | EMC IP Holding Company LLC | Fast key-value storage for continuous data protection systems |
CN109800336B (zh) * | 2019-01-30 | 2020-12-25 | 百度在线网络技术(北京)有限公司 | 基于键值对存储***的表格实现方法、装置、设备和介质 |
US10860420B2 (en) | 2019-02-05 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for mitigating read disturb impact on persistent memory |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US10970212B2 (en) | 2019-02-15 | 2021-04-06 | Alibaba Group Holding Limited | Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones |
US11061834B2 (en) | 2019-02-26 | 2021-07-13 | Alibaba Group Holding Limited | Method and system for facilitating an improved storage system by decoupling the controller from the storage medium |
US10783035B1 (en) | 2019-02-28 | 2020-09-22 | Alibaba Group Holding Limited | Method and system for improving throughput and reliability of storage media with high raw-error-rate |
CN109872161B (zh) * | 2019-03-01 | 2021-05-04 | 山东大学 | 一种加速iota子链交易验证过程的芯片及*** |
US10891065B2 (en) | 2019-04-01 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
CN110134335B (zh) * | 2019-05-10 | 2022-08-12 | 天津大学深圳研究院 | 一种基于键值对的rdf数据管理方法、装置及存储介质 |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11074124B2 (en) | 2019-07-23 | 2021-07-27 | Alibaba Group Holding Limited | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage |
FR3100627B1 (fr) * | 2019-09-05 | 2023-11-10 | Blade | Procédé de gestion d’un groupe de donnees dans un système informatique |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11429573B2 (en) * | 2019-10-16 | 2022-08-30 | Dell Products L.P. | Data deduplication system |
US11200159B2 (en) * | 2019-11-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating efficient utilization of NAND flash memory |
US11042307B1 (en) | 2020-01-13 | 2021-06-22 | Alibaba Group Holding Limited | System and method for facilitating improved utilization of NAND flash based on page-wise operation |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US10923156B1 (en) | 2020-02-19 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive |
US10872622B1 (en) | 2020-02-19 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for deploying mixed storage products on a uniform storage infrastructure |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11144250B2 (en) | 2020-03-13 | 2021-10-12 | Alibaba Group Holding Limited | Method and system for facilitating a persistent memory-centric system |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11709609B2 (en) * | 2020-03-27 | 2023-07-25 | Via Technologies, Inc. | Data storage system and global deduplication method thereof |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
CN111651438A (zh) * | 2020-04-28 | 2020-09-11 | 银江股份有限公司 | 基于MapDB的结构化数据去重方法、装置、设备及介质 |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
CN114265958A (zh) * | 2022-03-01 | 2022-04-01 | 南京得瑞芯存科技有限公司 | Kv ssd的映射管理方法、装置及存储介质 |
CN114579061B (zh) * | 2022-04-28 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606097A (zh) * | 2003-10-08 | 2005-04-13 | 三星电子株式会社 | 闪速存储器控制装置、存储器管理方法、及存储器芯片 |
US7908436B1 (en) * | 2008-04-25 | 2011-03-15 | Netapp, Inc. | Deduplication of data on disk devices using low-latency random read memory |
CN103049390A (zh) * | 2012-12-14 | 2013-04-17 | 华为技术有限公司 | 应用元数据的数据处理方法及存储*** |
CN103136243A (zh) * | 2011-11-29 | 2013-06-05 | 中国电信股份有限公司 | 基于云存储的文件***去重方法及装置 |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5727197A (en) * | 1995-11-01 | 1998-03-10 | Filetek, Inc. | Method and apparatus for segmenting a database |
US6675205B2 (en) * | 1999-10-14 | 2004-01-06 | Arcessa, Inc. | Peer-to-peer automated anonymous asynchronous file sharing |
US6976053B1 (en) * | 1999-10-14 | 2005-12-13 | Arcessa, Inc. | Method for using agents to create a computer index corresponding to the contents of networked computers |
US20040085999A1 (en) * | 2002-10-31 | 2004-05-06 | Burnett Charles James | Method and apparatus for selective segmentation and reassembly of asynchronous transfer mode streams |
US7840537B2 (en) * | 2006-12-22 | 2010-11-23 | Commvault Systems, Inc. | System and method for storing redundant information |
KR101226685B1 (ko) | 2007-11-08 | 2013-01-25 | 삼성전자주식회사 | 수직형 반도체 소자 및 그 제조 방법. |
US8645334B2 (en) * | 2009-02-27 | 2014-02-04 | Andrew LEPPARD | Minimize damage caused by corruption of de-duplicated data |
US8407190B2 (en) * | 2009-06-30 | 2013-03-26 | Commvault Systems, Inc. | Performing data storage operations with a cloud environment, including containerized deduplication, data pruning, and data transfer |
US8965852B2 (en) * | 2009-11-24 | 2015-02-24 | Dell Products L.P. | Methods and apparatus for network efficient deduplication |
KR101691092B1 (ko) | 2010-08-26 | 2016-12-30 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
US8553466B2 (en) | 2010-03-04 | 2013-10-08 | Samsung Electronics Co., Ltd. | Non-volatile memory device, erasing method thereof, and memory system including the same |
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
US9536970B2 (en) | 2010-03-26 | 2017-01-03 | Samsung Electronics Co., Ltd. | Three-dimensional semiconductor memory devices and methods of fabricating the same |
US9852149B1 (en) * | 2010-05-03 | 2017-12-26 | Panzura, Inc. | Transferring and caching a cloud file in a distributed filesystem |
US8935487B2 (en) * | 2010-05-05 | 2015-01-13 | Microsoft Corporation | Fast and low-RAM-footprint indexing for data deduplication |
US9053032B2 (en) * | 2010-05-05 | 2015-06-09 | Microsoft Technology Licensing, Llc | Fast and low-RAM-footprint indexing for data deduplication |
US20110276744A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
KR101682666B1 (ko) | 2010-08-11 | 2016-12-07 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템 |
US8682873B2 (en) * | 2010-12-01 | 2014-03-25 | International Business Machines Corporation | Efficient construction of synthetic backups within deduplication storage system |
KR20120072909A (ko) * | 2010-12-24 | 2012-07-04 | 주식회사 케이티 | 내용 기반 중복 방지 기능을 가지는 분산 저장 시스템 및 그 오브젝트 저장 방법 및 컴퓨터에 의하여 독출가능한 저장 매체 |
US9110936B2 (en) * | 2010-12-28 | 2015-08-18 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
KR101826047B1 (ko) | 2011-09-28 | 2018-02-07 | 삼성전자주식회사 | 저장 장치 및 그 구동 방법 |
KR20130064518A (ko) | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
EP2856406A4 (en) * | 2012-05-24 | 2015-12-09 | Google Inc | SYSTEMS, METHODS, AND COMPUTER PROGRAM PRODUCTS FOR PROVIDING A CONTACTLESS PROTOCOL |
CN104641365B (zh) * | 2012-09-19 | 2019-05-31 | 日立数据管理有限公司 | 在文件存储***中使用检查点管理去复制的***和方法 |
US8751763B1 (en) * | 2013-03-13 | 2014-06-10 | Nimbus Data Systems, Inc. | Low-overhead deduplication within a block-based data storage |
KR20150002297A (ko) | 2013-06-28 | 2015-01-07 | 삼성전자주식회사 | 스토리지 시스템 및 그의 동작 방법 |
US9361334B2 (en) * | 2013-08-23 | 2016-06-07 | Cisco Technology, Inc. | Addressing cache coherence in updates to a shared database in a network environment |
WO2015048140A1 (en) | 2013-09-24 | 2015-04-02 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for storage collision management |
KR102187127B1 (ko) | 2013-12-03 | 2020-12-04 | 삼성전자주식회사 | 데이터 연관정보를 이용한 중복제거 방법 및 시스템 |
US9442941B1 (en) | 2014-03-28 | 2016-09-13 | Emc Corporation | Data structure for hash digest metadata component |
US9921773B2 (en) * | 2014-06-18 | 2018-03-20 | Citrix Systems, Inc. | Range-based data deduplication using a hash table with entries replaced based on address alignment information |
DK3059679T3 (en) | 2014-12-05 | 2018-12-17 | Huawei Tech Co Ltd | CONTROL UNIT, FLASH MEMORY UNIT, PROCEDURE FOR IDENTIFICATION OF DATA BLOCK STABILITY, AND PROCEDURE FOR STORING DATA ON THE FLASH MEMORY UNIT |
US10248677B1 (en) * | 2014-12-30 | 2019-04-02 | EMC IP Holding Company LLC | Scaling an SSD index on a deduplicated storage system |
US10503717B1 (en) * | 2014-12-30 | 2019-12-10 | EMC IP Holding Company LLC | Method for locating data on a deduplicated storage system using a SSD cache index |
US10289307B1 (en) * | 2014-12-30 | 2019-05-14 | EMC IP Holding Company LLC | Method for handling block errors on a deduplicated storage system |
US10204002B1 (en) * | 2014-12-30 | 2019-02-12 | EMC IP Holding Company LLC | Method for maintaining a cache index on a deduplicated storage system |
US10175894B1 (en) * | 2014-12-30 | 2019-01-08 | EMC IP Holding Company LLC | Method for populating a cache index on a deduplicated storage system |
US10013431B2 (en) * | 2015-04-29 | 2018-07-03 | Box, Inc. | Secure cloud-based shared content |
US9612749B2 (en) * | 2015-05-19 | 2017-04-04 | Vmware, Inc. | Opportunistic asynchronous deduplication using an in-memory cache |
US9934264B2 (en) | 2015-06-02 | 2018-04-03 | Netapp, Inc. | Technique for reducing metadata stored in a memory of a node |
US10255287B2 (en) * | 2015-07-31 | 2019-04-09 | Hiveio Inc. | Method and apparatus for on-disk deduplication metadata for a deduplication file system |
US9977746B2 (en) * | 2015-10-21 | 2018-05-22 | Hewlett Packard Enterprise Development Lp | Processing of incoming blocks in deduplicating storage system |
US20170206218A1 (en) * | 2016-01-19 | 2017-07-20 | Hope Bay Technologies, Inc | Method and apparatus for data deduplication in cloud based storage system |
US20170208125A1 (en) * | 2016-01-19 | 2017-07-20 | Hope Bay Technologies, Inc | Method and apparatus for data prefetch in cloud based storage system |
US10929357B2 (en) * | 2016-02-29 | 2021-02-23 | Red Hat, Inc. | Detecting stale storage layouts without using client locks |
US9983821B2 (en) * | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
WO2017180144A1 (en) * | 2016-04-15 | 2017-10-19 | Hitachi Data Systems Corporation | Deduplication index enabling scalability |
US10585611B2 (en) * | 2016-04-26 | 2020-03-10 | Netapp Inc. | Inline deduplication |
US10452297B1 (en) * | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
US9940060B1 (en) * | 2016-05-02 | 2018-04-10 | Pure Storage, Inc. | Memory use and eviction in a deduplication storage system |
-
2017
- 2017-11-16 US US15/815,040 patent/US11644992B2/en active Active
- 2017-11-23 CN CN201711180803.XA patent/CN108089817B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606097A (zh) * | 2003-10-08 | 2005-04-13 | 三星电子株式会社 | 闪速存储器控制装置、存储器管理方法、及存储器芯片 |
US7908436B1 (en) * | 2008-04-25 | 2011-03-15 | Netapp, Inc. | Deduplication of data on disk devices using low-latency random read memory |
CN103136243A (zh) * | 2011-11-29 | 2013-06-05 | 中国电信股份有限公司 | 基于云存储的文件***去重方法及装置 |
CN103049390A (zh) * | 2012-12-14 | 2013-04-17 | 华为技术有限公司 | 应用元数据的数据处理方法及存储*** |
Also Published As
Publication number | Publication date |
---|---|
CN108089817A (zh) | 2018-05-29 |
US20180143780A1 (en) | 2018-05-24 |
US11644992B2 (en) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108089817B (zh) | 存储***及其操作方法和操作数据处理***的方法 | |
EP3340028B1 (en) | Storage system deduplication | |
CN109416681B (zh) | 使用幽灵指纹进行工作负载优化的重复数据删除 | |
US11157372B2 (en) | Efficient memory footprint in deduplicated system storing with content based addressing | |
US10990310B2 (en) | Sub-block data deduplication | |
US8910017B2 (en) | Flash memory with random partition | |
JP5405513B2 (ja) | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム | |
KR101769883B1 (ko) | 저장부 할당 장치, 시스템, 및 방법 | |
US11874815B2 (en) | Key-value storage device and method of operating the same | |
US10468077B2 (en) | Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage | |
US20130250686A1 (en) | Semiconductor memory device, information processing system and control method | |
US10606760B2 (en) | Nonvolatile memory devices and methods of controlling the same | |
CN112889034A (zh) | 对数据块的内容驱动的分布进行擦除编码 | |
US9430639B2 (en) | Data de-duplication in a non-volatile storage device responsive to commands based on keys transmitted to a host | |
KR102440128B1 (ko) | 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법 | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
US10852975B2 (en) | Efficient data deduplication caching | |
KR102306672B1 (ko) | 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법 | |
US20190310788A1 (en) | Similarity-based data deduplication on solid-state storage devices with embedded nonvolatile memory | |
JP2015053075A (ja) | メモリシステム、情報処理装置および記憶装置 | |
US20190227740A1 (en) | Atomic write method for multi-transaction | |
KR101430552B1 (ko) | Ssd 기반 스토리지 시스템에서 중복률과 입출력 성능 향상을 위한 ssd 스토리지의 데이터 중복제거 및 재활용 시스템 | |
JP5649709B2 (ja) | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム | |
US11263132B2 (en) | Method and system for facilitating log-structure data organization |
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 |