存储系统及其操作方法和操作数据处理系统的方法与流程

文档序号:14554315阅读:211来源:国知局
存储系统及其操作方法和操作数据处理系统的方法与流程

本申请要求于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。假设先前已从外部系统提供了第一逻辑地址lba1至第三逻辑地址lba3和与其对应的数据data,第一逻辑地址lba1至第三逻辑地址lba3与第一哈希索引hashindex1至第三哈希索引hashindex3之间的映射信息可存储在主机310a中,并且可在存储系统320a中存储第一哈希索引hashindex1至第三哈希索引hashindex3与第一物理地址pba1至第三物理地址pba3之间的映射信息。另外,可从外部系统提供第四逻辑地址lba4和与其对应的数据data,并且可从数据data产生第四哈希索引hashindex4。

主机310a可包括作为索引产生器的哈希引擎311a,并且还可包括存储产生的哈希索引的存储器312a。哈希引擎311a可响应于具有特定(或者,作为替代,预定)大小的数据data产生具有多个比特的哈希索引。可不同地限定数据data的大小和哈希索引的大小。例如,可从4kb数据data中产生128比特的哈希索引。

根据实施例,第一哈希索引hashindex1至第三哈希索引hashindex3可与第一逻辑地址lba1至第三逻辑地址lba3对齐,并且存储在存储器312a中。当从外部系统接收到用于写数据或读数据的逻辑地址lba时,可从存储器312a读出对应于逻辑地址lba的先前存储的哈希索引。

另外,存储系统320a可包括存储器321a和压缩数据data的压缩器322a。作为示例,存储系统320a可产生对应于接收到的哈希索引的物理地址pba,并且存储器321a可将哈希索引与物理地址pba之间的映射信息作为表存储。作为示例,第一哈希索引hashindex1至第三哈希索引hashindex3和第一物理地址pba1至第三物理地址pba3可一起存储在存储器321a中。另外或者作为替代,第一物理地址pba1至第三物理地址pba3可与第一哈希索引hashindex1至第三哈希索引hashindex3对齐,并且存储在存储器321a中。在这种情况下,第一哈希索引hashindex1至第三哈希索引hashindex3实际上可不存储在存储器321a中。

根据示例实施例,存储器321a还可存储对应于哈希索引的参考计数。例如,存储器321a还可存储对应于第一哈希索引hashindex1至第三哈希索引hashindex3的参考计数refcnt1至refcnt3。例如,在本发明构思的实施例中,可在存储系统320a中管理参考计数refcnt1至refcnt3。

下面将描述数据去重操作的示例。

主机310a可接收第四逻辑地址lba4和与其对应的数据data,并且哈希引擎311a可从数据data中产生第四哈希索引hashindex4。可在存储器312a中存储产生的第四哈希索引hashindex4与第四逻辑地址lba4之间的映射信息。另外,主机310a可在将数据写请求提供至存储系统320a的过程中将第四哈希索引hashindex4和对应的数据data提供至存储系统320a。

存储系统320a可利用第四哈希索引hashindex4确定是否存在重复数据。例如,存储系统320a可确定对应于先前存储的数据的第一哈希索引hashindex1至第三哈希索引hashindex3中的任一个是否与第四哈希索引hashindex4相同。如果存储系统320a确定在存储器321a中不存在与第四哈希索引hashindex4相同的哈希索引,则存储系统320a可将第四哈希索引hashindex4映射至第四物理地址pba4,并且将数据data存储在由第四物理地址pba4指示的位置。另外,可在存储器321a中存储第四哈希索引hashindex4与第四物理地址pba4之间的映射信息。

然而,如果第四哈希索引hashindex4与任一个哈希索引(例如,第一哈希索引hashindex1)相同,则可通过去重处理跳过数据data的重复存储,并且可通过第四逻辑地址lba4查阅对应于第一哈希索引hashindex1的数据。根据实施例,当执行去重处理时,可更新对应于第一哈希索引hashindex1的第一参考计数refcnt1的值,并且作为示例,第一参考计数refcnt1的值可增大一。另外,根据实施例,可从存储系统320a将更新后的第一参考计数refcnt1与指示已执行去重处理的信息一起提供至主机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,主机可从外部系统接收逻辑地址lba1至lba3和对应的数据,并且为数据产生索引(例如,哈希索引hashindex1至hashindex3)。另外,可在存储器中存储和管理逻辑地址lba1至lba3与哈希索引hashindex1至hashindex3之间的映射信息。

另外,主机可操作文件系统以访问存储系统。在执行去重之后,主机可在存储器中存储哈希索引hashindex1至hashindex3和与其对应的文件信息(例如,文件标识fileid1至fileid3)。另外,还可存储对应于哈希索引hashindex1至hashindex3和文件信息fileid1至fileid3的参考计数refcnt1至refcnt3。另外,主机可将针对存储系统的逻辑地址lbas1至lbas3经文件系统提供至存储系统,并且存储系统可存储逻辑地址lbas1至lbas3与物理地址pba1至pba3之间的映射信息。也就是说,主机可通过执行双表管理来执行数据去重,因此,存储器的使用量会增加,并且信息检索时间会增加。

