CN109783010B - 键值固态驱动器及在其上使用的去重方法 - Google Patents

键值固态驱动器及在其上使用的去重方法 Download PDF

Info

Publication number
CN109783010B
CN109783010B CN201811139603.4A CN201811139603A CN109783010B CN 109783010 B CN109783010 B CN 109783010B CN 201811139603 A CN201811139603 A CN 201811139603A CN 109783010 B CN109783010 B CN 109783010B
Authority
CN
China
Prior art keywords
key
user data
container
deduplication
data chunk
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
Application number
CN201811139603.4A
Other languages
English (en)
Other versions
CN109783010A (zh
Inventor
V.马拉姆
K.坎特蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN109783010A publication Critical patent/CN109783010A/zh
Application granted granted Critical
Publication of CN109783010B publication Critical patent/CN109783010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

为包括存储空间和控制器的键值固态驱动(KVSSD)提供去重功能。存储空间包含第一和第二容器。第一容器包括第一虚拟空间并且存储键和与所述键相关联的至少一个去重复键。每个去重复键对应于用户数据的块,并且每个块包括预先确定的尺寸。第二容器包括第二虚拟空间并且存储每个去重复键,与去重复键相关联的用户数据的块和与用户数据的块相关联的元数据。控制器通过确定用于由KVSSD接收的用户数据的块的去重复键是否匹配第一容器中的存储的去重复键来确定所接收的用户数据的块是否是存储在第二容器中的用户数据的块的副本。

Description

键值固态驱动器及在其上使用的去重方法
相关申请的交叉引用
该专利申请要求在2017年11月14日提交的第62/586,122号美国临时专利申请和2017年11月28日提交的第15/825,062号美国非临时申请的优先权,其公开通过引用全部被合并于本文。
技术领域
在本文公开的主题总体上涉及键值固态驱动器(key value solid-state drive,KVSSD)系统,并且更具体地涉及提供去重功能的KVSSD。
背景技术
数据去重是通过消除数据的重复拷贝来减小存储成本的智能压缩技术。数据去重可以用于提高存储利用率。在去重处理期间,数据的唯一的片段被识别并0存储在盘上。散列函数生成关于数据的唯一的片段的校验和,并且校验和被存储在校验和表格中。所述校验和表格在本文被称为词典或者去重复词典(dedup dictionary)。在将数据写入到盘之前,查阅去重复词典来确定是否存在将被写入的数据的副本。
若干技术和最优化可用于维持去重复词典。一些常规技术包括去重复词典,去重复词典具有由词典使用的预分配量的存储器。该技术的缺点是对词典的查找受限于已被保留的存储器量,并随着数据集增长,词典可能超过保留的存储器。另一常规技术将闪速存储器用于数据去重。然而,该常规技术可能要求去重逻辑对闪速存储器进行若干输入/输出(I/O)操作以确定去重复库是否包含复制的键,并且需要中央处理单元(CPU)来生成散列。两种常规技术都在不存在冲突时以多次读取和写入的形式增添I/O操作的延迟。如果数据还从没有被写入盘,则确定散列和将数据写入盘会涉及附加的I/O操作。
发明内容
示例实施例提供键值固态驱动(KVSSD),其可以包括存储空间和控制器。存储空间可以包含第一容器和第二容器。第一容器可以包括存储空间内的第一虚拟空间,其中第一容器可以存储键和与该键相关联的至少一个去重复键,每个去重复键可以对应于用户数据的块,并且每个块可以具有预先确定的尺寸,该预先确定的尺寸可以是用户可选择的。第二容器可以包括存储空间内的第二虚拟空间,其中第二容器可以存储每个去重复键、与去重复键相关联的用户数据的块以及与用户数据的块相关联的元数据。控制器可以通过确定用于由KVSSD接收的用于存储在存储空间中的用户数据的块的去重复键是否匹配第一容器中的存储的去重复键来确定所接收的用户数据的块是否是存储在第二容器中的用户数据的块的副本。在一个实施例中,KVSSD可以包括多个第一容器和多个第二容器。在另一个实施例中,控制器可以进一步基于用户可选择的散列函数来生成用于用户数据的每个块的每个去重复键。
另一个示例实施例提供一种在键值固态驱动(KVSSD)上使用的去重方法,其中该方法可以包括将键和与键相关联的至少一个去重复键存储在 KVSSD中的第一容器中,其中第一容器可以包括KVSSD的存储器空间内的第一虚拟空间,每个去重复键可以对应于用户数据的块,并且每个块可以是预先确定的尺寸,该预先确定的尺寸可以是用户可选择的;将每个去重复键、与去重复键相关联的用户数据的块和与用户数据的块相关联的元数据存储在 KVSSD中的第二容器中,其中第二容器可以包括KVSSD的存储器空间内的第二虚拟空间;以及通过确定用于由KVSSD接收的用户数据的块的去重复键是否匹配第一容器中的存储的去重复键来确定所接收的用户数据的块是否是存储在第二容器中的用户数据的块的副本。如果用于所接收的用户数据的块的去重复键匹配第一容器中的存储的去重复键,则在第二容器中更新与对应于去重复键的用户数据的块相关联的元数据以指示对第二容器中存储的用户数据的块的引用的数量。如果用于所接收的用户数据的块的去重复键不匹配第一容器中的存储的去重复键,则将用于所接收的用户数据的块的去重复键存储在第一容器中并且将用于所接收的用户数据的块的去重复键、所接收的用户数据的块和与所接收的用户数据的块相关联的元数据存储在第二容器中。确定由KVSSD接收的用户数据的块是否是存储在第二容器中的用户数据的块的副本在KVSSD的内部被执行。
又一个示例实施例提供一种在键值固态驱动(KVSSD)上使用的去重方法,其中该方法可以包括通过确定用于由KVSSD接收的用户数据的块的去重复键是否匹配KVSSD中的第一容器中的存储的去重复键来确定所接收的用户数据的块是否是存储在KVSSD中的用户数据的块的副本,其中每个去重复键可以对应于存储在第二容器中的用户数据的块,每个块可以包括预先确定的尺寸,该预先确定的尺寸可以是用户可选择的,其中第一容器和第二容器每个都可以包括KVSSD的存储器空间内的单独的虚拟空间,存储在第二容器中的用户数据的每个块可以与用于用户数据的块的去重复键和与用户数据的块相对应的元数据相关联地被存储;如果用于所接收的用户数据的块的去重复键匹配第一容器中的存储的去重复键,则在第二容器中更新所存储的与对应于存储的去重复键的用户数据的块相关联的元数据以指示对第二容器中存储的用户数据的块的引用的数量;并且如果用于所接收的用户数据的块的去重复键不匹配第一容器中的存储的去重复键,则将用于所接收的用户数据的块的去重复键存储在第一容器中,并且将用于所接收的用户数据的块的去重复键、所接收的用户数据的块和与所接收的用户数据的块相关联的元数据存储在第二容器中。
附图说明
在下面的部分中,将参考图中所图示的示例性实施例来描述在本文公开的主题的方面,其中:
图1A描绘根据在本文公开的主题的、提供去重功能的KVSSD的功能系统布置的示例实施例的框图;
图1B描绘根据在本文公开的主题的、在数据容器与去重复容器之间的去重功能布置的示例实施例的更详细的框图;以及
图2描绘根据在本文公开的主题的、用于去重处理的流程图。
具体实施方式
在下文的具体实施方式中,阐述特定细节以便提供对本公开的彻底的理解。然而,那些本领域技术人员将理解,可以在没有这些特定细节的情况下实践所公开的方面。在其他的实例中,并未详细地描述公知的方法、过程、组件和电路,以便不使在本文公开的主题模糊。
遍及说明书,对“一个实施例”或“实施例”的引用意指结合实施例描述的特定特征、结构或特性可以被包括在本文公开的至少一个实施例中。因此,贯穿本说明书的在各个位置出现的词组“在一个实施例中”或“在实施例中”或者“根据一个实施例”(或者具有类似的含义地其他词组)可以不必要地全指同一实施例。此外,可以在一个或多个实施例中以任何适当的方式组合特定特征、结构或特性。在这点上,如在本文所使用的,词语“示例性”意指“用作示例、实例,或者说明”。在本文被描述为“示例性”的任何实施例将不被看作必然相对于其他实施例是优选的或者有利的。而且,取决于在本文的讨论的上下文,单数术语可以包括对应的复数形式,并且复数术语可以包括对应的单数形式。进一步请注意,在本文示出和讨论的各个图(组件图)是仅仅为了说明性目的,并且不是按比例绘制。类似地,仅仅为了说明性目的示出了各个波形和时序图。例如,为了清楚,可以相对于其他要素来夸大一些要素的尺度。此外,如果被适当考虑,已经在图当中重复了附图标记以指示对应的和/或类似的要素。
在本文使用的术语仅用于描述特定示例性实施例的目的,并且不意图限制所要求保护的主题。如在本文所使用的,单数形式“一”和“该”也意图包括复数形式,除非上下文清楚地另外指出其他。应当进一步理解,当术语“包括”和/或“包括在内”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、要素和/或组件的存在,但不排除存在或另外有一个或多个其它的特征、整数、步骤、操作、要素、组件和/或其的分组。如在本文所使用的,术语“第一”、“第二”等等被用作它们在其之前的名词的标号,并且不意指任何类型的排序(例如,空间、时间、逻辑,等等),除非被如此明确地定义。此外,可以跨两个或更多图来使用相同的附图标记以指代具有相同的或类似的功能的部分、组件、框、电路、单元,或模块。然而,此类使用仅仅为了简化说明并且易于讨论;其不意指跨所有实施例此类组件或单元的结构或体系详情是相同的,或者此类共同引用的部分/模块是实施在本文公开的特定实施例的教导的唯一方式。
除非另外定义,在本文使用的所有术语(包括技术和科学术语)具有所公开的主题所属于的本领域普通技术人员所共同理解的意义。应当进一步理解,诸如那些在通用词典中定义的术语应该被解释为具有与它们在相关技术的上下文中的意义相一致的意义,并且将不会以理想或过于正式的意义被解释,除非在本文明确地如此定义。
在本文公开的主题提供使用键值固态驱动(KVSSD)执行数据去重(去重复(dedup))的系统和方法。数据可以被组织为键-值对的集合,其可以被存储在KVSSD中的、在本文被称为容器的、虚拟存储空间中。容器的尺寸可以是用户可选择的并且可以与KVSSD的整个存储空间一样大,尽管这将意味着KVSSD的存储空间将仅仅包括一个容器。每个容器可以保持,或存储键-值-类型对。容器中的键对于该容器是唯一的,这意味着在容器内不存在复制的键。然而,两个不同的容器可以具有相同的键。也就是说,键可能在两个不同的容器之间重复。用户或系统管理员可以对容器启用去重处理并且也可以有选择地设置用于检测块冲突的散列函数,使得当数据被写入容器或者容器内的数据被更新时,数据块被自动地去重。
图1A描绘根据在本文公开的主题的提供去重功能的KVSSD 100的功能系统布置的示例实施例的框图。KVSSD 100可以包括设备控制单元101、设备接口单元102、散列单元103,和存储空间104。设备控制单元101操作地控制设备接口单元102、散列单元103和存储空间104。在一个实施例中,设备控制单元101可以是、但是不局限于中央处理单元(CPU)、有限状态机 (FSM),或嵌入式控制器。设备控制器101还可以包括在图1A中未示出的其他组件,诸如但不限于随机存取存储器(RAM)、只读存储器(ROM),等等。KVSSD 100的系统配置使得KVSSD 100能够完全在KVSSD 100内部提供去重功能。
设备接口单元102提供接口功能来从主机设备(未示出)接收用户数据和/或命令和输入/输出(I/O)请求,并且响应于接收的命令和/或I/O请求来输出用户数据和/或状态信息。散列单元103响应于从设备控制单元101接收到的控制命令来生成去重键(去重复键)。存储空间104可以包括被配置为存储诸如但不限于用户数据、键、去重复键、元数据、误差信息和状态信息之类的信息的非易失性物理存储设备(未被具体地示出)。非易失性物理存储设备可以是但是不局限于非易失性随机存取存储器(NVRAM)、闪速存储器、盘存储器、电阻随机存取存储器(ReRAM)、相变存储器(PRAM),或磁性 RAM(MRAM)。
存储空间104可以被配置为直接地在存储空间104中以键/值布置105来存储用户数据。另外地或替换地,存储空间104可以被配置为包括一个或多个通用容器106(仅仅指示了其中一个通用容器106),以及具有相关联的去重容器(去重复容器)108的一个或多个数据容器107(仅仅指示了其中一个数据容器107和一个去重复容器108)。数据容器107和去重复容器108之间的功能布置提供如在本文所描述的去重功能布置。在一个实施例中,数据容器107和相关联的去重复容器108可以被认为是以级联类型的布置来布置的。
如在本文所使用的,通用容器106是存储空间104内的虚拟存储空间,其可以存储或保持用户数据的键和值的键/值布置105。通用容器106可以是通过用户或通过系统管理员可配置的。
如在本文所使用的,数据容器107是存储空间104内的虚拟存储空间,其可以存储或保持键和去重复键的键/去重复键布置109。如在本文所使用的,去重复容器108是可以存储或保持去重复键/元数据/用户数据块布置110的虚拟存储空间。如总体上通过箭头111所指示的,存储在数据容器107中的去重复键指向存储在去重复容器108中的对应的元数据和用户数据块。由设备控制单元101使用数据容器107和数据容器107的内容109、与去重复容器 108和去重复容器108的内容110之间的去重功能布置来提供去重功能。
图1B描绘根据在本文公开的主题的、在数据容器107与去重复容器108 之间的去重功能布置的示例实施例的更详细框图。当由KVSSD 100接收用户数据时,设备控制单元101控制散列单元103生成用于所接收的用户数据的键。如图1B中描绘的,设备控制单元101可以控制散列单元103生成例如用于第一接收的用户数据的键0。类似地,可以由散列单元103为第二接收的用户数据生成键1。设备控制单元101也可以控制散列单元103生成用于所接收的用户数据的每个块的去重复键。
在一个实施例中,用于生成去重复键的用户数据的块的尺寸可以是固定的并且可以具有提供用户数据的块可以被复制的合理概率的尺寸。也就是说,如果块的尺寸相对大,则块被复制的概率变得相对小,而相对更小的块尺寸增加块可以被复制的概率。例如,在一个实施例中,块尺寸可以是4K字节。在其他实施例中,块尺寸可以是8K字节、16K字节,等等。在又一个实施例中,用户数据的块的尺寸可以是用户或管理员可选择的。
在一个实施例中,散列单元103可以提供例如可以在工厂安装的固定的散列函数。在另一个实施例中,散列单元103可以包括可以是用户或管理员可编程的现场可编程门阵列(FPGA)或其他类似的可编程器件,使得用于生成去重复键的特定散列函数可以对于其中去重功能被应用的特定应用被最优化。在一个实施例中,散列单元103的可编程性可以是可重编程的,使得由 KVSSD 100提供的去重功能可以是可适配的。用于生成用于用户数据的键的散列函数可以与可以用于生成去重复键的散列函数相同的或者不同。
为与键相关联的用户数据的每个块生成去重复键,并且将该去重复键与用于该用户数据的键相关联地存储在数据容器107中。例如,对于键0,为第一接收的用户数据的用户数据块0生成去重复键0。为第一接收的用户数据的用户数据块1生成去重复键1,等等。类似地,对于键1,为第二接收的用户数据第二用户数据块0生成去重复键10。
如总体上通过箭头112所指示的,每个去重复键指向存储在去重复容器 108中的对应的元数据和对应的用户数据块。与用户数据块相关联的元数据例如可以包括其他去重复键对该用户数据块作出的引用的数量。也就是说,元数据可以指示作为用于数据容器/去重复容器对的去重处理的一部分的对特定用户数据块的引用的数量,使得如果存在未决的去重复键引用,不会将数据块错误地删除。在一个实施例中,元数据可以被存储在记录的前512字节中,后面是用户数据块。在另一个实施例中,可以在用户数据块之后存储元数据。
图2描绘根据在本文公开的主题的、用于去重处理200的流程图。处理在201开始。在202,由KVSSD 100为数据容器107接收用户数据。在203,设备控制器101控制散列单元103为所接收的用户数据的每个块生成去重复键。在204,对于所接收的用户数据的每个数据块,设备控制单元101确定已经为所接收的用户数据的块生成的去重复键是否匹配数据容器107中的去重复键。
在204,如果设备控制单元101没有发现匹配,则流程继续到205,其中将新的去重复键存储在数据容器107中,并且流程继续到206,其中将元数据和用户数据块存储在去重复容器108中。流程继续到207,其中IO去重处理完成。
在204,如果设备控制单元101发现匹配,则流程继续到206,其中在去重复容器108中更新与匹配的去重复键相对应的元数据以包括对匹配的用户数据块的引用。流程继续到207,其中IO去重处理完成。
本领域技术人员将认识到,在很宽的应用范围内,能够修改和变化在本文描述的创新概念。因此,所要求保护的主题的范围不应当限于以上讨论的特定示例性教导中的任何一个,而是通过所附权利要求来限定。

Claims (17)

1.一种键值固态驱动器KVSSD,包括:
存储空间,其包含:
第一容器,其包括存储空间内的第一虚拟空间,所述第一容器被配置为存储键和与所述键相关联的至少一个去重复键,与所述键相关联的去重复键对应于用户数据块,并且所述块包括预先确定的尺寸,以及
第二容器,其包括所述存储空间内的第二虚拟空间,所述第二容器被配置为存储与所述键相关联的去重复键、与去重复键对应的用户数据块和与所述用户数据块相关联的元数据;以及
控制器,其通过确定用于由所述KVSSD接收的用于存储在所述存储空间中的用户数据块的去重复键匹配所述第一容器中存储的去重复键来确定由所述KVSSD接收的用户数据块是所述第二容器中存储的重复数据块。
2.根据权利要求1所述的KVSSD,其中,所述控制器进一步基于用户可选择的散列函数来生成用于用户数据块的去重复键。
3.根据权利要求1所述的KVSSD,其中,块的预先确定的尺寸是用户可选择的。
4.一种在键值固态驱动器KVSSD上使用的去重方法,所述方法包括:
在所述KVSSD中的第一容器中,存储键和与所述键相关联的至少一个去重复键,所述第一容器包括所述KVSSD的存储空间内的第一虚拟空间,与所述键相关联的去重复键对应于用户数据块,并且所述块包括预先确定的尺寸;
在所述KVSSD中的第二容器中,存储与所述键相关联的键、与用于用户数据块的去重复键对应的用户数据块和与所述用户数据块相关联的元数据,所述第二容器包括所述KVSSD的存储空间内的第二虚拟空间;以及
通过确定用于由所述KVSSD接收的用户数据块的去重复键匹配所述第一容器中存储的去重复键来确定由所述KVSSD接收的用户数据块是所述第二容器中存储的重复数据块。
5.根据权利要求4所述的方法,进一步包括,确定用于所接收的用户数据块的去重复键匹配所述第一容器中存储的去重复键,并且在所述第二容器中更新与对应于所述去重复键的用户数据块相关联的元数据以指示对所存储的用户数据块的引用的数量。
6.根据权利要求5所述的方法,进一步包括,确定用于所接收的用户数据块的去重复键不匹配所述第一容器中存储的去重复键,将用于所接收的用户数据块的去重复键存储在所述第一容器中并且将用于所接收的用户数据块的去重复键、所接收的用户数据块和与所接收的用户数据块相关联的元数据存储在所述第二容器中。
7.根据权利要求6所述的方法,其中,确定由KVSSD接收的用户数据块是第二容器中存储的重复数据块,是在所述KVSSD内部执行的。
8.根据权利要求4所述的方法,其中,基于用户可选择的散列函数来确定用于用户数据块的去重复键。
9.根据权利要求4所述的方法,其中,与用户数据块相关联的元数据包括预先确定的数量的字节。
10.根据权利要求9所述的方法,其中,所述预先确定的数量的字节是512字节。
11.根据权利要求4所述的方法,其中,块的预先确定的尺寸是用户可选择的。
12.一种在键值固态驱动器KVSSD上使用的去重方法,所述方法包括:
通过确定为由所述KVSSD接收的用户数据块生成的去重复键匹配所述KVSSD中的第一容器中存储的去重复键来确定由所述KVSSD接收的用户数据块是所述KVSSD中存储的重复数据块,所存储的去重复键对应于第二容器中存储的用户数据块,第二容器中存储的用户数据块包括预先确定的尺寸,所述第一容器包括所述KVSSD的存储空间内的单独的虚拟空间,并且所述第二容器包括所述KVSSD的存储空间内与第一容器分开的虚拟空间,所述第二容器中存储的用户数据块与用于用户数据块的去重复键和与所述用户数据块相对应的元数据相关联地存储;
基于用于所接收的用户数据块的去重复键匹配所述第一容器中存储的去重复键,在第二容器中更新所存储的与对应于存储的去重复键的用户数据块相关联的元数据以指示对所存储的用户数据块的引用的数量;以及
基于用于所接收的用户数据块的去重复键不匹配第一容器中存储的去重复键,将用于所接收的用户数据块的去重复键存储在第一容器中并且将用于所接收的用户数据块的去重复键、所接收的用户数据块和与所接收的用户数据块相关联的元数据存储在所述第二容器中。
13.根据权利要求12所述的方法,其中,确定由KVSSD接收的用户数据块是存储在所述KVSSD中的重复数据块,是在所述KVSSD内部执行的。
14.根据权利要求12所述的方法,进一步包括基于用户可选择的散列函数来确定用于用户数据块的去重复键。
15.根据权利要求12所述的方法,其中,与用户数据块相关联的元数据包括预先确定的数量的字节。
16.根据权利要求15所述的方法,其中,所述预先确定的数量的字节是512字节。
17.根据权利要求12所述的方法,其中,块的预先确定的尺寸是用户可选择的。
CN201811139603.4A 2017-11-14 2018-09-28 键值固态驱动器及在其上使用的去重方法 Active CN109783010B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762586122P 2017-11-14 2017-11-14
US62/586,122 2017-11-14
US15/825,062 2017-11-28
US15/825,062 US10545696B2 (en) 2017-11-14 2017-11-28 Data deduplication using KVSSD

Publications (2)

Publication Number Publication Date
CN109783010A CN109783010A (zh) 2019-05-21
CN109783010B true CN109783010B (zh) 2021-06-01

Family

ID=66433246

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811139603.4A Active CN109783010B (zh) 2017-11-14 2018-09-28 键值固态驱动器及在其上使用的去重方法

Country Status (3)

Country Link
US (2) US10545696B2 (zh)
KR (1) KR102388896B1 (zh)
CN (1) CN109783010B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579606B2 (en) * 2018-05-03 2020-03-03 Samsung Electronics Co., Ltd Apparatus and method of data analytics in key-value solid state device (KVSSD) including data and analytics containers
US11182228B2 (en) * 2020-03-31 2021-11-23 Samsung Electronics Co., Ltd. System and method for remote procedure call for key-value target over non-volatile memory express over fabrics

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591855A (zh) * 2012-01-13 2012-07-18 广州从兴电子开发有限公司 一种数据标识方法及系统
CN102598020A (zh) * 2009-08-28 2012-07-18 弗森-艾奥公司 用于改进的数据去重的装置、系统及方法
CN106202548A (zh) * 2016-07-25 2016-12-07 网易(杭州)网络有限公司 数据存储方法、查找方法及装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269098B1 (en) * 1997-02-14 2001-07-31 Advanced Micro Devices, Inc. Method and apparatus for scaling number of virtual lans in a switch using an indexing scheme
US6084877A (en) * 1997-12-18 2000-07-04 Advanced Micro Devices, Inc. Network switch port configured for generating an index key for a network switch routing table using a programmable hash function
JP2008085570A (ja) * 2006-09-27 2008-04-10 Matsushita Electric Ind Co Ltd 無線受信装置及び半導体集積回路
US8315984B2 (en) * 2007-05-22 2012-11-20 Netapp, Inc. System and method for on-the-fly elimination of redundant data
US8295486B2 (en) * 2007-09-28 2012-10-23 Research In Motion Limited Systems, devices, and methods for outputting alerts to indicate the use of a weak hash function
US7814074B2 (en) * 2008-03-14 2010-10-12 International Business Machines Corporation Method and system for assuring integrity of deduplicated data
US8515909B2 (en) * 2008-04-29 2013-08-20 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US8375182B2 (en) * 2009-02-10 2013-02-12 Hewlett-Packard Development Company, L.P. System and method for segmenting a data stream
US8205065B2 (en) * 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US9705730B1 (en) * 2013-05-07 2017-07-11 Axcient, Inc. Cloud storage using Merkle trees
US8577851B2 (en) * 2010-09-30 2013-11-05 Commvault Systems, Inc. Content aligned block-based deduplication
US9383928B2 (en) * 2011-06-13 2016-07-05 Emc Corporation Replication techniques with content addressable storage
US8806160B2 (en) * 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
US9715434B1 (en) * 2011-09-30 2017-07-25 EMC IP Holding Company LLC System and method for estimating storage space needed to store data migrated from a source storage to a target storage
US9342537B2 (en) * 2012-04-23 2016-05-17 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US9189170B2 (en) * 2012-06-12 2015-11-17 Commvault Systems, Inc. External storage manager for a data storage cell
US8880476B2 (en) * 2012-06-28 2014-11-04 International Business Machines Corporation Low-overhead enhancement of reliability of journaled file system using solid state storage and de-duplication
US9483201B2 (en) * 2012-07-31 2016-11-01 Commvault Systems, Inc. Administering a shared, on-line pool of data storage resources for performing data storage operations
US9026498B2 (en) * 2012-08-13 2015-05-05 Commvault Systems, Inc. Lightweight mounting of a secondary copy of file system data
US9405482B2 (en) * 2012-12-21 2016-08-02 Commvault Systems, Inc. Filtered reference copy of secondary storage data in a data storage system
US9201906B2 (en) * 2012-12-21 2015-12-01 Commvault Systems, Inc. Systems and methods to perform data backup in data storage systems
US9483489B2 (en) * 2013-01-14 2016-11-01 Commvault Systems, Inc. Partial sharing of secondary storage files in a data storage system
US9659047B2 (en) 2014-12-03 2017-05-23 Netapp, Inc. Data deduplication utilizing extent ID database
US20160162218A1 (en) 2014-12-03 2016-06-09 International Business Machines Corporation Distributed data deduplication in enterprise networks
US9665305B1 (en) * 2015-06-26 2017-05-30 EMC IP Holding Company LLC Tiering data between two deduplication devices
US10565230B2 (en) * 2015-07-31 2020-02-18 Netapp, Inc. Technique for preserving efficiency for replication between clusters of a network
US9792042B2 (en) * 2015-10-21 2017-10-17 Red Hat, Inc. Systems and methods for set membership matching
US10761758B2 (en) * 2015-12-21 2020-09-01 Quantum Corporation Data aware deduplication object storage (DADOS)
US10585611B2 (en) * 2016-04-26 2020-03-10 Netapp Inc. Inline deduplication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102598020A (zh) * 2009-08-28 2012-07-18 弗森-艾奥公司 用于改进的数据去重的装置、系统及方法
CN102591855A (zh) * 2012-01-13 2012-07-18 广州从兴电子开发有限公司 一种数据标识方法及系统
CN106202548A (zh) * 2016-07-25 2016-12-07 网易(杭州)网络有限公司 数据存储方法、查找方法及装置

Also Published As

Publication number Publication date
US11194496B2 (en) 2021-12-07
US10545696B2 (en) 2020-01-28
KR20190054896A (ko) 2019-05-22
CN109783010A (zh) 2019-05-21
US20190146701A1 (en) 2019-05-16
KR102388896B1 (ko) 2022-04-21
US20200125283A1 (en) 2020-04-23

Similar Documents

Publication Publication Date Title
EP3340028B1 (en) Storage system deduplication
US10229734B1 (en) Method and system for storing and recovering data from flash memory
CN108205499B (zh) 用于将数据处理转移到混合存储设备的方法和装置
CN108701087B (zh) 用于处理到存储器装置中的物理块的块群组的顺序写入的方法和设备
US8346736B2 (en) Apparatus and method to deduplicate data
US9430326B2 (en) Multiple ECC codeword sizes in an SSD
US10248587B2 (en) Reduced host data command processing
KR20210027499A (ko) 보안 메모리 시스템 프로그래밍
CN111352864B (zh) 快闪存储器持久性高速缓存技术
KR20180052739A (ko) 고체 상태 드라이브 컨트롤러를 사용한 데이터 중복 제거
US9996280B2 (en) Data register copying for non-volatile storage array operations
US11720359B2 (en) Large data read techniques
US10558398B2 (en) Reducing read latency
CN109783010B (zh) 键值固态驱动器及在其上使用的去重方法
US10921987B1 (en) Deduplication of large block aggregates using representative block digests
CN108701089B (zh) 用于处理到可寻址单元的部分的顺序写入的方法和设备
US9798334B1 (en) Method and system for improving flash storage performance for various types of workloads by modulating operating temperature
US20140219041A1 (en) Storage device and data processing method thereof
WO2016032486A1 (en) Moving data chunks
US20150095574A1 (en) Computing system including storage system and method of writing data thereof
WO2015067983A1 (en) Reduced host data command processing

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