技术领域
[0001] 本
发明涉及信息技术领域,特别涉及一种数据存储系统中的数据存储方法及协调存储节点。
背景技术
[0002] 为了提高数据的安全性,避免数据在传输过程中丢失,在分布式存储中常采用冗余方式对数据进行存储。目前冗余方式主要有副本冗余和EC(Erasure code,纠错码)冗余两种。其中,多副本冗余是将原始数据复制成多个副本数据,每个副本数据存储在一个存储节点上。EC冗余是将原始数据等分为X个分片数据,采用EC
算法对X个分片数据进行校验,得到Y个分片校验数据,进而将X+Y个分片存储到不同的存储节点上。
[0003] 当前应用最为广泛的是多副本冗余和EC冗余相结合的数据存储方式。具体存储过程如下:客户端对原始数据进行复制,得到多个副本数据,将多个副本数据存储在不同的副本存储节点上,将任一副本数据发送至EC协调节点,EC协调节点将该副本数据等分为X个分片数据,并采用EC算法对X个分片数据进行校验,得到Y个分片校验数据,EC协调节点存储一个分片数据,进而将X+Y-1个分片发送到不同的EC存储节点进行存储。
[0004] 当数据存储方式由副本冗余转换为EC冗余时,需要先将任一副本数据发送至EC协调节点,再由EC协调节点将包括分片数据和分片校验数据在内的多个分片发送到不同的EC存储节点进行存储,该过程传输大量数据,导致存储系统内网络资源消耗较大。
发明内容
[0005] 为了减少将数据由多副本存储模式转为EC存储模式进行存储时,存储系统内网络资源消耗,本发明
实施例提供了一种存储系统中的数据存储方法及协调存储节点。所述技术方案如下:
[0006] 第一方面,提供了一种存储系统中的数据存储方法,该存储系统包括多个存储节点,多个存储节点中的N个存储节点上存储有长度为M的数据,该N个存储节点包括一个协调存储节点,其中,N为大于1的自然数,该方法包括:
[0007] 在存储系统中,因业务需求,将数据由多副本存储模式转化EC存储模式进行存储时,协调存储节点将长度为M个数据等分为X个数据分片,每个数据分片都具有一个起始地址和长度,每个数据分片的起始地址为该数据分片在长度为M的数据中的
位置,每个数据分片的长度均为M/X。基于所得到的X个数据分片,协调存储节点通过对X个数据分片进行校验,得到Y个校验分片,每个校验分片的长度也为M/X。
[0008] 对于X个数据分片中的第i个数据分片,协调存储节点将第i个数据分片的起始地址和长度发送给N个存储节点中的第i个存储节点,其中,i为大于1且小于等于D的自然数,D为X和N中的最小值。
[0009] 当X大于N时,协调存储节点分别将X-N个数据分片和Y个校验分片中的每一个分片分配一个第一存储节点,该第一存储节点为多个存储节点中除N以外的任一存储节点。
[0010] 当X小于等于N时,协调存储节点为Y个校验分片中的每一个分片分配一个第二存储节点,该第二存储节点为多个存储节点中除X个存储节点以外的任一存储节点。
[0011] 由于作为协调存储节点的数据存储节点具有双重功能,不仅可存储完整的数据,而且还可对包括数据分片和校验分片在内的分片进行分发,因而无需将完整的数据发送至专
门的协调存储节点,大大减小了存储系统内的数据传输量,节省了存储系统内的网络资源消耗。
[0012] 结合第一方面,在第一方面的第一种可能的实现方式中,协调节点所在的存储系统还包括视图管理节点,基于该视图管理节点,协调存储节点在将第i个数据分片的起始地址和长度发送给N个存储节点中的第i个存储节点时,可先接收视图管理节点发送的存储节点信息,该存储节点信息包括存储长度为M的数据的存储节点的信息,该信息包括存储节点标识等等。协调存储节点根据所接收到的存储节点信息,将第i个数据分片的起始地址和长度有针对性地发送给N个存储节点中的第i个存储节点。
[0013] 结合第一方面,在第一方面的第二种可能的实现方式中,协调存储节点还将接收存储成功消息,该存储成功消息由存储X个数据分片和Y个校验分片的存储节点中除协调存储节点以外的其他存储节点发送。通过接收存储成功消息,协调存储节点可获知每个分片的存储情况,从而在任一分片未成功存储时,及时将该分片发送至相应的存储节点进行存储,以确保数据完整。
[0014] 结合第一方面的第一种可能的实现方式,在第一方面方面的第三种可能的实现方式中,为使协调存储节点能将第i个数据分片的起始地址和长度有针对性地,存储系统中的视图管理节点可对长度为M的数据进行哈希计算,得到哈希值,并根据该哈希值及预先所构造的哈希空间,确定出长度为M的数据在哈希空间中的位置,进而以该位置为起点,将
指定方向的N个存储节点作为存储长度为M的数据的存储节点以及存储X个数据分片和Y个校验分片中的N个分片的存储节点。
[0015] 第二方面,提供了一种协调存储节点,该协调存储节点位于存储系统中,该存储系统包括多个存储节点和视图管理节点,该多个存储节点中的N个存储节点上存储有长度为M的数据,该协调存储节点包含于N个存储节点中,其中,N为大于1的自然数,该协调存储节点用于执行上述第一方面中协调存储节点所执行的方法,该视图管理节点用于执行上述第一方面中视图管理节点所执行的方法。
[0016] 第三方面,提供了一种协调存储节点,该协调存储节点位于存储系统中,该存储系统包括多个存储节点,该多个存储节点中的N个存储节点上存储有长度为M的数据,且该协调存储节点包含于N个存储节点中,其中,N为大于1的自然数据,该协调存储节点包括
存储器、处理器和总线,且存储器和处理器通过总线直连;
[0017] 该存储器用于存储计算机指令,该处理器用于执行存储器存储的计算机指令用于执行上述第一方面所述的存储系统中的数据存储方法。
[0018] 具体地,上述第二方面和第三方面的协调存储节点,通过具体的结构单元或处理器,可执行如下步骤:
[0019] 将所述长度为M的数据等分为X个数据分片,并对所述X个数据分片进行校验,得到Y个校验分片,其中,X和Y为自然数,且每一个数据分片和每一个校验分片的长度均为M/X;
[0020] 将第i个数据分片的起始地址和长度发送给所述N个存储节点中的第i个存储节点,其中,i为大于1且小于等于D的自然数,D为X和N中的最小值;
[0021] 当X大于N时,分别为X-N个数据分片和所述Y个校验分片中的每一个分片分配一个第一存储节点,所述第一存储节点为所述多个存储节点中除所述N个存储节点以外的任一存储节点。
[0022] 具体地,上述第二方面和第三方面的协调存储节点,通过具体的结构单元或处理器,可执行如下步骤:
[0023] 将所述长度为M的数据等分为X个数据分片,并对所述X个数据分片进行校验,得到Y个校验分片,其中,X和Y为自然数,且每一个数据分片和每一个校验分片的长度均为M/X;
[0024] 将第i个数据分片的起始地址和长度发送给所述N个存储节点中的第i个存储节点,其中,i为大于1且小于等于D的自然数,D为X和N中的最小值;
[0025] 当X不大于N时,为所述Y个校验分片中的每一个分片分配一个第二存储节点,所述第二存储节点为所述多个存储节点中除所述X个存储节点以外的任一存储节点。
[0026] 本发明实施例提供的技术方案带来的有益效果是:
[0027] 在将数据由多副本存储模式转为EC存储模式进行存储时,无需将数据发送至专门的协调存储节点,而借助可作为数据协调节点的存储节点进行数据分发,大大减少了数据传输量,节省了系统内网络资源消耗。
附图说明
[0028] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0029] 图1是本发明一个实施例提供一种存储系统结构的示意图;
[0030] 图2是本发明另一个实施例提供的一种存储系统中的数据存储方法
流程图;
[0031] 图3是本发明另一个实施例提供的一致性
哈希算法的示意图;
[0032] 图4是本发明另一个实施例提供的一种存储系统中存储节点的分布示意图;
[0033] 图5是本发明另一个实施例提供的数据存储过程的示意图;
[0034] 图6是本发明另一个实施例提供的数据存储过程的示意图;
[0035] 图7是本发明另一个实施例提供的协调存储节点的结构示意图;
[0036] 图8是本发明另一个实施例提供的协调存储节点的结构示意图;
[0037] 图9是本发明另一个实施例中使用的协调存储节点的说明性计算
机体系结构。
具体实施方式
[0038] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0039] 参见图1,其示出了一种存储系统,该存储系统包括视图管理节点101、客户端102及存储节点103。
[0040] 其中,视图管理节点101可以为一台单独的计算设备,也可以为由多台计算设备组成的计算集群。该视图管理节点用于接收存储节点103上报的心跳信息,并根据存储节点103上报的心跳信息,更新存储节点103的节点状态。视图管理节点101还用于为客户端102中的数据分配存储节点。视图管理节点101还维护一张哈希值与存储节点之间对应关系的视图,该视图用于客户端102从存储节点中查询数据。
[0041] 客户端102可以为智能手机、
平板电脑、
笔记本电脑等等,本实施例不对客户端102的产品类型作具体的限定。客户端102用于接收视图管理节点101推送的视图,并根据该视图查询数据。
[0042] 存储节点103为存储系统中存储数据的物理介质,该存储节点每隔预设时长会向视图管理节点上报心跳信息,以使视图管理节点维护本存储节点的状态。
[0043] 上述视图管理节点101与客户端102及数据节点103可通过有线网络或无线网络进行通信,客户端102与数据节点103可通过有线网络或无线网络进行通信。
[0044] 基于图1所示的
数据库系统,本发明实施例提供了一种数据存储方法,该存储系统包括多个存储节点及视图管理节点,其中,多个存储节点中的N个存储节点上存储有长度为M的数据,且N个存储节点包括一个协调存储节点,参见图2,本发明实施例提供的方法流程包括:
[0045] 201、视图管理节点为长度M的数据分配存储节点信息。
[0046] 由于存储系统中包括的存储节点数量较多,为了有针对性对长度为M的数据采用冗余方式进行存储,同时最大限度地降低数据传输过程中系统内网络资源消耗,在本实施例中,视图管理节点还将采用存储节点选择算法为长度为M的数据分配存储节点。
[0047] 其中,存储节点选择算法可以包括一致性哈希算法等。一致性哈希算法原理如下:构造一个0~232-1的哈希空间,将0~232-1的哈希空间组成一个哈希环,将哈希环分成多个相等的区间,每个区间内的哈希值的差值范围相同。图3示出了一个哈希空间组成的哈希环,参见图3,该哈希环被等分为20个区间,分别为P0~P19且P0~P19的哈希值的差值范围相同。
[0048] 受限于存储系统自身的性能,存储系统对长度为M的数据采用冗余方式进行存储时,副本数据(复制得到的长度为M的数据)的数量、数据分片的数量以及对数据分片校验得到的校验分片的数量是确定的。对于本实施例所述的存储系统系统采用冗余方式进行存储时,副本数据的数量为N个,数据分片的数量为X个,校验分片的数量为Y个,其中,N为大于1的自然数,X和Y为自然数。
[0049] 具体地,视图管理节点在采用存储节点选择算法,为长度为M的数据分配存储节点时,可包括以下步骤2011~2013:
[0050] 2011、视图管理节点对长度为M的数据进行哈希计算,得到哈希值。
[0051] 视图管理节点可采用指定哈希算法对长度为M的数据进行哈希计算,得到哈希值。其中,指定哈希算法包括加法哈希算法、乘法哈希算法、除法哈希算法、位运算哈希算法、查表哈希算法等等。
[0052] 2012、视图管理节点根据哈希值,确定长度为M的数据在哈希空间中的位置。
[0053] 在本实施例中,哈希空间中的每个区间都对应一个哈希值范围,当哈希值位于哈希空间的任一区间内,可将该区间所在的位置作为长度为M的数据在哈希空间中的位置。例如,长度为M的数据KEY经过哈希计算,得到的哈希值为k1,该k1位于图3中PO所在的区间内,因此,可将PO所在的位置作为长度为M的数据KEY在哈希空间中的位置。
[0054] 2013、视图管理节点以位置为起点,将指定方向的N个存储节点作为存储长度为M的数据的存储节点。
[0055] 其中,指定方向可以为以哈希值所在位置为起点的顺
时针方向,还可以为以哈希值所在位置为起点的逆时针方向。由于本实施例中采用N个副本对长度为M的数据进行冗余存储,因此,视图管理节点需要为长度为M的数据在副本存储模式下分配N个存储节点。基于对长度为M的数据进行哈希计算得到的哈希值,视图管理节点以该哈希值所在的位置为起点,将指定方向上的N个存储节点作为存储长度为M的数据的存储节点,该N个存储节点的选取方式可以为连续选取,即将指定方向上以该哈希值所在位置为起点的N个连续的存储节点作为存储长度为M的数据的存储节点,还可为不连续选取,即将指定方向上以该哈希值所在位置为起点的N个不连续的存储节点作为存储长度为M的数据的存储节点。
[0056] 2014、视图管理节点以位置为起点,将指定方向的N个存储节点作为存储X个数据分片和Y个校验分片中的N个分片的存储节点。
[0057] 基于对长度为M的数据进行哈希计算得到的哈希值,视图管理节点以该哈希值所在的位置为起点,将指定方向的N个存储节点作为存储X个数据分片和Y个校验分片中的N个分片的存储节点,该存储X个数据分片和Y个校验分片中的N个存储节点的选取方式与存储长度为M的数据的N个存储节点的选取方式相同,如果存储长度为M的数据的N个存储节点采用连续方式进行选取,则将以该哈希值所在位置为起点的N个连续的存储节点作为存储X个数据分片和Y个校验分片中的N个分片的存储节点,如果存储长度为M的数据的N个存储节点采用不连续方式进行选取,则以该哈希值所在位置为起点的N个不连续的存储节点作为存储X个数据分片和Y个校验分片中的N个分片的存储节点。无论如何采用何种方式进行选取,确保存储长度为M的数据的N个存储节点与存储X个数据分片和Y个校验分片中的N个分片的存储节点最大限度的重合即可。
[0058] 以采用3副本数据、4数据分片、2校验分片的冗余存储方式为例,视图管理节点为长度为M的数据分配存储节点的过程,可参见下述例子。
[0059] (1)、对于长度为M的数据KEY,视图管理节点对该长度为M的数据KEY进行哈希计算,得到哈希值k1。
[0060] (2)、视图管理节点根据该哈希值k1,从哈希空间中确定该哈希值k1所在的位置,并将该位置为起点,将顺时针方向的3个存储节点作为存储长度为M的数据的存储节点,参见图3,PO、P1、P2即为存储长度为M的数据的存储节点。
[0061] (3)、视图管理节点根据该哈希值k1,从哈希空间中确定该哈希值k1所在的位置,并将该位置为起点,将顺时针方向的3个存储节点作为存储4个数据分片和2个校验分片中的3个分片的存储节点,参见图3,P0、P1、P2即为存储4个数据分片和2个校验分片中的3个分片的存储节点。
[0062] 上述视图管理节点为长度为M的数据所分配的存储节点实际上为哈希空间中每个区间所在的虚拟存储节点,该虚拟存储节点无法真正地存储数据,需要将虚拟存储节点与存储系统中的物理存储节点建立映射关系,将对应虚拟存储节点上的数据持久化到与物理存储节点中。为了便于对虚拟存储节点和物理存储节点进行管理,视图管理节点还维护一张该映射表,该映射表内存储了哈希空间的每个区间与物理存储节点之间的映射关系,通常物理存储节点的数量要小于哈希空间中的区间数量,这样每个物理存储节点实际上会对应多个区间,也即是多个虚拟存储节点的数据存储于同一物理存储节点上。参见图3,哈希空间被等分为P0~P19共20个区间,存储系统包括4个物理存储节点,分别为物理存储节点1、物理存储节点2、物理存储节点3及物理存储节点4,其中,A(P0)、E(P4)、I(P8)、M(P12)、Q(P16)被映射到物理节点1上,B(P1)、F(P5)、J(P9)、N(P13)、R(P17)被映射到物理节点2上,C(P3)、G(P6)、K(P10)、0(P14)、S(P18)被映射到物理节点3上,D(P4)、H(P7)、L(P11)、P(P15)、T(P19)被映射到物理节点4上。
[0063] 参见图4,基于视图管理节点所维护的映射表,当客户端需要从存储系统中查询数据KEY1,客户端可可先计算该KEY1的哈希值k1,并确定哈希值k1在哈希空间中的位置,进而根据该映射表,查找该哈希值所在的物理存储节点,从而从该物理存储节点上查询到数据KEY1。
[0064] 202、视图管理节点将存储节点信息发送至协调存储节点和客户端。
[0065] 由于存储长度为M的数据的存储节点及存储X个数据分片和Y个校验分片中的N个分片的存储节点,是客户端进行多副本存储、协调存储节点进行EC存储的关键,为使客户端和协调存储节点能够进行有针对地存储,视图管理节点可将为长度为M的数据所分配的N个存储节点的存储节点信息、以及存储X个数据分片和Y个校验分片中的N个分片的存储节点的存储节点信息发送至客户端和协调存储节点。其中,存储节点信息包括存储节点标识等等。
[0066] 203、客户端根据存储节点信息,对长度为M的数据进行复制,并将复制后的数据发送至N个存储节点进行存储。
[0067] 当接收到视图管理节点发送的存储节点信息,客户端对长度为M的数据复制N份,得到N个长度为M的数据,进而将N个长度为M的数据发送至所分配的N个存储节点,由每个存储节点进行存储。
[0068] 为了提高数据
访问速率,存储系统可根据客户端的访问量转换数据的存储模式,当客户端对任一数据的访问量大于一定的数值时,存储系统可触发协调存储节点将数据由副本存储模式转换为EC存储模式进行存储。
[0069] 204、协调存储节点将长度为M的数据等分为X个数据分片,并对X个数据分片进行校验,得到Y个校验分片。
[0070] 由于本实施例中的存储系统采用X个数据分片、Y个校验分片的冗余方式进行存储,因此,在EC存储模式下,协调存储节点需要将本节点上所存储的长度为M的数据等分为X个数据分片。基于所划分的X个数据分片,协调存储节点采用指定校验算法,对X个数据分片进行校验,得到Y个校验分片。其中,指定校验算法包括奇偶校验算法、CRC循环冗余校验算法等等。
[0071] 205、协调存储节点将第i个数据分片的起始地址和长度发送给N个存储节点中的第i个存储节点。
[0072] 其中,i为大于1且小于等于D的自然数,D为X和N中的最小值。由于N个存储节点中已存储了长度为M的数据,因此,为了节省数据在系统内传输所消耗的网络资源,协调存储节点可将分片信息发送至N个存储节点,由每个存储节点根据分片信息对所存储的长度为M的数据进行剪切,得到一个数据分片并存储。其中,分片信息包括数据分片的起始地址和长度等。对于X个数据分片中的第i个数据分片,协调存储节点将第i个数据分片的起始地址和长度发送给N个存储节点中的第i个存储节点,由第i个存储节点根据第i个数据分片的起始地址和长度,对所存储的长度为M的数据进行剪切,得到与起始地址和长度相应的数据分片,并存储该数据分片。
[0073] 206、当X大于N时,协调存储节分别为X-N个数据分片和Y个校验分片中的每一个分片分配一个第一存储节点。
[0074] 其中,第一存储节点为多个存储节点中除N个存储节点以外的任一存储节点。当X大于N时,说明数据分片的数量大于长度为M的数据的副本数量,此时,协调存储节点需要为X-N个数据分片和Y个校验分片中的每一个分片分配一个第一存储节点,并将X-N个数据分片和Y个校验分片发送至所分配的第一存储节点,由第一存储节点进行存储。
[0075] 207、当X不大于N时,协调存储节为Y个校验分片中的每一个分片分配一个第二存储节点。
[0076] 其中,第二存储节点为多个存储节点中除X个存储节点以外的任一存储节点。当X不大于N时,说明数据分片的数量小于等于长度为M的数据的副本数量,此时协调存储节需要为Y个校验分片中的每一个分片分配一个第二存储节点,并将Y个校验分片发送至第二存储节点,由第二存储节点进行存储。
[0077] 对于上述过程,为了便于理解,下面将以一个具体的例子进行说明。
[0078] 参见图5,设定数据大小为4M,视图管理节点为存储长度为4M的数据分配的存储节点为N1、N2、N3,为4个数据分片和2个校验分片分配的存储节点为N1、N2、N3、N4、N5、N6,协调存储节点N1将长度为4M的数据等分为4个1M的数据分片,并对4个数据分片进行校验,得到2个校验分片。当需要将长度为M的数据由多副本存储模式转为EC存储模式进行存储时,协调存储节点N1根据起始地址为0和长度为1M的分片信息,对本节点所存储的长度为4M的数据进行剪切,得到数据分片并存储,并向存储节点N2发送起始地址为1M和长度为1M的分片信息,向存储节点N3发送起始地址为2M和长度为1M的分片信息,由存储节点N2和N3对本节点所存储的长度为4M的数据进行剪切,得到数据分片并存储。对于存储节点N4、N5、N6,协调存储节点N1可将起始地址为3M和长度为1M的数据分片至存储节点N4进行存储,将起始地址为0和长度为1M的校验分片发送至存储节点N5进行存储,将起始地址为1M和长度为1M的校验分片发送至存储节点N6进行存储。
[0079] 为使客户端能够获知EC存储模式下数据的存储
请求,指定存储节点在成功存储每个数据分片或校验分片时,还将向协调存储节点发送存储成功消息。其中,指定存储节点为存储X个数据分片和Y个校验分片的存储节点中除协调存储节点以外的其他存储节点。
[0080] 图6示出了将数据由多副本存储模式转为EC存储模式时进行数据存储的过程图,参见图6,视图管理节点为长度为M的数据分配存储节点N1、N2、N3,为4个数据分片和2个校验分片分配的存储节点为N1、N2、N3、N4、N5、N6。在由多副本存储模式转为EC存储模式时,协调存储节点N1将所存储的长度为M的数据分为4个数据分片,并对4个数据分片进行校验,得到2个校验分片。协调存储节点N1N1根据分片信息,对本节点所存储的长度为M的数据进行剪切,得到数据分片并存储;并向存储节点N2发送分片信息,由存储节点N2根据对所存储的长度为M的数据进行剪切,得到一个数据分片并存储;向N3发送分片信息,由存储节点N3根据对所存储的长度为M的数据进行剪切,得到一个数据分片并存储;将分片信息为的数据分片发送至存储节点N4进行存储,将两个校验分片分别发送至存储节点N5和N6进行存储。
[0081] 本发明实施例提供的方法,在将数据由多副本存储模式转为EC存储模式进行存储时,无需将数据发送至专门的协调存储节点,而借助可作为数据协调节点的存储节点进行数据分发,大大减少了数据传输量,节省了系统内网络资源消耗。
[0082] 参见图7,本发明实施例提供了一种协调存储节点,该协调存储节点位于存储系统中,该存储系统包括多个存储节点,多个存储节点中的N个存储节点上存储有长度为M的数据,协调存储节点包含于N个存储节点中,其中,N为大于1的自然数,协调存储节点包括:
[0083] 划分单元701,用于将长度为M的数据等分为X个数据分片,并对X个数据分片进行校验,得到Y个校验分片,其中,X和Y为自然数,且每一个数据分片和每一个校验分片的长度均为M/X;
[0084] 发送单元702,用于将第i个数据分片的起始地址和长度分别发送给N个存储节点中的第i个存储节点,其中,i为大于1且小等于D的自然数,D为X和N中的最小值;
[0085] 分配单元703,用于当X大于N时,分别为X-N个数据分片和Y个校验分片中的每一个分片分配一个第一存储节点,第一存储节点为多个存储节点中除N个存储节点以外的任一存储节点。
[0086] 在本发明的另一个实施例中,分配单元703,用于当X不大于N时,为Y个校验分片中的每一个分片分配一个第二存储节点,第二存储节点为多个存储节点中除X个存储节点以外的任一存储节点。
[0087] 可选的,本发明的另一个实施例中,分配单元703用于当X大于N时,分别为X-N个数据分片和Y个校验分片中的每一个分片分配一个第一存储节点,第一存储节点为多个存储节点中除N个存储节点以外的任一存储节点;当X不大于N时,为Y个校验分片中的每一个分片分配一个第二存储节点,第二存储节点为多个存储节点中除X个存储节点以外的任一存储节点。
[0088] 参见图8,在本发明的另一个实施例中,存储系统还包括视图管理节点,协调存储节点还包括接收单元704;
[0089] 接收单元704,用于接收视图管理节点发送的存储节点信息,存储节点信息包括存储长度为M的数据的存储节点的信息;
[0090] 发送单元702,具体用于根据存储节点信息将第i个数据分片的起始地址和长度分别发送给N个存储节点中的第i个存储节点。
[0091] 在本发明的另一个实施例中,接收单元704,还用于接收存储成功消息,存储成功消息由存储X个数据分片和Y个校验分片的存储节点中除协调存储节点以外的其他存储节点发送。
[0092] 在本发明的另一个实施例中,视图管理节点,用于对长度为M的数据进行哈希计算,得到哈希值;根据哈希值,确定长度为M的数据在哈希空间中的位置;以该位置为起点,将指定方向的N个存储节点作为存储长度为M的数据的存储节点;以该位置为起点,将指定方向的N个存储节点作为存储X个数据分片和Y个校验分片中的N个分片的存储节点。
[0093] 综上所述,本发明实施例提供的系统,在将数据由多副本存储模式转为EC存储模式进行存储时,无需将数据发送至专门的协调存储节点,而借助可作为数据协调节点的存储节点进行数据分发,大大减少了数据传输量,节省了系统内网络资源消耗。
[0094] 参见图9,其示出了本发明的一个实施例中使用的协调存储节点900的说明性计算机体系结构。所述协调存储节点900为
服务器或存储设备。所述协调存储节点900包括处理器901、存储器902和总线903,其中,处理器901和存储器902通过总线903连接。可选的,所述协调存储节点900还包括帮助计算设备内的各个器件之间传输信息的基本输入/输出系统(I/O系统)904和用于存储
操作系统、应用程序和其他程序模
块的
大容量存储设备905。
[0095] 可选的,所述大容量存储设备905通过连接到总线903的大容量存储
控制器(未示出)连接到处理器901。所述大容量存储设备905及其相关联的计算机可读介质为协调存储节点900提供非易失性存储。也就是说,所述大容量存储设备905可以包括诸如
硬盘或者CD-ROM
驱动器之类的计算机可读介质(未示出)。
[0096] 不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他
磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。
[0097] 根据本发明的各种实施例,所述协调存储节点900还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即协调存储节点900可以通过连接在所述总线903上的网络
接口单元906连接到网络907,或者说,也可以使用网络接口单元906来连接到其他类型的网络或远程
计算机系统(未示出)。其中,网络接口单元906可以为网卡(又称之为网络接口卡)或主机总线适配器等。
[0098] 本发明实施例提供的计算机设备,在将数据由多副本存储模式转为EC存储模式进行存储时,无需将数据发送至专门的协调存储节点,而借助可作为数据协调节点的存储节点进行数据分发,大大减少了数据传输量,节省了系统内网络资源消耗。
[0099] 需要说明的是:上述实施例提供的协调存储节点在存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将协调存储节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的协调存储节点与数据存储系统中的数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0100] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过
硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是
只读存储器,磁盘或光盘等。
[0101] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何
修改、等同替换、改进等,均应包含在本发明的保护范围之内。