一种网络存储系统、数据处理方法和客户端的制作方法

文档序号:7790385阅读:152来源:国知局
一种网络存储系统、数据处理方法和客户端的制作方法
【专利摘要】本发明公开了一种网络存储系统、数据处理方法和客户端,该系统包括一个客户端和至少三个数据节点,每个数据节点的存储区域被划分为至少一个存储单元,得到位于该至少三个数据节点中的多个存储单元,且多个存储单元被划归为多个网络逻辑单元。该客户端将根据设定的RAID类型对目标数据进行切分得到的校验块和至少两个数据块,发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中;目标数据节点接收所述客户端发送的数据块和/或校验块,并将所述数据块和/或校验块分别存储至所述目标数据节点中属于所述目标网络逻辑单元的存储单元中。通过该系统可以提高数据存储的安全性和可靠性。
【专利说明】一种网络存储系统、数据处理方法和客户端
【技术领域】
[0001]本发明涉及数据存储领域,尤其涉及一种网络存储系统、数据处理方法和客户端。【背景技术】
[0002]分布式存储系统,就是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。分布式系统是由若干个独立的数据节点组成的集合,每个数据节点可以是一个存储服务器。在分布式系统中各个数据节点中均可以进行数据存储且数据节点可以通过网络访问系统中其他数据节点上所存储的数据。
[0003]在实际应用中,当需要获取分布式系统中的特定数据时,首先需要确定出该数据所在的数据节点位置,进而从该数据节点中获取到相应的数据。但是,当某数据节点的硬盘或者该数据节点出现故障时,则可能会导致该数据节点上所存储的数据丢失,进而影响到对相应数据的正常访问。可见,如何使得分布式系统的数据安全性,提高分布式系统的可靠性是本领域技术人员迫切需要解决的技术问题。

【发明内容】

[0004]有鉴于此,本发明提供一种网络存储系统、数据处理方法和客户端,以提高数据存储的安全性和可靠性。
[0005]为实现上述目的,本发明提供了如下技术方案:
[0006]本发明的第一方面提供了一种网络存储系统,所述系统包括一个客户端和至少三个数据节点,所述数据节点之间通过网络连接,所述客户端与所述数据节点之间通过网络连接;
[0007]其中,每个数据节点的存储区域被划分为至少一个存储单元,得到位于所述至少三个数据节点中的多个存储单元;所述多个存储单元被划归为多个网络逻辑单元;
[0008]所述客户端,用于根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块;从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,并将所述数据块和校验块分别发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中;
[0009]所述目标数据节点,用于接收所述客户端发送的数据块和/或校验块,并将所述数据块和/或校验块分别存储至所述目标数据节点中属于所述目标网络逻辑单元的存储单元中,以使得所述目标网络逻辑单元的任一存储单元内均存储有所述数据块中的一个数据块或所述校验块。
[0010]结合第一方面,在第一种可能的实现方式中,所述网络逻辑单元中所包含的多个存储单元均属于不同的数据节点。[0011]结合第一方面,在第二种可能的实现方式中,所述客户端,具体用于从所述多个网络逻辑单元中,确定支持所述RAID类型的目标网络逻辑单元,以利用所述目标网络逻辑单元中的多个存储单元存储所述数据块和所述校验块。
[0012]结合第一方面或者第一方面的第二种可能实现方式,在第三种可能的实现方式中,所述客户端,具体用于计算所述目标数据的第一哈希值,根据所述第一哈希值确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的哈希值范围包含所述第一哈希值。
[0013]结合第一方面或者第一方面的第二种可能实现方式,在第四种可能的实现方式中,所述客户端,具体用于根据所述目标数据的第一文件名确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的文件名中包含所述第一文件名。
[0014]结合第一方面,在第五种可能的实现方式中,所述多个目标数据节点中的至少一个目标数据节点,还用于从所述多个目标数据节点中,获取所述目标网络逻辑单元中的各个存储单元对所述数据块和校验块的存储状态信息,将获取到的所述存储状态信息发送给其他目标数据节点,使得各个目标数据节点保存所述存储状态信息,其中,所述存储状态信息中包括各个存储单元所存储的数据块或校验块的数量信息。
[0015]结合第一方面的第二种可能的实现方式,在第六种可能的实现方式中,所述系统还包括:元数据节点;
[0016]所述客户端还用于:在根据设定的RAID类型对目标数据进行切分,得到所述校验块和至少两个数据块之后,将所述目标数据与所述RAID类型的对应关系发送至所述元数据节点;
[0017]所述元数据节点,用于存储所述目标数据与所述RAID类型的对应关系。
[0018]结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述客户端,还用于从所述元数据节点中获取所述目标数据与所述RAID类型的对应关系,确定支持所述RAID类型的所述目标网络逻辑单元,并向所述目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取所述目标数据的请求;
[0019]所述目标数据节点,还用于在接收到所述客户端读取所述目标数据的请求时,从属于所述目标网络逻辑单元的存储单元中读取所存储的所述目标数据的数据块和/或校验块,并将读取到的数据块和/或校验块发送给所述客户端。
[0020]结合第一方面、或者第一方面的第一种可能的实现方式、或者第一方面的第二种实现方式、或者第一方面的第五种可能的实现方式,在第八种可能的实现方式中,所述目标数据节点,还用于获取所述目标网络逻辑单元中的各个存储单元对所述数据块和校验块的存储状态信息;当根据所述存储状态信息确定出所述目标网络逻辑单元中存在对所述数据块或校验块存储异常的存储单元时,根据所述目标网络逻辑单元中未出现存储异常的存储单元内所存储的数据块和校验块,恢复出所述出现存储异常的存储单元内的数据块或校验块,其中,所述存储状态信息中包括存储单元所存储的数据块或校验块的数量信息。
[0021 ] 本发明的第二方面提供了 一种数据处理方法,所述方法应用于包括至少三个数据节点的网络存储系统,所述数据节点之间通过网络连接,所述数据节点的存储区域被划分为至少一个存储单元,得到位于所述至少三个数据节点中的多个存储单元,且所述多个存储单元被划归为多个网络逻辑单元,所述方法包括:
[0022]根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块;
[0023]从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元;
[0024]将所述数据块和校验块分别发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中,以便所述目标数据节点将接收到的数据块和/或校验块存储其属于所述目标网络逻辑单元的存储单元内,使得所述目标网络逻辑单元的任一存储单元内均存储有所述数据块中的一个数据块或校验块。
[0025]结合第二方面,在第一种可能的实现方式中,所述网络逻辑单元所包含的存储单元均属于不同的数据节点;
[0026]所述将所述数据块和校验块分别发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中,包括:
[0027]向所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中的任一目标数据节点发送一个所述数据块或一个所述校验块,且向不同的目标数据节点发送的数据块或校验块不同。
[0028]结合第二方面,在第二种可能的实现方式中,所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,包括:
[0029]从所述多个网络逻辑单元中,确定支持所述RAID类型的网络逻辑单元作为存储所述数据块和校验块的目标网络逻辑单元。
[0030]结合第二方面或者第二方面的第二种可能的实现方式,在第三种可能的实现方式中,在所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元之前,还包括:
[0031]计算所述目标数据的第一哈希值;
[0032]所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,包括:
[0033]根据所述第一哈希值,确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的哈希值范围包含所述第一哈希值。
[0034]结合第二方面或者第二方面的第二种可能的实现方式,在第四种可能的实现方式中,所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,包括:
[0035]根据所述目标数据的第一文件名,确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的文件名中包含所述第一文件名。
[0036]本发明的第三方面还提供了一种客户端,所述客户端应用于包括至少三个数据节点的网络存储系统,所述数据节点之间通过网络连接,所述数据节点的存储区域被划分为至少一个存储单元,得到位于所述至少三个数据节点中的多个存储单元,且所述多个存储单元被划归为多个网络逻辑单元;所述客户端至少包括处理器、存储器、通信接口和通信总线.-^4 ,
[0037]其中,所述处理器、存储器和所述通信接口通过所述通信总线进行通信;
[0038]所述处理器用于根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块;从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元;将所述数据块和校验块分别发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中;
[0039]所述存储器用于存储包含有所述处理器运行的程序的信息。
[0040]结合本发明的第三方面,在第一种可能的实现方式中,当所述网络逻辑单元所包含的存储单元均属于不同的数据节点时,所述处理器从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为:
[0041]向所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中的任一目标数据节点发送一个所述数据块或一个所述校验块,且向不同的目标数据节点发送的数据块或校验块不同。
[0042]结合本发明的第三方面,在第二种可能的实现方式中,所述处理器从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为:
[0043]从所述多个网络逻辑单元中,确定支持所述RAID类型的网络逻辑单元作为存储所述数据块和校验块的目标网络逻辑单元。
[0044]结合本发明的第三方面或者第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理器,还用于在所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元之前,计算所述目标数据的第一哈希值;
[0045]相应的,所述处理器从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为:
[0046]根据所述第一哈希值,确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的哈希值范围包含所述第一哈希值。
[0047]结合本发明的第三方面或者第三方面的第二种可能的实现方式,在第四种可能的实现方式中,所述处理器从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为:
[0048]根据所述目标数据的第一文件名,确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的文件名中包含所述第一文件名。
[0049]结合本发明的第三方面,在第五种可能的实现方式中,所述网络存储系统还包括元数据节点;
[0050]所述处理器,还用于将所述目标数据与所述RAID类型的对应关系发送至所述元数据节点,以在所述元数据节点中存储所述对应关系。
[0051]结合本发明的第三方面,在第六种可能的实现方式中,所述处理器,还用于从所述元数据节点中获取所述目标数据与所述RAID类型的对应关系,确定支持所述RAID类型的所述目标网络逻辑单元,并向所述目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取所述目标数据的请求,以便从所述多个目标数据节点中得到所述数据块和校验块。
[0052]从上述的技术方案可以看出,本发明实施例公开一种网络存储系统、数据处理方法和客户端,由于当客户端将切分得到的这些该数据块和校验块分别存储至目标网络逻辑单元中位于多个目标数据节点内的多个存储单元后,目标网络逻辑单元的各个存储单元内所存储的数据块和校验块之间也存在冗余关系。这样,当由于目标数据节点发生故障,使得某一个或几个存储单元中所存储数据块或校验块出现丢失或损坏等异常状况时,利用未发生故障的目标数据节点中属于该目标网络逻辑单元的存储单元中所存储的数据块和校验块,便可以恢复出出现异常的数据块或校验块,从而减少了数据损坏后不能恢复的情况,提高了系统数据存储的安全性和可靠性。
【专利附图】

