存储设备辅助的数据去重复的制作方法

文档序号:6544603阅读:124来源:国知局
存储设备辅助的数据去重复的制作方法
【专利摘要】本发明涉及存储设备辅助的数据去重复。这里提出的系统和方法提供数据的去重复。在一个实施例(100)中,输入/输出模块(101)可操作来产生输入/输出操作以写入数据。存储设备(102)通信地耦合至该输入/输出模块并可操作来在存储设备的逻辑地址处写入该输入/输出操作的数据,并基于该数据产生签名。该输入/输出模块进一步可操作来处理该签名,以确定该数据是否在另一逻辑地址处存在。
【专利说明】存储设备辅助的数据去重复
[0001]相关申请的交叉引用
[0002]本专利申请要求了编号为61/782,122的美国临时专利申请(2013年3月14日提交)的优先权,以及要求因此其较早的提交日期的权益,该美国临时专利申请的全部内容在此通过引用并入本文。

【技术领域】
[0003]本发明一般涉及存储设备的输入/输出(I/O)操作,并且更具体地涉及减少存储设备中的重复(duplicated)数据。

【背景技术】
[0004]去重复(de-duplicat1n)是一种将输入数据与存储设备上已经存在的数据进行比较以确定该输入数据是否重复的过程。如果该输入数据是唯一的,则将该输入数据存储在存储设备上。如果该输入数据是重复的,则不存储该输入数据。相反,创建对该已存储数据的引用。
[0005]概述
[0006]这里提出的系统和方法提供数据的去重复。在一个实施例中,I/O模块可操作产生I/o操作以写入数据。存储设备通信地耦合至I/O模块并可操作在存储设备的逻辑地址处写入I/o操作的数据,并基于该数据产生签名(signature)。该I/O模块进一步可操作处理该签名以确定数据是否在另一逻辑地址(例如,在另一存储设备上或者要写入的存储设备上)处存在。
[0007]这里公开的不同实施例可以按照各种方式实施为一项设计选择。例如,其系统实施例和方法实施例可以采取计算机硬件、软件、固件或其组合的形式。其它示例性实施例如下所述。

【专利附图】

【附图说明】
[0008]现在仅通过示例和参照附图来描述本发明的一些实施例。相同的附图标记代表所有附图上相同元件或相同类型的元件。
[0009]图1是用于减少重复数据的示例性系统的框图。
[0010]图2是一个利用图1的系统可操作的示例性过程的流程图。
[0011]图3是利用图1的系统可操作的另一个示例性过程的流程图。
[0012]图4是示例性固态驱动器(SSD)及其关联的设备控制器和存储设备的框图。
[0013]图5是I/O模块的框图,该I/O模块包括SSD及其关联的与主机系统接口的控制器/存储设备。

