CN103797470A - 存储*** - Google Patents

存储*** Download PDF

Info

Publication number
CN103797470A
CN103797470A CN201280045235.1A CN201280045235A CN103797470A CN 103797470 A CN103797470 A CN 103797470A CN 201280045235 A CN201280045235 A CN 201280045235A CN 103797470 A CN103797470 A CN 103797470A
Authority
CN
China
Prior art keywords
data
blocks
memory device
stored
ratio
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.)
Granted
Application number
CN201280045235.1A
Other languages
English (en)
Other versions
CN103797470B (zh
Inventor
M·卡兹玛科奇克
M·巴齐恩斯基
W·基利安
C·杜布尼茨基
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of CN103797470A publication Critical patent/CN103797470A/zh
Application granted granted Critical
Publication of CN103797470B publication Critical patent/CN103797470B/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/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • 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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity
    • 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

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)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

根据本发明的一种存储***包括:块检测装置,用于检查通过划分而获得的相应块数据是否已经被存储在存储设备中;以及数据写入装置,用于向存储设备中存储重复存储被消除的、通过划分而获得的相应块数据。块检测装置检测共享比率,共享比率表示通过划分而获得的块数据之中的、配置写入目标数据中的预定范围的多个连续块数据与已经被连续地存储在存储设备中的、在预定范围中的多个块数据之间的共享部分的比率。数据写入装置根据检测到的共享比率而向存储设备中新存储通过划分而获得的块数据。

Description