作为替代,如图7b所示,根据本发明构思的实施例,主机可仅管理来自外部系统的逻辑地址lba1至lba3和与其对应的哈希索引hashindex1至hashindex3之间的映射信息。因此,主机不需要重复地管理一张表,并且可减轻主机方处理信息的负担。

主机可将哈希索引hashindex1至hashindex3提供至存储系统,并且存储系统可存储并管理哈希索引hashindex1至hashindex3与物理地址pba1至pba3之间的映射信息。存储系统还可存储对应于哈希索引hashindex1至hashindex3和物理地址pba1至pba3的参考计数refcnt1至refcnt3。

图8是示出根据本发明构思的实施例的数据处理系统600的数据读写操作的示例的框图。在图8所示的实施例中,存储系统620是包括nand存储器的ssd,并且示出了键-值ssd。

根据实施例的数据处理系统600可包括多个存储系统。存储系统中的一个或多个可构造为键-值存储,并且数据处理系统600可按照将实际数据存储在另一存储系统中的方式操作。例如,可由具有低计算能力的低性能节点和ssd构造键-值存储,并且外部客户可访问键-值存储,以请求存储和读数据。在这种情况下,作为存储系统之一的存储系统620可接收键作为上述实施例中的索引,并且还可接收值作为数据。另外,与上述实施例相似,可通过对于从外部系统提供的数据的哈希操作产生键。

参照图8,数据处理系统600可包括主机610和存储系统620。根据上述实施例,存储系统620可存储并管理键key作为索引,并且通过利用存储的键执行数据去重。

主机610可接收数据写请求和/或数据读请求。作为写操作的示例,可通过对数据userdata的哈希操作产生键key,并且可通过对数据userdata的压缩处理产生对应于压缩的数据的值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和与其对应的元数据metadata可一起存储在nand存储器的一页中。

根据示例实施例,还可将参考计数存储在索引表中。当存在相同的键时,可通过更新对应于相同的键的参考计数完成数据写操作,而不用在nand存储器中重复地存储键key和值value。根据实施例,还可相对于键key和值value在存储系统620中执行哈希操作处理,并且可进一步减小存储在存储系统620中的键key和值value的大小。

作为读操作的示例,主机610可通过哈希引擎产生对应于数据userdata的键key,并且将产生的键key提供至存储系统620,作为用于读取数据的信息。作为示例,可经ssd装置驱动器将利用键key的读请求get(key)提供至存储系统620。

存储系统620可接收针对对应于键key的数据userdata的读请求get(key),通过索引表确定映射至键key的物理地址pba,并且从由物理地址pba指示的位置读取数据。根据实施例,可读取对应于存储在nand存储器中的信息中的数据的值value,并且将其提供至主机610,并且主机610可通过对值value进行解压来恢复数据userdata。

图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是示出根据本发明构思的实施例的数据处理系统中的主机与存储系统之间的通信的示例的示图。在下面的实施例中,假设存储系统为键-值ssdkvssd,并且值value可称作数据。

在图11的示例中,在不考虑数据冲突的情况下描述数据去重操作。例如,利用哈希函数等产生的键key的大小小于数据value的大小,因此,会发生即使数据value具有不同的值也产生了相同的键的数据冲突。

参照图11,主机在接收数据写请求时从数据value中产生了键key,并且将写请求put(key,value)提供至存储系统。存储系统可利用键key执行数据重复检查操作。当数据value对应于重复数据时,存储系统可仅更新参考计数refcnt,而不重复地存储数据value。存储系统可为主机提供指示已对写请求put(key,value)执行去重处理的信息info_dd,并且还可将更新的参考计数refcnt提供至主机。主机可基于信息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,存储系统可仅更新参考计数refcnt而不重复存储数据value,并且为主机提供指示已执行去重的信息info_dd。另外,还可将更新的参考计数refcnt提供至主机。

当请求写入的数据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相同,则可确定不存在数据冲突。因此,存储系统可仅更新参考计数refcnt而不重复地存储数据value。另外,存储系统可为主机提供指示已执行去重的信息info_dd和更新的参考计数refcnt。

另一方面,当发生数据冲突时,存储系统可为主机提供指示已出现数据冲突的信息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和作为存储系统的ssd712。服务器711可执行上述实施例中的主机的功能。

服务器711可处理从连接至网络720的多个端子731_1至731_n发送的请求。作为示例,服务器711可在ssd712中存储从多个端子731_1至731_n提供的数据。另外,根据上述实施例,服务器711可通过利用数据去重功能减少或防止相同数据的重复存储,因此,可有效地使用ssd712的存储空间。

ssd712可根据上述实施例管理哈希索引和参考计数。根据实施例,ssd712可从主机接收数据和与其对应的哈希索引,利用哈希索引确定数据是否是重复的,并且根据确定结果执行用于存储数据和更新参考计数的操作。另外,当对应于特定键的参考计数的值较大时,与其对应的数据可对应于在多个端子731_1至731_n中的一个或多个中使用的数据,并且可根据上述实施例执行利用参考计数的数据管理操作。

虽然已经参照本发明构思的实施例具体示出和描述了本发明构思,但是应该理解,在不脱离权利要求的精神和范围的情况下,可在其中作出各种形式和细节上的改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1