【附图说明】
[0053]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0054]图1为本发明一种网络存储系统一个实施例的结构示意图;
[0055]图2示出了发明中网络逻辑单元的组成以及向网络逻辑单元的存储单元中存储数据块或校验块的示意图;
[0056]图3为示出了该目标网络逻辑单元对各个目标数据的校验块和数据块的存储情况示意图;
[0057]图4示出了目标网络逻辑单元中的存储单元出现存储故障以及故障恢复后,对数据块和校验块存储状态的对比示意图;
[0058]图5示出了本发明一种网络存储系统另一个实施例的结构示意图;
[0059]图6示出了本发明一种数据处理方法一个实施例的流程示意图;
[0060]图7示出了本发明中客户端进行数据读取的流程交互示意图;
[0061]图8示出了本发明一种客户端一个实施例的结构示意图。
【具体实施方式】
[0062]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0063]本发明公开了一种网络存储系统、数据处理方法和客户端,以提高系统中数据存储的安全性以及可靠性。
[0064]参见图1,示出了本发明一种网络存储系统一个实施例的结构示意图,本实施例的系统包括一个客户端101和至少三个数据节点102。各个数据节点之间通过网络连接,该客户端与各个数据节点之间也通过网络连接。其中,连接各个数据节点以及数据节点与客户端的网络可以是互联网internet、因特网协议存储区域网络(IP SAN, Internet ProtocolStorage Area Network)以及私有网络等等。
[0065]在本实施例中,每个数据节点102的存储区域被划分为至少一个存储单元,得到位于该至少三个数据节点中的多个存储单元。系统中的这多个存储单元被划归为多个网络逻辑单元(NLUN, Network Logical Unit Name)。将多个存储单元划归为多个网络逻辑单元,实际上是构建出了系统中的多个网络逻辑单元。其中,每个网络逻辑单元中至少包含三个存储单元,且网络逻辑单元内所包含的存储单元不能全部位于同一个数据节点。网络逻辑单元也可以称为网络卷,它实际上可以理解为其各个存储单元分布在网络中的多个数据节点内的一个存储系统。
[0066]可以理解的是,不同的网络逻辑单元所包含的存储单元的数量也可能不同。为了构建各个网络逻辑单元,可以预先设定各个网络逻辑单元中所包含的存储单元的数量,网络逻辑单元所包含的存储单元的数量也就是构建该网络逻辑单元所需的存储单元的数量。这样,根据构建各个网络逻辑单元所需的存储单元的数量,可以将系统中的多个存储单元分别划归为系统中需要构建的各个网络逻辑单元内,从而构建出多个由不同数量的存储单元组成的网络逻辑单元。具体的,可以依据负载均衡原则,如依据Crush算法、伪随机算法、轮巡算法或者是其他负载均衡算法,并依据构建各个网络逻辑单元所需的存储单元的数量,从系统中选择满足条件的存储单元来组成各个网络逻辑单元。
[0067]其中,一个存储单元仅可以被划归为一个网络逻辑单元,当该存储单元被划归到一个网络逻辑单元后,该存储单元便不能被划归到其他的网络逻辑单元中。这样,对于任意一个网络逻辑单元而言,当该网络逻辑单元所包含的存储单元的数量确定后,可以按照负载均衡的原则,从系统中的未被划归至其他网络逻辑单元的多个存储单元中,选择负载量低于其他存储单元且与构建该网络逻辑单元所需的存储单元的数量相同数量的存储单元来构建该网络逻辑单元。
[0068]例如,假设系统中存在数据节点A、数据节点B、数据节点C和数据节点D。其中,将数据节点A的存储区域划分为2个存储单元,将数据节点B的存储区域划分为4个存储单元,将数据节点C的整个存储区域作为一个存储单元,将数据节点D的存储区域划分为2个存储区域,从而得到位于这4个数据节点中的9个存储单元。假设系统中构建网络逻辑单元M需要4个存储单元,构建网络逻辑单元N需要5个存储单元,则可以将这9个存储单元中的4个存储单元划归为网络逻辑单元M,将剩余的5个网络逻辑单元划归为网络逻辑单元N。根据负载均衡原则,在构建网络逻辑单元M时,可以是从系统中负载相对较小的4个存储单元来构成该网络逻辑单元M,如假设将数据节点A中的2个存储单元以及数据节点B的I个存储单元以及数据节点D的I个存储单元划归为网络逻辑单元M,则网络逻辑单元M的存储区域实际上是由位于数据节点A的2个存储单元,以及位于数据节点B的I个存储单元和位于数据节点D的I个存储单元构成。而网络逻辑单元N需要5个存储单元,则可以将剩余的5个存储单元划归为网络逻辑单元N,如果构建出网络逻辑单元M之后,系统剩余的存储单元大于5个,则仍需要选择5个负载较小的存储单元来构成该网络逻辑单元N。但是需要注意的是,网络逻辑单元M的4个存储单元不能都是数据节点B中的4个存储单元,以避免出现网络逻辑单元中的所有存储单元均位于同一个数据节点的情况出现。
[0069]为了在系统中某一个或几个数据节点发生故障导致数据节点中所存储的数据出现丢失或损坏等异常后,能够恢复出出现异常的数据,在客户端向系统进行数据存储前,需要将待存储的目标数据按照RAID类型进行切分之后,再将切分后的数据块和校验块存储至系统的网络逻辑单元所包含的存储单元中。
[0070]具体的,该客户端101,用于根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块;从系统的多个网络逻辑单元中确定用于存储该数据块和校验块的目标网络逻辑单元,并将数据块和校验块分别发送至该目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中。[0071]相应的,目标数据节点,用于接收该客户端发送的数据块和/或校验块,并将所述数据块和/或校验块分别存储至该目标数据节点中属于该目标网络逻辑单元的存储单元中,以使得该目标网络逻辑单元的任一存储单元内均存储有该切分得到的数据块中的一个数据块或者是校验块。
[0072]其中,该目标数据可以为一个文件,如文档、图片、程序数据等,也可以是文件中的一部分数据。
[0073]客户端根据设定的RAID类型对目标数据进行切分时,可以按照与该RAID类型对应的RAID算法来对目标数据进行切分。在客户端中可以设定有多种RAID类型,如RAID类型可以包括RAIDl、RAID5、RAID6等等,RAID类型还可以具体的以RAIDn+m的形式表示,其中,η表示数据块的数量,m表示校验块的数量。例如,RAID5可以包括RAID3+2、RAID4+1等。在客户端对目标数据进行切分时,不同的目标数据所依据的RAID类型也可能不同,具体的可以依据目标数据所需的保护级别来选择所依据的RAID类型。
[0074]客户端依据设定的RAID类型对目标数据进行切分后,得到至少两个数据块和至少一个校验块,这些切分得到的数据块和校验块之间冗余关系,当出现数据块或校验块丢失或损坏等异常情况下时,利用其他未出现异常的数据块和校验块便可以重新恢复出丢失或损坏等异常的数据块或校验块。同时,客户端对目标数据进行切分时所依据的RAID类型,也决定了对目标数据进行切分后得到的数据块和校验块的数量。如,当依据RAID3+2对目标数据进行切分时,得到该目标数据的3个数据块和2个校验块;当依据RAID3+1对目标数据进行切分时,则得到该目标数据的3个数据块和I个校验块。
[0075]为了能够将切分得到的这些数据块和校验块分别存储至网络逻辑单元所包含的各个存储单元内,客户端需要从系统中的多个网络逻辑单元中确定用于存储切分得到的数据块和校验块的目标网络逻辑单元。其中,客户端确定出的该目标网络逻辑单元中所包含的存储单元的数量与客户端对目标数据进行切分后得到的数据块和校验块的总数量相同,以使得后续目标网络逻辑单元中的任意一个存储单元内均可以存储一个数据块或一个校验块,且不同的存储单元内所存储的数据块或校验块不同。如,客户端对目标数据进行切分得到3个数据块和一个校验块,则需要包含有4个存储单元的网络逻辑单元作为目标网络逻辑单元,以使得后续可以将这些数据块和校验块分别存储至该目标网络逻辑单元的4个存储单元中,使得一个存储单元内仅存储有一个数据块或校验块。
[0076]当客户端将切分得到的这些该数据块和校验块分别存储至目标网络逻辑单元中位于多个目标数据节点内的多个存储单元后,目标网络逻辑单元的各个存储单元内所存储的数据块和校验块之间也存在冗余关系,当由于目标数据节点发生故障,使得某一个或几个存储单元中所存储数据块或校验块出现丢失或损坏等异常状况时,利用未发生故障的目标数据节点中属于该目标网络逻辑单元的存储单元中所存储的数据块和校验块便可以恢复出出现异常的数据块或校验块。
[0077]当然,在客户端中可以存储有系统中所构建的各个网络逻辑单元的分布信息,如网络逻辑单元包含有哪些存储单元,以及各个存储单元位于哪些数据节点,以便于确定出目标网络逻辑单元后,可以向相应的数据节点发送数据块或校验块。
[0078]在本实施例的网络存储系统包括客户端和至少三个数据节点,每个数据节点的存储区域均被划分为至少一个存储单元,得到位于这至少三个数据节点中的多个存储单元,且这多个存储单元被划归为多个网络逻辑单元。客户端依据设定的RAID类型对目标数据切分得到校验块和至少两个数据块,将切分得到的数据块和校验块分别存储至目标网络逻辑单元中位于多个目标数据节点内的各个存储单元中。由于数据块和校验块是依据RAID类型切分得到的,使得目标网络逻辑单元中各个存储单元所存储的数据块和校验块之间存在冗余关系,当有目标数据节点出现故障而导致一个或多个存储单元内出现数据块或校验块丢失或者损坏等异常情况时,则可以利用该目标网络逻辑单元中未出现存异常的存储单元内所存储的数据块和校验块重新恢复出出现异常情况的数据块,从而降低了系统数据损坏后的不可恢复性,提高了系统数据存储的安全性。
[0079]在以上实施例中,一个数据节点内可能会存在两个或两个以上存储单元被划归为同一个网络逻辑单元的情况。相应的,对于客户端确定的目标网络单元而言,该目标网络逻辑单元中也可能会存在两个或多个存储单元位于同一个目标数据节点的情况。客户端将切分得到的至少两个数据块和至少一个数据块分别发送至该目标网络逻辑单元所包含的多个存储单元所在的目标数据节点后,如果目标数据节点只包含一个属于该目标网络逻辑单元的存储单元,则该目标数据节点则会接收到一个数据块或一个校验块;如果该目标数据节点中有两个或多个属于该目标网络逻辑单元的存储单元,则该目标数据节点则接收并存储的数据块和校验块的总数量也会是两个或多个。例如,目标数据节点中有两个存储单元属于该目标网络逻辑单元时,则该目标数据节点可能会接收到客户端发送的两个数据块,或者接收到客户端发送的两个校验块,或者是一个数据块和一个校验块。
[0080]如果目标数据节点中有两个或多个存储单元属于该目标网络逻辑单元时,该目标数据节点中存储的数据块和校验块的总数量将大于或等于两个,这样当该目标数据节点发生故障时,则可能会导致两个或多个存储单元内所存储的数据块或校验块出现丢失或损坏等异常状态。而出现丢失或损坏等异常状态的数据块和校验块的数量较多时,则会给数据恢复带来困难,甚至导致无法恢复出出现异常的数据块或校验块的情况。
[0081]为了进一步提高系统中数据存储的安全性和可靠性,对于任意一个网络逻辑单元,网络逻辑单元中所包含的多个存储单元均位于不同的数据节点。因此,在构建网络逻辑单元时,根据构建的网络逻辑单元所需的存储单元的数量,则从系统选取相应数量的数据节点,并从选取出的任一数据节点中选取一个存储单元,从而得到构建该网络逻辑单元所需数量的存储单元。
[0082]为了便于理解构建网络逻辑单元的过程,下面结合一个实例进行介绍,参见图2,示出了本申请中网络逻辑单元组成示意图,以系统中包含有5个数据节点为例,每个数据节点的存储区域均被划分为三个存储单元,如图2中数据节点上方的矩形条状区域为存储区域,而在该存储区域内的各个圆柱体代表是划分出的各个存储单元。
[0083]以需要构建的网络逻辑单元包括:网络逻辑单元NLUNl和网络逻辑单元NLUN2为例,其中,网络逻辑单元NLUNl的RAID类型为:RAID3+2 (即3个数据块,2个校验块);网络逻辑单元NLUN2的RAID类型为:RAID3+1 (即3个数据块,I个校验块),则根据网络逻辑单元NLUNl所支持的RAID类型,该NLUNl需要包含5个存储单元。根据负载均衡选择,分别从5个数据节点中选择负载最低的5个存储单元。首先从数据节点I中选择负载最低的存储单元,假设为第二个存储单元(在该例中以从上至下顺序为例);然后从数据节点2中选择该数据节点2中负载最低的存储单元,设为第三个存储单元,依此类推。最终构建出的NLUN2所包含的存储单元分别为数据节点I中的第二个存储单元、数据节点2中的第三个存储单元、数据节点3中的第一个存储单元,数据节点4中的第一个存储单元和数据节点5中的第三个存储单元,如图2中粗体黑线的圆柱体所表示的存储单元为NLUNl所包含的存储单元。构建出该NLUNl之后,可以从剩余的存储单元中选择存储单元来构建网络逻辑单元NLUN2,NLUN2的RAID类型对应的存储单元数量为4个,具体构建NLUN2的过程与构建NLUNl相同,假设构建出的NLUN2所包含的4个存储单元为图2中位于虚线框内的4个存储单元。
[0084]由于目标网络逻辑单元所包含的多个存储单元均位于不同的数据节点,客户端需要向目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中的任一目标数据节点发送一个数据块或一个校验块,且向不同的目标数据节点发送的数据块或校验块不同。相应的,任意一个目标数据节点仅接收到客户端发送至一个数据块或校验块,并将接收到的数据块或校验块存储至该目标数据节点中属于目标网络逻辑单元的存储单元中。这样,如果一个目标数据节点发送故障,只会导致该目标网络逻辑单元中一个存储单元内的数据块或校验块出现异常,从而减少了出现异常的数据量,提高了数据可恢复性,进而提高了数据存储的安全性。
[0085]在实际应用中,为了能够便于区分出各个网络逻辑单元所包含的存储单元的数量,并使得同一网络逻辑单元的各个存储单元内所存储的数据具有相同的属性,系统还分别设置了各个网络逻辑单元所支持的RAID类型,使得任意一个网络逻辑单元具有一个所支持的RAID类型。
[0086]其中,设置网络逻辑单元所支持的RAID类型可以理解为为网络逻辑单元分配或指定一个RAID类型,其目的是使得客户端后续向该网络逻辑单元的存储单元中存储依据该网络逻辑块单元所支持的RAID类型切分得到的数据块和校验块,以使得存储在同一个网络逻辑单元的存储单元内数据块和校验块均是依据相同的RAID类型切分得到的。
[0087]可见,为了在网络逻辑单元所包含的存储单元中可以存储依据该网络逻辑单元所支持的RAID类型切分得到的数据块和校验块,网络逻辑单元所包含的存储单元的数量应该与依据RAID类型对目标数据切分得到的数据块和校验块的总数量。当系统为一个网络逻辑单元分配了一个RAID类型后,该网络逻辑单元所需包含的存储单元的数量也是确定的。因此,在构建网络逻辑单元时,可以参照为网络逻辑单元分配的RAID类型,确定构建该网络逻辑单元所需的存储单元的数量,并从系统的多个存储单元中选择相应数量的存储单元来组成该网络逻辑单元。
[0088]相应的,该客户端,具体用于从多个网络逻辑单元中,确定支持对目标数据切分时所依据的RAID类型的目标网络逻辑单元,以利用该目标网络逻辑单元中的多个存储单元存储切分得到的数据块和校验块。这样,客户端所确定的目标网络逻辑单元具有所包含的存储单元的数量与对目标数据切分得到的数据块和校验块的总数量相同,且所支持的RAID类型与客户端对目标数据进行切分所依据的RAID类型相同两个特征。
[0089]为了便于理解,仍以图2为例,在该图中还示出了网络逻辑单元中存储数据块和校验块的示意图,假设系统中存在三个网络逻辑单元,除了上面例子中提到的网络逻辑单元NLUNl和网络逻辑单元NLUN2外,还存在网络逻辑单元NLUN3,其中,NLUNl支持的RAID类型为RAID3+2,其所包含的存储单元为如图2中粗体黑线的圆柱体所表示的存储单元。NLUN2支持RAID3+1,其包含有4个存储单元,如图中虚线框出的存储单元。NLUN3支持RAID4+1,其所包含5个存储单元,在该图中未标出。
[0090]当客户端依据RAID3+2对目标数据进行切分后,会得到该目标数据的三个数据块和两个校验块,如图2中用方框框出的数据块和校验块。客户端可以选择支持RAID3+2的网络逻辑单元作为目标网络逻辑单元,在该例中需要选择NLUNl作为目标网络逻辑单元。可见,虽然NLUN3也包含有5个存储单元,但由于NLUN3支持的RAID类型为RAID3+1,所以客户端不会将NLUN3作为目标网络逻辑单元。
[0091]确定出目标网络逻辑单元后,客户端将切分得到的数据块和校验块分别发送给这5个数据节点,任意一个数据节点接收到客户端发送的数据块或校验块后,将接收到的数据块或校验块存储其属于该NLUNl的存储单元内,如图2中带箭头的曲线的箭头指出了数据块或校验块将被存储的存储单元位置,例如,位于左上角的数据块最终被存储在数据节点I的第二个存储单元中,其余与此类似。
[0092]当然,图2仅仅是将各个数据块和校验块存储在该NLUNl的5个存储单元内的一种存储情况,只要是最终将切分后的数据块和校验块分别存储至NLUNl的5个存储单元内即可,至于哪个数据块或校验块需要存储到该NLUNl的哪个存储单元内并不限定,例如,图中位于方框左上角的数据块也可以存储在该NLUNl中位于数据节点2内的第三个存储单元中,而将原来存储在该数据节点2的第三个存储单元内的校验块则可以存储到数据节点I的第二个存储单元内。
[0093]为了使得各个网络逻辑单元的存储单元内所存储的数据为属于相同哈希值范围内的数据,还可以预先设置各个网络逻辑单元所支持的哈希值范围,从而使得网络逻辑单元与所是支持的哈希值范围具有对应关系。这样,同一网络逻辑单元的存储单元中所存储的数据均属于相同哈希值范围内的数据。根据实际需要不同的网络逻辑单元所支持的哈希值范围也可能不同。当然,考虑到实际需要可以是设置包含相同数量的存储单元的网络逻辑单元所支持的哈希值范围不同,以便于后续客户端确定目标网络逻辑单元。
[0094]相应的,客户端,具体用于计算目标数据的第一哈希值,根据第一哈希值确定用于存储切分得到的数据块和校验块的目标网络逻辑单元,其中,该目标网络逻辑单元所支持的哈希值范围包含该第一哈希值。客户端在确定目标网络逻辑单元之前,需要计算出目标数据的第一哈希值。计算该目标数据的第一哈希值可以基于该目标数据所具有的文件名称或者该目标数据的数据本身来计算出的哈希值。这样,当满足所包含的存储单元数量与对目标数据切分得到的数据块和校验块的总数量相同的网络逻辑单元有多个时,可以进一步根据该网络逻辑单元所支持的哈希值来最终确定出用于存储数据块和校验块的目标网络逻辑单元。
[0095]特别的,在系统中网络逻辑单元较多的情况下,当系统中的网络逻辑单元具有所支持的RAID类型时,则可能会存在多个支持相同RAID类型的网络逻辑单元。这样,当客户端确定目标网络逻辑单元时,也可能会存在有多个满足所支持RAID类型与对目标数据切分所依据的RAID类型相同的网络逻辑单元,客户端可能需要从这多个满足条件的网络逻辑单元中随机选择出一个网络逻辑单元。
[0096]为了能够唯一确定出一个目标网络逻辑单元,系统可以同时设置各个网络逻辑单元所支持的RAID类型和哈希值范围,且支持相同RAID类型的网络逻辑单元所支持的哈希值范围不同。相应的,客户端计算出目标数据的第一哈希值并依据设定的RAID类型对目标数据进行切分后,可以将系统中支持该设定的RAID类型且所支持的哈希值范围包含该第一哈希值的网络逻辑单元作为目标网络逻辑单元,从而可以唯一确定出一个网络逻辑单
J Li ο
[0097]另外,除了以上设置网络逻辑单元所支持的哈希值的方式外,还可以预先设置系统中各个网络逻辑单元所支持的文件名,不同的网络逻辑单元所支持的文件名不同。相应的,客户端,具体用于根据目标数据的第一文件名确定用于存储切分得到的数据块和校验块的目标网络逻辑单元,该目标网络逻辑单元所支持的文件名中包含该第一文件名。其中,该目标数据的第一文件名可以是客户端为该目标数据分配的文件名,也可以是该目标数据原本具有的文件名。客户端通过该种方式可以唯一确定出一个满足所包含的存储单元的数量与切分得到的数据块和校验块的总数量,且所支持的文件名包含有该第一文件名的目标网络逻辑单元。
[0098]进一步的,当为网络逻辑单元分配了所支持的RAID类型的情况下,也可以为网络逻辑单元分配所支持的文件名。其中,支持相同RAID类型的网络逻辑单元所支持的文件名不同。这样,客户端可以从系统中选择支持的文件名包含该目标数据的第一文件名,且所支持的RAID类型与切分该目标数据所依据的RAID类型相同的目标网络逻辑单元。
[0099]可以理解的是,为了区分出网络中的各个网络逻辑单元,还可以为每个网络逻辑单元分配一个系统唯一的标识,该标识可以是依据网络逻辑单元所支持的RAID类型、所支持的哈希值范围以及文件名中一种或几种计算出来的标识。
[0100]在以上任一实施例中,构建出网络逻辑单元后,还可以在网络逻辑单元的各个存储单元中存储该网络逻辑单元各个存储单元的总存储空间和当前可用的存储空间,每个存储单元当前可用的存储空间,该网络逻辑单元中的各个存储单元所在的数据节点信息,该网络逻辑单元所支持的RAID类型、该网络逻辑单元所支持的哈希值范围、该网络逻辑单元所支持的文件名等信息中的一种或多种。如,数据节点a中一个存储单元al属于网络逻辑单元A,则数据节点a可以在该存储单元al内记录该网络逻辑单元相关的信息,如以上所介绍的总存储空间、所支持的RAID类型等信息。
[0101]由于任意一个目标数据节点都可能会包含有多个存储单元,而这多个存储单元可能会属于不同的网络逻辑单元。因此,为了使得目标数据节点在接收到数据块或校验块之后,能够确定出需要将接收到的数据块或校验块存储到属于哪个网络逻辑单元的存储单元中,客户端在向数据节点发送数据块或校验块的同时,还需要将目标网络逻辑单元的信息发送给数据节点。如,客户端可以将目标网络逻辑单元的标识,或者是目标网络逻辑单元所支持的RAID类型和哈希值范围,或者是目标网络逻辑单元所支持的RAID类型和文件名等信息发送给目标数据节点,以便目标数据节点可以确定出需要将数据块或校验块存储到哪个存储单元中。
[0102]另外,当目标数据节点将接收到的数据块或校验块存储至属于目标网络逻辑单元的存储单元之后,目标数据节点还可以记录该存储单元对数据块或校验块的存储状态,如是否存储成功,以及存储数据块或校验块的数量,以及所存储的目标对象,例如,将目标数据I切分得到的数据块和校验块等。
[0103]进一步的,为了目标数据节点能够了解到目标网络逻辑单元中的各个存储单元内对目标数据的数据块或校验块的存储情况,在该多个目标数据节点中至少有一个目标数据节点,还用于从这多个目标数据节点中,获取该目标网络逻辑单元中的各个存储单元对数据块和校验块的存储状态信息,并将获取到的存储状态信息发送给其他目标数据节点,使得各个目标数据节点保存该存储状态信息。具有的,各个目标数据节点将该存储状态信息保持至该目标网络逻辑单元包含的各个存储单元中。其中,该存储状态信息中至少包括各个存储单元所存储的该目标数据的数据块或校验块的数量信息。另外,该存储状态信息还可以包括存储单元中存储有对哪些目标数据切分得到的数据块或校验块。
[0104]其中,这多个目标数据节点中的任意一个目标数据节点均可以从接收到客户端发送的数据块或校验块均至指定时长之后,向其他目标数据节点发送存储状态读取请求,以获取到各个目标数据节点对客户端发送的数据块或校验块的存储请求。当然,任意一个目标数据节点也可以周期性的向其他目标数据节点发送存储状态读取请求,以通过其他目标数据节点获取到该目标网络逻辑单元中各个存储单元对数据块和校验块的存储状态信息,并将获取到的存储状态信息发送给其他数据节点。当然,不同时刻发起存储状态读取请求的目标数据节点可能不同,但是只要是能够保证数据节点内存储的存储状态信息能够被周期性的更新即可。
[0105]目标数据节点记录对各个存储单元对数据块和校验块的存储状态信息的方式可以采用任意方式。可选的,在本申请中可以通过与目标网络逻辑单元所包含的存储单元的个数相同位数的数字来表示存储对象的冗余切片的存储情况,该数字的不同位代表不同的存储单元,而不同位上的具体数值则表示了该位对应的数据节点的存储单元对冗余切片的存储情况,如,O表示该存储单元上没有存储数据块或校验块,I?F表示有I?15个数据块或校验块。
[0106]由于不同时刻向该目标网络逻辑单元存储的不同目标数据的数据块和校验块,目标网络逻辑单元的存储单元内可能会存储多个目标数据的数据块和校验块,因此,需要针对各个目标数据,分别记录各个存储单元对相应数据块和校验块的存储状态信息。以在目标网络逻辑单元的存储单元中分别存储有对三个目标数据切分得到的数据块和校验块为例,参见图3,示出了该目标网络逻辑单元对各个目标数据的校验块和数据块的存储情况,以及所记录相应的存储状态信息。
[0107]假设该目标网络逻辑单元的存储单元中存储有三个目标数据的数据块和校验块,这三个目标数据分别为obj-0、obj-l和obj-2。对obj-Ο进行切分得到的数据块和校验块分别为图中的0-0、0-1、0-2、0-3和0-4 ;相应的,对obj-Ι进行切分得到的数据块和校验块分别为图中的1-0、1-1、1-2、1-3和1-4;对obj-2切分得到的数据块和校验块分别为图中的 2-0、2-1、2-2、2-3 和 1-4。
[0108]如图3所示,该数据节点上方的方框所围成的区域表示数据节点的存储区域,而虚线部分与该数据节点的存储区域的交集为该目标网络逻辑单元中的各个存储单元。该目标网络逻辑单元的包含有5个存储单元,且这5个存储单元分别位于5个数据节点中,则可以用5位数来表示这5个存储单元对该各个目标数据的数据块和校验块的存储状态信息。具体可以通过如下方式来记录存储状态信息:
[0109]对于obj-Ο,存储状态信息可以记录为:11111,其表示该目标网络逻辑单元中位于这5个数据节点内的存储单元对该存储对象ObjO的冗余切片均存储完成正常,即每个存储单元内分别存储有该obj-Ο的一个数据块或校验块。[0110]对于Obj-l,存储状态信息可以记录为11110,其表示位于数据节点5中的存储单元所存储的数据块或校验块丢失,而另外四个数据节点中相应存储单元内均存在一个该存储对象Objl的数据块或校验块。
[0111]对于obj-2,存储状态信息可以记录为21110,其表示数据节点5的存储单元内未存储有的该存储对象0bj2的数据块或校验块,而数据节点I中保存有该存储对象0bj2的数据块和校验块的总数量为两个,也就是原本应该存储到数据节点5的存储单元内的数据块或校验块被存储到数据节点I的存储单元内。而其他三个数据节点的相应存储单元内分别存储有一个该存储对象0bj2的数据块或校验块。
[0112]一般情况下,当一个存储单元中存储有同一个目标数据的一个数据块或校验块时,则说明未出现存储异常,否则出现了存储异常。
[0113]为了在某目标数据节点出现故障,而导致目标网络逻辑单元中位于该目标数据节点上的存储单元所存储的数据块或校验块丢失或损坏时,能够恢复相应存储单元内丢失或损坏的数据块或校验块,该多个目标数据节点中至少一个目标数据节点,还用于获取该目标网络逻辑单元中的各个存储单元对所存储的数据块和校验块的存储状态信息;当根据该存储状态信息确定出该目标网络逻辑单元中存在对数据块或校验块存储异常的存储单元时,根据该目标网络逻辑单元中未出现存储异常的存储单元内所存储的数据块和校验块,恢复出该出现存储异常的存储单元内的数据块或校验块。其中,该存储状态信息中包括存储单元所存储的数据块或校验块的数量信息。
[0114]其中,对于一个目标数据,目标网络逻辑单元中各个存储单元所在的多个目标数据节点中,至少有一个目标数据节点按照预设的周期获取该目标网络逻辑单元中各个存储单元对该目标数据的数据块和校验块的存储状态信息,进而根据存储状态信息来判断该目标网络逻辑单元中各个存储单元是否均存储有一个该目标数据的数据块或校验块;如果该目标网络逻辑单元的某个存储单元未出现有该目标数据的数据块或校验块,或存储的数据块和校验块的总数量大于一个,则说明该存储单元出现数据存储异常。当然,也可以是在不同时刻,由不同的目标数据节点来发起故障检测,进而获取该存储状态信息,并依据存储状态信息来判断是否有出现储存异常的存储单元。
[0115]目标数据节点获取该存储状态信息的方式有两种,可以是目标数据节点通过向其他目标数据节点发送状态读取请求,以便其他目标数据节点将自身中属于该目标网络逻辑单元的存储单元内对数据块或校验块的存储状态信息发送给该目标数据节点。
[0116]特别的,当各个目标数据节点内已经记录有该目标网络逻辑单元中各个存储对目标数据的数据块和校验块的存储状态信息,并周期性更新该存储状态信息时,目标数据节点需要判断是否有存储单元出现存储异常时,则可以读取自身存储的存储状态信息,并根据自身存储的存储状态信息来判断是否有存储单元出现存储异常。
[0117]当确定出该目标网络逻辑单元中存在对数据块或校验块存储异常的存储单元时,根据存储异常的不同,恢复数据块和校验块的过程也可能会有所不同。当存储单元的存储异常为丢失了原本应该存储的数据块和校验块时,该目标数据节点具体用于,当根据存储状态信息确定出所述目标网络逻辑单元中存在丢失所存储的数据块或校验块的第一存储单元时,利用该目标网络逻辑单元中未丢失所存储的数据块或校验块的各个存储单元内所存储的数据块和校验块,恢复出所述第一存储单元内所丢失的数据块或校验块。[0118]该目标数据节点从其他目标数据节点中获取该目标网络逻辑单元中未丢失所存储的数据块或校验块的各个存储单元内所存储的数据块和校验块,利用获取到的数据块和校验块可以重新构建出原来的目标数据。然后根据目标数据节点中存储的对该目标数据进行切分所依据的RAID类型或者是该目标网络逻辑单元所支持的RAID类型,对该目标数据进行重现切分,进而可以重新得到出现异常的存储单元内所存储的数据块或校验块。
[0119]为了便于理解仍以图3所示的目标网络逻辑单元包含有5个存储单元,5个存储单元分别位于5个数据节点中为例。由对图3中的目标数据Objl的存储状态信息的介绍可知,在网络逻辑单元NLUNl中位于数据节点5中的存储单元丢失了该Objl的数据块或校验块1-4,而其余位于其余四个数据节点中的存储单元对该存储对象Objl的数据块或校验块的存储未出现异常。
[0120]假设此时发起对该NLUNl中的目标数据Objl进行检测的数据节点设为数据节点1,数据节点I发现位于数据节点5的存储单元丢失了该目标数据Objl的数据块或校验块,该则该数据节点I读取自身存储的Objl的数据块或校验块1-0,并从数据节点2、数据节点3和数据节点4中获取该Objl的数据块或校验块1-0、1-2和1-3,该数据节点I利用剩余的数据块或校验块1-0、1-1、1-2和1-3重现构建出该目标数据Objl,并确定原来客户端对该Objl进行切分所依据RAID类型,依据该RAID类型对该存储对象Objl重新进行切分,从而得到5个数据块和校验块,然后将剩余的4个数据块和检验快和心切分出的这5个数据块和校验块进行对比,从而确定出丢失的数据块或校验块,并将确定出的该丢失的数据块或校验块发送至数据节点5,该数据节点5中将接收到的数据块和校验块重新存储至其属于该NLUNl的存储单元中。
[0121]如图4,示出了存储异常恢复前和恢复后位于各个数据节点内的各个存储单元对该Objl的数据块和校验块的存储状况对比图。
[0122]当存储单元的存储异常为存储单元中存储的该目标数据的数据块或校验块的数量多于一个时,目标数据节点具体用于,当根据存储状态信息,确定出该目标网络逻辑单元中存在所存储的数据块或校验块的数量多于一个的第二存储单元时,利用目标网络逻辑单元中不属于该第二存储单元的各个存储单元内所存储的数据块和校验块构建出所述目标数据;获取客户端切分该目标数据所依据的RAID类型,依据该RAID类型对构建出的目标数据进行重新切分,并依据重新切分得到的数据块和校验块,确定该第二存储单元所应存储的数据块或校验块。
[0123]其中,获取客户端切分目标数据所依据的RAID类型,可以是由该目标数据节点向客户端发送查询请求,以获取该切分目标数据所依据的RAID类型;也可以是客户端向目的数据节点发送数据块或校验块时,将切分目标数据所依据的RAID类型发送给目标数据节点进行存储;另外,当目标网络逻辑单元支持有一 RAID类型时,该目标数据节点中也可以存储该目标网络逻辑单元所支持的RAID类型,而该RAID类型与该客户端切分该目标数据所依据的RAID类型相同,自然该目标数据可以直接获取自身存储的该目标网络逻辑单元所支持的RAID类型。
[0124]假设NLUNl中的各个存储单元中还存储有目标数据Ob j3的各个数据块和校验块,且该NLUNl中的数据节点I中存储单元内存储的数据块和校验块的数量为两个为例,即记录的存储状态信息为21111的形式。这5个数据节点中发起故障检测的数据节点确定出该NLUNl位于该数据节点I中的存储单元出现该种存储异常时,则可以利用该NLUNl中数据节点2-5内所存储的该Ob j3的数据块和校验块,构建出该目标数据Ob j3,并确定客户端对该Obj3进行切分时所依据的RAID类型,按照RAID类型对该构建出的该Ob j3进行重现切分,得到5个新的数据块和校验块。将当前切分出的5个新的数据块和校验块与数据节点2-5中所存储的该0bj3的数据块和校验块进行对比,并将这5个新的数据块和校验块中,不属于该数据节点2-5中所存储的该0bj3的数据块和校验块的数据库或校验块确定为数据节点I的存储单元内所需存储的数据块或校验块。发起故障检测的该数据节点将该确定出的数据块或校验块发送给数据节点1,以便数据节点I利用该确定出的数据块或校验块替换了该数据节点I中原来所存储的该存储对象0bj3的2个数据块和校验块。
[0125]对应另一种存储单元的存储异常,该目标数据节点具体用于,当根据该存储状态信息,存在丢失所存储的数据块或校验块的第一存储单元和存储的数据块或校验块的数量多于一个的第二存储单元时,指示该第二存储单元所在的数据节点,将第二存储单元中多出的数据块或校验块发送至该第一存储单元所在的目标数据节点,以便该第一存储单元所在的目标数据节点将接收到的数据块或校验块存储至该第一存储单元中。
[0126]仍以图3所示的目标网络逻辑单元NLUNl为例,在该NLUNl中还存储有目标数据0bj2,由图3以及以上对记录的与0bj2相关的存储状态信息的描述可知,由于某种原因,NLUNl位于的数据节点5存储单元内所应存储的数据块或校验块被存储在该NLUNl位于数据节点I的存储单元内,使得该数据节点I的该存储单元内存储的数据块和校验块的数量为两个。仍假设发起检测的数据节点为数据节点1,当该数据节点I获取到该NLUNl中各个存储单元对该存储对象0bj2的数据块和校验块的存储状态信息时,可以确定出该NLUNl位于数据节点5中的存储单元所应存储的数据块或校验块被存储在位于该数据节点I的存储单元内,则该数据节点I从自身存储的两个数据块和/或校验块中的任意一个发送至该数据节点5,进而使得位于数据节点5中的存储单元内存储该0bj2的数据块或校验块。
[0127]如图4所示,示出了在有存储单元出现存储异常以及存储单元的存储异常恢复后的,该NLUNl中各个存储单元对该0bj2的各个数据块和校验块的存储状态对比图,可见,异常恢复后,数据节点I和数据节点5中均保存有一个存储对象Obj2的数据块或校验块。
[0128]需要说明的是,以上仅仅是以将各个目标数据的数据块和校验块存储在一个目标网络逻辑单元的各个存储单元为例进行介绍。但是在实际应用中,由于一个目标数据节点可以包含多个存储单元,而该目标数据节点的多个存储单元可能属于不同的目标网络逻辑单元,从而使得该目标数据节点可能同时属于多个目标网络逻辑单元。因此,当任意一个目标数据节点需要进行异常检测时,首先需要确定出待检测的目标网络逻辑单元,并需要确定待检测的目标数据,即确定出需要对该目标网络逻辑单元的各个存储单元存储的哪个目标数据的数据块或校验块的存储状态信息进行异常检测。
[0129]通过由目标数据节点依据存储状态信息对目标网络逻辑单元各个存储单元的存储状态进行检测,并在存储单元出现存储异常时,恢复出出现存储异常的存储单元所存储的数据块或校验块,从而实现了目标网络逻辑单元对数据的自愈,也减少了由于数据丢失或损坏而无法恢复出数据的情况。
[0130]为了能够对存储的数据的相关信息进行管理,并便于客户端后续进行数据读取或者查询存储到网络逻辑单元的各个存储单元内的数据的相关信息,该系统还包括元数据节点。如图5所示,示出了本发明一种网络存储系统另一个实施例的组成结构示意图。与以上实施例不同的是,在本实施例中系统还包括:元数据节点3。该元数据节点3与客户端I通过网络连接。
[0131]在本实施例中,该客户端还用于:在根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块之后,将目标数据与该RAID类型的对应关系发送至该元数据节点。
[0132]相应的,该元数据节点,用于存储该目标数据与该RAID类型的对应关系。
[0133]客户端对不同的目标数据进行切分时,所依据的RAID类型可能不同。为了便于查询到对切分目标数据所依据的RAID类型,客户端需要将目标数据与切分该目标数据所依据的RAID类型的对应关系发送至元数据节点,以在元数据节点中存储该对应关系。例如,客户端依据RAID3+2对目标数据I进行切分,则需要将目标数据I与该RAID3+2的对应关系发送至该元数据节点;而客户端依据RAID3+1对目标数据2进行切分,则需要将目标数据2与该RAID3+1的对应关系发送至元数据节点。
[0134]进一步的,在网络逻辑单元具有所支持的RAID类型的前提下,如果客户端将对目标数据切分得到的数据块和校验块存储在网络逻辑单元的各个存储单元所在的目标数据节点之后,为了在客户端需要读取目标数据时,能够确定出存储该目标数据的各个数据块和校验块的目标网络逻辑单元,该客户端,还用于从元数据节点中获取该目标数据与RAID类型的对应关系,确定支持该RAID类型的目标网络逻辑单元,并向该目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取该目标数据的请求。
[0135]相应的,目标数据节点,还用于在接收到客户端读取该目标数据的请求时,从属于目标网络逻辑单元的存储单元中读取所存储的目标数据的数据块和/或校验块,并将读取到的数据块和/或校验块发送给客户端。
[0136]任意一个目标数据节点在接收到客户端读取该目标数据的请求时,便可以从相应存储单元中读取出属于该目标数据的数据块或校验块并发送给客户端。
[0137]可见,该元数据节点与数据节点中所存储的数据内容不同,该元数据节点仅仅是存储元数据信息,即与是存储有与目标数据相关的元数据,如上面提到的对目标数据进行切分所依据的RAID类型。
[0138]另外,当网络逻辑单元支持一定哈希值范围或文件名时,客户端还可以将目标数据的第一文件名、计算出的该目标数据的第一哈希值等信息中的一种或几种发送给元数据节点,以便在元数据节点中存储这些信息。
[0139]当客户端需要读取该目标数据时,则可以从元数据节点中获取切分该目标数据所依据的RAID类型以及该目标数据的第一文件名,并确定出支持该RAID类型且所支持的文件名包含该第一文件名的目标网络逻辑单元,以便向该目标网络逻辑单元的各个存储单元所在的数据节点发送对该目标数据的读取请求;或者,从元数据节点中获取切分该目标数据所依据的RAID类型以及该目标数据的第一哈希值,并确定出支持该RAID类型且所支持的哈希值范围包含该第一哈希值的目标网络逻辑单元,以便向该目标网络逻辑单元的各个存储单元所在的数据节点发送对该目标数据的读取请求。
[0140]当然,该客户端也可以在将目标数据切分得到的数据块和校验块存储到目标网络逻辑单元的各个存储单元后,将该目标数据与该目标网络逻辑单元的标识信息的对应关系发送给元数据节点,以便后续需要读取目标数据时,从元数据节点中获取存储该目标数据的数据块和校验块的目标网络逻辑单元。
[0141]需要说明的是,以上任意一个实施例,均是以网络存储系统应用RAID算法为例进行描述的,如客户端依据某RAID类型对目标数据进行切分,以及网络逻辑单元具有所支持的RAID类型为例来描述该网络存储系统的,但是实际上,该网络存储系统也适用于应用纠偏码算法的场景,如,客户端依据纠偏码N+M的类型来对目标数据进行切分后,其中,N和M均可以为大于零的自然数,同样会使得切分得到的数据块和校验块之间存在冗余关系。当某个数据块或校验块丢失或损坏时,利用未丢失或损坏的数据块和校验块同样能够恢复出丢失或损坏的数据块或校验块。相应的,系统可以为网络逻辑单元分配所支持的纠偏码类型,以便客户端依据纠偏码类型来选择用于存储数据块和校验块的目标网络逻辑单元,其具体过程与以上实施例所描述的过程类似,在此不再赘述。
[0142]另一方面,本发明还提供了一种数据处理方法,参见图6,示出了本发明一种数据处理方法一个实施例的流程示意图,本实施例的方法应用于包括至少三个数据节点的网络存储系统,在该网络存储系统中各个数据节点之间通过网络连接,且每个数据节点的存储区域被划分为至少一个存储单元,得到位于该至少三个数据节点中的多个存储单元,且这多个存储单元被划归为多个网络逻辑单元,本实施例的方法包括:
[0143]步骤601:根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块。
[0144]其中,客户端中预设的RAID类型可以有多种,对不同的目标数据进行切分时,所依据的RAID类型可能不同。
[0145]依据设定的RAID类型对目标数据进行切分,实际上是依据该RAID类型对应的RAID算法对目标数据进行切分,从而得到至少一个校验块和至少两个数据块,该过程与现有的依据RAID类型对数据进行冗余方式的切分的过程相似,在此不再赘述。
[0146]其中,依据RAID对目标数据进行切分得到的数据块和校验块之间具有冗余关系,当有数据块丢失或损坏等故障时,利用未出现故障的数据块和校验块可以恢复出出现故障的数据块或校验块。
[0147]步骤602:从网络存储系统的多个网络逻辑单元中确定用于存储该数据块和校验块的目标网络逻辑单元。
[0148]步骤603:将数据块和校验块分别发送至该目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中,以便目标数据节点将接收到的数据块和/或校验块存储其属于目标网络逻辑单元的存储单元内,使得目标网络逻辑单元的任一存储单元内均存储有切分的数据块中的一个数据块或校验块。
[0149]其中,客户端对目标数据进行切分所依据的RAID类型决定了切分得到的数据块和校验块的总数量,如当依据RAID3+2对目标数据进行切分时,则会得到3个数据块和2个校验块,校验块和数据块的总数量为5个;当依据RAID3+1对目标数据进行切分时,则会得到3个数据块和I个校验块。
[0150]客户端确定的目标网络逻辑单元所包含的存储单元数量与切分得到的数据块和校验块的总数量相同、这样,才能使得后续目标网络逻辑单元的任一存储单元均可以存储一个切分得到的数据块或校验块,且不同存储单元所存储的数据块或校验块不同,[0151]在本实施例中,由于当客户端将切分得到的这些该数据块和校验块分别存储至目标网络逻辑单元中位于多个目标数据节点内的多个存储单元后,目标网络逻辑单元的各个存储单元内所存储的数据块和校验块之间也存在冗余关系。这样,当由于目标数据节点发生故障,使得某一个或几个存储单元中所存储数据块或校验块出现丢失或损坏等异常状况时,利用未发生故障的目标数据节点中属于该目标网络逻辑单元的存储单元中所存储的数据块和校验块便可以恢复出出现异常的数据块或校验块,从而减少了数据损坏后不能恢复的情况,提高了系统存储的安全性和可靠性。
[0152]为了避免一个目标数据节点出现故障时,会使得多个存储单元所存储的数据丢失或损坏,网络存储系统中的网络逻辑单元所包含的存储单元均来自不同的数据节点。相应的,目标网络逻辑单元所包含的各个存储单元均位于不同的目标数据节点中。与此对应,客户端可以向目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中的任意一个目标数据节点仅发送一个数据块或校验块,且向不同的目标数据节点发送的数据块或校验块不同。这样,一个目标数据节点出现故障仅仅会对目标网络逻辑单元中一个存储单元所存储的数据块或校验块造成影响。
[0153]在确定目标网络逻辑单元时,由于所依据的RAID类型决定了对目标数据进行切分所得到的数据块和校验块的总数量,因此,可以根据对目标数据进行切分所依据的RAID类型来确定目标网络逻辑单元,进而确定出所包含的存储单元的数量与切分得到的数据块和校验块的总数量相同的网络逻辑单元。
[0154]当网络存储系统中的网络逻辑单元的数量较多时,有可能会存在多个网络逻辑单元所包含的存储单元数量相同,这样,满足条件所包含的存储单元的数量与切分得到的数据块和校验块的总数量相同的网络逻辑单元可能会有多个,客户端可能会从这多个满足条件的多个网络逻辑单元中随机选择出一个目标网络逻辑单元。为了减少该种情况,并便于区分出网络逻辑单元所包含的存储单元的数量,同时又使得同一网络逻辑单元的各个存储单元内所存储的数据具有相同属性,每个网络逻辑单元还可以具有一个所支持的RAID类型。
[0155]相应的,客户端可以从这多个网络逻辑单元中,确定支持对目标数据进行切分所依据RAID类型的网络逻辑单元作为存储所述数据块和校验块的目标网络逻辑单元。这样,即使两个网络逻辑单元所包含的存储单元数量相同,但是这两个网络逻辑单元所支持的RAID类型却不一定相同,从而有利于客户端来确定目标网络逻辑单元。同时由于目标网络逻辑单元的存储单元中所存储的数据块和校验块,均是依据相同的RAID类型切分得到的,也有利于对数据的管理。
[0156]另外,当各个网络逻辑单元也可以是具有所支持的哈希值范围,这样,同一网络逻辑单元的存储单元中所存储的数据均属于相同哈希值范围内的数据。根据实际需要不同的网络逻辑单元所支持的哈希值范围也可能不同。当然,考虑到实际需要可以是设置包含相同数量的存储单元的网络逻辑单元所支持的哈希值范围不同,以便于后续客户端确定目标网络逻辑单元。
[0157]相应的,客户端在从多个网络逻辑单元中确定用于存储数据块和校验块的目标网络逻辑单元之前,还可以计算目标数据的第一哈希值。进而在确定目标网络逻辑单元时,根据该第一哈希值,确定用于存储数据块和校验块的目标网络逻辑单元,其中,该目标网络逻辑单元所支持的哈希值范围包含该第一哈希值。
[0158]特别的,在系统中网络逻辑单元较多的情况下,当系统中的网络逻辑单元具有所支持的RAID类型时,则可能会存在多个支持相同RAID类型的网络逻辑单元。为了能够唯一确定出一个目标网络逻辑单元,网络逻辑单元可以在具有所支持的RAID类型的同时,具有所支持的哈希值范围。其中,支持相同RAID类型的网络逻辑单元所支持的哈希值范围不同。相应的,客户端计算出目标数据的第一哈希值并依据设定的RAID类型对目标数据进行切分后,可以将系统中支持该设定的RAID类型且所支持的哈希值范围包含该第一哈希值的网络逻辑单元作为目标网络逻辑单元,从而可以唯一确定出一个网络逻辑单元。
[0159]当然,网络逻辑单元也可以是具有所支持文件名。不同的网络逻辑单元所支持的文件名也可能不同。相应的,客户端可以根据目标数据的第一文件名,确定用于存储切分得到的数据块和校验块的目标网络逻辑单元,其中,该目标网络逻辑单元所支持的文件名中包含第一文件名。
[0160]其中,该目标数据的第一文件名可以是客户端为该目标数据分配的文件名,也可以是该目标数据原本具有的文件名。客户端通过该种方式可以唯一确定出一个满足所包含的存储单元的数量与切分得到的数据块和校验块的总数量,且所支持的文件名包含有该第一文件名的目标网络逻辑单元。
[0161]进一步的,网络逻辑单元还可以在具有所支持RAID类型的同时,具有所支持的文件名。其中,支持相同RAID类型的网络逻辑单元所支持的文件名不同。这样,客户端可以选择支持的文件名包含该目标数据的第一文件名,且所支持的RAID类型与切分该目标数据所依据的RAID类型相同的目标网络逻辑单元。
[0162]为了客户端后续能够读取存储到网络逻辑单元的各个存储单元内数据块和校验块。该网络存储系统中还可以包括元数据节点,该元数据节点与客户端之间通过网络连接。
[0163]在客户端依据设定的RAID类型对目标数据进行切分后,还可以将该目标数据与所述RAID类型的对应关系发送至元数据节点,以在元数据节点中存储所述对应关系得到的数据块和校验块。
[0164]进一步的,在网络逻辑单元具有所支持的RAID类型的前提下,客户端可以从该元数据节点中获取该目标数据与RAID类型的对应关系,并确定支持该RAID类型的目标网络逻辑单元,并向目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取该目标数据的请求,以便从所述多个目标数据节点中得到所述数据块和校验块。
[0165]另外,当网络逻辑单元支持一定哈希值范围或文件名时,客户端还可以将目标数据的第一文件名、计算出的该目标数据的第一哈希值等信息中的一种或几种发送给元数据节点,以便在元数据节点中存储这些元数据信息。
[0166]当客户端需要读取该目标数据时,则可以从元数据节点中获取切分该目标数据所依据的RAID类型以及该目标数据的第一文件名,并确定出支持该RAID类型且所支持的文件名包含该第一文件名的目标网络逻辑单元,以便向该目标网络逻辑单元的各个存储单元所在的数据节点发送对该目标数据的读取请求;或者,客户端从元数据节点中获取切分该目标数据所依据的RAID类型以及该目标数据的第一哈希值,并确定出支持该RAID类型且所支持的哈希值范围包含该第一哈希值的目标网络逻辑单元,以便向该目标网络逻辑单元的各个存储单元所在的数据节点发送对该目标数据的读取请求。[0167]为了便于理解客户端读取目标数据的过程,假设任一网络逻辑单元均具有所支持的RAID类型,并以客户端根据目标数据的第一文件名以及对目标数据切分时所依据的第
一RAID类型确定目标网络逻辑单元为例进行介绍,其中,该第一 RAID表示客户端对目标数据进行切分所依据的RAID类型,其仅仅是为了与网络逻辑单元所支持的RAID类型进行区分。客户端会将该目标数据的第一文件名,以及该目标数据与该第一 RAID类型的对应关系发送至元数据节点存储。参见图7,示出客户端进行数据读取的流程交互示意图。为了更加便于描述,在图7中未画出各个网络逻辑单元所包含的存储单元所位于的各个数据节点,而是直接画出了各个网络逻辑单元。但是可以理解的是,网络逻辑单元实际上就是存储区域分布在不同数据节点的分布式存储单元,在该图中以系统包含有四个网络逻辑单元为例。可见客户端进行数据读取的过程可以包括:
[0168]步骤701:客户端将待读取的目标数据的第一文件名发送给元数据节点。
[0169]步骤702:元数据节点根据接收到的第一文件名,查找与该第一文件名对应的元数据信息。
[0170]元数据节点根据该第一文件名,可以获取到与该目标数据对应的元数据信息。当然,客户端也可以是发送该目标数据的标识信息,以便于元数据节点查询相应的元数据信
肩、O
[0171]其中,该元数据信息至少包括与该目标数据对应的第一 RAID类型、目标数据的第一文件名,当然还可以包括该目标数据的标识,以及哈希值等。
[0172]步骤703:元数据节点将获取到的元数据信息发送给该客户端。
[0173]步骤704:客户端根据接收到的元数据信息中的第一文件名和第一 RAID类型,确定出目标网络逻辑单元,并向该目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取该目标数据的请求。
[0174]客户端根据该第一文件名和第一 RAID类型,将支持该第一 RAID类型且支持的文件名包含该第一文件名的网络逻辑单元作为目标网络逻辑单元。
[0175]步骤705:目标数据节点接收该请求,并从属于该目标网络逻辑单元的存储单元中获取该目标数据的数据块或校验块,并发送给客户端。
[0176]例如,假设目标网络逻辑单元为NLUN1,则客户端向该NLUNl的各个存储单元所在的各个目标数据节点发送请求,存储单元包含与该NLUNl的目标数据节点接收到请求后,读取相应的数据块或校验块并发送给客户端。
[0177]另外,本申请还提供了一种客户端,参见图8,示出了本申请一种客户端的结构示意图,该客户端应用于包括至少三个数据节点的网络存储系统,各个数据节点之间通过网络连接,每个数据节点的存储区域被划分为至少一个存储单元,得到位于所述至少三个数据节点中的多个存储单元,且这多个存储单元被划归为多个网络逻辑单元。该客户端800至少包括处理器801、存储器802、通信接口 803和通信总线804。
[0178]其中,处理器801、存储器802和通信接口 803通过通信总线804实现相互之间的
通信;
[0179]该处理器801用于根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块;从所述多个网络逻辑单元中确定用于存储该数据块和校验块的目标网络逻辑单元;将切分得到的数据块和校验块分别发送至目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中。
[0180]该存储器802用于存储包含有该处理器所运行的程序的信息。该存储器可能包含高速RAM存储器,也可能还包括非易失性存储器。
[0181]该通信接口 803,用于与网络存储系统中的网元通信,如数据节点等。
[0182]当该网络存储系统中的网络逻辑单元所包含的存储单元均属于不同的数据节点的情况下,该处理器801从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为:
[0183]向目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中的任一目标数据节点发送一个所述数据块或一个所述校验块,且向不同的目标数据节点发送的数据块或校验块不同。
[0184]在网络逻辑单元具有所支持的RAID类型时,该处理器801从多个网络逻辑单元中确定用于存储该数据块和校验块的目标网络逻辑单元,具体为:
[0185]从所述多个网络逻辑单元中,确定支持所述RAID类型的网络逻辑单元作为存储所述数据块和校验块的目标网络逻辑单元。
[0186]在网络逻辑单元有所支持的哈希值范围时,该处理器801,还用于在从所述多个网络逻辑单元中确定用于存储数据块和校验块的目标网络逻辑单元之前,计算该目标数据的
第一哈希值;
[0187]相应的,该处理器801从多个网络逻辑单元中确定用于存储该数据块和校验块的目标网络逻辑单元,具体为:
[0188]根据该第一哈希值,确定用于存储该数据块和校验块的目标网络逻辑单元,该目标网络逻辑单元所支持的哈希值范围包含所述第一哈希值。
[0189]进一步的,当网络逻辑单元同时具有所支持的RAID类型以及哈希值范围时,该处理器801从多个网络逻辑单元中确定用于存储该数据块和校验块的目标网络逻辑单元具体为,将所支持的哈希值范围包含该第一哈希值,且支持该数据切分单元对目标数据进行切分所依据RAID类型的网络逻辑单元作为目标网络逻辑单元。
[0190]当网络逻辑单元具有支持的文件名时,该处理器801从多个网络逻辑单元中确定用于存储该数据块和校验块的目标网络逻辑单元,具体为:根据目标数据的第一文件名,确定用于存储数据块和校验块的目标网络逻辑单元,该目标网络逻辑单元所支持的文件名中包含所述第一文件名。
[0191]进一步的,当网络逻辑单元同时具有所支持的RAID类型以及文件名时,该处理器801从多个网络逻辑单元中确定用于存储该数据块和校验块的目标网络逻辑单元,具体为:将所支持的文件名包含该目标数据的第一文件名,且支持该数据切分单元对目标数据进行切分所依据RAID类型的网络逻辑单元作为目标网络逻辑单元。
[0192]为了能够关于对目标数据的元数据信息进行管理,该网络存储系统还包括元数据节点。相应的,该处理器801,还用于将目标数据与RAID类型的对应关系发送至元数据节点,以在元数据节点中存储对应关系。
[0193]进一步的,该处理器801,还用于从元数据节点中获取该目标数据与RAID类型的对应关系,确定支持该RAID类型的目标网络逻辑单元,并向该目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取该目标数据的请求,以便从多个目标数据节点中得到数据块和校验块。
[0194]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0195]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或【技术领域】内所公知的任意其它形式的存储介质中。
[0196]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.一种网络存储系统,其特征在于,所述系统包括一个客户端和至少三个数据节点,所述数据节点之间通过网络连接,所述客户端与所述数据节点之间通过网络连接; 其中,每个数据节点的存储区域被划分为至少一个存储单元,得到位于所述至少三个数据节点中的多个存储单元;所述多个存储单元被划归为多个网络逻辑单元; 所述客户端,用于根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块;从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,并将所述数据块和校验块分别发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中; 所述目标数据节点,用于接收所述客户端发送的数据块和/或校验块,并将所述数据块和/或校验块分别存储至所述目标数据节点中属于所述目标网络逻辑单元的存储单元中,以使得所述目标网络逻辑单元的任一存储单元内均存储有所述数据块中的一个数据块或所述校验块。
2.根据权利要求1所述的系统,其特征在于,所述网络逻辑单元中所包含的多个存储单元均属于不同的数据节点。
3.根据权利要求1所述的系统,其特征在于,所述客户端,具体用于从所述多个网络逻辑单元中,确定支持所述RAID类型的目标网络逻辑单元,以利用所述目标网络逻辑单元中的多个存储单元存储所述数据块和所述校验块。
4.根据权利要求1或3所述的系统,其特征在于,所述客户端,具体用于计算所述目标数据的第一哈希值,根据所述第一哈希值确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的哈希值范围包含所述第一哈希值。
5.根据权利要求1或3所述的系统,其特征在于,所述客户端,具体用于根据所述目标数据的第一文件名确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的文件名中包`含所述第一文件名。
6.根据权利要求1所述的系统,其特征在于,所述多个目标数据节点中的至少一个目标数据节点,还用于从所述多个目标数据节点中,获取所述目标网络逻辑单元中的各个存储单元对所述数据块和校验块的存储状态信息,将获取到的所述存储状态信息发送给其他目标数据节点,使得各个目标数据节点保存所述存储状态信息,其中,所述存储状态信息中包括各个存储单元所存储的数据块或校验块的数量信息。
7.根据权利要求3所述的系统,其特征在于,所述系统还包括:元数据节点; 所述客户端还用于:在根据设定的RAID类型对目标数据进行切分,得到所述校验块和至少两个数据块之后,将所述目标数据与所述RAID类型的对应关系发送至所述元数据节占.所述元数据节点,用于存储所述目标数据与所述RAID类型的对应关系。
8.根据权利要求7所述的系统,其特征在于,所述客户端,还用于从所述元数据节点中获取所述目标数据与所述RAID类型的对应关系,确定支持所述RAID类型的所述目标网络逻辑单元,并向所述目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取所述目标数据的请求; 所述目标数据节点,还用于在接收到所述客户端读取所述目标数据的请求时,从属于所述目标网络逻辑单元的存储单元中读取所存储的所述目标数据的数据块和/或校验块,并将读取到的数据块和/或校验块发送给所述客户端。
9.根据权利要求1、2、3或6任一项所述的系统,其特征在于,所述目标数据节点,还用于获取所述目标网络逻辑单元中的各个存储单元对所述数据块和校验块的存储状态信息;当根据所述存储状态信息确定出所述目标网络逻辑单元中存在对所述数据块或校验块存储异常的存储单元时,根据所述目标网络逻辑单元中未出现存储异常的存储单元内所存储的数据块和校验块,恢复出所述出现存储异常的存储单元内的数据块或校验块,其中,所述存储状态信息中包括存储单元所存储的数据块或校验块的数量信息。
10.根据权利要求9所述的系统,其特征在于,所述目标数据节点具体用于,当根据所述存储状态信息确定出所述目标网络逻辑单元中存在丢失所存储的数据块或校验块的第一存储单元时,利用所述目标网络逻辑单元中未丢失所存储的数据块或校验块的各个存储单元内所存储的数据块和校验块,恢复出所述第一存储单元内所丢失的数据块或校验块。
11.根据权利要求9所述的系统,其特征在于, 所述目标数据节点具体用于,当根据所述存储状态信息,确定出所述目标网络逻辑单元中存在所存储的数据块或校验块的数量多于一个的第二存储单元时,利用所述目标网络逻辑单元中不属于所述第二存储单元的各个存储单元内所存储的数据块和校验块构建出所述目标数据; 获取所述客户端切分所述目标数据所依据的所述RAID类型,依据所述RAID类型对构建出的所述目标数据进行重新切分,并依据重新切分得到的数据块和校验块,确定所述第二存储单元所应存储的数据块或校验块。
12.根据权利要求9所述的系统,其特征在于, 所述目标数据节点具体用于,当根据所述存储状态信息,存在丢失所存储的数据块或校验块的第一存储单元和存储的数据块或校验块的数量多于一个的第二存储单元时,指示所述第二存储单元所在的数据节点,将所述第二存储单元中多出的数据块或校验块发送至所述第一存储单元所在的目标数据节点,以便所述第一存储单元所在的目标数据节点将接收到的数据块或校验块存储至所述第一存储单元。
13.一种数据处理方法,其特征在于,应用于包括至少三个数据节点的网络存储系统,所述数据节点之间通过网络连接,所述数据节点的存储区域被划分为至少一个存储单元,得到位于所述至少三个数据节点中的多个存储单元,且所述多个存储单元被划归为多个网络逻辑单元,所述方法包括: 根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块; 从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元; 将所述数据块和校验块分别发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中,以便所述目标数据节点将接收到的数据块和/或校验块存储其属于所述目标网络逻辑单元的存储单元内,使得所述目标网络逻辑单元的任一存储单元内均存储有所述数据块中的一个数据块或校验块。
14.根据权利要求13所述的方法,其特征在于,所述网络逻辑单元所包含的存储单元均属于不同的数据节点; 所述将所述数据块和校验块分别发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中,包括: 向所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中的任一目标数据节点发送一个所述数据块或一个所述校验块,且向不同的目标数据节点发送的数据块或校验块不同。
15.根据权利要求13所述的方法,其特征在于,所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,包括: 从所述多个网络逻辑单元中,确定支持所述RAID类型的网络逻辑单元作为存储所述数据块和校验块的目标网络逻辑单元。
16.根据权利要求13或15所述的方法,其特征在于,在所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元之前,还包括: 计算所述目标数据的第一哈希值; 所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,包括: 根据所述第一哈希值,确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的哈希值范围包含所述第一哈希值。
17.根据权利要求13或15所述的方法,其特征在于,所述从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,包括: 根据所述目标数据的第一文件名,确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的文件名中包含所述第一文件名。
18.根据权利要求13所述的方法,其特征在于,所述网络存储系统还包括元数据节点; 在所述根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块之后,还包括: 将所述目标数据与所述RAID类型的对应关系发送至所述元数据节点,以在所述元数据节点中存储所述对应关系。
19.根据权利要求18所述的方法,其特征在于,还包括: 从所述元数据节点中获取所述目标数据与所述RAID类型的对应关系,确定支持所述RAID类型的所述目标网络逻辑单元,并向所述目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取所述目标数据的请求,以便从所述多个目标数据节点中得到所述数据块和校验块。
20.一种客户端,其特征在于,所述客户端应用于包括至少三个数据节点的网络存储系统,所述数据节点之间通过网络连接,所述数据节点的存储区域被划分为至少一个存储单元,得到位于所述至少三个数据节点中的多个存储单元,且所述多个存储单元被划归为多个网络逻辑单元;所述客户端包括处理器、存储器、通信接口和通信总线; 所述处理器、存储器和所述通信接口通过所述通信总线进行通信; 其中,所述处理器用于根据设定的RAID类型对目标数据进行切分,得到校验块和至少两个数据块;从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元;将所述数据块和校验块分别发送至所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中; 所述存储器用于存储包含有所述处理器运行的程序的信息。
21.根据权利要求20所述的客户端,其特征在于,当所述网络逻辑单元所包含的存储单元均属于不同的数据节点时,所述处理器从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为: 向所述目标网络逻辑单元中的多个存储单元所在的多个目标数据节点中的任一目标数据节点发送一个所述数据块或一个所述校验块,且向不同的目标数据节点发送的数据块或校验块不同。
22.根据权利要求20所述的客户端,其特征在于,所述处理器从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为: 从所述多个网络逻辑单元中,确定支持所述RAID类型的网络逻辑单元作为存储所述数据块和校验块的目标网络逻辑单元。
23.根据权利要求20或22所述的客户端,其特征在于,所述处理器,还用于在所述从所述多个网络逻辑单元中确定用于存储 所述数据块和校验块的目标网络逻辑单元之前,计算所述目标数据的第一哈希值; 相应的,所述处理器从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为: 根据所述第一哈希值,确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的哈希值范围包含所述第一哈希值。
24.根据权利要求20或22所述的客户端,其特征在于,所述处理器从所述多个网络逻辑单元中确定用于存储所述数据块和校验块的目标网络逻辑单元,具体为: 根据所述目标数据的第一文件名,确定用于存储所述数据块和校验块的目标网络逻辑单元,所述目标网络逻辑单元所支持的文件名中包含所述第一文件名。
25.根据权利要求20所述的客户端,其特征在于,所述网络存储系统还包括元数据节占.所述处理器,还用于将所述目标数据与所述RAID类型的对应关系发送至所述元数据节点,以在所述元数据节点中存储所述对应关系。
26.根据权利要求25所述的客户端,其特征在于,所述处理器,还用于从所述元数据节点中获取所述目标数据与所述RAID类型的对应关系,确定支持所述RAID类型的所述目标网络逻辑单元,并向所述目标网络逻辑单元的各个存储单元所在的目标数据节点发送读取所述目标数据的请求,以便从所述多个目标数据节点中得到所述数据块和校验块。
【文档编号】H04L12/24GK103535014SQ201380000732
【公开日】2014年1月22日 申请日期:2013年4月23日 优先权日:2013年4月23日
【发明者】程菊生 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1