具体实施方式
<第一示例性实施方式>
本发明的第一示例性实施方式将参考图1至图9进行描述。图1是示出了整个系统的配置的框图。图2是示出了存储系统的概要的框图,以及图3是示出了存储系统的配置的功能框图。图4至图6是用于说明存储系统中数据写入过程的说明图。图7是示出了存储在存储设备中的索引数据的数据结构的示图。图8和图9是示出了存储系统的操作的流程图。
本示例性实施方式示出了在稍后描述的补充说明中所公开的存储设备之类的特定示例。下面将假设存储系统通过连接多个服务器计算机进行配置来进行描述。然而,本发明中的存储系统并不限于由多个计算机进行配置,并且可以由一个计算机进行配置。
[配置]
如图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的配置和功能进行描述。即,下面所述的存储系统1的配置和功能可以包括在加速器节点2中或者存储节点3中。存储系统1没必要受限于配备有如图2中所示的加速器节点2和存储节点3,并且可以具有任意配置。例如,存储系统1可以由一个计算机进行配置。此外,存储系统1并不限于内容可寻址的存储系统,而可以是任意存储系统(只要其具有解重复功能)。
图3示出了本示例性实施方式中的存储系统1的配置。如该图中所示,存储系统1由服务器计算机进行配置,并且包括相互连接的数据分离和连接设备10与存储设备20。数据分离和连接设备10连接到安装在上文所述的备份目标设备5或备份系统4中的数据写入和读取软件30,并且响应于来自该软件30的请求,执行存储或获取文件的过程。
数据分离和连接设备10包括:分离数据写入部分11、数据分离部分12、分离数据关联部分13和分离数据读取部分14,上述各项通过将程序安装至装配其中的运算设备进行构建。此外,存储设备20提供有用户数据文件存储部分21、管理数据文件存储部分22和索引数据文件存储部分23。
事实上,上文所述存储系统1的配置由运算设备(诸如,CPU(中央处理单元))和存储设备(诸如,图2中所示加速器节点2和存储节点3中每个节点的硬盘驱动器)进行配置。
如上文所述,本示例性实施方式中的存储系统1是内容可寻址的存储系统。因此,上述分离数据写入部分11(数据写入部分)和存储设备20具有通过使用内容地址将数据存储至存储设备20中的功能,以及如下文所述通过划分和分发数据并且通过内容地址指定存储位置来存储数据。存储系统1中使用内容地址的数据写入过程将在下文参考图4和图5进行描述。
首先,当从数据写入和读取软件30接受请求写入的文件A的输入时(如图4中所示并且在图5中由箭头Y1表示),存储系统1将该文件A分成预定容量(例如,64KB)的块数据D(如图4中所示并且在图5中由箭头Y2表示)。该文件A例如是由稍后描述的数据分离部分12分离的用户数据文件、管理数据文件或者索引数据文件。块数据D可以是由数据分离部分12分离的每个用户数据、每个管理数据或者每个索引数据。
继而,基于该块数据D的数据内容,存储系统1对表示该数据内容的唯一哈希值H进行计算(图5的箭头3所示)。例如,哈希值H通过使用先前设置的哈希函数根据块数据D的数据内容进行计算。
随后,通过使用文件A的块数据D的哈希值H,存储系统1检验是否已经存储了该块数据D。具体地,首先,在已经存储了块数据D的情况下,其哈希值H以及表示其存储位置的内容地址CA已经相关联并且注册到MFI(主片段索引)文件中。因此,在存储之前计算的块数据D的哈希值H存在于MFI文件中的情况下,存储系统1可以判断已经存储了相同内容的块数据D(图5的箭头Y4所示)。在此情况下,存储系统1从MFI文件中取得与该MFI中注册的哈希值H(其与在存储之前的块数据D的哈希值H一致)相关联的内容地址CA。继而,存储系统1返回该内容地址CA作为请求写入的块数据D的内容地址CA。因此,所述已经存储的数据与该内容地址CA一起被用作请求写入的块数据D,并且消除了对存储请求写入的块数据D的需求。
此外,在判断请求写入的块数据D还未被存储的情况下,存储系统1压缩块数据D,并且如图5中箭头Y5所示,将数据分成预定容量的多个片段数据。例如,存储系统1将数据分成九个片段数据(划分数据41),如图4中参考标号D1至D9所示。此外,存储系统1生成冗余数据,从而使得可以甚至在某些划分片段数据丢失时重新存储原始块数据,并且向划分片段数据41添加冗余数据。例如,存储系统1添加三个片段数据(冗余数据42),如图4中的参考标号D10至D12所示。因此,存储系统1生成数据集40,该数据集40包括由九个划分数据41和三个冗余数据配置的十二个片段数据。
随后,存储系统1将配置如上文所述生成的数据集的片段数据分别分发并存储至存储设备上形成的存储区域中。例如,在生成如图4中所示十二个片段数据D1至D12的情况下,存储系统1将片段数据D1至D12逐一分别存储至多个存储设备中形成的数据存储文件中(参考图5中的箭头Y6)。
随后,存储系统1生成并管理表示如上文所述存储的片段数据D1至D12的存储位置(即,待从片段数据D1至D12进行重新存储的块数据D的存储位置)的内容地址CA。具体地,存储系统1通过将基于存储的块数据D的内容计算的哈希值H的一部分(短哈希:例如,哈希值H的最初8B(字节))与表示逻辑存储位置的信息进行组合来生成内容地址CA。存储系统1继而将该内容地址CA返回存储系统1中的文件系统(图5中的箭头Y7)。存储系统1管理标识信息,诸如文件系统中相互关联的备份目标数据的文件名和内容地址CA。
此外,每个存储节点3管理MFI文件中相互关联的块数据D的内容地址CA和块数据D的哈希值H。因此,内容地址CA与指定文件的信息、哈希值H等相关联地存储至加速器节点2或存储节点3的存储设备中。
此外,存储系统1执行控件以用于获取如上文所述存储的文件。例如,当向存储系统1进行对指定的特定文件的获取请求时,存储系统1首先基于文件系统指定由作为对应于请求获取的文件的哈希值的一部分的短哈希与逻辑位置信息组成的内容地址CA。继而,存储系统1检验MFI文件中是否注册了该内容地址CA。当该内容地址CA没有注册时,不对所请求的数据进行存储,从而使得存储系统1返回错误。
另一方面,当与获取请求有关的内容地址CA进行了注册时,存储系统1指定由该内容地址CA指定的存储位置,并且获取存储在该指定存储位置中的每个片段数据作为请求获取的数据。此时,在已知存储相应片段的数据存储文件以及数据存储文件之一的片段数据的存储位置的情况下,可以基于相同存储位置指定其他片段数据的存储位置。
继而,存储系统1根据响应于获取请求而获取的相应片段数据重新存储块数据D。此外,存储系统1连接多个重新存储的块数据D,重新存储至一组数据(如文件A)中并将其返回。
因此,在本示例性实施方式中,存储系统1消除了数据的解重复,并且具有用于进一步提高数据存储效率的配置。该配置将详细地进行描述。
首先,由数据分离和连接设备10包括的数据分离部分12将数据分成“用户数据部分”和“管理数据部分”,该“用户数据部分”相当于文件的实际数据部分并且其值不会被生成时间、更新次数等改变;然而“管理数据部分”的值会被时间差、更新次数等(诸如,时间戳或序列号)改变,并且其包括文件的管理信息。即,用户数据部分是很可能与其他用户数据具有相同内容并且可以期望产生解重复效果的数据。另一方面,管理数据部分不太可能与其他管理数据具有相同内容并且不太可能期望产生解重复效果。用于区分相应数据部分的标准信息之前在数据分离部分12中进行设置,并且基于该标准信息执行分离成用户数据部分和管理数据部分的分离过程。
然而,数据分离部分12没必要受限于将待写入的数据分离成“用户数据部分”和“管理数据部分”。数据分离部分12可以将数据分离成根据先前设置的标准分类的其他数据部分中的一种数据部分或者多种数据部分。
继而,分离数据写入部分11(数据写入部分)将由数据分离部分12分离的数据存储至存储设备20中。此时,取决于经分离数据的类型,将经分离的数据存储至不同的文件中,并且分离数据关联部分13基于分离的结果生成包括分别指定用户数据部分和管理数据部分的存储位置的信息的索引数据。
分离数据写入部分11继而将已经分离的用户数据部分和管理数据部分以及索引数据分别存储至不同的文件中,并且存储至存储设备20中。具体地,首先,如图6中所示,用户数据部分存储至在存储设备20中形成的用户数据文件存储部分21内的用户数据文件中。此外,如图6中所示,管理数据部分存储至在存储设备20中形成的管理数据文件存储部分22内的管理数据文件中。此外,如图6中所示,索引数据存储至在存储设备20中形成的索引数据文件存储部分23内的索引数据文件中。
随后,在用户数据文件存储部分21中,存储了只存储有用户数据的用户数据文件。此外,在管理数据文件存储部分22中,存储了只存储有管理数据的管理数据文件。此外,在索引数据文件存储部分23中,存储了只存储有用户数据和管理数据的索引信息的索引数据文件。
如图7中所示,索引数据包含各种管理信息,诸如文件类型、未分离文件中的文件偏移、每个分离文件中的文件偏移和分离数据的长度。具体地,“文件类型”是指定文件的类型或者其中存储了对应的用户数据或管理数据的文件本身的文件信息。“未分离文件中的文件偏移”是关于在分离用户数据或管理数据被分离之前文件内位置的信息。“每个分离文件中的文件偏移”是关于在分离之后其中存储了分离用户数据或管理数据的用户数据文件或管理数据文件内位置的信息。“分离数据的长度”是分离用户数据或管理数据的数据长度。然而,索引数据中存储的信息不限于上述信息。
如参考图4和图5所进行的说明,上文所述每个文件进一步被划分并使其冗余,以及分发并存储至多个存储设备中。
此外,数据分离和连接设备10中包括的分离数据读取部分14(数据读取部分)基于请求由数据写入和读取软件30读取的文件的名称从存储设备20取得用户数据文件、管理数据文件和索引数据文件。继而,分离数据关联部分13基于所取得的索引数据文件中存储的信息对其中存储了用户数据和管理数据的相应文件以及文件内的存储位置进行分析。随后,基于分析的结果,分别从用户数据文件和管理数据文件中读取用户数据和管理数据。继而,根据索引数据文件中存储的信息,指定在分离之前数据中用户数据和管理数据的位置,并且连接用户数据和管理数据,由此生成在分离之前的数据。
在这之后,分离数据读取部分14向数据写入和读取软件30返回所生成的分离之前的数据。因此,数据写入和读取软件30可以参考文件,而不知晓数据已经被分离并存储。
[操作]
接下来,存储系统1(即,上文所述的数据分离和连接设备10)的操作将参考图6以及图8和图9中所示的流程图进行例示。
首先,写入数据时的操作将参考图6和图8进行例示。当数据写入和读取软件30向数据分离和连接设备10发出数据写入请求时(步骤S1),分离数据写入部分11向数据分离部分12传输所接收的数据。继而,数据分离部分12将所接收的数据分离成如上文所述的用户数据部分和管理数据部分,并且将关于分离的信息返回分离数据写入部分11(步骤S2)。
随后,分离数据写入部分11向分离数据关联部分13传输所接收的关于数据分离的信息。继而,分离数据关联部分13基于所接收的关于数据分离的信息创建索引数据(步骤S3),并且将索引数据返回分离数据写入部分11。如图7中所示,索引数据包含其中存储有每个分离数据的文件的类型、在数据分离之前文件中的文件偏移、在数据分离之后用户数据文件或管理数据文件中的文件偏移、分离数据的长度以及其他管理信息。
最后,基于关于数据分离的信息以及索引数据,分离数据写入部分11将用户数据、管理数据和索引数据作为不同文件分别写入存储设备20中(步骤S4)。即,如图6中所示,分离数据写入部分11分别将用户数据写入用户数据文件、将管理数据写入管理数据文件以及将索引数据写入索引数据文件。在图6的示例中,索引1包含作为用户数据的数据2的位置信息等,并且索引2包含作为管理数据的数据1的位置信息等。
接下来,读取数据时的操作将参考图6和图9进行例示。当数据写入和读取软件30向数据分离和连接设备10发出数据读取请求时(步骤S11),分离数据读取部分14基于请求读取的文件的名称取得存储设备20中存储的用户数据文件、管理数据文件和索引数据文件(步骤S12),并且向分离数据关联部分13传输相应的信息。
继而,基于所接收的信息,分离数据关联部分13从索引数据文件中读取对应于所请求的数据的索引数据。此外,基于所读取的索引数据,分离数据关联部分13从用户数据文件读取对应于所请求的数据的用户数据,并且从管理数据文件读取对应于所请求的数据的管理数据。此时,分离数据关联部分13基于索引数据包含的诸如文件类型、在数据分离之前文件中的文件偏移、在数据分离之后用户数据文件或管理数据文件中的文件偏移以及分离数据的长度之类的信息,读取配置所请求的数据的用户数据和管理数据。例如,在图6的示例中,分离数据关联部分13基于索引1读取作为用户数据的数据2,并且基于索引2读取作为管理数据的数据1。
此外,分离数据关联部分13基于索引数据连接已经被读取的用户数据和管理数据(步骤S13),以生成分离之前的原始数据,并且将所连接的数据返回分离数据读取部分14。
分离数据读取部分14继而将作为数据分离之前文件的数据的返回数据返回到数据写入和读取软件30。
因此,根据本发明,当例如进行数据备份时,由备份软件插入备份文件中的管理信息可以使得数据解重复的效率的降低。然而,可以通过将备份文件中的数据分离成用户数据和管理数据并存储至存储设备中来提高数据解重复的效率。即,数据的解重复几乎不可能在数据量小的管理数据和索引数据上执行,但是数据的解重复可以有效地在用户数据文件中写入的大量用户数据上执行,由此可以实现高效的数据解重复。
此外,虽然数据为了如上文所述提高解重复的效率的目的被分离并存储至存储系统中的多个文件中,但是由于在读取数据时经分离的数据被连接并作为一个数据提供,因此从外部来看可以作为一个文件对待。
[补充说明]
上文所公开的全部或部分示例性实施方式可以被描述为以下补充说明。在下文中,根据本发明的存储设备110的配置的概要将参考图10进行描述。此外,将描述根据本发明的数据存储方法和程序的配置。然而,本发明并不限于以下配置。
(补充说明1)
一种存储设备110,包括:
数据写入部分111,配置用于将待写入的数据存储至存储设备120中,并且当存储与已经存储在存储设备120中的数据具有相同内容的其他数据至存储设备120中时,还参考已经存储在存储设备120中的数据作为其他数据;以及
数据分离部分112,配置用于将待写入的数据分离成根据先前设置的标准分类的用户数据部分和管理数据部分,
其中数据写入部分111配置用于将用户数据部分存储至用户数据文件121中,将管理数据部分存储至管理数据文件122中,并且将由数据分离部分112分离的用户数据部分和管理数据部分存储至存储设备120中。
(补充说明2)
根据补充说明1所述的存储设备,其中数据写入部分配置用于将索引数据存储至索引数据文件中并存储至存储设备中,索引数据包括关于由数据分离部分分离的用户数据部分和管理数据部分的未分离数据内位置的信息,以及关于在分离成用户数据部分和管理数据部分之后用户数据文件和管理数据文件中每个文件中的位置的信息。
(补充说明3)
根据补充说明2所述的存储设备,其中由数据写入部分存储至索引数据文件中的索引数据包括指定分别存储由数据分离部分分离的用户数据部分和管理数据部分的用户数据文件和管理数据文件的文件信息。
(补充说明4)
根据补充说明2或3所述的存储设备,其中由数据写入部分存储至索引数据文件中的索引数据包括表示由数据分离部分分离的用户数据部分和管理数据部分中每个部分的数据长度的数据长度信息。
(补充说明5)
根据补充说明2至4中任意一项所述的存储设备,包括数据读取部分,配置用于读取索引数据文件中存储的索引数据,基于索引数据中包括的信息读取存储设备中存储的用户数据部分和管理数据部分,并且重新存储由数据分离部分分离之前的数据。
(补充说明6)
根据补充说明1至5中任意一项所述的存储设备,其中管理数据部分是用于管理待写入数据的管理信息。
(补充说明7)
一种包括用于使得信息处理设备实现以下各项的指令的程序:
数据写入部分,配置用于将待写入的数据存储至存储设备中,并且当存储与已经存储在存储设备中的数据具有相同内容的其他数据至存储设备中时,还参考已经存储在存储设备中的数据作为其他数据;以及
数据分离部分,配置用于将待写入的数据分离成根据先前设置的标准分类的用户数据部分和管理数据部分,
其中数据写入部分配置用于将用户数据部分存储至用户数据文件中,将管理数据部分存储至管理数据文件中,并且将由数据分离部分分离的用户数据部分和管理数据部分存储至存储设备中。
(补充说明8)
根据补充说明7所述的程序,其中数据写入部分配置用于将索引数据存储至索引数据文件中并存储至存储设备中,索引数据包括关于由数据分离部分分离的用户数据部分和管理数据部分的未分离数据内位置的信息,以及关于在分离成用户数据部分和管理数据部分之后用户数据文件和管理数据文件中每个文件中的位置的信息。
(补充说明9)
一种具有将待写入的数据存储至存储设备中,并且当存储与已经存储在存储设备中的数据具有相同内容的其他数据至存储设备中时,还参考已经存储在存储设备中的数据作为其他数据的功能的信息处理设备中的数据存储方法,该数据存储方法包括:
将待写入的数据分离成根据先前设置的标准分类的用户数据部分和管理数据部分;以及
将用户数据部分存储至用户数据文件中,将管理数据部分存储至管理数据文件中,并且将由数据分离部分分离的用户数据部分和管理数据部分存储至存储设备中。
(补充说明10)
根据补充说明9所述的数据存储方法,包括将索引数据存储至索引数据文件中并存储至存储设备中,索引数据包括关于由数据分离部分分离的用户数据部分和管理数据部分的未分离数据内位置的信息,以及关于在分离成用户数据部分和管理数据部分之后用户数据文件和管理数据文件中每个文件中的位置的信息。
虽然已经参考相应的示例性实施方式描述了本发明,但本发明不限于上文所述的示例性实施方式。本发明的配置和细节可以在本发明的范围内通过本领域技术人员可以理解的各种方式进行改变。
本发明基于并要求于2010年3月4日提交的日本专利申请No.2010-47411的优先权,其公开内容通过引用全部并入于此。
1存储系统
2加速器节点
3存储节点
4备份系统
5备份目标设备
10数据分离和连接设备
11分离数据写入部分
12数据分离部分
13分离数据关联部分
14分离数据读取部分
20存储设备
21用户数据文件存储部分
22管理数据文件存储部分
23索引数据文件存储部分
30软件
110存储设备
111数据写入部分
112数据分离部分
120存储设备
121用户数据文件
122管理数据文件