背景技术:
数据去重复(deduplication)是用于增加存储设备的存储容量的技术。通过使用数据去重复,唯一数据区块的冗余拷贝被识别并从存储设备移除。因而,唯一数据区块的单个拷贝被存储在存储设备中。
附图说明
关于以下附图描述本申请的一些示例:
图1是根据一个示例的存储具有冲突指纹(fingerprint)的数据区块的存储设备的框图;
图2是根据一个示例的存储具有冲突指纹的数据区块的存储设备的框图;
图3是图示根据一个示例的存储具有冲突指纹的数据区块的方法的流程图;以及
图4是图示根据一个示例的存储具有冲突指纹的数据区块的方法的流程图。
具体实施方式
如上所述,数据去重复是用于增加存储设备的存储容量的技术。为了确定是否数据区块是现有存储的数据区块的冗余拷贝,生成数据区块的指纹。指纹可以是数据区块的循环冗余校验(crc)或者数据区块的散列键(hashkey)。当所述指纹匹配另一个指纹时,所述匹配可以指示该数据区块是冗余拷贝。因而,存储设备移除该数据区块。
然而,所述匹配可能指示指纹冲突,而不是冗余拷贝的指示。当具有不同内容的两个数据区块生成相同指纹时,指纹冲突发生。因而,数据区块的指纹可能是冲突指纹。指纹冲突的可能性取决于指纹大小。指纹大小越大,可能性越低。因而,当仅仅依赖于指纹匹配时,数据去重复过程的准确度降低。
本文所述的示例提供了存储具有冲突指纹的数据区块的存储设备。例如,存储设备可以从源设备接收第一数据区块。存储设备可以生成第一数据区块的第一指纹。存储设备可以将第一指纹与存储在存储设备中的第二数据区块的第二指纹相比较。响应于确定第一指纹匹配第二指纹,存储设备可以基于第一数据区块以及基于第二数据区块而从与存储设备关联的多个存储池中选择存储池来存储第一数据区块。所述多个存储池包括与具有非冲突指纹的第一特定数据区块关联的第一存储池以及与具有冲突指纹的第二特定数据区块关联的第二存储池。以此方式,本文所述的示例可以增加数据去重复过程的准确性。
现在参考附图,图1是根据一个示例的存储具有冲突指纹的数据区块的存储设备100的框图。如本文所使用的,冲突指纹可以是从数据区块生成的指纹,其匹配从不同的数据区块(即,两个数据区块具有不同的内容)生成的另一个指纹。例如,存储设备100可以是在所存储的数据上执行数据去重复的存储系统,存储阵列、硬盘驱动器、固态驱动器或适于存储数据的任何电子设备。
存储设备100可以包括控制器102、第一存储池104、第二存储池106和指纹数据库108。控制器102可以是例如中央处理单元(cpu)、基于半导体的微处理器,和/或适于检索和执行在存储设备100的计算机可读存储介质(未示出)中存储的指令的其他硬件设备。控制器102可以取出、解码和执行指令以控制将具有冲突指纹的数据区块存储到存储池(诸如第一存储池104)的过程。作为替换或除了检索和执行指令之外,控制器102还可以包括至少一个电子电路,其包括用于执行指令的功能的电子组件。
第一存储池104可以包括,例如,一个或多个存储设备、一个或多个逻辑存储卷等。第一存储池104可以存储具有非冲突指纹的数据区块。如本文所使用的,非冲突指纹可以是没有存储在指纹数据库108中的匹配指纹的指纹。第二存储池106可以类似于第一存储池104。第二存储池106可以存储具有冲突指纹的数据区块。指纹数据库108可以是存储数据区块的指纹的数据库,所述数据区块被存储在存储设备100中或者与存储设备100相关联。
在操作期间,源设备110可以将数据区块112传送到存储设备100以供存储。源设备110可以是计算设备,诸如平板计算机、膝上型计算机、台式计算机、智能电话等。响应于接收到数据区块112,控制器102可以执行数据去重复操作来确定数据区块112如何被存储。控制器112可以生成数据区块112的指纹114。控制器102可以将指纹114与存储在指纹数据库108中的至少一个指纹相比较。当指纹114不匹配指纹数据库108中的任何指纹时,控制器102可以确定指纹114是非冲突指纹。
因而,控制器102可以确定数据区块112是唯一数据区块,并且不是已经存储在存储设备100中的现有数据区块的冗余拷贝。控制器102可以在第一存储池104中存储数据区块112。控制器102还可以将指纹114存储到指纹数据库108以供与后续生成的指纹比较。
当指纹114匹配指纹数据库108中的特定指纹时,控制器102可以将数据区块112与来自第一存储池104和/或第二存储池106的具有特定指纹的特定数据区块相比较。例如,控制器102可以经由按字节比较将数据区块与特定数据区块相比较。当数据区块112匹配特定数据区块时,控制器102可以确定数据区块112是特定数据区块的冗余拷贝。因而,控制器102可以存储对其中存储特定数据区块的存储池中的特定数据区块的引用或指向其的指针。控制器102还可以丢弃指纹114。
当数据区块112不匹配特定数据区块时,控制器102可以确定数据区块112是唯一数据区块,其当前未被存储在存储设备100中。控制器102可以确定指纹114是冲突指纹。控制器102可以在第二存储池106中存储数据区块112。在一些示例中,在将数据区块112与特定数据区块比较并且将特定指纹与数据区块112相关联之后,控制器102可以丢弃指纹114。因而,通过利用不同的存储池,一个用于具有非冲突指纹的数据区块,并且一个用于具有冲突指纹的数据区块,具有冲突指纹的唯一数据区块可以被存储设备100高效地处理。
在一些示例中,数据区块可以基于数据区块的指纹的三级页表转换而被存储到第一存储池104中的位置。数据区块可以基于数据区块的偏移的三级页表转换而被存储到第二存储池106中的位置。因而,相同数据区块存储和检索机制可以用于存储池104和106。
图2是根据一个示例的存储具有冲突指纹的数据区块的存储设备200的框图。存储设备200可以类似于图1的存储设备100。存储设备200可以包括控制器202和计算机可读存储介质204。控制器202可以类似于控制器102。控制器202可以取出、解码和执行指令206-214以控制将具有冲突指纹的数据区块存储到存储池(诸如第一存储池104)的过程。
计算机可读存储介质204可以是包含或存储可执行指令的任何电子、磁性、光学或其他物理存储设备。因而,计算机可读存储介质204可以是例如随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)、光盘等。在一些示例中,计算机可读存储介质204可以是非瞬时存储介质,其中术语“非瞬时”不包含瞬时传播信号。如下详细所述,计算机可读存储介质204可以被编码有一系列处理器可执行指令206-214,其用于在存储设备200中存储具有冲突指纹的数据区块。
数据区块接收指令206可以从源设备接收数据区块以供存储,诸如图1的数据区块112。指纹生成指令208可以基于数据区块而生成指纹,诸如指纹114。指纹比较指令210可以将该指纹与存储在存储设备200中的其他指纹相比较。
当所述指纹匹配存储设备200中的另一个指纹时,数据区块比较指令212可以将所述数据区块与用于生成匹配指纹的另一个数据区块相比较。当所述数据区块匹配另一个数据区块时,数据区块存储指令214可以在第一存储池中存储对另一个数据区块的引用或指向其的指针,所述第一存储池与具有不冲突指纹的数据区块相关联,诸如第一存储池104。当所述数据区块不匹配另一个数据区块时,数据区块存储指令214可以在与第一存储池不同的第二存储池(诸如第二存储池106)中存储所述数据区块。第二存储池可以与具有冲突指纹的数据区块相关联。当所述指纹不匹配存储设备200中的指纹时,数据区块存储指令214可以在第二存储池中存储所述数据区块。
图3是图示根据一个示例的存储具有冲突指纹的数据区块的方法300的流程图。方法300可以使用图1的存储设备100和/或图2的存储设备200来实现。方法300包括,在302处,在存储设备处从源设备接收第一数据区块。例如,参考图1,存储设备100可以从源设备110接收数据区块112。
方法300还包括,在304处,生成第一数据区块的第一指纹。例如,参考图1,控制器102可以基于数据区块112而生成指纹114。方法300还包括,在306处,将第一指纹与第二数据区块的第二指纹相比较。例如,参考图1,控制器102可以将指纹114与存储在指纹数据库108中的至少一个指纹相比较。
方法300还包括,在308处,当第一指纹匹配第二指纹时,基于第一数据区块与第二数据区块之间的比较而从与存储设备关联的多个存储池中选择存储池以存储第一数据区块,其中所述多个存储池包括与具有非冲突指纹的第一特定数据区块关联的第一存储池以及与具有冲突指纹的第二特定数据特定数据区块关联的第二存储池。例如,参考图1,当指纹114匹配来自指纹数据库108的指纹时,控制器102可以将数据区块112与用于生成匹配指纹的数据区块相比较。当数据区块112匹配所述数据区块时,控制器102可以在第一存储池104中存储数据区块112。当数据区块112不匹配所述数据区块时,控制器102可以在第二存储池106中存储数据区块。
方法300还包括,在310处,当第一指纹不匹配第二指纹时,在第一存储池中存储第一数据区块。例如,参考图1,当指纹114不匹配指纹数据库108中的任何指纹时,控制器102可以将数据区块存储到第一存储池104。
图4是图示根据一个示例的存储具有冲突指纹的数据区块的方法400的流程图。方法400可以使用图1的存储设备100和/或图2的存储设备200来实现。方法400包括,在402处,接收数据区块。例如,参考图1,存储设备100可以从源设备110接收数据区块112。
方法400还包括,在404处,生成指纹。例如,参考图1,控制器102可以基于数据区块112而生成指纹114。方法400还包括,在406处,将所述指纹与存储设备中的一个或多个指纹相比较。例如,参考图1,控制器102可以将指纹114与存储在指纹数据库108中的至少一个指纹相比较。
当所述指纹不匹配任何指纹时,方法400还包括将数据区块存储到非冲突指纹存储池。例如,参考图1,控制器102可以将数据区块存储到存储池104。当所述指纹匹配某个指纹时,方法400还包括,在410处,将数据区块与用于生成匹配指纹的另一个数据区块相比较。例如,参考图1,控制器102可以将数据区块112与用于生成匹配指纹的特定数据区块相比较。
在408处,当所述数据区块匹配另一个数据区块时,所述数据区块被存储在非冲突指纹存储池中。在412处,当所述数据区块不匹配另一个数据区块时,方法400还包括将所述数据区块存储到冲突指纹存储池。例如,参考图1,控制器102可以在第二存储池106中存储数据区块112。
根据前文,本文公开的示例使得存储设备能够存储具有冲突指纹的数据区块。存储设备可以将数据区块的指纹与存储在存储设备中的一个或多个指纹相比较。当存在匹配指纹时,存储设备可以将所述数据区块与用于生成匹配指纹的另一个数据区块相比较。当所述数据区块匹配另一个数据区块时,所述数据区块可以是另一个数据区块的冗余拷贝。因而,存储设备可以存储对另一个数据区块的引用或指向其的指针。当所述数据区块不匹配另一个数据区块时,所述数据区块可以是唯一数据区块。因而,存储设备可以将所述数据区块存储到与用于存储另一个数据区块的存储池不同的存储池。因而,具有冲突指纹的数据区块不被错误地识别为另一个数据区块的冗余拷贝,并且存储设备中的数据去重复过程的准确性可以增加。
“包含”、“包括”或“具有”的使用是同义的,并且本文中其变形意为包括性或开放式的,并且不排除附加的未记载元件或方法步骤。