存储***
技术领域
本发明涉及一种存储***,更具体地涉及一种消除对相同内容的数据的重复存储的存储***。
背景技术
近年来,随着计算机的发展和普及,各种种类的信息被数字化。作为用于存储这样的数字数据的设备,存在诸如磁带和磁盘这样的存储设备。由于应当被存储的数据的量与日俱增并且达到庞大数量,所以需要海量存储***。另外,也需要可靠性以及减少为存储设备花费的成本。此外,也需要可以在以后容易取回数据。作为结果,希望有一种可以自动实现存储容量和性能的增加、消除重复存储以减少存储成本并且具有高冗余性的存储***。
在这样的境况之下,近年来,如PTL1中所示,已经开发了内容可寻址存储***。该内容可寻址存储***向多个存储设备中分发和存储数据,并且通过根据数据的内容指定的唯一内容地址来指定存储数据的存储位置。另外,内容可寻址存储***中的一些内容可寻址存储***将预定数据划分成多个片段并且添加作为冗余数据的片段、然后分别向多个存储设备中存储这些片段。
此后,如以上描述的内容可寻址存储***可以指明内容地址以取回数据、即在内容地址指定的存储位置中存储的片段,并且从这些片段恢复在被划分之前的预定数据。
另外,基于如下值生成内容地址,该值根据数据的内容而被生成以便是唯一的,例如数据的哈希值。因此,在重复数据的情况下,有可能引用在相同存储位置中的数据并且获取相同内容的数据。因而,不必分离地存储重复数据,并且有可能消除重复记录并且减少数据量(volume)。
引用列表
专利文献
PTL1:日本未审专利申请公开号No.2005-235171
发明内容
技术问题
在具有如以上描述的消除重复存储的功能的存储***中,待写入的数据、诸如文件被划分成预定量的多个块数据,并且被存储到存储设备中。因此,通过消除块数据的重复存储,以减少数据量为目标。
然而,在配置写入目标数据的多个块数据中的一些块数据是未被存储在存储设备中的新块数据的情况下,在其中当前存储了预定数据的区域的末尾处存储新块数据。然后,在每当反复更新写入目标数据时存储新块数据的情况下,在存储设备中的整个存储区域中以分散状态存储配置写入目标数据的多个块数据。因此,为了以后取回数据,必须扫描庞大数量的盘以便取回在整个存储设备中分散的块数据,并且因而出现取回性能降低的问题。
因而,本发明的目的是解决前述问题,即在具有重复存储消除功能的存储***中的取回性能降低的问题。
对问题的解决方案
根据本发明的示例性实施例的一种存储***,包括:
数据划分装置,用于将写入目标数据划分成多个块数据;
块检测装置,用于检查通过数据划分装置的划分而获得的相应块数据是否已经被存储在存储设备中;以及
数据写入装置,用于向存储设备中存储通过数据划分装置的划分而获得的相应块数据,并且在存储内容与已经被存储在存储设备中的块数据相同的其它块数据时,使得引用已经被存储在存储设备中的块数据作为其它块数据。
块检测装置被配置用于检测共享比率,该共享比率表示通过数据划分装置的划分而获得的块数据之中的、在写入目标数据中配置预定范围的多个连续块数据与已经被连续地存储在存储设备中的、在预定范围中的多个块数据之间的共享部分的比率。
数据写入装置被配置用于根据块检测装置检测到的共享比率向存储设备中新存储通过数据划分装置的划分而获得的块数据。
另外,根据本发明的另一示例性实施例的一种程序是包括指令的计算机程序,该指令用于使信息处理设备实现:
数据划分装置,用于将写入目标数据划分成多个块数据;
块检测装置,用于检查通过数据划分装置的划分而获得的相应块数据是否已经被存储在存储设备中;以及
数据写入装置,用于向存储设备中存储通过数据划分装置的划分而获得的相应块数据,并且在存储内容与已经被存储在存储设备中的块数据相同的其它块数据时,使得引用已经被存储在存储设备中的块数据作为其它块数据。
块检测装置被配置用于检测共享比率,共享比率表示通过数据划分装置的划分而获得的块数据之中的、在写入目标数据中配置预定范围的多个连续块数据与已经被连续地存储在存储设备中的、在预定范围中的多个块数据之间的共享部分的比率。
数据写入装置被配置用于根据块检测装置检测到的共享比率而向存储设备中新存储通过数据划分装置的划分而获得的块数据。
另外,根据本发明的另一示例性实施例的一种信息处理方法包括:
将写入目标数据划分成多个块数据;
检查通过划分而获得的相应块数据是否已经被存储在存储设备中;以及
向存储设备中存储通过划分而获得的相应块数据,并且在存储内容与已经被存储在存储设备中的块数据相同的其它块数据时,通过使得引用已经被存储在存储设备中的块数据作为其它块数据来写入数据。
该信息处理方法还包括:
在将写入目标数据划分成块数据之后,检测共享比率,共享比率表示通过划分而获得的块数据之中的、在写入目标数据中配置预定范围的多个连续块数据与已经被连续地存储在存储设备中的、在预定范围中的多个块数据之间的共享部分的比率;并且
根据检测到的共享比率而向存储设备中新存储通过划分而获得的块数据。
本发明的有益效果
利用以上描述的配置,本发明可以限制在具有重复存储消除功能的存储***中的取回性能的降低。
附图说明
图1是示出整个***的配置的框图,该***包括根据本发明的第一示例性实施例的存储***;
图2是示出根据本发明的第一示例性实施例的存储***的配置的概况的框图;
图3是示出根据本发明的第一示例性实施例的存储***的配置的功能框图;
图4是用于说明在图3中公开的存储***中的数据写入过程的一方面的说明视图;
图5是用于说明在图3中公开的存储***中的数据写入过程的一方面的说明视图;
图6是用于说明在图3中公开的存储***中的数据写入过程的一方面的说明视图;
图7是用于说明在图3中公开的存储***中的数据写入过程的一方面的说明视图;
图8是示出在图3中公开的存储***中的数据写入过程的操作的流程图;
图9是在本发明的第二示例性实施例中说明的报告中引用的视图;
图10是在本发明的第二示例性实施例中说明的报告中引用的视图;
图11是在本发明的第二示例性实施例中说明的报告中引用的视图;
图12是在本发明的第二示例性实施例中说明的报告中引用的视图;
图13是在本发明的第二示例性实施例中说明的报告中引用的视图;
图14是在本发明的第二示例性实施例中说明的报告中引用的视图;
图15a是在本发明的第二示例性实施例中说明的报告中引用的视图;
图15b是在本发明的第二示例性实施例中说明的报告中引用的视图;
图15c是在本发明的第二示例性实施例中说明的报告中引用的视图;
图15d是在本发明的第二示例性实施例中说明的报告中引用的视图;
图16是在本发明的第二示例性实施例中说明的报告中引用的视图;
图17是在本发明的第二示例性实施例中说明的报告中引用的视图;
图18是在本发明的第二示例性实施例中说明的报告中引用的视图;并且
图19是示出根据本发明的补充注释1的存储***的配置的框图。
具体实施方式
<第一示例性实施例>
将参照图1至图8来描述本发明的第一示例性实施例。图1是示出整个***的配置的框图。图2是示出存储***的概况的框图,并且图3是示出存储***的配置的功能框图。图4至图7是用于说明存储***中的数据写入过程的说明视图。图8是示出存储***的操作的流程图。
该示例性实施例示出在稍后描述的补充注释中公开的存储设备等的具体示例。以下将在通过连接多个服务器计算机来配置存储***的假设下进行描述。然而,在本发明中的存储***不限于由多个计算机配置,并且可以由一个计算机配置。
如图1中所示,根据本发明的存储***1经由网络N连接到控制备份过程的备份***4。备份***4获取在经由网络N连接的备份目标设备5中存储的备份目标数据(待写入的数据)并且请求存储***1存储数据。因而,存储***1存储被请求存储的备份目标数据作为备份。
如图2中所示,在该示例性实施例中的存储***1采用其中连接多个服务器计算机的配置。具体而言,存储***1包括加速器节点2和存储节点3,加速器节点2是控制在存储***1中的存储再现操作的服务器计算机,存储节点3是配备有用于存储数据的存储设备的服务器计算机。加速器节点2的数目和存储节点3的数目不限于图2中所示的数目,并且可以通过连接更多节点2和更多节点3来配置该***。
另外,在该示例性实施例中的存储***1是内容可寻址存储***,该内容可寻址存储***划分数据并且使数据冗余以向多个存储设备中分发和存储数据,并且通过根据存储的数据的内容而设置的唯一内容地址来指定数据被存储的存储位置。稍后将详细描述该内容可寻址存储***。
以下假设存储***1是一个***,将描述存储***1的配置和功能。也就是说,可以在加速器节点2或者存储节点3中包括以下描述的存储***的配置和功能。存储***1不必限于如图2中所示配备有加速器节点2和存储节点3,并且可以具有任何配置。例如,存储***1可以由一个计算机配置。此外,存储***1不限于内容可寻址存储***,并且可以是任何存储***,只要它具有去重复功能即可。
图3示出在该示例性实施例中的存储***1的配置。如该图中所示,存储***1由服务器计算机配置并且包括执行预定运算(arithmetic)过程的运算设备(未示出)和存储设备20。另外,存储***1包括通过向运算设备中安装程序而构造的数据划分部分11、块检测部分12、数据写入部分13和数据取回部分14。
实际上,以上描述的存储***1的配置由图2中所示的加速器节点2和存储节点3中的每个加速器节点和存储节点所具有的运算设备和存储设备来配置,该运算设备诸如CPU(中央处理单元),该存储设备诸如硬盘驱动。
如以上描述的那样,在该示例性实施例中的存储***1是内容可寻址存储***。因此,存储***1具有通过使用内容地址向存储设备20中存储数据的功能,并且如以下描述的那样,通过划分和分发数据并且通过内容地址指定存储位置来存储数据。以下参照图4、图5和图8来描述在存储***1中使用内容地址的数据写入过程。
首先,存储***1如图4和图5中的箭头Y1所示接受被请求写入的文件A的输入。然后,数据划分部分11如图4和图5中的箭头Y2所示,将文件A划分成具有预定容量(例如,64KB)的块数据D(图8的步骤S1)。
随后,基于块数据D的数据内容,块检测部分12计算表示数据内容的唯一哈希值H(图5的箭头Y3)。例如,通过使用先前设置的哈希函数来从块数据D的数据内容计算哈希值H。
随后,通过使用文件A的块数据D的哈希值H,块检测部分12检查是否已经存储了块数据D(图8的步骤S2)。具体而言,首先在已经存储了块数据D的情况下,其哈希值H和表示其存储位置的内容地址CA已经被关联并且被注册在MFI(主片段索引)文件中。因此,在被存储之前计算的块数据D的哈希值H存在于MFI文件中的情况下,存储***1可以判定已经存储了具有相同内容的块数据D(图5的箭头Y4;在图8的步骤S3处为“是”)。在该情况下,与在MFI中注册的哈希值H关联的内容地址CA(该哈希值H与在被存储之前的块数据D的哈希值H一致)被从MFI文件获取。然后,返回该内容地址CA作为被请求写入的块数据D的内容地址CA。
然后,数据写入部分13使用所返回的内容地址CA对其引用的、已经被存储的数据作为被请求写入的块数据D(图8的步骤S8)。也就是说,通过指明返回的内容地址CA所引用的区域作为被请求写入的块数据D的存储目的地,假设了被请求写入的块数据D被存储。因而,消除了对于向实际存储设备20中存储与写入请求有关的块数据D的需要。
另外,在块检测部分12判定尚未存储被请求写入的块数据D(在图8的步骤S3处为“否”)的情况下,数据写入部分13用以下方式写入被请求写入的块数据D(图8的步骤S7)。首先,数据写入部分13压缩与写入请求有关的块数据D并且如图5中的箭头Y5所示将数据划分成多个具有预定容量的片段数据。例如,数据写入部分13将数据划分成如图4中的标号D1至D9所示的九条片段数据(划分数据41)。另外,数据写入部分13生成冗余数据,从而即使在丢失了划分片段数据中的一些划分片段数据时仍然有可能恢复原有块数据,并且向划分片段数据41添加冗余数据。例如,数据写入部分13添加如图4中的标号D10至D12所示的三条片段数据(冗余数据42)。因此,数据写入部分13生成数据集40,该数据集包括九条划分数据41和三条冗余数据配置的十二条片段数据。
随后,数据写入部分13分别向在存储设备上形成的存储区域中分发和存储片段数据,该片段数据配置如以上描述的那样生成的数据集。例如,在如图4中所示生成十二条片段数据D1至D12的情况下,数据写入部分13分别向在多个存储设备中形成的数据存储文件中逐个存储片段数据D1至D12(参照图5中的箭头Y6)。
随后,存储***1生成和管理内容地址CA,该内容地址CA表示如以上描述的那样存储的片段数据D1至D12的存储位置,也就是将从片段数据D1至D12恢复的块数据D的存储位置。具体而言,存储***1通过组合基于存储的块数据D的内容计算的哈希值H的一部分(短哈希:例如哈希值H的初始8B(字节))与表示逻辑存储位置的信息来生成内容地址CA。存储***1然后向存储***1中的文件***返回该内容地址CA(图5中的箭头Y7)。存储***1在文件***中相互关联地管理标识信息、诸如备份目标数据的文件名和内容地址CA。
另外,存储节点3中的每个存储节点在MFI文件中相互关联地管理块数据D的内容地址CA和块数据D的哈希值H。因此,与指定文件、哈希值H等的信息关联地向加速器节点2或者存储节点3的存储设备中存储内容地址CA。
另外,存储***1使得数据取回部分14执行对取回如以上描述的那样存储的文件的控制。例如,在向存储***1发出对指定的特定文件的取回请求时,数据取回部分14首先基于文件***来指明由短哈希和逻辑位置信息组成的内容地址CA,该短哈希是与被请求取回的文件对应的哈希值的一部分。然后,数据取回部分14检查是否在MFI文件中注册了内容地址CA。在内容地址CA未被注册时,请求的数据未被存储,从而数据取回部分14返回错误。
在另一方面,在注册了与取回请求有关的内容地址CA时,数据取回部分14指定内容地址CA所指明的存储位置并且取回在该指定的存储位置中存储的每个片段数据作为被请求取回的数据。这时,在存储相应片段的数据存储文件和这些数据存储文件之一中的片段数据的存储位置已知的情况下,有可能基于相同存储位置来指定其它片段数据的存储位置。
然后,数据取回部分14从响应于取回请求而被取回的相应片段数据恢复块数据D。另外,数据取回部分14连接多个恢复的块数据D、恢复成如文件A那样的数据组并且将其返回。
在用以上方式在存储***1中写入与写入请求有关的数据时,存在如以上提到的那样在存储设备中以分散状态存储通过划分数据而获得的多个块数据的情况。在该情况下,存在取回性能降低这样的担忧,但是在该示例性实施例中的存储***1也具有以下功能以便解决这样的问题。以下将参照图6至图8来详细描述该功能。
首先,如以上提到的那样,块检测部分12检查是否已经在存储设备20中存储了内容与通过划分与写入请求有关的数据A而获得的块数据相同的块数据(图8的步骤S1和S2)。例如,在图6中所示示例中,块检测部分12首先考虑通过划分与写入请求有关的数据A而获得的块数据1作为这时应当经受存储过程的目标块,并且检查内容与该目标块相同的块数据是否存在于在存储设备20中存储的数据B中。
然后,在内容与目标块相同的块数据1如图6中阴影线所示也存在于存储设备20中时(在图8的步骤S3处为“是”),块检测部分12在与写入请求有关的数据A中获取从目标块(块数据1)起连续的多个块数据。在图6中所示的示例中,块检测部分12获取由块数据1至8组成的连续块数据A1,这些块数据在与写入请求有关的数据A中配置预定范围。块检测部分12也在存储设备20中存储的数据B之中获取在从内容与目标块相同的块数据1起连续的区域中存储的多个块数据作为目标块,也就是说,在图6中所示的示例中获取由块1、C、B、7和G组成的连续块数据B1,这些块在数据B中配置预定范围。从与写入请求有关的数据A之中获取的连续块数据A1例如是与5MB对应的块数据,并且从在存储设备20中的数据B之中获取的连续块数据B1例如是与2MB对应的块数据。因此,连续块数据A1和B1的量可以互不相同或者可以相同。
另外,块检测部分12检测共享比率,该共享比率表示在如以上描述的那样从与写入请求有关的数据A之中获取的连续块数据A1中包括的相应块数据与在从存储设备20获取的连续块数据B1中包括的相应块数据之间的共享部分的比率(图8的步骤S4)。例如,块检测部分12通过使用如以上提到的块数据中的每个块数据的哈希值来检测相同块数据的数目。在图6的示例中,在连续块数据A1和B1中共享两个块数据1和7,并且块检测部分12检测其比率作为共享比率。
此后,数据写入部分13根据块检测部分12用以上方式检测到的共享比率的值、通过以下方式执行块数据的写入。首先,在共享比率大于先前设置的值时(例如,在大于50%时)(在图8的步骤S5处为“否”),数据写入部分13对与写入请求有关的数据A的目标块(块数据1)执行通常写入过程。也就是说,由于已经在存储设备20中存储了内容与写入请求有关的数据A的目标块相同的块数据,所以数据写入部分13执行引用在存储设备20中已经存储的块数据的过程,并且不执行重复存储(图8的步骤S8)。
因此,在相应连续块数据之间的共享比率大时,可以认为在与写入请求有关的数据A的目标块之后的其它块数据也被存储在存储设备20中的、在内容与目标块相同的块数据之后的预定范围的区域中,从而数据写入部分13通过以上方式对目标块执行通常存储过程。此后,数据写入部分13对下一目标块、也就是与写入请求有关的数据A的块数据2执行与以上描述的过程相同的过程。因而,在以后取回与写入请求有关的数据A时,通过取回已经存储的数据B的连续块数据有可能高效地取回数据A。另外,由于也执行了对块数据的重复存储的消除,所以有可能减少存储量。
在另一方面,在共享比率等于或者小于先前设置的值时(例如在等于或者小于10%时)(在图8的步骤S5处为“是”),数据写入部分13向存储设备20中新写入与写入请求有关的数据A的目标块(块数据1)(图8的步骤S6)。也就是说,在图6的示例中,由于相同的共享块仅为两个并且共享比率等于或者小于先前设置的值,所以尽管已经在存储设备20中存储了块数据1,数据写入部分13仍然向存储设备20中写入块数据1作为重写块数据(参照图7)。这时,向存储设备20内的、其中已经写入数据的区域的末尾中写入待重写的块数据1。此后,对与写入请求有关的数据A的下一块数据2,以与以上提到的方式相同的方式执行图8中的步骤S1至S8的过程。例如,在尚未在存储设备20中存储块数据2的情况下,向如以上描述的那样已经被重写在存储设备20内的块数据1旁边的区域中写入块数据2。
因此,在连续块数据的共享比率小时,可以认为在存储设备20中以分布式状态存储与写入请求有关的数据A的目标块和在目标块之后的相应块数据,从而数据写入部分13新写入与写入请求有关的数据A的目标块。因而,在以后取回数据A时,通过取回在存储设备20中的连续区域中写入的块数据,变得很可能能够一起取回配置数据A的多个块数据,并且有可能增加取回性能。
在块检测部分12检测与写入请求有关的相应连续块数据和已经存储的连续块数据之间的共享比率时,在相应连续块数据中的块数据的顺序并不重要。也就是说,在具有相同内容的块数据存在于连续块数据中的每个连续块数据中的任何位置时,块检测部分12检测到块数据被共享。然后,块检测部分12基于共享的块数据的数目来检测共享比率。共享比率的值可以是共享的块数据的数目的值,或者可以是在连续块数据中的块数据共享的比率。因此,检测共享比率而不考虑在相应连续块数据中的相应块数据的顺序,因为如以上提到的那样,在取回时有可能通过取回在存储设备20中的连续区域中写入的连续块数据来一次取回彼此接近的相关块。
另外,如以上提到的那样,数据写入部分13并不总是新写入块数据,而是仅在满足以下条件的情况下才新写入块数据。例如,数据写入部分13计算以重复方式向存储设备20中新写入的块数据的量与在与写入请求有关的数据A之中的、已经在存储设备20中写入的数据的量(例如,与当前写入请求有关的一系列流数据的量)的比值,并且在该比值等于或者小于预定比值(例如5%)时写入块数据。因而,有可能限制在存储设备20中重复和存储的块数据的量。另外,通过限制向存储设备20重写的量,有可能限制写入速度由于重写而降低。用于再次写入块数据的条件可以是任何条件。例如,它可以是这样的条件,使得写入的块数据的量等于或者小于根据存储设备20的容量而先前设置的量。
如以上描述的那样,根据在该示例性实施例中的存储***,有可能在执行对重复存储的消除的同时限制在存储设备中的整个存储区域中分散块数据。因此,在以后取回数据时,有可能限制扫描多个盘,并且有可能限制取回性能的降低。在另一方面,为了限制取回性能的降低,允许块数据的重复存储,但是有可能通过限制重复存储的量来限制存储量的增加。
<第二示例性实施例>
以下将以报告的形式描述本发明的第二示例性实施例。
<1介绍>
去重复作为存储装置中的热议话题已经大约有十年。已经广泛描述和测试了这样的方式在减少为了执行备份所需要的时间和为了保存它们所需要的存储空间二者方面的有效性。如今,具有数据去重复的存储***产生备份带宽的新记录,并且市场被许多销售商提出的各种去重复解决方案所充斥。在实践中,去重复已经变成备份***的不可或缺的特征之一。
在传统上,去重复***的性能由数据去重复比、最大写入性能和恢复带宽来描述。普通客户在他的工作环境中实现的实际性能经常可能由于各种原因而不同于这些数字。具体而言,读取带宽通常对于向空***保存的初始备份而言很好,但是它对于随后备份而言劣化。对此的主要原因是线内(in-line)去重复所引入的数据分割(fragmentation),该数据分割造成在逻辑上属于新近备份的数据跨多个更旧备份分散。该影响随着每个备份而增加,因为它的数据中的越来越多的数据实际上位于先前备份中。根据数据集、它的表征和备份模式,性能实验示出从少量上至多于50%的读取性能的降低。由于数据集覆盖不多于15个连续备份,所以预计该百分比在执行更多备份时甚至更高。
可以用所谓的过程后(post-process)(离线)前向指向(forward-pointing)去重复来完全避免随后备份的增加的分割,其中保存最新备份而无任何去重复,并且之后在后台中以块的最新副本被保留的方式完成备份。利用该方法,不总是分割最新备份,并且分割随着备份年龄而增加。由于通常恢复最新备份,所以该解决方案看起来有前图。遗憾的是,这样的方式遭遇许多问题,最严重的是由于数据在去重复之前需要空间而增加存储消耗,并且由于写入重复数据的新副本通常比线内去重复这样的数据慢得多而导致写入性能的显著降低。出现后一个问题是因为写入新数据需要跨越网络传送数据并且向盘提交它,而基于哈希的去重复仅需将块哈希与在***中存储的块的哈希比较。
这里的宗旨是在不降低写入性能并且不影响重复消除有效性的情况下避免存储性能的降低。换而言之,理想的去重复解决方案应当实现线内方式的高写入带宽并且实现高的恢复性能而没有分割所引起的任何降低。
组织本文的其余部分如下:下一节提供该工作的动机并且给予问题的量级的数个示例。第3节更密切关注分割问题的性质并且标识解决方案要求。在第4节中,详细描述关于本解决方案适用于其的备份***的假设。第5节呈现被称为基于上下文(context)的重写(简称为CBR)的解决方案、继而是它的讨论和潜在延伸。第6节包含在性能实验中使用的假设和方法。在第7节中给出算法的评估、包括性能结果的讨论。在第8节中讨论有关工作以及与对分割问题的其它解决方案。最后,第9节包含用于将来工作的结论和方向。
<2动机>
(2.1问题介绍)
为了举例说明问题,假设每周完成仅一个文件***的完整备份。此外,假设具有向后指向去重复的备份***,即保留块的最旧副本。这自然地是线内去重复的情况,因为甚至不写入新副本。
通常,在两个备份之间不大量修改文件***,并且在第二备份之后许多重复项(duplicate)被检测到并且不被再次存储。最后,在连续存储空间中放置第一备份,并且通常在当前占用的空间的末尾之后存储第二备份的所有新块(见图9)。(图1:重复消除所引起的备份分割过程。)
在后继备份期间继续这样的场景。在一定数目的备份之后,在来自最新备份的块分散在整个存储空间内。这造成为了读取最新备份而需要的大量盘查找并且因而造成很低的读取性能(见图9上的最后一个备份的恢复过程)。
该分散数据的过程被称为分割并且可能在涉及关键恢复时很有害。重要事实是以上场景很典型并且导致最新近写入的备份——在丢失用户数据时将最可能需要恢复的备份——的最高分割。
(2.2问题量级)
虽然分割问题明显,但是它的严重性需要进一步考察。为此,已经仿真了向线内去重复存储***写入4个备份数据集。接着,使用固定大小的预取(prefetch)来仿真每个备份恢复。在实验期间,消除了(预计大小为8KB并且用Rabin指纹分块算法创建的)所有重复块以便保证最大可能去重复率。在每个备份之后,测量恢复带宽为最大带宽(即在仅一个备份存在于***中时实现的带宽)的百分比。
为了简化分析,在该工作中假设读取带宽与在恢复期间执行的数据I/O操作数目成反比。虽然当然存在其性能受其它瓶颈影响的***,但是将所实现的带宽与固定大小的I/O数目相关允许聚焦于分割问题的核心并且忽略次要因素、诸如网络和CPU速度。
图10示出相对于在没有版本间流分割情况下针对每个备份而实现的、归一化成100的最大带宽而言的用于各种备份集合的恢复带宽。也就是说,数字45意味着对于特定备份集合和备份数目实现最大恢复带宽的仅约45%,即恢复这样的备份将由于跨备份流的分割而慢两倍以上。
在关注图10时,可以产生几个有兴趣的观察结果。第一个是分割随时间展开和增加(有一些罕见例外)的明显趋势。第二个是该因素对每个数据集的不同影响:可实现的读取带宽从在7个问题存储库备份之后的最大带宽的45%到在8个wiki备份之后的最大带宽的约88%变化。(图10:读取带宽为每个后续备份的最大可能带宽的百分比(与恢复所需要的I/O的数目成反比))。
引起这样的结果变化的最重要因素是:
-在流中的重复项数目——一般而言,低重复项比例造成低分割,但是该规则的例外是可能的。
-重复的/新数据模式的特性——新数据是否相当连续地被放置或者被放置于重复项之间的短序列中;以及重复项是否在诸如原先写入时的长序列中出现于最新备份中或者更随机地出现。
-流的已经备份的版本的数目——更多备份意味着更多流待去重复并且因而意味着更高分割的可能性,
-流的大小——更易于在小流中引入高分割,因为大的流通常具有罕见地被修改的一些根数据;这样的数据在整体上减少了流的分割。
在该工作中,不执行这些因素中的每个因素对备份分割的影响的单独分析。在一个方面,决策由可用于该工作的有限空间激励;在另一方,这些因素中的许多因素与用户数据的固有表征和备份留置策略有关,这二者通常不能被改变。然而,确信地有理由考察这些因素以估计分割问题对于特定用户的严重性。
<3去重复备份比对分割>
分割是去重复的自然产物(或者实际上为浪费)。有可能通过在分离连续盘空间中保持每个备份而在备份之间没有干扰的情况下完全消除分割,然而在这样的情况下将无去重复。
用于在实际上消除分割对恢复性能的影响的另一方式是将大的预计块大小用于去重复。在这样的情况下,在分割发生时,它不会大量降低恢复速度,因为即使需要用于每个块的盘查找,查找时间仍然由为了读取块数据所需要的时间支配。
例如,在预计块大小为4MB、读取盘带宽为40MB/s并且查找时间为5ms时,在每个块读取时完成查找将使恢复时间增加约5%。然而,用于去重复的最优块大小依赖于特定数据模式和存储***表征而在4KB与16KB之间变化(注意无需在计算去重复有效性时包括块元数据)。利用更大块,去重复变得不太有效,因此使用这样的大块不是可行选项。
(3.1分割影响减少思想)
虽然由于去重复而不能为所有备份完全消除分割,但是可以尝试在大多数情况下消除分割所引起的恢复减速,而不大量恶化其它性能度量、诸如写入性能和去重复有效性。本方式基于如下观察:在故障之后的数据恢复的最常见情况是根据最新(或者接近最新)数据备份而被执行的。这是因为用户通常有兴趣恢复最新信息。
基于以上观察,可以尝试以更旧备份为代价消除用于最新备份的分割。在图11中给出这样的方式的示例。它呈现7个连续备份流的基本分割(标注为原有的曲线),其中分割随着年龄减少,以及再次用离线去分割(defragmentation)实现的相同备份(标注为去分割的曲线),其造成向盘连续地写入最新备份并且分割随着备份年龄增加。想要用尚未定义的在线去分割过程来实现相似效果。(图11:(对7个开发项目备份的实际示例的)在离线去重复之后的每个备份分割[重写每个备份])
(3.2解决方案要求)
分割问题需要一种对去重复***的其它重要度量无负面影响的解决方案:构想的解决方案应当:
-消除用于最新备份的恢复带宽(即,与在仅一个备份存储于整个***中时将实现的带宽比较)的减少
-对于进行中的备份引入很少性能下降(与无该解决方案的情况比较),
-不降低去重复有效性并且一般使用很少附加空间,
-无需大量附加资源、诸如盘带宽、轴(spindle)和处理功率,
-可管理以赋予在解决平衡问题时的选择范围。
<4具有线内去重复的备份***>
为了实施在下一节中描述的去分割解决方案,假设备份存储支持以下特征:
-内容可寻址能力:这是对于以下描述的随后特征有用的基本特征。
-基于检查块哈希存在性的去重复查询;非常重要的是这样的查询工作使用哈希并且使得仅读取元数据,因为它们比整个块小得多并且可以容易被预取以用于流访问。甚至更重要的是通过读取整个块的去重复将在事实上造成读取分割的流和很低的总写入性能的事实。注意,在有高分割的情况下可能没有足够的轴来足够快地读取甚至块元数据。然而,存在基于闪存的对该问题的解决方案,而SSD太小并且太昂贵而无法保持全部备份数据。
-快速确定盘相邻块:在给定两个块时,应当能够快速确定它们是否在盘上相互接近。这可以用许多方式来实现,但是为了简化,假设在***中确认块存在的每个去重复查询返回该块在盘上的位置。用于验证两个块是否在盘上接近的另一方法是取回与盘上的块之一接近的块的哈希、然后检查第二块哈希是否为取回的哈希之一。这些方法二者的组合也是可能的。
-有能力写入在***中已经存在的块。这在做出判决再次存储块以便增加将来读取性能时是必需的。这样的重写以先前存储的所有备份现在能够使用新副本而不是旧副本这样的方式有效地使先前副本无效。注意,内容可寻址能力实际地能够自然地产生该特征。
由于以上特征相当简单,所以在下一节中描述的算法可以视为很通用并且容易可应用到具有线内去重复的多数***。
<5CBR——基本上下文的重写>
(5.1块上下文)
本算法利用重复项的两个上下文——它的盘上下文和流上下文。数据块的块流上下文被定义为紧接在该块之后、在该流中写入的块集合。还将数据块的盘上下文定义为在盘上紧接在它之后的块(见图12)。在这两个上下文的交集明显时,对该交集中的块的读取由于预取而很快。事实上,特别地,这经常是对于初始备份的情况。(图12:块的盘和流上下文)
低读取带宽的问题在盘上下文包含来自流上下文的很少数据时出现。这可能由于去重复而在相同块在逻辑上存在于多个流位置中而在每个位置中有不同邻居时发生。这样的场景出现于以下情况下:
-重复项存在于不同逻辑备份中(全局重复项)
-重复项存在于相同流中(内部重复项)
-重复项存在于相同流的先前版本之一、例如在一周之前备份的相同文件***中(版本间重复项)
一般而言,由于相同数据的重复备份,所以最常见的是最后一种情况。另外,版本间重复项所引起的分割一般随着每个备份增加。作为结果,在该工作的其余部分中关注于该情况。内部重复项的影响如在第6.4节中描述的那样有时是明显的,但是它通常不随着备份数目增加而变得更差。在该工作中,对于所有实验中,考虑内部重复项所引起的分割的影响(即,在该工作中呈现的每个I/O测量包括该影响),但是不关注于解决该问题。
(5.2算法概述)
解决方案的基本思想是重写高度地分割的重复项、即如下块,对于这些块,在最新备份中的流上下文显著地不同于它们的在某个更旧备份中写入块的原有副本时建立的盘上下文。通过重写这样的块,尝试使两个上下文相似。在重写之后,块的新副本可以用于读取操作,并且在后台中最终回收旧副本。
想要重写仅小部分块,因为每个重写使备份减速并且消耗附加空间直至回收了块的旧副本。默认地,被称为重写限制的该参数被设置为所有块的5%。这个值影响本算法将写入备份减速多少——细节参见第6.2.3节。
算法的主循环关注在当前点之后的下一重复块,对于当前点尚未做出重写判决。将这样的块称为判决块。在本算法中,通过比较它的当前盘上下文与它的流上下文来判决是否重写它。如果这两个上下文的公共部分小,则判决块的重写更有意义,因为避免了用于读取少量有用的数据的一个附加盘查找。
在其它极端情况中,如果两个上下文的公共部分大,则这样的重写未大量节省,因为附加查找时间被为了读取大量有用数据所需要的时间摊销。在这样的情况下,判决不重写交集中的所有块,即留下它们作为重复项。因此,定义重复项的重写效用(utility)为在该块的盘上下文中的如下块的大小相对于该块的盘上下文的总大小,这些块不属于该块的流上下文。例如,30%的效用意味着盘上下文中的块的70%也在流上下文中。该算法维持当前重写效用阈值并且仅在它的重写效用不低于该阈值时重写判决块。
在做出这样的判决之后,对于在流中的尚未对其做出重写判决的下一重复项在主循环的下一迭代中重复整个过程。
由于在线做出是否重写重复项的判决(无将来知识),所以可以总是对于给定的重复项做出次优选择:例如,通过判决重写它,但是这样的重写“信用”可以被更好地保存用于流中以后的另一重复(回顾,可以重写所有块的不多于5%);或者通过判决不重写重复项而希望更好候选可以在流中以后出现;但是这样的候选可能事实上在将来从未实现。
因此,在本算法中的挑战是做出良好的重写判决。为此,维持两个重写阈值:最小重写效用和当前效用阈值。
(5.2.1最小重写效用)
最小效用是本算法的参数并且保证当前重写效用阈值从未降至它以下。以这样的方式,避免做出将仅少量地提高恢复性能的重写判决。初始地,认为最小效用不能太高,因为在这样的情况下不会大量重写,并且不能太低,因为在这样的情况下太多重写将发生。因此,测试了用于该阈值的值、诸如20%。
然而,这样的值证实太低,因为它造成发出的消耗先前重写信用的许多重写,仅提供少量改善。例如,想象如下备份,在该备份中,块的确切5%是重复项,并且它们具有重写效用20%。在这样的情况下,重写所有重复块将使恢复性能仅提高约1%。在这样的重复项都具有重写效用50%时,增益在这样的情况下约为5%、仍然不足以使重写合理化。作为结果,选择最小效用为70%。在各自具有这样的重写效用的重复项的5%的备份中,重写所有重复项将恢复性能提高约12%,这在本发明看来足以使重写合理化。
注意,可以存在如下备份,其显著地受到分割的影响,但是对于这些备份,所有重复项具有恰在最小效用以下的重写效用。然而,为了减少分割对于这样的备份引起的恢复带宽下降,将需要重写比仅5%多得多的块。幸运的是,在实验中尚未遇到这样的情况。
(5.2.2当前重写效用)
如更早说明的那样,当前重写效用用于每个判决块来判决重写是否应当发生。随着每个处理的块调整该值。为此,引入最佳5%块集合,该最佳5%块集合被定义为在备份流中迄今所见的所有块的最佳重写5%。注意,每个可重写块必须是重复项,因此在一些情况下,可以在该集合中保持所有块的少于5%,因为可能在流中没有足够的重复项。
为了建立最佳5%,仅计算重写迄今所见的每个重复项的效用而不考虑算法采取的实际动作。在算法的每个循环中,设置当前重写效用阈值为重写最佳5%块中的最差块的效用(但是不低于最小效用)。这样的选择粗略地意味着,如果已经使用该阈值作为用于从备份的开头直至当前点的每个判决块的当前效用阈值,则将已经重写了重复项的最佳5%。
(5.3算法细节)
对每个传入数据流分离地执行以下呈现的算法。它由以下阶段构成:
1.包括用于每个重复项的基于上下文的重写判决的主循环。
2.用于回收重写的块的旧副本的后台操作。
(5.3.1主循环)
对于判决块执行算法的主循环,该判决块是在输入流中的、在先前循环之一中未被标记为略过的下一传入块。
1.设立盘上下文:对于判决块,基于数据的安全哈希(即SHA-1)发出修改的重复消除查询。如更早讨论的那样,在检测到重复项的情况下,修改的查询返回该块在盘上的位置。该查询仅在该算法的先前循环之一中尚未发出该查询时被发出。
2.用于非重复的写入完成:在判决块不是重复项的情况下,将执行标准写入过程。
3.得出重写判决:否则,块是重复项,并且如果它未被标记为略过,则需要判决它是否需要重写:
(a)设立流上下文:通过延迟判决块的写入完成直至足够的写入请求被提交以填充在该缓冲器中,来填充流上下文(默认为5MB)。对于在流缓冲器中的每个写入请求,通过发出新的去重复查询来分辨它的重复状态(如果没有已经由算法的先前循环之一填入的这样的信息)。
(b)计算上下文交集:在填充流上下文中之时,通过比较在两个块之间的盘上距离来检查给定的块是否为已经在判决块的盘上下文中出现的重复项(注意,具有用于去重复查询所返回的两个块的盘位置信息)。以这样的方式,确定它的盘上下文和它的流上下文的交集。
(c)重写判决:作为先前步骤的结果,获得在两个上下文的交集中的所有块的总大小。如更早说明的那样,这确定重写判决块的效用。如果该效用未在当前重写效用阈值以下,则重写判决块-但是仅该块,受到5%重写限制(允许被重写的块数目随着处理更多块而改变,因为基于迄今所见的所有流块计算该限制)。否则,不重写在交集中的所有块,即它们被视为在当前流中的重复项。
注意,该判决不对称:仅重写判决块或者将交集中的所有块标记为重复项。也就是说,即使将重写判决块,仍然不想现在判决重写交集中的其它块,因为它们可能使它们的上下文交集大到足以避免重写。然而,一旦判决保持判决块作为重复项,则应当也将交集中的其余块保持为重复项,以保证对判决块的读取也将取读这些附加块(即,判决块的重写效用保持为低)。
(d)标记判决的块用于略过:将在交集中的被判决保持它们作为重复项的所有块标记为将在该算法的将来循环中被略过。
4.调整重写效用阈值:无论重写判决如何,更新将在下一循环迭代中使用的重写效用阈值。由于保持最佳5%的效用不切实际,所以保持固定数目的效用桶(bucket)(例如10000个)。向每个桶指派重写效用的不相交的相等子范围,所有桶覆盖整个效用范围,并且每个桶保持其效用落在该桶范围中的迄今所见的块的数目。利用该结构,可以用合理准确度——在向每个桶指派的效用范围内——近似最佳5%块中的最差块的重写效用。
5.设立下一迭代:算法移向将不被略过的下一个块、调整重写效用阈值并且再次重复主循环。
对于在流中的所有块重复以上算法。初始地,设置重写效用阈值为最小效用阈值。在更新时,当前重写效用阈值不降至该最小值以下。
注意,块重写不总是确保增加流和盘上下文的交集的大小。例如,流上下文可以仅包含重复项,并且可以判决重写它们中的仅一个,因为其余重复项是依次的。在这样的情况下,不增加交集的大小,然而重写的块仍然将在盘上与其它新的或者重写的块接近处结束。在预取这样的块时,它们将最可能在读取高速缓存中存续从而减少恢复所需要的I/O数目,因此重写仍然可以是有益的。
(5.3.2后台操作)
以上描述的算法需要能够去除重写的块的旧副本的后台过程。这样的任务可以与已经时常运行的其它维护任务、诸如删除、数据擦掉和数据排序一起执行。在执行维护任务之前,占用重写所使用的附加空间,从而暂时降低去重复率。由于这样的数据的百分比有限并且通常很经常执行维护任务,所以这样的解决方案是可接受的。
(5.3.3对读取操作的修改)
如果数据块是内容可寻址的,则用相同地址对旧和新副本寻址,因此在用相同块的新副本替换旧副本时无需改变指向数据块的指针。为了保证最新备份恢复的良好性能,需要修改读取过程以访问块的最新副本。
(5.4讨论)
这样的算法明显为在线,因为仅关注迄今所见的块。
它在一些情况下是最优的,例如在重写流中的每个重复项的效用相同时;或者在这样的效用随着重复项在流中的增加的位置而减少时。
最差情况是在流的开头处存在跨越流散布的具有低的、但是在最小值以上的重写效用的许多重复项,其后继而跟随了在流的末尾处相互接近的具有高效用的许多重复项时。在这样的情况下,本算法将重写许多低效用的重复项和仅很少(例如5%)高效用的重复项;而在具有未来知识的情况下,将仅重写高效用的重复项。如果基于来自先前备份的统计量调整用于当前备份的最小效用,则可以解决该情况,在以下第5.5.7节中描述。
存在CBR算法的简单修改,该修改看来消除了它的代价并且保留优点:在完成备份之后,首先标识待重写的块,并且以后离线重写它们。然而,这并未良好工作,因为重写将需要读取分割的块,这可能极为缓慢(确切地因为它们被分割最多)。在CBR的在线版本中,在用户写入数据时自然地获得这些块。
(5.5算法延伸)
若干延伸有可能改进以上基于上下文的重写算法并且使它更难接受非寻常去重复模式。
即使所有延伸在一些场景中很重要,但是判决不分离地分析它们并且取而代之,由于有限可用空间以下仅描述最感兴趣的延伸。
(5.5.1在写入时的读取算法仿真)
每个备份***可以使用最适合于总体设计和数据结构的不同读取算法。可以实施小部件,该部件将仿真在写入期间的读取算法并且在块将存在于***高速缓存中时建议应当重写哪些块。
(5.5.2延伸的流上下文)
流上下文不仅由在块之后写入的块定义而且由在之前写入的块定义。特殊部件可以监视写入块并且保持关于最新近写入的块的一些元数据。这样的优化将使上下文分析更精确并且将降低重写的块数目。
(5.5.3基于时间戳的重写)
例如,对于诸如所有位为零的常用块或者在同时备份两个文件***并且它们均具有一些公共交织部分(全局去重复项)时应当仔细以避免太频繁的重写。为此,可以使用块写入的时间戳。在最新近地写入块时,不会使用它作为用于重写的候选,这使一再重写相同块的威胁消失。
(5.5.4客户端流排序)
该优化对于在一个盘容器中交织同时写入的多个流的***有用。在这样的情况下,可以在相同流的块一起被存储于盘上时实现最佳结果。一个可能解决方案是在客户端上累计几个块、然后一起写入它们。由于这样的解决方案,通过网络发送更少请求,并且所有块具有用于被一起写入的恰当大小。作为结果,以增加的写入延时为代价保证低I/O数目和良好恢复性能。
(5.5.5自由空间监视)
重写的块消耗存储***中的附加空间。即使占用的区域很小并且将在短时间之后被释放,但是在***接近充满时的一些情况下,它可能引起太快报告空间缺乏。为了防止该问题,需要监视可用容量并且在存储空间为低时关断去分割特征。
(5.5.6可调整大小的预取)
基本算法假设在从盘读取时的固定大小的预取。取而代之,可以使用可调整大小的预取以加速恢复。可以基于新近预取的有效性完成调整。这将减少分割的影响、但是不会消除它。
(5.5.7用先前备份统计量调整阈值)
最小效用可能被设置得太高或者太低。可以保持先前备份的统计量并且将它用于设置用于当前备份的最小效用。这明显需要存储***知道备份边界,情况并不总是如此。
在这样的方式中,对(1)由于重写信用不足而不能重写的高效用块的数目、(2)在每个桶指派了不相交效用范围的情况下被分组到各桶中的、发出的重写的数目和(3)由于重复项的重写阈值在最小重写阈值以下而不能重写的重复项的数目(也按照桶被分组)计数。
如果第一数目明显大于零,则最小效用被设置得太低,在这样的情况下,需要增加该阈值。否则,如果尚未耗尽重写信用并且第三数目为非零,则需要降低阈值(但是不在某个如下绝对最小值以下:在该绝对最小值以下,重写无意义)。增加或者减少的大小以这样的方式由适当桶大小和它们的关联范围确定,该方式使得使用所有重写信用并且重写具有最大效用的重复项,假设当前备份与先前备份相似。注意,这样的调整仅基于试探法并且不确保工作、但是应当在普遍情况下良好工作。
<6实验方法>
(6.1选择的数据集的描述)
已经使用4个备份迹线(trace)集合以评估分割的影响和本算法的有效性。
-开发项目备份——大型C++项目的7个每周备份(每个约为14GB)
-问题贮存库备份——用于报告和跟随与软件产品有关的问题的问题贮存库的7个每周备份(每个约为18GB)
-Wiki备份——商业公司使用的wiki的8个每周备份(每个约为9GB)
-一般文件服务器备份——来自IT研究实验室的主目录的14个每周备份(每个约为78GB)
(6.2基本模型)
仿真的存储***环境很简单并且依赖于以下主要假设:
-***在每个测量的开始为空,
-用于备份的存储空间连续(有时如同一个大盘),
-向***中备份仅一个用户文件***/目录(它的每周的当前版本),
-用Rabin指纹采集(fingerprinting)所产生的预计大小为8KB的可变块大小完成分块。
利用以上假设,向评估问题的严重性和它的解决方案的效率给予优先级而不因为在如今的备份***中存在的太多细节而模糊实验。
(6.2.1仿真读取算法)
仿真简单读取算法,其中恒定预取大小为2MB并且专用LRU读取高速缓存为512MB。选择高速缓存大小以保持每个备份的仅小部分(至多6%)。在第7.3节中说明预取大小的选择。
(6.2.2流上下文大小)
使用5MB作为流上下文大小,因为它大到足以允许本算法有效并且小到足以由于填充该上下文所致的写入延时增加为小。如今的备份***对于单个流容易实现200MB/s,因此填入流上下文将仅需25ms。注意,一旦发现重复块的上下文,将释放它们中的多数重复块(通常在数毫秒之后),并且整个25ms将仅被待写入的块(所有块的约5%)和已经具有显著延时的非重复项所占用。用更大流上下文大小做实验,但是它们没有显著提高去分割的有效性。然而,一个明显影响是重写的重复项数目进一步减少。
(6.2.3重写代价)
在评估本解决方案的代价时,需要估计由于重写而将备份减速多少。已经修改了商用备份***HYDRAstor的写入路径以避免检查重复项并且在写入重复项的100%时比较了这样的解决方案的带宽与未修改的***的带宽。作为结果,后者是前者的3倍。基于该结果,相对于对块去重复,将倍率为3的减速用于写入块。也就是说,例如5%的块重写引起上至15%的减速。由于所有重写的块是重复项,所以实际减速依赖于在原有流中的重复项的百分比——百分比越高,减速就越高,并且在流中的所有块是重复项时实现15%减速。
(6.3省略的因素)
为了使分析简单,忽略了一些因素:
-全局去重复——如更早提到的那样,全局重复项所引起的分割不是本工作的焦点。
-数据在盘上的低级放置——在存储***中的实际数据分割由于如何在盘上存储数据而实际上比在本模型中更大。忽略了该因素,因为想要研究仅去重复所引起的分割的影响。
-许多盘驱动/服务器——如果本恢复可以使用所有可用盘的带宽,则在具有许多盘的***中的分割问题至少与仅有一个盘一样严重。在另一方面,如果仅需有限带宽的恢复,则多个盘的可用性减少了这样的严重性,因为具有用于执行查找的许多轴,并且这样的查找将未必降低恢复性能。
在该工作中,假设前一种情况,因此研究仅有一个盘的分割就足够了。
(6.4内部流重复)
内部流重复——在块在当前备份流中出现多于一次时——可能以两种不同方式影响恢复带宽:
-正面地——在重复数据已经在高速缓存中并且无需盘操作来读取它,
-负面地——在已经从高速缓存驱逐数据时。在这样的情况下,从盘再次下载它可能引起读取与当前流上下文非常不同的旧盘上下文。这样的数据将被放入高速缓存中,但是可能永远不会在将来使用(除了被请求的块之外)。
在这些迹线中,内部重复以相对高的比率出现——见图13。作为结果,这些影响有时清楚地可见;从初始备份的恢复带宽的47%降低到12%增加。(图13:数据集特性)*-排除第一备份的数据))
内部重复对恢复速度的影响调整与之比较的本解决方案的基本水平性能。清楚地,内部分割仍是问题并且需要被解决,但是它在本工作的焦点以外。用于解决内部分割的一些可能选项是以更智能方式缓存数据并且在盘上去重复数据以求更佳性能。
<7评估>
(7.1满足要求)
以上呈现的CBR算法如图15a-图15d所示优化最新流的将来读取带宽。本算法的去分割对于所有迹线都有效,因为最新备份的所得恢复带宽在(例如通过离线去重复的)完整去分割之后实现的最优恢复的几个百分点内。在无去分割时,在线内去重复的情况下从最新备份恢复的带宽在用于问题贮存库备份的最优值的50%以下;以及对于其它备份集合为85%-88%以下。
图15a-15d:3种情况的恢复速度:(1)在CBR去分割之后、(2)无去分割的线内去重复和(3)离线去重复;归一化成100,这是每个备份恢复在无版本间分割时的速度。
假设立即消除重复项是写入重复项作为新块的三倍快,并且由于重写不多于5%的所有块,所以CBR保证写入带宽被减少不多于15%。如图14中所见,本算法实际重写所有块的比目标5%低得多的百分比。这是因为本发明鉴于设置最小重写效率高达70%并且在处理备份流之时总是遵守5%限制而很保守。作为结果,本算法使写入带宽仅减少1%-5%(参见图14中的写入时间增加列)。(图14:CBR去分割对每个备份集合中的最后一个备份的影响。在无版本间分割时的最优恢复带宽归一化成100。)
本算法除了重写的重复块之外未使用附加空间,因此CBR也确保附加空间消耗在所有块的5%以下。实际数字低得多——在0.52%与2.61%之间。在后台中去除块的旧副本,例如作为周期性地运行的删除过程的部分,因此该空间消耗是暂时的。
附加盘带宽消耗也限于写入重写的块。算法也易于通过设置待重写的块的百分比而可调节。百分比越高,以更大写入性能下降为代价的恢复性能就越好,并且为了暂时存储重写的块的旧副本而需要的盘空间就越多。
(7.2设置重写限制)
为了选择用于重写限制的最佳值,执行了一系列实验,将该限制从1%改变到7%而保持最小重写效用在70%处不变。在图16中给出用于在每个备份集合中的最新备份的结果。设置该限制为低值如2%或者甚至1%对于除了问题贮存库之外的所有集合都良好工作,对于该问题贮存库,5%的重写限制赋予最低的恢复带宽减少。增加该限制超出5%不会给出任何效果,因此决定对于所有实验设置该限制为5%。(图16:重写限制对恢复带宽的影响。)
(7.3盘上下文/预取大小)
为了读取在盘上连续的数据,更大预取大小一般更佳。如图17所示,这对于分割的数据不成立。(图17:作为预取大小的函数、在去分割之前、用于每个备份集合的最新备份的相对读取时间。)
这里,在几乎所有情况下,最佳固定大小的预取是2MB。一个例外是问题贮存库备份,对于该问题贮存库备份,512KB预取是更佳的。由于这里比较使用不同预取大小,所以不能完成仅基于I/O数目的性能外推。取而代之,假设标准盘特性能够推理实现的性能。
基于那些结果,决定将2MB预取用于利用CBR算法的***。注意,有可能的是利用基于上下文的重写,某个其它预取大小是更佳的,因此该算法的效率估计对于除了问题贮存库之外的所有集合是保守的。已经这样做是因为基于I/O数目推测性能,并且利用不同预取大小,在没有附加假设的情况下将是不可能的。
由于对于问题贮存库备份集合,最佳的测试预取大小是512KB,所以使用该预取大小来仿真利用和未用CBR算法的***。在这样的情况下,分割引起25%的恢复性能下降(而不是对于2MB预取的45%)。然而,CBR算法仍然能够将该下降减少至约5%。具有2MB预取大小的CBR也减少该下降、但是减少至12%(注意这里100%对应于在无版本间分割存在时用512KB预取实现的恢复带宽)。
(7.4压缩的影响)
迄今已经假设备份数据不可压缩。如果保持预取大小恒定并且等于2MB,则可压缩数据造成分割问题量级增加并且CBR算法产生甚至更佳的恢复带宽的相对提高。例如,对于50%可压缩数据,恢复性能下降从12-55%增加至15-65%,而CBR去分割将该下降减少至3-6%(而不是无压缩的4-7%)。显然地,例如基于数据的可压缩性选择不同预取大小可以改变这些结果,但是假设用于所有类型的数据(并且为不可压缩数据而优化)的一个固定预取大小。
(7.5潜在地非必需重写)
利用将来知识,重写中的一些重写可以不是必需的,因为在判决块的盘上下文中的、未在它的流上下文中的块事实上可能以后在流中出现。为了估计多少这样的重写会出现,将流上下文大小从标准5MB延伸至从在流中的当前位置跨越直至流的末尾的可变大小。
在用这样的延伸的流上下文计算的判决块的重写效用在最小重写效用以下时,定义重写为潜在地非必需。结果是,依赖于备份集合,潜在地非必需重写的比例相对高,对于最新备份为30-44%。可以通过增加标准流上下文大小来避免这些重写中的一些重写。例如,将其从5MB增加至20MB将该比例减少至22-37%。虽然这些比例高,但是仍然重写所有流块的很小部分,即使在包括这些潜在地非必需重写的情况下也是如此。
(8有关工作)
如更早说明的那样,分割是去重复的必然缺点。最简单的解决方案是过程后去重复,该过程后去重复消除去分割、但是具有在第8.1节中讨论的若干其它严重问题。一些销售商如EMC试图用消耗时间和资源的内务过程对付分割。尚未公布该过程的描述,但是一种可能方式是在后台中、即与本CBR方式相似的方式、但是离线完成有选择地写入候选子集。在第8.2节中给出关于这样的算法的更多内容。其它***如HYDRAstor使用更大的块大小——64KB块——这减少分割问题的严重性、但是以减少的去重复率为代价。
(8.1用离线去重复消除分割)
一种满足以上要求中的一些要求的简单解决方案已经在市场上出现,并且将它称为离线去重复。在它的最简单形式中,在盘上连续地存储来自当前备份的所有数据,并且以这样的方式在后台中完成去重复,该方式为来自最新备份的块是用于从更旧备份消除重复的基础。作为结果,当前写入的流无分割,并且更旧备份与它们的年龄成比例地被分割。即使算法最可能未被设计用于应对分割,它对于在新近备份中消除分割也很有效。
遗憾的是,这样的方式遭受许多其它问题,如在第1节中更早说明的那样,一个致命的问题是低写入带宽。在备份中的重复项的百分比根据数据模式变化,但是该比率比75%高得多,因为在备份之间修改很少数据。如在第6.2.3节中说明的那样,在未写入数据时的去重复可以是首先写入数据、然后在后台中对其去重复的3倍快。很保守地假设备份流包含75%的重复项,与向具有线内去重复的***写入该备份相比,使用离线去重复造成备份窗大多于70%。这显然是不可接受的,因为即便真的要扩展备份窗,通常也不能延伸太多。
(8.2去分割解决方案的比较)
除了离线去重复和在线完成的CBR之外,存在用于在后台中执行基于上下文的重写的至少一个更多选项,即已经在第5.4节中提到的离线。这样的解决方案完全不影响备份写入,但是它将需要写入比在线方式多得多的块,因为将必须重写引起分割的重复项的流上下文的大量部分。因此,该方式的主要缺陷包括为了读取分割的数据并且在后台中再次重写选择的块而需要的资源,以及在完成块重写之前尝试的恢复的低读取带宽。
在图18中呈现了所有提到的备选的比较。这里注意,两种离线选项的存储消耗可以通过阶段化(staging)而得到改善,即通过并行地但是略在备份写入过程之后运行移除重复的过程(或者重写它们中的一些)来得到改善。然而,阶段化需要更多资源,如可用盘带宽和轴。(图18:去分割解决方案的比较。)
(8.3其余有关工作)
一般而言,没有关于数据分割问题的许多文章,即使已知它已经有一些时间。
少数文章解决了改进元数据读取以求更快重复消除的问题Zhu等人的工作描述光晕滤波器和面向流的元数据预取的解决方案,而Lillibridge等人主张利用稀疏编索引(仅消除在先前选择的少数大分段内的重复)的解决方案由于更小存储器消耗而更佳。附加硬件如SSD可以用来消除随机重复。这样的解决方案将使分割问题甚至更难,因为可以检测到更细微粒度的重复。此外,以上方式无一解决了读取分割的数据的问题,并且在所有情况下,分割随着随后备份而增加。
如果放宽对未降低去重复有效性的去分割解决方案的要求,则可以试图仅消除在数据子集内的重复、因此潜在地减少分割。除了稀疏编索引之外,这样的方式用极端入仓(binning)、ProtectTier、子块去重复以及用多节点***是可能的,这些多节点***使去重复限于节点之一或子集、诸如Pastiche和数据域全局扩展。遗憾的是,即使考虑先前备份的很少(2-3个)分段以对当前分段去重复(比对在稀疏编索引中那样),那些分段仍然可能尚未在盘上连续,因为它们也可以包含来自其它更旧分段的重复项。
最后,可以通过消除具有大块或者对象的重复来减少或者甚至消除分割。在EMC Centera的早期版本中,去重复的单位是整个文件,这对于Centera的目标市场、即存档良好工作,但是由于去重复有效性低而并非用于备份的恰当解决方案。
<9结论和将来工作>
在该工作中,已经描述了在具有线内去重复的存储***中的数据分割和版本间去重复对恢复性能引起的分割的量化影响。该问题很严重并且如实际备份迹线集合(在每个备份集合中有7-14个备份)驱动的实验所证实的那样,根据备份特性而可以造成多于50%的恢复速度下降。对于更大集合,在备份跨越许多个月或者甚至年时,预计该问题甚至更大。另外,该问题影响最可能用于恢复的最新备份最多。
为了应对该问题,已经提出了基于上下文的重写算法,该算法重写选择的少数重复(不多于所有块的5%)。呈现的算法提高最新备份的恢复速度而造成对于罕见地用于恢复的更旧备份的增加的分割。例如,在已经在具有去重复的存储***中需要的周期性删除和空间回收过程期间在后台中去除重写的块的旧副本。
迹线驱动的仿真实验已经示出重写少数选择的块减少写入性能很少、但是实际上消除了用于最新备份的恢复速度减少(在最优带宽的4-7%内)。
对于将来工作,计划考察删除对分割的影响,从而使CBR算法更少保守(允许它暂时超过重写的块的希望的比例)并且考察算法延伸对它的有效性的影响。另外,计划在商用备份***中评估提出的解决方案。
在将来待考察的一个重要问题也是如何有效应对内部重复所引起的分割。实验已经示出对于一些备份,该分割引起与跨越在一个备份集合中的多个备份流的重复所引起的恢复减速相似的恢复减速。
本文集中于每周在不同版本中写入的一个逻辑流引起的分割。即使这是主导情况,仍然考察问题的两个更多来源。内部重复消除和在不同备份集合之间的全局去重复二者可能导致读取带宽的问题。解决它们将在关键恢复优化中又进一步。
<补充注释>
可以将以上公开的示例性实施例的全部或者部分描述为以下补充注释。以下将描述根据本发明的存储***(参照图19)、程序和信息处理方法的配置的概况。然而,本发明不限于以下描述的配置。
(补充注释1)
一种存储***100,包括:
数据划分装置11,用于将写入目标数据划分成多个块数据;
块检测装置112,用于检查通过数据划分装置的划分而获得的相应块数据是否已经被存储在存储设备120中;以及
数据写入装置113,用于向存储设备中存储通过数据划分装置的划分而获得的相应块数据,并且在存储内容与已经被存储在存储设备中的块数据相同的其它块数据时,使得引用已经被存储在存储设备中的块数据作为其它块数据,其中:
块检测装置112被配置用于检测共享比率,共享比率表示通过数据划分装置的划分而获得的块数据之中的、配置写入目标数据中的预定范围的多个连续块数据与已经被连续地存储在存储设备中的、在预定范围中的多个块数据之间的共享部分的比率;并且
数据写入装置113被配置用于根据块检测装置检测到的共享比率而向存储设备中新存储通过数据划分装置的划分而获得的块数据。
(补充注释2)
根据补充注释1的存储***,其中:
块检测装置被配置用于在已经检测到通过数据划分装置的划分而获得的块数据中的特定块数据已经被存储在存储设备中的情况下,检测配置写入目标数据中的预定范围的、从特定块数据起连续的多个块数据与从内容与已经被存储在存储设备中的特定块数据相同的块数据起连续的、在预定范围中的多个块数据之间的共享比率;并且
数据写入装置被配置用于根据块检测装置检测到的共享比率而向存储设备中新存储特定块数据。
(补充注释3)
根据补充注释1或者2的存储***,其中块检测装置被配置用于检测通过数据划分装置的划分而获得的块数据之中的、配置写入目标数据中的预定范围的多个连续块数据中的每个块数据与已经被连续地存储在存储设备中的、在预定范围中的多个块数据中的每个块数据相同的比值作为共享比率,而不考虑多个连续块数据的顺序。
(补充注释4)
根据补充注释1至3中的任一补充注释的存储***,其中数据写入装置被配置用于在块检测装置检测到的共享比率等于或者小于先前设置的值的情况下,向存储设备中新存储通过数据划分装置的划分而获得的块数据。
(补充注释5)
根据补充注释1至4中的任一补充注释的存储***,其中数据写入装置被配置用于设置使得根据块检测装置检测到的共享比率而向存储设备中新存储的块数据的量变成等于或者小于预定量。
(补充注释6)
根据补充注释1至4中的任一补充注释的存储***,其中数据写入装置被配置用于设置使得重写块数据的量与在写入目标数据之中的、已经被存储在存储设备中的数据的量的比值变成等于或者小于先前设置的比值,该重写块数据是根据块检测装置检测到的共享比率而向存储设备中新存储的块数据。
(补充注释7)
根据补充注释6的存储***,其中数据写入装置被配置用于设置使得重写块数据的量与写入目标数据之中的、已经被存储在存储设备中的数据的量的比值变成等于或者小于5%。
(补充注释8)
一种包括指令的计算机程序,该指令用于使信息处理设备实现:
数据划分装置,用于将写入目标数据划分成多个块数据;
块检测装置,用于检查通过数据划分装置的划分而获得的相应块数据是否已经被存储在存储设备中;以及
数据写入装置,用于向存储设备中存储通过数据划分装置的划分而获得的相应块数据,并且在存储内容与已经被存储在存储设备中的块数据相同的其它块数据时,使得引用已经被存储在存储设备中的块数据作为其它块数据,其中:
块检测装置被配置用于检测共享比率,共享比率表示通过数据划分装置的划分而获得的块数据之中的、配置写入目标数据中的预定范围的多个连续块数据与已经被连续地存储在存储设备中的、在预定范围中的多个块数据之间的共享部分的比率;并且
数据写入装置被配置用于根据块检测装置检测到的共享比率而向存储设备中新存储通过数据划分装置的划分而获得的块数据。
(补充注释9)
根据补充注释8的计算机程序,其中:
块检测装置被配置用于在已经检测到通过数据划分装置的划分而获得的块数据中的特定块数据已经被存储在存储设备中的情况下,检测配置写入目标数据中的预定范围的、从特定块数据起连续的多个块数据与从内容与已经被存储在存储设备中的特定块数据相同的块数据起连续的、在预定范围中的多个块数据之间的共享比率;并且
数据写入装置被配置用于根据块检测装置检测到的共享比率而向存储设备中新存储特定块数据。
(补充注释10)
根据补充注释8或者9的计算机程序,其中数据写入装置被配置用于设置使得重写块数据的量与在写入目标数据之中的、已经被存储在存储设备中的数据的量的比值变成等于或者小于先前设置的比值,该重写块数据是根据块检测装置检测到的共享比率而向存储设备中新存储的块数据。
(补充注释11)
11.一种信息处理方法,包括:
将写入目标数据划分成多个块数据;
检查通过划分而获得的相应块数据是否已经被存储在存储设备中;以及
向存储设备中存储通过划分而获得的相应块数据,并且在存储内容与已经被存储在存储设备中的块数据相同的其它块数据时,通过使得引用已经被存储在存储设备中的块数据作为其它块数据来写入数据,
该信息处理方法还包括:
在将写入目标数据划分成块数据之后,检测共享比率,共享比率表示通过划分而获得的块数据之中的、配置写入目标数据中的预定范围的多个连续块数据与已经被连续地存储在存储设备中的、在预定范围中的多个块数据之间的共享部分的比率;并且
根据检测到的共享比率而向存储设备中新存储通过划分而获得的块数据。
(补充注释12)
根据补充注释11的信息处理方法,还包括:
在将写入目标数据划分成块数据之后,在已经检测到通过划分而获得的块数据的特定块数据已经被存储在存储设备中的情况下,检测配置写入目标数据中的预定范围的、从特定块数据起连续的多个块数据与从内容与已经被存储在存储设备中的特定块数据相同的块数据起连续的、在预定范围中的多个块数据之间的共享比率;并且
根据检测到的共享比率而向存储设备中新存储特定块数据。
(补充注释13)
根据补充注释11或者12的信息处理方法,还包括设置使得重写块数据的量与在写入目标数据之中的、已经被存储在存储设备中的数据的量的比值变成等于或者小于先前设置的比值,该重写块数据是根据块检测装置检测到的共享比率而向存储设备中新存储的块数据。
在存储设备中存储或者在计算机可读记录介质上记录以上提到的程序。例如,记录介质是便携介质、诸如软盘、光盘、光磁盘和半导体存储器。
虽然已经参照以上描述的示例性实施例和补充注释描述了本发明,但是本发明不限于以上示例性实施例。可以在本发明的范围内用本领域技术人员可以理解的各种方式更改本发明的配置和细节。
附图标记说明
1   存储***
2   加速器节点
3   存储节点
4   备份***
5   备份目标设备
11  数据划分部分
12  块检测部分
13  数据写入部分
14  数据取回部分
20  存储设备
100 存储***
111 数据划分装置
112 块检测装置
113 数据写入装置
120 存储设备