【具体实施方式】
[0014]附图和下列描述说明了本发明的特定示例性实施例。因而,要理解,本领域的技术人员将能够设计出各种配置(虽然这里没有明确描述或者示出)来实施本发明的原理并包含在本发明的范围内。此外,这里描述的任意示例旨在帮助理解本发明的原理以及旨在解释为并非限制于这些特别叙述的示例和条件。因此,本发明并非限制于下述特定实施例或示例。
[0015]图1是一种用于减少重复数据的示例性系统100的框图。在其基本的形式中,该系统100包括I/O模块101,其可操作与存储设备102执行I/O操作。这样做时,该I/O模块101执行写I/O以在存储设备102上写入和存储数据。该存储设备102包括签名发生器103,其可操作来根据所述写I/O的数据产生和返回签名,从而使得I/O模块101能够处理该数据签名并确定该数据是否位于任意其它地方。也就是说,I/o模块101能够处理该数据签名以确定该写I/o的数据是否在同一或另一存储设备的另一逻辑地址处被重复。
[0016]I/O模块101是任意系统、设备、软件、或其组合,其可操作来与存储设备102执行I/o操作并处理来自其中的数据签名。在这方面,I/O模块101可和任意计算系统配置(例如,作为主机系统的主机接口)。在第一个示例中,I/o模块101为耦合至一个或多个存储设备的主机总线适配器(HBA, Host Bus Adaptor)或者芯片上独立冗余磁盘阵列(R0C,RAID-On-Chip)控制器,该一个或多个存储设备包括存储设备102。在一些实施例中,I/O模块101是能够管理该一个或多个存储设备,比如独立冗余磁盘阵列(RAID)存储系统。在第二个示例中,I/O模块101为耦合至一个或多个存储设备的主机计算机(例如,经由快速周边兀件互连(Peripheral Component Interconnect Expressconnect1ns)),该一个或多个存储设备包括存储设备102。
[0017]该存储设备102是能够存储数据的任意设备(例如,计算机磁盘驱动器、非易失性随机访问存储器(NVRAM)、固态驱动器(SSD),等等)。在一些实施例中,存储设备102是I/O模块101的高速缓冲存储器,其可操作在1/0模块101的控制下高速缓存1/0。
[0018]签名发生器103是任意系统、设备、软件或其组合,其可操作来从写1/0操作中提取数据并基于I/o操作的数据产生签名。这些数据签名发生器的示例包括散列码发生器、校验和发生器等等。因此,存储设备102可以具有某种处理能力,譬如存储设备102特有的设备控制器的处理能力。例如,SSD典型地配置有设备控制器,其可操作来执行SSD特有的各种功能,包括处理1/0操作、缓冲数据、将数据映射至存储设备中的逻辑地址等。在这方面,存储设备102的设备控制器也可以用来产生数据签名并将其返回至1/0模块101,用于由1/0模块101进行的后续处理。关于系统100的操作的另外的细节现在参照图2和3进行描述。
[0019]图2是利用图1的系统100可操作的示例性过程200的流程图。更具体地,过程200公开了示例性操作,其中1/0模块101可以执行写1/0操作并处理来自存储设备102的关于该I/o操作的数据签名。在这个实施例中,在过程步骤201中,该1/0模块101产生I/O命令以将数据写入存储设备102的逻辑地址。当处理写1/0命令时,存储设备102可以根据包含在写1/0命令内的数据产生签名,并接着将该数据签名传递至1/0模块101。
[0020]在过程步骤202中,1/0模块101接收存储设备102所产生的数据签名,该数据签名是根据在过程步骤201中产生的写1/0命令的数据。存储设备102也可以传输确认至1/0模块101,指示所述写操作的成功或者其它状态。在这方面,在过程步骤203中,1/0模块101接收存储设备102做出的数据已成功写入存储设备102的确认。之后,在过程步骤204中,I/O模块101处理数据签名以确定数据是否已在另一存储位置处(例如,在存储设备102或一些其它存储模块的另一逻辑地址)存在。因而,在数据已写入存储设备102之后,执行数据重复确定。
[0021]在过程步骤206中,如果写I/O的数据未在另一存储位置处存在(即,数据是唯一的),I/o模块101将写I/O的数据与存储设备102的该数据刚刚写入(假设成功写入)处的逻辑地址相关联。然而,在过程步骤205中,如果数据已在另一存储位置处存在(即,数据是重复的),则I/O模块101将刚刚写入存储设备102的写入数据的位置与已经存在的数据相关联。换句话说,I/O模块101利用先前写入的数据的逻辑地址来更新在I/O模块101的表格105(即数据结构)中的数据的位置。如此,存储设备102的数据刚刚在其写入处的存储空间可以被解除分配(deallocate)或休整以使该数据释放,从而该存储空间可重写。例如,小型计算机系统接口(SCSI, Small Computer System Interface)协议具有UNMAP命令和串行高级技术附件(SATA,serial AT Attachment)协议具有类似的TRM命令,以解除分配不再需要的存储空间。在过程步骤207中,在任一种情况下,一旦已经执行了该数据重复确定,I/O模块101就等待,直到请求下一写1/0(例如,由主机系统)。一旦接收到下一I/O请求,I/O模块101就返回至过程步骤201以重复过程200。
[0022]在另一实施例中,当检测到该数据已经在另一存储位置处存在时,该另一存储位置是被解除分配的存储位置,而另一数据的位置然后与刚刚写入存储设备102的所述写入数据相关联。
[0023]图3是图1的系统的另一示例性过程300的流程图。更具体地,过程300公开了存储设备102响应于来自I/O模块101的所述写I/O的一个示例性操作。在这种实施例中,在过程步骤301中,存储设备102处理所述写I/O命令。例如,所述存储设备102可从所述写I/O命令提取数据并确定所述数据将要存储于存储设备102之内的逻辑地址。
[0024]在过程步骤302中,利用从所述写I/O命令提取的所述数据,存储设备102可基于所述写I/o命令的数据计算签名。例如,所述写I/O命令的数据可以具有某一长度的翻转位(toggled bit),对于该翻转位,可产生散列码(hash code)或一些其它代码来唯一地表示该数据。在过程步骤303中,存储设备102然后将所述写I/O命令的数据存储在所述写I/O命令中所识别的存储设备102的逻辑地址中。在过程步骤304中,存储设备102然后将签名传送至I/O模块101,从而使得I/O模块101可以执行上述的重复确定。
[0025]本发明能够采取完全硬件实施例、完全软件实施例、或者既包括硬件成分又包括软件成分的实施例的形式。图4和5说明了软硬件实施例的组合,其可操作来实施这里描述的系统和方法。更具体地说,图4是示例性SSD400及其关联的设备控制器(SSD控制器401)和存储设备495的框图。图5是存储模块516的框图,存储模块516包括SSD400及其与主机系统502接口的关联控制器401/存储设备495。
[0026]在图4中,存储控制器401包括主机接口 411,其可操作来与主机系统接口从而传送主机系统的I/o操作。该主机接口 411可以配置有标志追踪模块413,该标志追踪模块413可操作来追踪单独的I/O命令的进度(例如,至存储设备495中的某些地址的读取和写入命令)。所述标志追踪模块413可以将从主机系统接收的命令的外部标记与内部标记相关联,其中该内部标记能够被SSD控制器401在处理该命令以识别所述处理的状态期间访问。
[0027]SSD控制器401还包括数据处理模块421,该数据处理模块421包括签名发生器422和处理引擎423。一般来说,处理引擎423可操作来对从主机接口 411接收或驻留在缓冲器431之内的数据执行某些任务,譬如格式化数据、转换数据代码,等等。例如,处理引擎423可操作来处理来自产生操作的主机系统的I/O模块(例如,I/O模块101)的该I/O操作,从而使得I/O操作的数据可以写入存储设备495的逻辑地址中。也就是说,引擎423可以提取所述写I/O命令的数据并准备将其存储到存储设备495中。在这方面,图1的签名发生器103可以配置有数据处理模块421,从而根据所述写I/O命令的数据产生该签名用来返回至主机系统,从而使得主机系统可以确定该I/O操作的数据是否位于另一逻辑地址中(即,在任意其它地方重复)。
[0028]缓冲器431可操作来存储传送至/自主机系统的数据。缓冲器431也可以存储譬如由SSD控制器401使用的存储器表格之类的系统数据,以管理一个或者多个单独的闪存设备492,包括例如存储器437中的高级RAID功能。其它模块可以包括:纠错码(ECC-X)模块435,提供高级纠错和冗余功能;以及直接存储器存取(DMA)模块433,控制数据移动至/自缓冲器431。
[0029]SSD控制器401也包括:纠错码模块461,可操作来利用各种纠错码技术(例如,循环冗余校验、汉明码、博斯-乔达利-奥昆岗(BCH)码、低密度奇偶校验码,等等)中的任意一种,在缓冲器431中提供数据的低级纠错和冗余处理。
[0030]设备接口逻辑模块491可操作地根据闪存设备492的协议,传输数据至/自单独的闪存设备192。设备接口逻辑模块491包括调度模块493,其可操作来将至闪存设备192的I/O操作排队。
[0031]这里的SSD控制器401也包括映射模块441,其可操作来根据表格443执行到存储设备495中位置的数据寻址。例如,映射模块441可以使用表格443将来自主机系统的逻辑块地址(LBA)转换成指向一个或多个单独的闪存设备492的块/页地址。
[0032]再循环器451代表存储控制器401执行废物收集。例如,再循环器401可以通过扫描映射模块441的表格443,来确定活跃地处于使用中的闪存设备492的部分。在这方面,再循环器451可以通过擦除未使用的部分,使得闪存设备492的未使用的、或“被解除分配的”部分可用于写入。再循环器451也可以移动闪存设备492内的数据,以使得闪存设备492的更大的相邻部分可用于写入。在这方面,在I/O模块101确定该数据是重复的时,则再循环器451可以擦除或解除分配存储设备495中的存储空间。
[0033]SSD控制器401也包括CPU471,其控制SSD控制器401的各个方面。例如,CPU471可以处理指令或者固件来实施命令管理473,其追踪和控制从主机系统接收的命令。该固件也可以实施缓冲器管理475来控制缓冲器431的分配及使用和实施转换管理477来控制映射模块441。固件也可以采用一致性管理479来控制数据寻址的一致性,从而避免冲突,譬如可能在外部数据访问和再循环数据访问之间出现的那些冲突。固件也可以提供设备管理481来控制设备接口逻辑491和提供身份管理482来控制SSD控制器401内组件的身份信息的修改和传送。
[0034]在图5中,主机系统502可操作来处理软件指令和利用存储模块516执行I/O操作以读取自和写入至SSD400。在这方面,主机系统502可以包括操作系统505,其提供计算环境给主机系统502。驱动器507可操作来通过链路506与存储模块516通信,以利用与其配置的各种SSD400执行I/O操作。
[0035]像其它计算系统一样,操作系统505可以经由管理软件514(例如,B1s软件)初始化。主机系统502也可以包括应用程序软件509以代表主机系统502执行各种计算处理(例如,字处理应用程序、图像处理应用程序,等等)。主机系统502也可以包括I/O和存储功能517,可操作来通过通信网络519(例如,互联网、局域网、广域网,等等)利用一个或多个服务器518执行I/O操作。在这方面,存储模块516可以用作主机系统502的I/O操作的高速缓存存储器。
[0036]存储模块516可以配置有中间控制器503,其可操作来将主机系统502的各种I/O操作切换至SSD400的LBA。在这方面,存储模块516可以包括存储器512,其为中间控制器503存储映射信息,以执行至LBA的I/O操作。
[0037]
[0038]主机系统502的用户可以经由应用程序软件509在某些数据上操作或者产生某些数据。应用程序软件509 (在由操作系统505提供的操作系统环境内运行)可能需要通过网络519 (例如,譬如互联网、局域网、广域网等等的数据网络)传送数据至服务器518或者在服务器518存储数据。因此,应用程序软件509可以引导I/O和存储模块517产生至服务器518的逻辑地址的写I/O命令。替代地或者附加地,应用程序软件509可以引导驱动器507产生用于存储模块516的写I/O命令以将数据存储到SSD400其中之一中。
[0039]中间控制器503将写I/O命令切换至存储模块516的适当的SSD400,使得可以向存储模块516写入所述写I/O命令的数据。在所述写I/O命令由适合的SSD400接收时,则SSD控制器401提取数据和逻辑地址,所述逻辑地址是该数据将要存储在存储设备495中的地址。
[0040]利用提取的数据,所选的SSD控制器401基于该数据产生签名。为了说明,文本串 “the quick brown fox jumped over the lazy dog,s back” 可以利用 SHA-512 散列码发生器进行编码,以产生唯一的编码“ 145edbabf68f32da04167e63f979b60f37d49a9182e5856404c77ed3c930d8805e42d0e462el9688834117bbl4bd80ace55df52e44e2e8d48935c7877ea2d931”。所选的SSD控制器401经由映射441将数据映射至存储设备495,从而在存储设备495的期望逻辑地址处写入数据。SSD控制器401然后将该唯一的散列码返回主机系统502,从而使得主机系统502的管理软件514可以处理该返回的散列码和确定该散列码是否存储在其它地方(例如,在服务器518、和另一 SSD400、或一些其它存储设备处)。
[0041]主机系统502可存储散列码,该散列码代表在各种存储设备(例如,在散列表中)内存储的数据。主机系统502可以校验该散列码列表,以确定该接收到的散列码是否与之前的散列码相同。如果是,则主机系统502 (例如,经由I/O模块101)利用先前存储的数据的地址更新表格105。主机系统502然后可以引导SSD400解除分配在存储设备495的刚刚写入数据处的逻辑地址的存储空间,从而使得所述存储空间可以被重写或休整。附加地,SSD控制器401可以返回所述写入数据的状态消息,以向主机系统502确保数据成功写入适合的SSD400/存储设备495。再者,如果主机系统502确定所接收的代码实际上是唯一的,则主机系统502 (例如,通过管理软件514)利用存储在表格105中的数据将数据的位置与存储设备495的逻辑地址相关联。
[0042]根据这里描述的实施例,签名产生被有利地降低到较低级别,在此级别签名产生可以以更并行和分布的形式进行。数据被推测地写入以便其被迅速存入,而不管其最终的部署(disposit1n)(例如,SSD400中数据的后续重写)。这也提供了处理成本的权衡比较(例如,去重复成本vs.可压缩性),因为如果数据是高度可压缩的,则可以忽略去重复。例如,当报告签名和/或当确定所述写入数据是否唯一时,主机系统502可以评估写入数据的可压缩性。在这方面,存储模块516可以和写响应/签名一起返回所述写入数据的压缩比,从而使得主机系统502可以确定所述压缩数据是否是足够唯一的。换句话说,这里的实施例提供给主机系统502当该数据被高度压缩时忽略重复数据的能力,从而使得有利地降低追踪尺寸上已经减小的重复数据的处理成本。例如,全零数据是常见的,在一些情况下,追踪全零数据的重复在处理能力方面不如依赖压缩和仅存储该全零数据的成本有效。
[0043]根据一个方面,提供一种系统,包括:输入/输出模块,可操作来产生输入/输出操作以写入数据;和存储设备,通信地耦合至输入/输出模块和可操作在该存储设备的逻辑地址处写入该输入/输出操作的数据,以及可操作来基于该数据产生签名,其中该输入/输出模块进一步可操作来处理该签名以确定在另一逻辑地址处是否存在该数据。
[0044]根据上述系统的实施例,输入/输出模块进一步可操作来在确定该数据存在于另一逻辑地址处时,就引导存储设备解除分配存储设备的该逻辑地址处的存储空间。
[0045]根据上述系统的实施例,另一逻辑地址位于另一存储设备中。
[0046]根据上述系统的实施例,输入/输出模块进一步可操作来在确定该数据存在于另一存储设备的另一逻辑地址处时,就将输入/输出操作的数据的逻辑地址与该数据的另一逻辑地址相关联。
[0047]根据上述系统的实施例,该输入/输出模块进一步可操作来利用将该输入/输出操作的数据的逻辑地址与另一逻辑地址相关联的信息更新数据结构。
[0048]根据上述系统的实施例,该存储设备进一步可操作来利用散列码产生签名。
[0049]根据上述系统的实施例,该存储设备进一步可操作来将该输入/输出操作的数据写入存储设备的非易失性存储器,并将输入/输出操作的状态返回给输入/输出模块。
[0050]根据另一方面,提供了一种方法,包括:产生输入/输出操作以在存储设备的逻辑地址处写入数据;接收由存储设备根据该数据产生的签名;接收该输入/输出操作的数据已由存储设备写入的确认;以及处理该签名以确定数据是否在另一逻辑地址处存在。
[0051]根据上述方法的实施例,进一步包括:检测在另一存储设备中的另一逻辑地址。
[0052]根据上述方法的实施例,进一步包括:在确定该数据在另一逻辑地址处存在时,弓丨导该存储设备解除分配该存储设备的该逻辑地址处的数据。
[0053]根据上述方法的实施例,进一步包括:在确定该数据在另一逻辑地址处存在时,就将该输入/输出操作的数据的逻辑地址与该数据的另一逻辑地址相关联。
[0054]根据上述方法的实施例,进一步包括:利用将该输入/输出操作的数据的逻辑地址与另一逻辑地址相关联的信息更新数据结构。
[0055]根据上述方法的实施例,进一步包括:利用散列码产生签名。
[0056]根据上述方法的实施例,进一步包括:将该输入/输出操作的数据写入存储设备的非易失性存储器;以及处理来自该存储设备的所述写入的状态,从而确定所述写入是否成功。
[0057]根据另一个方面,提供了一种非暂时的计算机可读介质,包括指令,当处理器执行指令时,其引导处理器以:产生输入/输出操作以在存储设备的逻辑地址处写入数据;接收由存储设备根据该数据产生的签名;接收该输入/输出操作的数据已由存储设备写入的确认;以及处理该签名,以确定该数据是否在另一逻辑地址处存在。
[0058]根据上述非暂时的计算机可读介质的实施例,进一步包括指令,其引导处理器以:检测在另一存储设备中的另一逻辑地址。
[0059]根据上述非暂时的计算机可读介质的实施例,进一步包括指令,其引导处理器以:在确定该数据在另一逻辑地址处存在时,引导该存储设备解除分配在该存储设备的逻辑地址处的数据。
[0060]根据上述非暂时的计算机可读介质的实施例,进一步包括指令,其引导处理器以:在确定该数据在另一逻辑地址处存在时,就将该输入/输出操作的数据的逻辑地址与该数据的另一逻辑地址相关联。
[0061]根据上述非暂时的计算机可读介质的实施例,进一步包括指令,其引导处理器以:利用将该输入/输出操作的数据的逻辑地址与另一逻辑地址相关联的信息更新数据结构。
[0062]根据上述非暂时的计算机可读介质的实施例,进一步包括指令,其引导处理器以:利用散列码产生签名。
[0063]根据上述非暂时的计算机可读介质的实施例,进一步包括指令,其引导处理器以:将该输入/输出操作的数据写入该存储设备的非易失性存储器;以及处理来自该存储设备的所述写入的状态,从而确定所述写入是成功的。
【权利要求】
1.一种系统(100),该系统特征在于其包括: 输入/输出模块(101),可操作来产生输入/输出操作以写入数据;以及存储设备(102),通信地耦合至所述输入/输出模块,并且可操作来在所述存储设备的逻辑地址处写入所述输入/输出操作的所述数据,并基于所述数据产生签名, 其中所述输入/输出模块进一步可操作来处理所述签名,从而确定所述数据是否在另一逻辑地址处存在。
2.如权利要求1的所述系统,其中: 所述输入/输出模块进一步可操作来在确定所述数据存在于所述另一逻辑地址处时引导所述存储设备解除分配所述存储设备的所述逻辑地址处的存储空间。
3.如权利要求1的所述系统,其中: 所述另一逻辑地址位于另一存储设备中。
4.如权利要求1的所述系统,其中: 所述存储设备进一步可操作来利用散列码产生所述签名。
5.如权利要求1的所述系统,其中: 所述存储设备进一步可操作来将所述输入/输出操作的所述数据写入所述存储设备的非易失性存储器,以及将所述输入/输出操作的状态返回至所述输入/输出模块。
6.一种方法(200),该方法特征在于其包括: 产生输入/输出操作以在存储设备的逻辑地址处写入数据(201); 接收由所述存储设备根据所述数据产生的签名(202); 接收所述输入/输出操作的所述数据已由所述存储设备写入的确认(203);以及 处理所述签名以确定所述数据是否在另一逻辑地址处存在(204)。
7.如权利要求6的所述方法,进一步包括: 检测在另一存储设备中的所述另一逻辑地址。
8.如权利要求6的所述方法,进一步包括: 在确定所述数据存在于所述另一逻辑地址时引导所述存储设备解除分配所述存储设备的所述逻辑地址处的所述数据。
9.如权利要求6的所述方法,进一步包括: 利用散列码产生所述签名。
10.如权利要求6的所述方法,进一步包括: 将所述输入/输出操作的所述数据写入所述存储设备的非易失性存储器;和 处理来自所述存储设备的写入的状态,以确定写入是否成功。
【文档编号】G06F3/06GK104049911SQ201410165333
【公开日】2014年9月17日 申请日期:2014年3月14日 优先权日:2013年3月14日
【发明者】E·科恩 申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1