具体实施方式
<第一示例性实施例>
将参照图1至图15描述本发明的第一示例性实施例。图1是示出了整个系统的配置的方框图。图2是示意性地示出了存储系统的方框图,并且图3是示出了该配置的功能框图。图4至图6是用于说明存储系统的操作的说明图。图7至图14是示出了在存储系统中的数据存储状态的视图。图15是示出了存储系统的操作的流程图。
这里的这一示例性实施例示出了在后文描述的第二示例性实施例中公开的存储系统的具体例子。下文将描述通过连接多个服务器计算机来配置存储系统的情况。然而,本发明的存储系统并不限于使用多个计算机的配置并且可以由一个计算机来配置。
[配置]
如图1中所示,本发明的存储系统10经由网络N连接到控制备份过程的备份系统11。备份系统11获取在经由网络N连接的备份目标设备12中存储的备份目标数据(存储目标数据)并且请求存储系统10存储。因而,存储系统10存储请求作为备份存储的备份目标数据。
如图2中所示,这一示例性实施例的存储系统10使用连接多个服务器计算机这样的配置。具体而言,存储系统10配备有:加速器节点10A,充当控制存储系统10的存储/再现操作的服务器计算机;以及存储节点10B,充当配备有存储数据的存储设备的服务器计算机。加速器节点10A的数目和存储节点10B的数目并不限于图2中所示数目,并且可以使用连接更多节点10A和更多节点10B这样的配置。
更进一步地,这一示例性实施例的存储系统10是如下内容地址存储系统,该系统划分数据并且使数据冗余,分布数据并且存储到多个存储设备中,并且通过依照待存储的数据的内容而设置的唯一内容地址来指定存储数据的存储位置。后文将描述这一内容地址存储系统。
假定存储系统10为一个系统,则下文将描述存储系统10的配置和功能。换而言之,可以在加速器节点10A或者存储节点10B的任何一个中包括下文描述的存储系统10的配置和功能。存储系统10并不限于包括加速器节点10A和存储节点10B的配置。存储系统10可以具有任何配置,并且例如可以由一个计算机来配置。此外,存储系统10并不限于内容地址存储系统。
图3示出了存储系统10的配置。如在这一附图中所示,存储系统10配备有存储数据的数据存储设备30和控制将数据存储到数据存储设备30中和从数据存储设备30检索数据的操作的数据处理设备20。实际上,数据处理设备20由多个诸如在图2中示出的加速器节点10A的CPU(中央处理单元)和存储节点10B的CPU之类的运算设备来配置。此外,存储设备30由在图2中示出的加速器节点10A的硬盘和存储节点10B的硬盘来配置。
继而如图3中所示,数据处理设备20配备有通过在程序中的构建来配置的流ID提供单元21、块生成单元22、重复检验单元23、片段生成单元24、分布存储控制单元25和存储位置管理单元26。此外,数据存储设备30配备有各自存储备份目标数据的多个存储设备31和存储被存储数据的存储位置的存储位置信息存储单元32。下文将详细描述各个配置。同时将参照图4至图14描述各个配置进行的数据处理的一个方面。例如在存储于诸如CD-ROM之类的存储介质中的状态下将上述程序提供给存储系统10。备选地,可以在网络上的另一服务器计算机的存储设备中存储并且经由网络从另一服务器计算机向存储系统10提供该程序。
首先,在如图5中的箭头Y所示的接受备份目标数据A的输入时,流ID提供单元21(标识信息提供装置)提供如下流ID,该流ID是辨别作为数据组的备份目标数据A的标识信息。例如,流ID提供单元21向备份目标数据A提供流ID=ST1而向备份目标数据B(在附图中未示出)提供流ID=ST2。
流ID可以是如下信息,该信息不仅辨别备份目标数据而且辨别作为备份目标数据A的输出源的备份目标设备12。换而言之,流ID提供单元21向按照预定规则收集的各备份目标数据提供不同的流ID。
更进一步地,在接受备份目标数据A的输入时,块生成单元22如图4中和如图5中的箭头Y2所示将备份目标数据A划分成预定容量(例如64KB)的块数据D。继而,基于这一块数据D的数据内容,块生成单元22计算代表数据内容的唯一哈希值H(内容标识信息)(箭头Y3)。例如,通过使用预设哈希函数从块数据D的数据内容计算哈希值H。在加速器节点10A中执行块生成单元22进行的过程。
当将备份目标数据A划分成块数据D时,块生成单元22也向各个块数据D提供如上文所述向备份目标数据A提供的流ID。如上文提到的那样,流ID提供单元21并不限于向备份目标数据A提供流ID。例如,当块生成单元22将备份目标数据A划分成块数据D时,流ID提供单元21可以向各块数据D提供标识备份目标数据A的相同流ID。
更进一步地,重复检验单元23(重复检验装置)通过使用备份目标数据A的块数据D的哈希值H来检验块数据D是否已经存储于存储设备31中。具体而言,哈希值H和代表已经存储的块数据D的存储位置的内容地址CA相关并且注册于MFI(主要片段索引)文件中。因此,在块数据D的在存储之前计算的哈希值H存在于MIF文件中的情况下,重复检验单元23能够确定已经存储具有相同内容的块数据D(图5中的箭头Y4)。在这一情况下,重复检验单元23从MFI文件获取与MFI内与块数据D在存储之前的哈希值H一致的哈希值H相关的内容地址CA。继而,重复检验单元23返回该内容地址CA作为需要存储的块数据D的内容地址CA。于是,通过使用这一内容地址CA而引用的已经存储的数据用作需要存储的块数据D,并且存储需要存储的块数据D就变得不必要。
在存在多个存储节点10B的情况下,基于如上文所述根据块数据D计算的哈希值H,确定出称为写入发起器(WI)的一个存储节点10,该存储节点处置在数据存储时的发起过程(将在后文中描述的压缩过程和分段过程)。
更进一步地,片段生成单元24(数据集生成装置)压缩如上文所述被重复检验单元23确定为尚未存储的块数据D,并且如图5中的箭头Y5所示将该数据划分成具有预定容量的多个片段数据。例如,如图4中的标号D1至D9所示,片段生成单元24将数据划分成九个片段数据(划分数据41)。此外,片段生成单元24生成冗余数据从而即使通过划分而获得的一些片段数据丢失仍然可以恢复原始块数据,并且向通过划分而获得的片段数据41添加冗余数据。例如,如图4中的标号D10至D12所示,片段生成单元24添加三个片段数据(冗余数据42)。因而,片段生成单元24生成如下数据集40,该数据集包括由九个划分数据41和三个冗余数据组成的十二个片段数据。由上文提到的称为WI的一个存储节点10B来执行片段生成单元24进行的过程。
继而,片段生成单元24向所有生成的片段数据D1至D12提供向如下块数据D提供的流ID,该块数据D是片段数据的起源,也就是要从片段数据D1至D12恢复的块数据D。
接下来将描述分布存储控制单元25(分布存储控制装置)的基本功能。分布存储控制单元25逐个地分布和存储组成由片段生成单元24生成的数据集的片段数据到形成于存储设备31中的存储区中。例如,如图4中所示,在生成十二个片段数据D1至D12的情况下,分布存储控制单元25将片段数据D1至D12之一存储到形成于十二个存储设备31中的数据存储文件F1至F12(数据存储区)之一中(参照图5中的箭头Y6)。
这时,分布存储控制单元25在各个数据存储文件F1至F12内的相同位置中存储组成一个数据集40的各个片段数据D1至D2。例如,如图7中所示,分布存储控制单元25参照各个数据存储文件F1至F12的开头在相同位置中存储所有片段数据D1至D12。在图7的例子中,附图中的上端位置为文件的开头位置。
具体而言,在先前未设置各个数据存储文件F1至F12中的存储位置的情况下,分布存储控制单元25在已经存储于各个存储文件F1至F12中的数据旁边的空余存储位置中分别存储片段数据D1至D12。例如在图8中,已经在各个数据存储文件F1至F12中存储数据直至网格部分,并且分布存储控制单元25将各个片段数据D1至D12存储到其旁边区域中,从而使得组成一个数据集40的所有片段数据D1至D12的存储位置一致。此外具体而言,分布存储控制单元25在相同时序将组成一个数据集40的各个片段数据D1至D12存储到各个数据存储文件F1至F12中。
然而,在如上所述的存储中,当同时作出针对存储备份目标数据的多个请求时,有可能如图9中所示将组成不同流ID(ST1、ST2和ST3)的数据集的片段数据交替存储到各数据存储文件F1至F12中。在图9中,相同图案图示了相同流ID的数据集。
于是,在这一示例性实施例中的分布存储控制单元25在存储到各个数据存储文件F1至F12中之前将各个片段数据D1至D12一次存储到针对各流ID的不同缓冲存储器中。此后,分布存储控制单元25将缓冲存储器内的片段数据D1至D12存储到各个数据存储文件F1至F12中。将参照图10至13描述其具体例子。
首先,分布存储控制单元25针对各数据存储文件F1至F12为各流ID设置缓冲存储器。例如,在设置与三个流ID(ST1、ST2和ST3)对应的缓冲存储器BF1、BF2和BF3的情况下,如图10中所示,分布存储控制单元25为一个数据存储文件F1设置三个缓冲存储器BF1、BF2和BF3并且设置十二组缓冲存储器。
继而,分布存储控制单元25将片段数据D1至D12存储到与在片段数据D1至D12中所包含的流ID对应的缓冲存储器BF1、BF2或者BF3中。在图10中所示出的例子中,假定原始块数据D(备份目标数据A)的数据集40被提供有流ID=ST1。在这一情况下,分布存储控制单元25将组成数据集40的片段数据D1至D12存储到为以后变成储存的各个数据存储文件F1至F12设置的与流ID=ST1对应的缓冲存储器BF1中。换而言之,分布存储控制单元25将片段数据D1存储到数据存储文件F1的缓冲存储器BF1中,将片段数据D2存储到数据存储文件F2的缓冲存储器BF1中,并且以类似方式将片段数据存储到所有数据存储文件的缓冲存储器中。这时,分布存储控制单元25在相同时序将各个片段数据D1至D2存储到已经存储在各个缓冲存储器BF1中的数据旁边的空余存储区中。
于是,在各个缓冲存储器BF1至BF3内连续定位和存储具有对应流ID的片段数据。此外,这时组成相同数据集的各个片段数据D1至D2存储于各个缓冲存储器BF1至BF3内的相同位置中。例如,如图10中所示,在分布存储控制单元25将数据集40的片段数据D1和D2存储到各个缓冲存储器BF1中的情况下,片段数据D1和D2如图11中所示存储于缓冲存储器BF1内的作为相同位置的最后的存储位置中。通过这样按照流ID分布片段数据并且存储到与流ID对应的各个缓冲存储器中,与所有数据存储文件F1至F12对应的针对具体流ID的缓冲存储器的所有容量变得在任何时序都相同。在图11的示例中,所有缓冲存储器BF1的容量都相同,并且所有缓冲存储器BF2和BF3的容量对于各对应的流ID而言也都相同。
继而,分布存储控制单元25在缓冲存储器BF1至BF3达到预定容量(例如变满)时将缓冲存储器BF1至BF3中的所有片段数据存储到数据存储文件F1至F12中。在图11的示例中,与流ID=ST1对应的所有缓冲存储器BF1同时变满,并且因此分布存储控制单元25在相同时序将各个缓冲存储器BF1内的片段数据存储到各个数据存储文件F1至F12中。这时,分布存储控制单元25在已经存储在数据存储文件F1至F12中的数据旁边的空余存储位置中分别存储片段数据D1至D12。图12的例子示出了在数据存储文件F1至F12空余的情况下从各个数据存储文件F1至F12的开头在缓冲存储器BF1内存储片段数据的一个方面。
如图12中所示,在各个数据存储文件F1至F12中,存储组成相同数据集40的片段数据D1至D12,从而使其存储位置一致。这时连续存储提供有相同流ID的数据集。在图13中示出了与其它流ID(ST2)对应的缓冲存储器BF随后变满并且在缓冲存储器BF内的片段数据存储到数据存储文件F1至F12中这一方面。
更进一步地,分布存储控制单元25还具有如下功能,该功能不仅对如上文提到的要存储到数据存储文件中的片段数据而且还对已经存储的片段数据执行对存储位置的事后改变,从而使得具有相同流ID的片段数据被连续定位。例如,当存储系统10的可用资源为预定值或者更多时,分布存储控制单元25移动存储于各个数据存储文件F1至F12中的片段数据的存储位置,从而使得具有相同流ID的片段数据被连续定位。具体而言,分布存储控制单元25可以对由片段数据组成的整个数据集40执行对如图9中所示的存储于各个数据存储文件F1至F12中的相同存储位置(水平对准)中的所有片段数据的存储位置的改变。于是,分布存储控制单元25可以从如图9中所示的交替存储具有不同流ID的数据集这样的状态改变成如图14中所示的连续存储具有相同流ID(ST1、ST2、ST3)的数据集这样的状态。
在上文描述中,当划分块数据D以生成数据集40时,片段生成单元24向组成数据集40的各个片段数据D1至D12提供相同的流ID,但是并非一定要向各个片段数据D1至D12提供。例如,通过将组成根据各个块数据D生成的数据集40的片段数据D1至D12存储到与向各个块数据D提供的流ID对应的数据缓冲器BF1至BF3中,有可能按照流ID连续存储片段数据。由于组成相同数据集40的各个片段数据D1至D12存储于缓冲存储器BF1、BF2、BF3内和数据存储文件F1至F12内的相同存储位置,所以有可能一起改变相同存储位置中的所有片段数据的存储位置以按照数据集改变存储位置。
更进一步地,分布存储控制单元25向组成数据集40的各个片段数据D1至D12提供相同的标识信息(写入记录序列号)以便标识片段数据组成了相同数据集40并且存储到数据存储文件F1至F12中。继而,分布存储控制单元25在使得存储系统10的资源可用的任何时序检验标识信息,由此能够检验组成相同数据集40的各个片段数据是否存储于各个数据存储文件F1至F12内的相同存储位置中。因此,如果存储于各个数据存储文件F1至F12内的相同存储位置中的各个片段数据并未都包括相同的标识信息(写入记录序列号),则分布存储控制单元25纠正存储位置从而使得各个片段数据存储于相同存储位置中,并且重新存储数据。
在上文描述中,分布存储控制单元25在各个逻辑存储区(如数据存储文件F1至F12)内的相同位置中存储组成数据集40的各个片段数据D1至D12,但是也可以在各个存储设备31内的物理上相同的位置中存储。
更进一步地,存储位置管理单元26(存储位置信息管理装置)生成和管理如下内容地址CA,该内容地址CA代表如上文所述存储于存储设备31中的片段数据D1至D12的存储位置,也就是要通过片段数据D1至D12来恢复的块数据D的存储位置。具体而言,存储位置管理单元26通过组合基于存储的块数据D的内容而计算的哈希值H的部分(短哈希)(例如在哈希值H中的开头8个字节)与代表逻辑存储位置的信息来生成内容地址CA。继而,存储位置管理单元26向存储系统10内的文件系统(即向加速器节点10A)返回这一内容地址CA(图5中的箭头Y7)。加速器节点10A继而将诸如备份目标数据的文件名之类的标识信息与内容地址CA相关联并且在文件系统中加以管理。
更进一步地,存储位置管理单元26将块数据D的内容地址CA与块数据D的哈希值H相关联,并且各个存储节点10B在MFI文件中管理。因此,内容地址CA与指定文件、哈希值H等的信息相关联并被存储到加速器节点10A和存储节点10B的存储设备30(存储位置信息存储单元32)中。
此外,存储位置管理单元26执行对检索如上文所述存储的备份目标数据的控制。例如,当存储系统10接受指定的具体文件的检索请求(参照图6中的箭头Y11)时,存储位置管理单元26基于文件系统首先指明由短哈希(作为与检索请求所涉及的文件对应的哈希值的部分)和逻辑位置的信息组成的内容地址CA(参照图6中的箭头Y12)。继而,存储位置管理单元26检验内容地址CA是否注册于MFI文件中(参照图6中的箭头13)。在未注册内容地址CA的情况下未存储请求的数据,从而使得存储位置管理单元26返回错误响应。
另一方面,在注册了与检索请求相关的内容地址CA的情况下,存储位置管理单元26指定内容地址CA所指明的存储位置并且检索存储于指定存储位置中的各片段数据作为请求检索的数据(参照图6中的箭头Y14)。这时,如果知道存储各个片段的数据存储文件F1至F12和片段数据之一在数据存储文件中的存储位置,则存储位置管理单元26可以指定其它片段数据的存储位置,这是因为存储位置是相同的。
继而,存储位置管理单元26根据响应于检索请求而检索的各个片段数据恢复块数据D(参照图6中的箭头Y15)。此外,存储位置管理单元26连接多个恢复的块数据D以恢复成如文件A的数据组,并且返回到控制检索的加速器节点10A(参照图6中的箭头Y16)。
[操作]
接下来将参照图15的流程图来描述上述存储系统的操作。
起先将描述存储系统10经由备份系统11从预定备份目标设备12接受备份目标数据并且将备份目标数据存储到存储设备31中的操作(数据存储过程)。
首先,在接受备份目标数据A的输入时,存储系统10(即,加速器节点10A)提供流ID,该流ID是将备份目标数据A辨别为数据组的标识信息(步骤S1,标识信息提供步骤)。
继而,加速器节点10A将备份目标数据A划分成预定容量(例如64KB)的块数据D(步骤S2)。基于该块数据D的数据内容,加速器节点10A计算代表数据内容的唯一哈希值H(内容标识信息)(步骤S3)。继而,检验这一哈希值H是否注册于MFI文件中。这里,在哈希值H已注册的情况下,向文件系统返回与MFI文件内的块数据D的哈希值H相关的内容地址CA作为该块数据D的存储位置。换而言之,由于存储与备份目标数据相同的数据,所以考虑通过使用已经存储的相同数据来存储备份目标数据。因此,在以后检索这一备份目标数据时,文件系统检索内容地址CA所代表的存储位置的数据,由此能够检索相同数据。
另一方面,在块数据D的哈希值未注册于MFI文件中的情况下,也就是说,在未存储与块数据D相同的数据的情况下,执行存储块数据D的过程。这时,首先,存储节点10B基于如上文所述计算的哈希值的部分实际存储该数据,并且确定存储节点10B之一作为如下文所述对块数据D执行预存储过程的写入发起器(WI)。
当如上文所述将备份目标数据A划分成块数据D时,也向各个块数据D提供如上文所述向备份目标数据A提供的流ID。
随后,如上文所述确定为WI的存储节点10B压缩块数据D并且随后划分成例如九个片段数据(步骤S4)。此外,确定为WI的存储节点10B例如向片段数据添加三个冗余数据,从而使得即使一些划分数据丢失仍然可以恢复块数据D。继而,确定为WI的存储节点10B生成如下数据集,该数据集包括由九个划分数据和三个冗余数据组成的十二个片段数据(步骤S5,数据集生成步骤)。
随后,确定为WI的存储节点10B向各个片段提供用于标识数据集的ID(步骤S6)。换而言之,确定为WI的存储节点10B向通过划分一个块数据D而生成的并且组成数据集的所有片段数据提供相同ID。
继而,存储节点10B针对各数据存储文件F1至F12为各流ID设置缓冲存储器。继而,存储节点10B将各个片段数据D1至D12存储到与在片段数据D1至D12中包含的流ID对应的缓冲存储器BF1、BF2、BF3中(步骤S7)。这时,存储节点10B总体上在相同时序在已经存储于各个缓冲存储器BF1至BF3内的数据旁边的空余存储区中存储各个片段数据D1至D12。
于是,在各个缓冲存储器BF1、BF2和BF3内连续定位和存储具有对应流ID的片段数据。另外在这时,组成相同数据集的各个片段数据D1至D12存储于缓冲存储器BF1、BF2、BF3内的相同存储位置中。
此后,在缓冲存储器BF1、BF2、BF3达到预定容量,例如变满(在步骤S8为“是”)时,存储节点10B将缓冲存储器BF1、BF2、BF3内的片段数据存储到数据存储文件F1至F12中(步骤S9,分布存储控制步骤)。这时,存储节点10B在各个数据存储文件F1至F12中存储的数据旁边的空余存储位置中分别存储片段数据D1至D12。将片段数据从缓冲存储器存储到数据存储文件中的时刻并不一定限于上述时刻。例如可以在已经从某一参考时刻流逝设定时间段之后的时刻进行上述步骤。
因而,存储节点10B可以在各个数据存储文件F1至F12内的相同位置中存储组成一个数据集40的所有片段数据D1至D12。另外因而具有相同流ID的数据连续存储于各个数据文件F1至F12内。
继而,存储节点10B组合基于存储的块数据D的内容计算的哈希值H的部分(开头8个字节)与代表逻辑存储位置的信息,由此生成代表存储于存储设备31中的片段数据D1至D12的存储位置的内容地址CA。继而,存储节点10B向加速器节点10A返回这一内容地址CA。然后,加速器节点10A将返回的内容地址CA与实际存储的备份目标数据的文件名等相关联并且在文件系统中管理。
更进一步地,存储节点10B将所生成的块数据D的内容地址CA与块数据D的哈希值H相关联并且在MFI文件中管理。如上文提到的那样,管理哈希值H和内容地址CA的MFI文件在新存储备份目标数据时用于检验是否已经存储相同内容的数据。
此后,在任何时刻,例如当存储系统10的可用资源为预定或者更多(在步骤S10为“是”)时,对已经存储的片段数据执行存储位置的事后改变过程,从而使得具有相同流ID的片段数据被连续定位(步骤S11)。在这一过程中,检验存储于各个存储文件F1至F2的相同存储位置中的各个片段数据中的流ID,并且改变片段数据的存储位置,从而使得具有相同流ID的更多片段数据的存储位置(也就是更多数据集的存储位置)变得连续。
这里,在将各个片段数据D1至D12存储到各个数据存储文件F1至F12中时,也就是在将片段数据从确定为WI的存储节点10B存储到其它存储节点10B中时,在存储节点10B之间的通信可能变少或者通信延迟可能出现。在这些情况下,有可能的是组成一个数据集40的所有片段数据D1至D12并非都存储于各个数据存储文件F1至F12内的相同位置中。假设这样的情况,在任何时刻,例如当资源可用时,存储系统10参照在已经存储的各个片段数据D1至D12中包含的各数据集的标识信息(写入记录序列号)执行重新存储过程,从而使得组成一个数据集40的所有片段数据D1至D12都存储于各个数据存储文件F1至F12内的相同位置中。
接下来将描述存储系统10经由备份系统11接收针对数据检索的请求并且从存储设备31检索数据的操作(数据检索步骤)。
当存储系统10接受检索请求时,加速器节点10A首先指明由与检索请求所涉及的文件对应的短哈希和逻辑位置信息组成的内容地址CA。已经接受内容地址CA的存储节点10B继而检验内容地址CA是否注册于MFI文件中。在未注册内容地址CA的情况下未存储请求的数据,从而使得存储节点10B返回错误响应。
另一方面,在注册了内容地址CA的情况下,基于内容地址CA,存储节点10B指定组成检索请求所涉及的数据的各个片段数据的存储位置。这时,如果知道存储各个片段的数据存储文件F1至F12和数据存储文件的片段数据之一的存储位置,则存储节点10B可以指定其它片段数据的存储位置,这是因为存储位置是相同的。
继而,存储节点10B根据响应于检索请求而检索的各个片段数据来恢复块数据D。此外,存储节点10B连接多个恢复的块数据D以恢复成如文件A的数据组,并且返回到控制检索的加速器节点10A。
如果已经添加上述三个冗余数据,则即使存储节点10B由于存储设备31的故障而无法检索组成一个数据集的十二个片段数据中的三个片段数据,存储节点10B仍然可以恢复原始块数据。具体而言,当十二个片段数据存储于单独的存储设备31(盘)中时,有可能同时应对最多三个存储设备31的故障。
特别是,在这一示例性实施例中,检索与检索请求相关的数据,并且也预先检索在与检索请求相关的数据的存储位置之前和之后的邻近存储位置等处存储的数据。于是,由于很可能在相关于检索请求的数据附近的数据具有与相关于检索请求的数据相同的流ID,所以有可能推测和检索以后将变成必需的数据。因此,数据检索的速度和效率得以增加。
因而,根据这一示例性实施例的存储系统10,在检索存储的数据时,通过指定组成数据的数据集的一个片段数据的存储位置,有可能容易地指定其它片段数据的存储位置。此外,由于连续存储组成数据组的多个存储目标数据,所以相关内容的数据存储在一起。因此,当检索存储系统所存储的数据时有可能将相关数据一起检索。因而,有可能增加数据检索的速度和效率,并且有可能提高存储系统的性能。
<第二示例性实施例>
将参照图16描述本发明的第二示例性实施例。图16是示出了存储系统的配置的功能框图。在这一示例性实施例中将示意性地描述存储系统。
如图16中所示,这一示例性实施例的存储系统1配备有多个存储装置6和配置成将数据存储到多个存储装置6中并且检索存储于存储装置6中的数据的数据处理装置2。
继而,数据处理装置2配备有:标识信息提供装置3,配置成向请求存储的数据组提供辨别该数据组的标识信息;数据集生成装置4,配置成通过将作为数据组一部分的存储目标数据划分成多个片块来生成划分数据并且还生成用于恢复存储目标数据的冗余数据,由此生成由多个片段数据组成的数据集,这些片段数据为划分数据和冗余数据;以及分布存储控制装置5,配置成分布组成数据集的片段数据并且在形成于各个存储装置中的存储区内的相同位置中分别存储片段数据,由此存储该存储目标数据。
此外,分布存储控制装置5被配置成将组成与具有相同标识信息的数据组中所包含的多个存储目标数据相对应的各个数据集的片段数据存储到各个存储区中,从而使得在各个存储区内的存储位置变得连续。
根据上述发明,首先,存储系统响应于来自主机的数据存储请求而接受数据组,并且提供辨别该数据组的标识信息。继而,存储系统将数据组划分成多个存储目标数据,进一步将各存储目标数据划分成多个划分数据并且还生成用于恢复存储目标数据的冗余数据,并且生成如下数据集,该数据集包括由划分数据和冗余数据组成的多个片段数据。随后,存储系统将组成一个数据集的片段数据分布并存储到各个存储装置中。这时,存储系统在形成于各个存储装置中的存储区内的相同位置中存储组成一个数据集的片段数据。此外,在将片段数据存储到存储区中时或者在此后的任何时刻,存储系统将组成与在具有相同标识信息的数据组中所包含的多个存储目标数据对应的多个数据集中的各数据集的片段数据存储到各个存储区中,从而使得在各个存储区内的存储位置变得连续。
因而,组成数据组的多个存储目标数据连续地存储于存储装置中,从而使得相关内容的数据存储在一起。因此,当检索存储系统所存储的数据时,有可能将相关数据一起检索。因而,有可能增加数据检索的速度和效率并且有可能提高存储系统的性能。
更进一步地,在存储系统中,分布存储控制装置被配置成在存储到存储装置中之前存储组成与在具有相同标识信息的数据组中包含的多个存储目标数据对应的各个数据集的片段数据,从而使得在缓冲存储器内的存储位置变得连续,并且将存储于缓冲存储器中的片段数据存储到各个存储装置中。
更进一步地,在存储系统中,分布存储控制装置被配置成:将如下片段数据存储到按照标识号而不同的缓冲存储器中,该片段数据组成与在具有相同标识信息的数据组中包含的多个存储目标数据对应的各个数据集;并且将存储于为各标识号设置的各个缓冲存储器中的片段数据存储到各个存储装置中。
更进一步地,在存储系统中,分布存储控制装置被配置成在缓冲存储器达到预定容量时将存储于缓冲存储器中的片段数据存储到各个存储装置中。
因而,存储系统将数据组一次存储到缓冲存储器中以便使其连续,并且随后存储到存储装置中。因此,将相关内容的数据一起存储的过程变得简单,并且有可能提高存储系统的性能。
更进一步地,在存储系统中,分布存储控制装置被配置成将组成与在具有相同标识信息的数据组中包含的多个存储目标数据对应的各个数据集的片段数据(该片段数据已经在各个存储装置中存储)重新存储到各个存储区中,从而使得在各个存储区内的存储位置变得连续。
因而,存储系统以后恢复,以使得组成包括已经在存储装置中存储的数据的数据组的存储目标数据变得连续。
更进一步地,在存储系统中,数据集生成装置被配置成将标识信息提供装置向数据组提供的标识信息包括到各个组成与在数据组中包含的多个存储目标数据对应的数据集的片段数据中。
因而,有可能容易地掌握存储于存储区中的各个片段数据属于哪个数据组。因此,基于在各个片段数据中包含的标识信息,有可能容易地执行连续存储在数据组中包括的存储目标数据的过程。
更进一步地,在存储系统中:数据处理装置包括配置用于生成和管理如下存储位置信息的存储位置信息管理装置,该存储位置信息代表分布存储控制装置向各个存储装置中存储的存储目标数据的存储位置;并且存储位置信息管理装置被配置成基于在请求检索数据时指定的数据的存储位置信息来检索在存储位置信息所代表的在各个存储装置内的存储位置中存储的数据。
更进一步地,在存储系统中:数据处理装置包括如下重复检验装置,该重复检验装置被配置用于生成存储目标数据的内容所特有的内容标识信息,并且与已经存储于各个存储装置中的存储目标数据的内容所特有的内容标识信息相比较,由此检验具有相同内容的存储目标数据是否存储于各个存储装置中;并且重复检验装置被配置成在具有与存储目标数据相同的内容的数据已经存储于各个存储装置中的情况下使用具有相同内容的数据的存储位置信息作为存储目标数据的存储位置信息而不将存储目标数据存储到各个存储装置中。
因而,有可能将上述配置应用于如下内容地址存储系统,该内容地址存储系统基于存储目标数据的内容来指定代表存储数据的位置的存储位置信息。因此,有可能阻止对其内容与已经存储的数据相同的存储目标数据的重复存储,有可能减少数据存储使用量并且有可能减少系统本身的成本。
更进一步地,在存储系统中,分布存储控制装置被配置成在相对于在各个存储装置中生成的文件的数据存储区开头的相同位置中存储组成数据集的片段数据。
因而,当检索由存储系统所存储的数据时,通过指定组成数据的数据集的片段数据之一的存储位置,有可能容易地指定其它片段数据的存储位置。因此,在数据检索时,不必指定组成数据集的所有片段的位置,并且有可能高速检索数据。因而,有可能实现能够高速检索数据而又维持冗余性的高性能存储系统。
更进一步地,在存储系统中,分布存储控制装置被配置成在各个存储装置中生成的文件中已经存储的数据旁边的空余存储位置中存储组成数据集的片段数据。
更进一步地,在存储系统中,分布存储控制装置被配置成将组成数据集的片段数据同时存储到各个存储装置中。
如上文提到的那样,通过由分布存储控制装置将片段数据分别存储到存储装置中,有可能用简单过程分别在相同位置中存储组成数据集的片段数据。因此,也有可能以更高的速度来执行数据存储过程。
更进一步地,在存储系统中,分布存储控制装置被配置成向组成数据集的各个片段数据提供用于标识数据集的相同标识信息,并且将组成数据集的片段数据存储到各个存储装置中。
更进一步地,在存储系统中,分布存储控制装置被配置成基于向各个片段数据提供的标识信息来检验组成数据集的片段数据是否存储于在各个存储装置中形成的存储区内的相同位置中,并且在片段数据未存储于存储区内的相同位置中的情况下改变各个片段数据的存储位置,从而使得组成数据集的片段数据被存储于各个存储区内的相同位置中。
因而,组成数据集的各个片段数据具有相同标识信息并且存储到多个存储装置中。因此,通过检验向已经存储的片段数据提供的标识信息,有可能确定组成一个数据集的片段数据是否存储于各个存储装置内的相同位置中。继而,基于在各个片段数据中包含的标识信息,有可能改变存储于各个存储装置中的片段数据的存储位置。因而,通过与上文提到的方式类似的方式,有可能在形成于各个存储装置内的存储区内的相同位置中存储组成一个数据集的片段数据,并且高速地检索数据成为可能。
更进一步地,可以通过在计算机程序中构建到信息处理设备(系统)中来实现存储系统。
具体而言,本发明的另一实施例的计算机程序是包括如下指令的计算机程序,这些指令用于使配备有多个存储装置的信息处理设备实现配置成将数据存储到多个存储装置中并且检索存储于存储装置中的数据的数据处理装置。
然后,数据处理装置配备有:标识信息提供装置,配置成向请求存储的数据组提供辨别该数据组的标识信息;数据集生成装置,配置成通过将作为数据组一部分的存储目标数据划分成多个片块来生成划分数据并且还生成用于恢复存储目标数据的冗余数据,由此生成由多个片段数据组成的数据集,这些片段数据为划分数据和冗余数据;以及分布存储控制装置,配置成分布组成数据集的片段数据并且在形成于各个存储装置中的存储区内的相同位置中分别存储片段数据,由此存储该存储目标数据。
更进一步地,分布存储控制装置被配置成将组成与在具有相同标识信息的数据组中所包含的多个存储目标数据相对应的各个数据集的片段数据存储到各个存储区中,从而使得在各个存储区内的存储位置变得连续。
继而,在计算机程序中,分布存储控制装置被配置成:在存储到存储装置中之前存储组成与在具有相同标识信息的数据组中所包含的多个存储目标数据相对应的各个数据集的片段数据,从而使得在缓冲存储器内的存储位置变得连续;并且将存储于缓冲存储器中的片段数据存储到各个存储装置中。
更进一步地,在计算机程序中,分布存储控制装置被配置成将组成与在具有相同标识信息的数据组中所包含的多个存储目标数据相对应的各个数据集的片段数据重新存储到各个存储区中(该片段数据已经在各个存储装置中存储),从而使得在各个存储区内的存储位置变得连续。
更进一步地,通过上述存储系统的操作来执行的本发明另一示例性实施例的数据处理方法包括:由配备有多个存储装置的信息处理设备将数据存储到多个存储装置中以及检索存储于存储装置中的数据。
继而,信息处理设备在将数据存储到多个存储装置中时:向请求存储的数据组提供辨别该数据组的标识信息;通过将作为数据组一部分的存储目标数据划分成多个片块来生成划分数据并且还生成用于恢复存储目标数据的冗余数据,由此生成由多个片段数据组成的数据集,这些片段数据为划分数据和冗余数据;并且分布组成数据集的片段数据并且在形成于各个存储装置中的存储区内的相同位置中分别存储片段数据,由此存储该存储目标数据。
更进一步地,信息处理装置被配置成在存储该存储目标数据时将组成与在具有相同标识信息的数据组中所包含的多个存储目标数据相对应的各个数据集的片段数据存储到各个存储区中,从而使得在各个存储区内的存储位置变得连续。
更进一步地,本发明另一方面的数据处理方法包括:在存储该存储目标数据时,在存储到存储装置中之前存储组成与在具有相同标识信息的数据组中所包含的多个存储目标数据相对应的各个数据集的片段数据,从而使得在缓冲存储器内的存储位置变得连续;以及将存储于缓冲存储器中的片段数据存储到各个存储装置中。
更进一步地,本发明另一方面的数据处理方法包括:在存储该存储目标数据时将组成与在具有相同标识信息的数据组中所包含的多个存储目标数据相对应的各个数据集的片段数据重新存储到各个存储区中(该片段数据已经在各个存储装置中存储),从而使得在各个存储区内的存储位置变得连续。
具有上述配置的计算机程序和数据处理方法的发明具有与上述存储系统类似的动作,并且因此可以实现上述本发明的目的。
虽然已经参照上述各个示例性实施例描述了本发明,但是本发明并不限于上述示例性实施例。可以在本发明的范围内以本领域技术人员可以理解的各种手段变更本发明的配置和细节。
本发明基于并且要求于2009年1月27日提交的第2009-015260号日本专利申请的优先权,该日本专利申请所公开的内容通过引用的方式整体并入于此。
工业实用性
本发明可以运用于通过连接多个计算机来配置的存储系统,并且具有工业实用性。
参考编号说明
1 存储系统
2 数据处理装置
3 标识信息提供装置
4 数据集生成装置
5 分布存储控制装置
6 存储装置
10 存储系统
10A 加速器节点
10B 存储节点
11 备份系统
12 备份目标设备
20 数据处理设备
21 流ID提供单元
22 块生成单元
23 重复检验单元
24 片段生成单元
25 分布存储控制单元
26 存储位置管理单元
30 数据存储设备
31 存储设备
32 存储位置存储单元
40 数据集
41 划分数据
42 冗余数据
A 备份目标数据
BF1、BF2、BF3 缓冲存储器
CA 内容地址
D 块数据
D1至D12 片段数据
F1至F12 数据存储文件
H 哈希值