Claims (13)

1.一种存储***,包括:
数据划分装置,用于将写入目标数据划分成多个块数据;
块检测装置,用于检查通过所述数据划分装置的划分而获得的相应的所述块数据是否已经被存储在存储设备中;以及
数据写入装置,用于向所述存储设备中存储通过所述数据划分装置的划分而获得的相应的所述块数据,并且在存储内容与已经被存储在所述存储设备中的块数据相同的其它块数据时,使得引用已经被存储在所述存储设备中的所述块数据作为所述其它块数据,其中:
所述块检测装置被配置用于检测共享比率,所述共享比率表示通过所述数据划分装置的划分而获得的所述块数据之中的、配置所述写入目标数据中的预定范围的多个连续块数据与已经被连续地存储在所述存储设备中的、在预定范围中的多个块数据之间的共享部分的比率;并且
所述数据写入装置被配置用于根据由所述块检测装置检测到的所述共享比率,而向所述存储设备中新存储通过所述数据划分装置的划分而获得的所述块数据。
2.根据权利要求1所述的存储***,其中:
所述块检测装置被配置用于在已经检测到通过所述数据划分装置的划分而获得的所述块数据中的特定块数据已经被存储在所述存储设备中的情况下,检测配置所述写入目标数据中的预定范围的、从所述特定块数据起连续的多个块数据与从内容与已经被存储在所述存储设备中的所述特定块数据相同的块数据起连续的、在预定范围中的多个块数据之间的所述共享比率;并且
所述数据写入装置被配置用于根据由所述块检测装置检测到的所述共享比率,而向所述存储设备中新存储所述特定块数据。
3.根据权利要求1或者2所述的存储***,其中所述块检测装置被配置用于检测通过所述数据划分装置的划分而获得的所述块数据之中的、配置所述写入目标数据中的所述预定范围的所述多个连续块数据中的每个块数据与已经被连续地存储在所述存储设备中的、在所述预定范围中的所述多个块数据中的每个块数据相同的比值作为所述共享比率,而不考虑所述多个连续块数据的顺序。
4.根据权利要求1至3中的任一权利要求所述的存储***,其中所述数据写入装置被配置用于在由所述块检测装置检测到的所述共享比率等于或者小于先前设置的值的情况下,向所述存储设备中新存储通过所述数据划分装置的划分而获得的所述块数据。
5.根据权利要求1至4中的任一权利要求所述的存储***,其中所述数据写入装置被配置用于设置使得根据由所述块检测装置检测到的所述共享比率而被新存储到所述存储设备中的所述块数据的量变成等于或者小于预定量。
6.根据权利要求1至4中的任一权利要求所述的存储***,其中所述数据写入装置被配置用于设置使得重写块数据的量与在所述写入目标数据之中的、已经被存储在所述存储设备中的数据的量的比值变成等于或者小于先前设置的比值,所述重写块数据是根据由所述块检测装置检测到的所述共享比率而被新存储到所述存储设备中的所述块数据。
7.根据权利要求6所述的存储***,其中所述数据写入装置被配置用于设置使得在所述重写块数据之中的、已经被存储在所述存储设备中的所述数据的所述量与所述写入目标数据的所述量的所述比值变成等于或者小于5%。
8.一种包括指令的计算机程序,所述指令用于使得信息处理设备实现:
数据划分装置,用于将写入目标数据划分成多个块数据;
块检测装置,用于检查通过所述数据划分装置的划分而获得的相应的所述块数据是否已经被存储在存储设备中;以及
数据写入装置,用于向所述存储设备中存储通过所述数据划分装置的划分而获得的相应的所述块数据,并且在存储内容与已经被存储在所述存储设备中的块数据相同的其它块数据时,使得引用已经被存储在所述存储设备中的所述块数据作为所述其它块数据,其中:
所述块检测装置被配置用于检测共享比率,所述共享比率表示通过所述数据划分装置的划分而获得的所述块数据之中的、配置所述写入目标数据中的预定范围的多个连续块数据与已经被连续地存储在所述存储设备中的、在预定范围中的多个块数据之间的共享部分的比率;并且
所述数据写入装置被配置用于根据由所述块检测装置检测到的所述共享比率,而向所述存储设备中新存储通过所述数据划分装置的划分而获得的所述块数据。
9.根据权利要求8所述的计算机程序,其中:
所述块检测装置被配置用于在已经检测到通过所述数据划分装置的划分而获得的所述块数据的特定块数据已经被存储在所述存储设备中的情况下,检测配置所述写入目标数据中的预定范围的、从所述特定块数据起连续的多个块数据与从内容与已经被存储在所述存储设备中的所述特定块数据相同的块数据起连续的、在预定范围中的多个块数据之间的所述共享比率;并且
所述数据写入装置被配置用于根据由所述块检测装置检测到的所述共享比率,而向所述存储设备中新存储所述特定块数据。
10.根据权利要求8或者9所述的计算机程序,其中所述数据写入装置被配置用于设置使得重写块数据的量与在所述写入目标数据之中的、已经被存储在所述存储设备中的数据的量的比值变成等于或者小于先前设置的比值,所述重写块数据是根据由所述块检测装置检测到的所述共享比率而被新存储到所述存储设备中的所述块数据。
11.一种信息处理方法,包括:
将写入目标数据划分成多个块数据;
检查通过划分而获得的相应的所述块数据是否已经被存储在存储设备中;以及
向所述存储设备中存储通过划分而获得的相应的所述块数据,并且在存储内容与已经被存储在所述存储设备中的块数据相同的其它块数据时,通过使得引用已经被存储在所述存储设备中的所述块数据作为所述其它块数据来写入数据,
所述信息处理方法,还包括:
在将所述写入目标数据划分成所述块数据之后,检测共享比率,所述共享比率表示通过划分而获得的所述块数据之中的、配置所述写入目标数据中的预定范围的多个连续块数据与已经被连续地存储在所述存储设备中的、在预定范围中的多个块数据之间的共享部分的比率;以及
根据检测到的所述共享比率,而向所述存储设备中新存储通过划分而获得的所述块数据。
12.根据权利要求11所述的信息处理方法,还包括:在将所述写入目标数据划分成所述块数据之后,在已经检测到通过划分而获得的所述块数据中的特定块数据已经被存储在所述存储设备中的情况下,检测配置所述写入目标数据中的预定范围的、从所述特定块数据起连续的多个块数据与从内容与已经被存储在所述存储设备中的所述特定块数据相同的块数据起连续的、在预定范围中的多个块数据之间的所述共享比率;以及
根据检测到的所述共享比率,而向所述存储设备中新存储所述特定块数据。
13.根据权利要求11或者12所述的信息处理方法,还包括设置使得重写块数据的量与在所述写入目标数据之中的、已经被存储在所述存储设备中的数据的量的比值变成等于或者小于先前设置的比值,所述重写块数据是根据由所述块检测装置检测到的所述共享比率而被新存储到所述存储设备中的所述块数据。
CN201280045235.1A 2011-09-16 2012-09-10 存储*** Active CN103797470B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161535734P 2011-09-16 2011-09-16
US61/535,734 2011-09-16
PCT/JP2012/005700 WO2013038632A1 (en) 2011-09-16 2012-09-10 Storage system

