具体实施方式
<第一示例性实施方式>
将参考图2到图11描述本发明的第一示例性实施方式。图2是示出整个系统的配置的框图。图3是示意性地示出存储系统的框图,而图4是示出配置的功能框图。图5和图6是用于说明存储系统的操作的说明性视图。图7A和图7B是分别示出获得并存储在存储系统中的数据的一个示例的视图。图8A、图8B、图9和图10是分别示出由存储系统进行的操作的流程图。图11A到图11C是分别示出存储系统中的数据返回的一个方面的视图。
这一示例性实施方式示出了在稍后描述的第二示例性实施方式中所公开的存储系统的特定示例。下面,将描述通过连接多个服务器计算机来配置存储系统的情况。然而,本发明的存储系统不限于由多个计算机配置,而是可以由一个计算机配置。
[配置]
如图2所示,本发明的存储系统10连接到备份系统11,该备份系统11经由网络N控制备份过程。备份系统11获得存储在经由网络N连接的备份目标设备12中的备份目标数据(存储目标数据),并且请求存储系统10进行存储。从而,存储系统10存储请求作为备份而存储的备份目标数据。
如图3所示,通过连接多个服务器计算机来配置这一示例性实施方式的存储系统10。具体而言,存储系统10配备有加速器节点10A和存储节点10B,该加速器节点10A充当控制存储系统10的存储和再现操作的服务器计算机,该存储节点10B充当配备有用于存储数据的存储设备的服务器计算机。加速器节点10A的数目和存储节点10B的数目不限于图3中示出的那些,并且可以通过连接更多节点10A和更多节点10B来配置存储系统。
另外,这一示例性实施方式的存储系统10是内容地址存储系统,该内容地址存储系统拆分数据并使得数据冗余,将数据分布和存储到多个存储设备中,并且通过根据数据的内容而指定的唯一内容地址来指定存储数据的存储位置。稍后将详细描述这一内容地址存储系统。
在图4中,示出了存储系统10的配置。如该图所示,首先,构成存储系统10的加速器节点10A配备有数据拆分和冗余数据提供单元21以及组成部分和节点信息监控单元22,其通过将程序安装到其中包括的如CPU(中央处理单元)之类的多个算术设备中来配置。另外,加速器节点10A在其中包括的存储设备内配备有映射表23和节点列表24。
进一步,构成存储系统10的存储节点10B配备有组成部分移动单元31以及数据移动和数据重新生成单元32,其通过将程序安装到其中包括的如CPU(中央处理单元)之类的多个算术设备中来配置。另外,存储节点10B在其中包括的存储设备内配备有组成部分33。下面,将详细描述相应配置。
上述程序例如以存储在存储介质(诸如CD-ROM)中的状态被提供给加速器节点10A和存储节点10B。备选地,可以将程序存储在网络上的另一服务器计算机的存储设备中,并且经由网络将其从其他服务器计算机提供到加速器节点10A和存储节点10B。
进一步,加速器节点10A和存储节点10B所包括的配置并非必须限于图4中示出的配置。换言之,相应配置可以由任一节点包括。另外,相应配置可以由一个计算机包括。
首先,数据拆分和冗余数据提供单元21将备份目标数据(存储目标数据)拆分为多个片段数据,以便分布和存储备份目标数据。这一处理的示例在图5和图6中示出。具体而言,首先,一旦接收到备份目标数据A(箭头Y1)的输入(如图5所示并且如图6中的箭头Y2所示),数据拆分和冗余数据提供单元21将备份目标数据A拆分为具有预定容量(例如64KB)的数据块D。继而,数据拆分和冗余数据提供单元21基于数据块D的数据内容计算代表数据内容的唯一哈希值H(箭头Y3)。例如,通过预设的哈希函数根据数据块D的数据内容来计算哈希值H。这一哈希值H用于避免具有同一内容的数据的重复记录,并且用于生成代表数据的存储位置的内容地址,但其详细说明将省略。
进一步,数据拆分和冗余数据提供单元21将数据块D拆分为具有预定容量的多个片段数据。例如,数据拆分和冗余数据提供单元21将数据块D拆分为九个片段数据(拆分数据41),如图5中的符号D1到D9所示。另外,数据拆分和冗余数据提供单元21生成冗余数据,从而使得即使当通过拆分获得的某些片段数据丢失时也能够恢复原始数据块,并且将其添加到通过拆分获得的片段数据41。例如,数据拆分和冗余数据提供单元21添加三个片段数据(冗余数据42),如符号D10到D12所示。从而,数据拆分和冗余数据提供单元21生成数据集40(图6中的箭头Y4),该数据集40包括十二个片段数据,这十二个片段数据包括九个拆分数据41和三个冗余数据。
继而,由稍后描述的相应存储节点10B的组成部分移动单元31(分布存储处理装置)经由交换机10C分别将如上所述地生成的片段数据分布和存储到形成在相应存储节点10B中的组成部分33中。例如,在生成如图5所示的十二个片段数据D1到D12的情况下,将片段数据D1到D12逐一存储到形成在十二个存储节点10B中的充当数据存储区域的组成部分33中(参见图6中的箭头Y5)。上述分布存储处理可以通过包括在加速器节点10A中的功能来执行。
当如上所述地存储了片段数据时,在存储节点10B中生成代表片段数据D1到D12的存储位置的内容地址CA,即从片段数据D1到D12恢复的数据块D的存储位置。此时,例如,通过将基于所存储的数据块D所计算的哈希值H的一部分(短哈希:例如哈希值H的前8B(字节))和代表逻辑存储位置的信息进行组合,来生成内容地址CA。继而,将这一内容地址CA返回到存储系统10内的、用于管理文件系统的加速器节点10A(图6中的箭头Y6),并且将诸如备份目标数据的文件名称之类的标识信息和内容地址CA彼此相关并且在文件系统中进行管理。
从而,在接收到获取文件的请求后,存储系统可以指定由内容地址CA指定的、与所请求的文件相对应的存储位置,并且获取存储在这一指定的存储位置上的每个片段数据作为请求获取的数据。如上所述,存储系统具有获取和写入数据的功能(数据处理装置)。
进一步,组成部分和节点信息监控单元22(数据位置监控装置)利用存储片段数据的组成部分来管理存储在相应存储节点10B中的片段数据。具体而言,正如稍后描述的那样,组成部分和节点信息监控单元22监控由存储节点10B自治地执行的组成部分移动,并且以预定时间间隔(每x分钟)获取代表组成部分位置的组成部分位置信息。当组成部分位置信息指示处于稳定状态持续预设时间或更长时间(y分钟或更长时间)时,组成部分和节点信息监控单元22将包括彼此相关的存储节点名称和组成部分名称的组成部分位置信息存储到映射表23中。换言之,组成部分和节点信息监控单元22更新映射表23。
进一步,组成部分和节点信息监控单元22监控正常地操作和参与存储系统的存储节点10B,并将代表其列表的节点信息存储为节点列表24(存储装置列表)。换言之,组成部分和节点信息监控单元22监控存储节点10B是否宕机(例如,存储节点10B正在停止或不参与系统),并且存储未宕机的存储节点10B的列表。具体而言,组成部分和节点信息监控单元22以预定时间间隔(每x分钟)执行对存储节点10B的监控以及对组成部分位置的监控。作为监控的结果,在组成部分位置和存储节点列表保持稳定不变持续预定时间或更长时间(y分钟或更长时间)的情况下,组成部分和节点信息监控单元22分别将该状态下的组成部分位置信息和节点信息重新存储到映射表和节点列表中。
另一方面,在作为监控的结果,虽然组成部分位置信息发生改变但是节点信息相对于节点列表没有改变的情况下,组成部分和节点信息监控单元22确定节点故障是临时的并且存储节点10B已经恢复。在此情况下,组成部分和节点信息监控单元22向相应存储节点10B给出返回组成部分位置的指令,从而使得存储在映射表23中的组成部分位置信息与实际位于存储节点10B中的组成部分的位置相一致。组成部分和节点信息监控单元22用作数据位置返回装置,其与稍后描述的与存储节点10B的组成部分移动单元31和数据移动和数据重新生成单元32进行协作。
接下来,将描述存储节点10B的配置。首先,存储节点10B分别形成作为数据存储区域的单位的组成部分33,并且分别存储片段数据D1到D12,如稍后所述。
进一步,组成部分移动单元31具有与其他存储节点10B协作地存储经由如上所述的交换机10C传送的相应片段数据的功能,并且还具有平衡存储节点10B之间的负载的功能。具体而言,负载平衡功能监控每个存储节点10B的负载状况,并且例如在存储片段数据时以及在添加或删除存储节点10B时,根据存储节点10B之间的负载平衡来移动组成部分33。组成部分移动单元31的负载平衡功能由每个存储节点10B自治地执行。例如,当存储节点10B由于故障等而宕机并被删除时,移动存储在宕机的存储节点10B中的组成部分以便在其他存储节点10B中生成。另外,例如,当新添加存储节点10B或者存储节点10B从故障恢复并被添加时,将存储在现有的存储节点10B中的组成部分移动到所添加的存储节点10B。
继而,特别地,一旦接收到上述来自组成部分和节点信息监控单元22的返回组成部分位置的指令,组成部分移动单元31移动组成部分33从而使得组成部分的实际位置与存储在映射表23中的组成部分位置信息相一致。
进一步,数据移动和数据重新生成单元32执行数据移动或数据重新生成,以便根据由上述组成部分移动单元31移动的组成部分来将数据存储到组成部分中。具体而言,首先,数据移动和数据重新生成单元32利用属于组成部分的数据,来检查该数据是否存在于组成部分要移动到的存储节点中。在数据存在的情况下,数据移动和数据重新生成单元32将数据与由组成部分移动单元31所移动的组成部分相关。另一方面,在数据不存在于目的地存储节点中的情况下,数据移动和数据重新生成单元32随后检查数据是否存在于源存储节点中。此时,在数据存在于源存储节点中的情况下,数据移动和数据重新生成单元32将数据从源存储节点移动到目的地存储节点。另一方面,在数据既不存在于目的地存储节点中、也不存在于源存储节点中的情况下,数据移动和数据重新生成单元32根据冗余数据重新生成该数据。
如上所述,组成部分移动单元31和数据移动和数据重新生成单元32与组成部分和节点信息监控单元22协作,用作用于将存储在已删除的存储节点10B中的数据恢复到另一存储节点10B中的数据恢复装置,以及还用作用于返回已经复原的存储节点10B中的数据位置的数据位置返回装置。
[操作]
接下来,将参考图8、图9和图12的流程图来描述如上所述地配置的存储系统的操作。
首先,加速器节点10A的数据拆分和冗余数据提供单元21将存储目标数据拆分为任意多片数据,并且向其添加多个冗余数据,从而形成多个片段数据(图8A中的步骤S1)。继而,相应存储节点10B的组成部分移动单元31经由交换机10C移动组成部分,并将片段数据存储到相应存储节点10B中,以便分布相应存储节点10B的负载(图8B中的步骤S2)。例如,如图11A所示,分别存储数据a、b、c和d的组成部分a、b、c和d位于存储节点A、B、C和D中。通过负载平衡来进行的这一组成部分移动处理不断地在存储节点10B之间自治地执行。
随后,将参考图9描述加速器10A的组成部分和节点信息监控单元22的操作。首先,在系统的初始状态中,组成部分和节点信息监控单元22以规则的间隔(每x分钟)获得组成部分位置信息(步骤S11)。此时,在组成部分位置信息稳定持续y分钟或更长时间(在步骤S12处为“是”)的情况下,组成部分和节点信息监控单元22将此时的位置信息存储到映射表23中,并且还将节点信息记录到节点列表24中(步骤S13)。继而,加速器节点10A仍然以规则的间隔(每x分钟)监控组成部分位置信息(步骤S14)。
假定存储节点10B由于存储节点10B的故障等而宕机。换言之,假定正在被监控的组成部分位置信息和节点信息相对于映射表23和节点列表24发生改变(在步骤S15处为“是”并且在步骤S16处为“是”)。作为特定示例,假定存储节点A和B宕机,如图11B所示。继而,通过负载平衡处理,存储在存储节点A和B中的组成部分a和b分别移动到存储节点C和D。也就是说,组成部分a和c位于存储节点C中,组成部分b和d位于存储节点D中。通过使用存储在其他存储节点中的其他组成部分,来分别重新生成从存储节点A和B移动到存储节点C和D的组成部分a和b。稍后将参考图10描述该重新生成。
继而,在存储节点保持宕机,并且同时正在被监控的组成部分位置信息和节点信息相对于映射表23和节点列表24保持改变(在步骤S15处为“是”并且在步骤S16处为“是”)、保持稳定持续y分钟或更长时间(在步骤S18处为“是”)的情况下,组成部分和节点信息监控单元22将该状态下的组成部分位置信息和节点信息重新存储到映射表和节点列表中(步骤S13)。
另一方面,在组成部分位置信息如上所述地由于存储节点故障等而改变(在步骤S15处为“是”),并且负载平衡如图11B所示自治地执行但存储节点故障为临时的并且存储节点在y分钟内复原的情况下,节点信息不发生改变(在步骤S16处为“否”)。在此情况下,不存储已改变的组成部分位置信息。例如,在节点A和B进入图11B中示出的状态并且此后立即复原的情况下,图11A中示出的状态的组成部分位置信息存储在映射表中。在此情况下,参考映射表,将组成部分位置返回给存储在映射表中的位置。因此,如图11C所示,存储节点A、B、C和D中的组成部分a、b、c和d的位置返回到如图11A所示的状态,其为故障发生之前的状态。
根据组成部分移动而对存储在组成部分中的数据进行移动以及数据的重新生成由存储节点10B执行,如图10所示。首先,存储节点10B利用属于组成部分的数据来检查该数据是否存在于组成部分要移动到的存储节点中(步骤S21)。此时,在组成部分存在(在步骤S21处为“是”)的情况下,存储节点10B将数据与已移动的组成部分相关(步骤S22)。上述从图11B的状态恢复到图11C的状态由步骤S22的处理执行。从而,由于可以通过使用存储在已恢复的存储节点中的片段数据来返回数据位置,因此可以防止重新生成和移动不必要的数据。结果是,在存储节点恢复时可以实现高效和快速的数据恢复。
另一方面,在与已移动的组成部分相对应的数据不存在于目的地存储节点中(在步骤S21处为“否”)的情况下,存储节点10B接下来检查该数据是否存在于源存储节点中(步骤S23)。继而,在数据存在于源存储节点中的情况下,存储节点10B将数据从源存储节点移动到目的地存储节点(步骤S24)。
另外,在数据既不存在于组成部分目的地存储节点中也不存在于源存储节点中的情况下,根据冗余数据重新生成该数据。执行这一处理以便在任何存储节点宕机时将存储在该存储节点中的组成部分移动到另一存储节点,如图11B所示。
<第二示例性实施方式>
将参考图12描述本发明的第二示例性实施方式。图12是示出存储系统的配置的功能框图。在这一示例性实施方式中,将描述存储系统的基本配置和操作。
如图12所示,这一示例性实施方式的存储系统包括多个存储装置7和数据处理装置2,该数据处理装置2被配置为将数据存储到该多个存储装置7中并获取存储在存储装置中的数据。
继而,数据处理装置2包括:分布存储处理装置3,配置为将多个片段数据分布并存储到该多个存储装置中,其中该片段数据包括通过将存储目标数据拆分为多片而获得的拆分数据以及用于恢复存储目标数据的冗余数据;数据位置监控装置4,配置为监控相应存储装置中的片段数据的数据位置状态并存储代表数据位置状态的数据位置信息;以及数据恢复装置5,配置为当存储装置中的任何一个宕机时,基于存储在宕机的存储装置以外的存储装置中的片段数据,来重新生成已经存储在宕机的存储装置中的片段数据并将其存储到其他存储装置中。
另外,这一示例性实施方式的存储系统还包括数据位置返回装置6,配置为当宕机的存储装置复原时,通过使用存储在已经复原的存储装置中的片段数据来返回片段数据的数据位置,从而使得数据位置状态变为如数据位置监控装置所存储的数据位置信息所代表的。
根据本发明,首先,存储系统将存储目标数据拆分为多个拆分数据,生成用于恢复存储目标数据的冗余数据,并且将包括拆分数据和冗余数据的多个片段数据分布和存储到多个存储装置中。继而,存储系统监控相应片段数据的数据位置状态,并且存储代表数据位置状态的数据位置信息。
进一步,当存储装置由于发生故障而宕机时,存储系统基于其他片段数据来重新生成已经存储在宕机的存储装置中的片段数据,并将其存储到其他存储装置中。继而,当宕机的存储装置复原时,存储系统使用存储在已经复原的存储装置中的片段数据并返回数据位置,从而使得数据位置状态变为如数据位置信息所代表的。
因此,在存储装置临时宕机继而复原的情况下,可以通过使用所存储的片段数据来返回数据位置,因此可以防止重新生成和移动不必要的数据。相应地,在存储装置复原时可以实现高效和快速的数据恢复。
进一步,在存储系统中:数据位置监控装置被配置为利用作为存储装置内的数据存储单位的组成部分来监控片段数据的数据位置状态;数据恢复装置被配置为在其他存储装置中重新生成宕机的存储装置的组成部分;并且数据位置返回装置被配置为基于数据位置信息返回组成部分在存储装置中的数据位置并返回片段数据的数据位置。
进一步,在存储系统中,数据位置返回装置被配置为向已经复原的存储装置返回组成部分,并且通过将存储在已经复原的存储装置中的片段数据与组成部分相关来返回片段数据的数据位置。
进一步,在存储系统中,数据位置返回装置被配置为在要基于数据位置信息而存储在返回给已经复原的存储装置的组成部分中的片段数据在该已经复原的存储装置中不存在的情况下,通过从其他存储装置移动由数据恢复装置重新生成的片段数据来返回片段数据的数据位置。
进一步,在存储系统中:数据位置监控装置被配置为在正在被监控的数据位置状态保持稳定持续预定时间或更长时间的情况下,存储代表数据位置状态的数据位置信息;并且数据位置返回装置被配置为当由数据位置监控装置监控的数据位置状态相对于数据位置信息改变并且宕机的存储装置复原时,返回片段数据的数据位置。
进一步,在存储系统中:数据位置监控装置被配置为监控存储装置的操作状态,并且存储数据位置信息以及还存储示出工作的存储装置的存储装置列表;并且数据位置返回装置被配置为当由数据位置监控装置监控的数据位置状态相对于数据位置信息改变并且工作的存储装置符合存储装置列表时,返回片段数据的数据位置。
进一步,可以通过将程序安装在信息处理设备中来实现上述存储系统。
具体而言,本发明另一示例性实施方式的计算机程序包括如下指令,所述指令用于使配备有多个存储装置的信息处理设备实现数据处理装置,该数据处理装置被配置为将数据存储到该多个存储装置中并获取存储在存储装置中的数据,并且还实现:分布存储处理装置,配置为将多个片段数据分布并存储到该多个存储装置中,其中该片段数据包括通过将存储目标数据拆分为多片而获得的拆分数据以及用于恢复存储目标数据的冗余数据;数据位置监控装置,配置为监控相应存储装置中的片段数据的数据位置状态并存储代表数据位置状态的数据位置信息;数据恢复装置,配置为当存储装置中的任何一个宕机时,基于存储在宕机的存储装置以外的存储装置中的片段数据,来重新生成已经存储在宕机的存储装置中的片段数据,并将其存储到其他存储装置中;以及数据位置返回装置,配置为当宕机的存储装置复原时,通过使用存储在已经复原的存储装置中的片段数据来返回片段数据的数据位置,从而使得数据位置状态变为如数据位置监控装置所存储的数据位置信息所代表的。
继而,在该计算机程序中,数据位置监控装置被配置为利用作为存储装置内的数据存储单位的组成部分来监控片段数据的数据位置状态;数据恢复装置被配置为在其他存储装置中重新生成宕机的存储装置的组成部分;并且数据位置返回装置被配置为基于数据位置信息返回组成部分在存储装置中的数据位置,并返回片段数据的数据位置。
上述程序例如以存储在存储介质(诸如CD-ROM)中的状态被提供给信息处理设备。或者,可以将程序存储在网络上的另一服务器计算机的存储设备中并且经由网络将其从其他服务器计算机提供到信息处理设备。
进一步,一种在具有上述配置的存储系统中执行的数据处理方法包括:将数据存储到多个存储装置中并获取存储在存储装置中的数据;将多个片段数据分布并存储到该多个存储装置中,其中该片段数据包括通过将存储目标数据拆分为多片而获得的拆分数据以及用于恢复存储目标数据的冗余数据;监控相应存储装置中的片段数据的数据位置状态并存储代表数据位置状态的数据位置信息;当存储装置中的任何一个宕机时,基于存储在宕机的存储装置以外的存储装置中的片段数据,来重新生成已经存储在宕机的存储装置中的片段数据并将其存储到其他存储装置中;以及当宕机的存储装置复原时,通过使用存储在已经复原的存储装置中的片段数据来返回片段数据的数据位置,从而使得数据位置状态变为如已经存储的数据位置信息所代表的。
继而,该数据处理方法包括:当监控数据位置状态时,利用作为存储装置内的数据存储单位的组成部分来监控片段数据的数据位置状态;当重新生成片段数据时,在其他存储装置中重新生成宕机的存储装置的组成部分;以及当返回数据位置时,基于数据位置信息返回组成部分在存储装置中的数据位置并返回片段数据的数据位置。
具有上述配置的计算机程序和数据处理方法的发明具有与上述存储系统类似的动作,因此能够实现上述的本发明目的。
虽然已经参考上述相应示例性实施方式而描述了本发明,但本发明不限于上述示例性实施方式。在本发明的范围内,可以用本领域技术人员能够理解的各种方式来变更本发明的配置和细节。
本发明基于2009年2月17日提交的日本专利申请No.2009-033438并要求其优先权权益,在此通过引用的方式包含其全部公开内容。
工业实用性
本发明可以用于通过连接多个计算机而配置的存储系统,并且具有工业实用性。
参考标号的描述
1 存储系统
2 数据处理装置
3 分布存储处理装置
4 数据位置监控装置
5 数据恢复装置
6 数据位置返回单元
7 存储装置
10 存储系统
10A 加速器节点
10B 存储节点
11 备份系统
12 备份目标设备
21 数据拆分和冗余数据提供单元
22 组成部分和节点信息存储单元
23 映射表
24 节点列表
31 组成部分移动单元
32 数据移动和数据重新生成单元
33 存储器