Publications (2)

Publication Number Publication Date
CN103797470A true CN103797470A (zh) 2014-05-14
CN103797470B CN103797470B (zh) 2017-02-15

Family

ID=47882885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280045235.1A Active CN103797470B (zh) 2011-09-16 2012-09-10 存储***

Country Status (5)

Country Link
US (1) US9671974B2 (zh)
EP (1) EP2756403B1 (zh)
JP (1) JP5418719B2 (zh)
CN (1) CN103797470B (zh)
WO (1) WO2013038632A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106066818A (zh) * 2016-05-25 2016-11-02 重庆大学 一种提高重复数据删除备份***恢复性能的数据布局方法
CN106662981A (zh) * 2014-06-27 2017-05-10 日本电气株式会社 存储设备、程序和信息处理方法
CN110955614A (zh) * 2018-09-26 2020-04-03 Oppo广东移动通信有限公司 文件缓存的回收方法、装置、存储介质及终端
CN112463070A (zh) * 2016-05-05 2021-03-09 美光科技公司 非确定性存储器协议
CN113448491A (zh) * 2020-03-26 2021-09-28 伊姆西Ip控股有限责任公司 存储***的数据迁移

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122692B1 (en) * 2011-09-15 2015-09-01 Symantec Corporation Systems and methods for reducing file-system fragmentation when restoring block-level backups utilizing an identification module, an optimization module, and a restore module
US9361028B2 (en) * 2013-05-07 2016-06-07 Veritas Technologies, LLC Systems and methods for increasing restore speeds of backups stored in deduplicated storage systems
JP6089970B2 (ja) * 2013-05-29 2017-03-08 三菱電機株式会社 映像データ削減装置および再生装置
US9256612B1 (en) 2013-06-11 2016-02-09 Symantec Corporation Systems and methods for managing references in deduplicating data systems
US9298724B1 (en) 2013-06-14 2016-03-29 Symantec Corporation Systems and methods for preserving deduplication efforts after backup-job failures
US9582194B2 (en) * 2013-09-27 2017-02-28 Veritas Technologies Llc Techniques for improving performance of a backup system
WO2016031051A1 (ja) * 2014-08-29 2016-03-03 株式会社日立製作所 ストレージ装置
US10031691B2 (en) * 2014-09-25 2018-07-24 International Business Machines Corporation Data integrity in deduplicated block storage environments
US20160283390A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Storage cache performance by using compressibility of the data as a criteria for cache insertion
US9696931B2 (en) 2015-06-12 2017-07-04 International Business Machines Corporation Region-based storage for volume data and metadata
US10853181B1 (en) * 2015-06-29 2020-12-01 EMC IP Holding Company LLC Backing up volumes using fragment files
US20170052889A1 (en) * 2015-08-17 2017-02-23 Strato Scale Ltd. Cache-aware background storage processes
US10324919B2 (en) 2015-10-05 2019-06-18 Red Hat, Inc. Custom object paths for object storage management
US10582401B2 (en) * 2016-03-08 2020-03-03 Aurora Insight Inc. Large scale radio frequency signal information processing and analysis system
US9886449B1 (en) * 2016-07-22 2018-02-06 Red Hat, Inc. Delayed allocation for data object creation
US9588976B1 (en) * 2016-07-22 2017-03-07 Red Hat, Inc. Delayed allocation for a direct access non-volatile file system
WO2018092288A1 (ja) * 2016-11-18 2018-05-24 株式会社日立製作所 ストレージ装置及びその制御方法
JP6341307B1 (ja) * 2017-03-03 2018-06-13 日本電気株式会社 情報処理装置
US11809384B2 (en) * 2017-03-06 2023-11-07 Microsoft Technology Licensing, Llc Optimized data storage for fast retrieval
US10789002B1 (en) * 2017-10-23 2020-09-29 EMC IP Holding Company LLC Hybrid data deduplication for elastic cloud storage devices
US10963436B2 (en) 2018-10-31 2021-03-30 EMC IP Holding Company LLC Deduplicating data at sub-block granularity
KR20210034897A (ko) 2019-09-23 2021-03-31 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7567188B1 (en) * 2008-04-10 2009-07-28 International Business Machines Corporation Policy based tiered data deduplication strategy
US20100205389A1 (en) * 2009-02-06 2010-08-12 International Business Machines Corporation Backup of deduplicated data

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08115238A (ja) 1994-10-18 1996-05-07 Fuji Xerox Co Ltd ファイルシステム
US7444389B2 (en) 2003-12-09 2008-10-28 Emc Corporation Methods and apparatus for generating a content address to indicate data units written to a storage system proximate in time
WO2006094367A1 (en) * 2005-03-11 2006-09-14 Rocksoft Limited Method for detecting the presence of subblocks in a reduced-redundancy storage system
US8214517B2 (en) 2006-12-01 2012-07-03 Nec Laboratories America, Inc. Methods and systems for quick and efficient data management and/or processing
JP4990066B2 (ja) * 2007-08-21 2012-08-01 株式会社日立製作所 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム
US20100082636A1 (en) * 2008-09-25 2010-04-01 Nec Laboratories America, Inc. Methods and Apparatus for Content-Defined Node Splitting
US20110161607A1 (en) * 2009-04-14 2011-06-30 Hitachi ,Ltd. Storage system and control method therefor
WO2011099098A1 (ja) 2010-02-10 2011-08-18 日本電気株式会社 ストレージ装置
US8499131B2 (en) 2010-04-13 2013-07-30 Hewlett-Packard Development Company, L.P. Capping a number of locations referred to by chunk references
US20120036113A1 (en) * 2010-08-04 2012-02-09 Mark David Lillibridge Performing deduplication of input data at plural levels
US20120198152A1 (en) * 2011-02-01 2012-08-02 Drobo, Inc. System, apparatus, and method supporting asymmetrical block-level redundant storage
JP5561425B2 (ja) * 2011-02-28 2014-07-30 日本電気株式会社 ストレージシステム
US9823981B2 (en) * 2011-03-11 2017-11-21 Microsoft Technology Licensing, Llc Backup and restore strategies for data deduplication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7567188B1 (en) * 2008-04-10 2009-07-28 International Business Machines Corporation Policy based tiered data deduplication strategy
US20100205389A1 (en) * 2009-02-06 2010-08-12 International Business Machines Corporation Backup of deduplicated data

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106662981A (zh) * 2014-06-27 2017-05-10 日本电气株式会社 存储设备、程序和信息处理方法
CN112463070A (zh) * 2016-05-05 2021-03-09 美光科技公司 非确定性存储器协议
CN106066818A (zh) * 2016-05-25 2016-11-02 重庆大学 一种提高重复数据删除备份***恢复性能的数据布局方法
CN106066818B (zh) * 2016-05-25 2019-05-17 重庆大学 一种提高重复数据删除备份***恢复性能的数据布局方法
CN110955614A (zh) * 2018-09-26 2020-04-03 Oppo广东移动通信有限公司 文件缓存的回收方法、装置、存储介质及终端
CN113448491A (zh) * 2020-03-26 2021-09-28 伊姆西Ip控股有限责任公司 存储***的数据迁移
CN113448491B (zh) * 2020-03-26 2024-05-17 伊姆西Ip控股有限责任公司 存储***的数据迁移

Also Published As

Publication number Publication date
CN103797470B (zh) 2017-02-15
US20140025917A1 (en) 2014-01-23
JP5418719B2 (ja) 2014-02-19
EP2756403A1 (en) 2014-07-23
EP2756403B1 (en) 2018-08-01
WO2013038632A1 (en) 2013-03-21
JP2013541055A (ja) 2013-11-07
EP2756403A4 (en) 2015-05-06
US9671974B2 (en) 2017-06-06

Similar Documents

Publication Publication Date Title
CN103797470A (zh) 存储***
US10176190B2 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
EP3161609B1 (en) Storage device, program, and information processing method
US10031675B1 (en) Method and system for tiering data
CN103098035B (zh) 存储***
US10725669B2 (en) Incremental snapshot based technique on paged translation systems
Ng et al. Revdedup: A reverse deduplication storage system optimized for reads to latest backups
CN103080910B (zh) 存储***
CN105718548B (zh) 基于去重复存储***中用于可扩展引用管理的***和方法
CN102667703B (zh) 用于虚拟磁带库***中的优化回收处理的***和方法
CN109800185B (zh) 一种数据存储***中的数据缓存方法
WO2015199577A1 (en) Metadata structures for low latency and high throughput inline data compression
CN105701024B (zh) 一种存储设备及其垃圾数据回收的方法
CN103473150A (zh) 一种用于数据去重***中的碎片重写方法
Fu et al. Reducing fragmentation for in-line deduplication backup storage via exploiting backup history and cache knowledge
JP2017079053A (ja) ストレージジャーナリングを改善する方法およびシステム
Zou et al. The dilemma between deduplication and locality: Can both be achieved?
US20180004652A1 (en) Translation Lookup and Garbage Collection Optimizations on Storage System with Paged Translation Table
Yim et al. A fast start-up technique for flash memory based computing systems
CN105787037A (zh) 一种重复数据的删除方法及装置
US20150134875A1 (en) Maintaining at least one journal and/or at least one data structure by circuitry
CN109408416B (zh) 一种地址映射表项页管理方法及装置
Kaczmarczyk et al. Reducing fragmentation impact with forward knowledge in backup systems with deduplication
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
Liu et al. Page replacement algorithm based on counting bloom filter for NAND flash memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant