跨节点的数据组管理方法、装置及介质与流程

文档序号:24893389发布日期:2021-04-30 13:21阅读:105来源:国知局
跨节点的数据组管理方法、装置及介质与流程

本文涉及分布式存储,尤其涉及跨节点的数据组管理方法、装置及介质。



背景技术:

ec,即erasurecode,是一种通过冗余数据来提高实际数据可靠性的方法。通过实际数据和选定的ec算法,即刻创建包含冗余数据和实际数据的ec组。在系统中同时存储冗余数据和实际数据。当出现数据丢失,损坏的情况下,通过现存的实际数据和冗余数据来恢复丢失和损坏的数据。提高数据安全性的同时,降低存储成本。

相关技术中,对ec组数据的管理方式分为单节点存储和多节点分散存储,单节点存储将ec组数据存储在单个节点中,多节点分散存储将ec组数据分散存储到多个节点中。

单节点存储的方式,当存储ec组数据的节点瘫痪或者因为网络原因与系统其它部分失联,极易导致数据不可访问,系统可用性降低。这种存储方式要求节点极其稳定,并且在可接受的时间内即可恢复工作。而多节点分散存储的方式,数据的创建,更新,恢复都要通过跨节点的方式,读取或者发送数据,导致效率低,失败率高。



技术实现要素:

为克服相关技术中存在的问题,本文提供一种跨节点的数据组管理方法、装置及介质。

根据本文的第一方面,提供一种跨节点的数据组管理方法,包括:

将i组ec组数据按预设算法生成j组结果数据;

将所述i组ec组数据和j组结果数据存储在i+j个节点中,其中,i为≥2的整数,j为≥1的整数。

所述ec组数据包括m个实际数据块和n个冗余数据块;所述将i组ec组数据按预设算法生成j组结果数据包括:

对所述i组ec组数据中每组ec组数据中的m个实际数据块和n个冗余数据块按相同顺序编号,对每一编号对应的i个数据块按预设算法得到j个结果数据块,将m+n个编号对应的m+n个结果数据块作为一组结果数据,得到j组结果数据。

同一ec组数据存储在一个节点中,同一组结果数据存储在一个节点中。

所述同一ec组数据存储在一个节点中包括:将所述同一ec组的m个实际数据块和n个冗余数据块分别存储在m+n个存储服务器中;

所述同一组结果数据存储在一个节点中包括:将所述同一组结果数据的m+n个结果数据块存储在m+n个存储服务器中。

j=1,所述预设算法为:异或运算。

当所述ec组数据部分损毁,通过所处节点中m+n个存储服务器内现存的实际数据块和冗余数据块恢复所述损毁数据;

当所述损毁数据无法通过所处节点中的m+n个存储服务器内的实际数据块和冗余数据块恢复或所处节点故障时,通过其他节点中的其他ec组中的数据块和j个节点中的结果数据块恢复所述损毁数据。

根据本文的另一方面,提供一种跨节点的数据组管理装置,包括:

结果数据生成模块,用于将i组ec组数据按预设算法生成j组结果数据;

分布存储模块,用于将所述i组ec组数据和j组结果数据存储在i+j个节点中,其中,i为≥2的整数,j为≥1的整数。

所述ec组数据包括m个实际数据块和n个冗余数据块;所述分布存储模块生成j组结果数据包括:

对所述i组ec组数据中每组ec组数据中的m个实际数据块和n个冗余数据块按相同顺序编号,对每一编号对应的i个数据块按预设算法得到j个结果数据块,将m+n个编号对应的m+n个结果数据块作为一组结果数据,得到j组结果数据。

同一ec组数据存储在一个节点中,同一组结果数据存储在一个节点中。

所述同一ec组数据存储在一个节点中包括:将所述同一ec组的m个实际数据块和n个冗余数据块分别存储在m+n个存储服务器中;

所述同一组结果数据存储在一个节点中包括:将所述同一组结果数据的m+n个结果数据块存储在m+n个存储服务器中。

j=1,所述预设算法为:异或运算。

当所述ec组数据部分损毁,通过所处节点中m+n个存储服务器内现存的实际数据块和冗余数据块恢复所述损毁数据;

当所述损毁数据无法通过所处节点中的m+n个存储服务器内的实际数据块和冗余数据块恢复或所处节点故障时,通过其他节点中的其他ec组中的数据块和j个节点中的结果数据块恢复所述损毁数据。

根据本文的另一方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现跨节点的数据组管理方法的步骤。

本文通过跨节点的多个数据组管理方法,可以降低系统对节点环境的要求,在节点和网络环境一般的情况下,仍能够提供较高的数据可靠性。即使单个节点瘫痪,通过异或运算的方式,依然能够将原始数据恢复出来。同时兼顾ec构建,更新和恢复数据的效率以及系统可用性。ec方式的构建,更新和数据恢复均发生在本地节点之内,提高了数据传输的效率,去除了跨节点进行数据拉取和结果保存可能导致失败的可能性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本文。

附图说明

构成本文的一部分的附图用来提供对本文的进一步理解,本文的示意性实施例及其说明用于解释本文,并不构成对本文的不当限定。

图1是根据一示例性实施例示出的一种跨节点的数据组管理方法的流程图。

图2是根据一示例性实施例示出的一种跨节点的数据组管理装置的框图。

具体实施方式

为使本文实施例的目的、技术方案和优点更加清楚,下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。需要说明的是,在不冲突的情况下,本文中的实施例及实施例中的特征可以相互任意组合。

图1是根据一示例性实施例示出的一种跨节点的数据组管理方法的流程图。参考图1,跨节点的数据组管理方法包括:

步骤s11,将i组ec组数据按预设算法生成j组结果数据;

步骤s12,将i组ec组数据和j组结果数据存储在i+j个节点中,其中,i为≥2的整数,j为≥1的整数。

本实施中,将i组ec组数据按预设算法生成j组结果数据,并将i+j组ec组数据和结果数据存储在i+j个节点中,实现分布式存储,提高数据安全性,即使单个节点瘫痪,依然能够快速将原始数据恢复出来。

在一实施例中,ec组数据包括m个实际数据块和n个冗余数据块,其中,m>n,m为≥2的整数,n为≥1的整数。将i组ec组数据按预设算法生成j组结果数据包括:

对i组ec组数据中每组ec组数据中的m个实际数据块和n个冗余数据块按相同顺序编号,对每一编号对应的i个数据块按预设算法得到j个结果数据块,将m+n个编号对应的m+n个结果数据块作为一组结果数据,得到j组结果数据。

结果数据是i组ec组数据中,对应编号的i个数据块的结果数据块,是对应编号的i个数据块按预设算法生成的,预设算法可以是异或算法,也可以是ec算法,还可以是其他算法,本发明不做限制。在本实施例中,结果数据可以看作i个数据块的冗余数据块,根据实际环境,设定结果数据块的组数为j。当对应编号的i个数据块中有小于j个数据块损毁,例如,数据块损坏,丢失,或者由于系统故障无法读取,可以通过i个数据块中现存的数据块和结果数据块恢复损毁的数据块的内容。

在一实施例中,步骤s11将i组ec组数据和j组结果数据存储在i+j个节点中包括:

将i组ec组数据存储在i个节点中,其中,同一ec组数据存储在同一个节点中;将j组结果数据存储在不同于i个节点的j个节点中,其中,同一组结果数据存储在同一个节点中。

同一ec组数据存储在同一个节点中包括:将同一ec组的m个实际数据块和n个冗余数据块分别存储在同一节点的m+n个存储服务器中。

同一组结果数据存储在一个节点中包括:将同一组结果数据的m+n个结果数据块存储在同一节点的m+n个存储服务器中。

当ec组数据中有损毁数据块时,通过所处节点中m+n个存储服务器内现存的实际数据块和冗余数据块恢复损毁数据块;如果ec组数据中有小于等于n个数据块损毁,都可以通过现存的实际数据块和冗余数据块进行恢复,同时由于同一ec组数据的数据块在同一节点中,创建,更新,恢复ec组的数据在同一节点中进行,避免了跨节点的数据读取和传输,提高效率和成功率。

当损毁数据块无法通过所处节点中的m+n个存储服务器内的实际数据块和冗余数据块恢复或所处节点故障时,通过其他节点中的其他ec组数据中的数据块和j个节点中的结果数据块恢复损毁数据块。如果在同一ec组数据中,有多个数据块损毁,损毁的数据块大于n个时,损毁的数据块将无法通过该ec组数据中现存的数据块进行恢复,可以通过其他节点中其他ec组数据和结果数据中对应的数据块恢复损毁数据块。

或者,当节点出现故障,整个ec组数据都无法读取时,可以通过其他节点中的其他ec组数据和结果数据将无法读取的整个ec组恢复出来。

在一实施例中,j=1,预设算法为:异或运算。本实施例中,考虑存储成本,只产生一组结果数据,并将结果数据存储在单独的节点中。结果数据通过预设的异或运算生成,充分利用异或运算速度快的特点。对应编号的i个数据块存储在i个节点中,如果某个节点发生故障,可以通过未故障的节点中的i-1个数据块,和结果数据块,通过异或运算快速恢复出故障节点中对应的数据块,进而快速恢复出故障节点中存储的整个ec组数据。

为更好的理解本文跨节点的数据组管理方法,举例说明:

根据ec组策略,设定每组ec组包括4个实际数据块和2个冗余数据块。以3个ec组数据的存储为例,将3个ec组的数据分别存储在三个节点中。

在节点-a中,数据块0000,0001,0002,0003为实际数据块,0004,0005为冗余数据块;

在节点-b中,数据块0100,0101,0102,0103为实际数据块,0104,0105为冗余数据块;

在节点-c中,数据块0200,0201,0202,0203为实际数据块,0204,0205为冗余数据块;

对每组ec组数据中的实际数据块和冗余数据块按相同顺序编号,例如,实际数据块的编号为1,2,3,4。冗余数据块的编号为5,6。

在3个ec组中,对应编号为1的数据块为:0000,0100,0200,对此3个数据块进行异或运算,得到结果数据块0300。同样地,可以得到其他对应编号的数据块的结果数据块:0301,0302,0303,0304,0305。

将以上6个结果数据块存储在节点-d中,0300,0301,0302,0303为3个ec组中实际数据块对应的结果数据块,0304,0305为3个ec组中冗余数据块对应的结果数据块。

当以上3个ec组数据中,任一ec组数据中的数据块出现损毁或无法读取,如果损毁数据块个数不大于2个,则可通过现存的数据块恢复损毁的数据块,由于该ec组数据的现存数据块存在于一个节点中,可以快速恢复损毁数据,去除了跨节点进行数据拉取和结果保存可能导致失败的可能性。当以上3个ec组数据中,任一ec组数据中有大于2个的数据块损毁,例如以节点-a为例,0001,0002,0003三个数据损毁,则不能通过现存的0000,0004,0005恢复原有数据;此时可以由数据块0101,0201,0301通过异或算法恢复出数据块0001;由数据块0102,0202,0302通过异或算法恢复出0002;由数据块0103,0203,0303通过异或算法恢复出数据块0003;

或者,当节点-a机房出现故障,整个ec组的数据都无法读取的时候,可以通过节点-b,节点-c,节点-d中的数据通过异或运算恢复出整个节点-a中存储的ec组数据。

由以上实施例可知,通过本文中的跨节点的多个数据组管理方法,可以降低系统对节点环境的要求,在节点和网络环境一般的情况下,仍能够提供较高的数据可靠性。即使单个节点瘫痪,通过异或运算的方式,依然能够将原始数据恢复出来。同时兼顾ec构建,更新和恢复数据的效率以及系统可用性。ec组数据的构建,更新和数据恢复均发生在本地节点之内,提高了数据传输的效率,去除了跨节点进行数据拉取和结果保存可能导致失败的可能性。

图2是根据一示例性实施例示出的一种跨节点的数据组管理装置的框图。参考图2,跨节点的数据组管理装置包括结果数据生成模块201,分布存储模块202。

该结果数据生成模块201被设置为用于将i组ec组数据按预设算法生成j组结果数据。

该分布存储模块202被设置为用于用于将所述i组ec组数据和j组结果数据存储在i+j个节点中,其中,i为≥2的整数,j为≥1的整数。

ec组数据包括m个实际数据块和n个冗余数据块;分布存储模块生成j组结果数据包括:

对i组ec组数据中每组ec组数据中的m个实际数据块和n个冗余数据块按相同顺序编号,对每一编号对应的i个数据块按预设算法得到j个结果数据块,将m+n个编号对应的m+n个结果数据块作为一组结果数据,得到j组结果数据。

将i组ec组数据和j组结果数据存储在i+j个节点中包括:

将i组ec组数据存储在i个节点中,其中,同一ec组数据存储在同一个节点中;将j组结果数据存储在不同于上述i个节点的j个节点中,其中,同一组结果数据存储在同一个节点中。

同一ec组数据存储在同一个节点中包括:将同一ec组的m个实际数据块和n个冗余数据块分别存储在同一节点的m+n个存储服务器中;

同一组结果数据存储在同一个节点中包括:将同一组结果数据的m+n个结果数据块存储在同一节点的m+n个存储服务器中。

j=1,所述预设算法为:异或运算。

当所述ec组数据中有损毁数据块时,通过所处节点中m+n个存储服务器内现存的实际数据块和冗余数据块恢复所述损毁数据块;

当所述损毁数据块无法通过所处节点中的m+n个存储服务器内的实际数据块和冗余数据块恢复或所处节点故障时,通过其他节点中的其他ec组数据中的数据块和j个节点中的结果数据块恢复所述损毁数据块。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本领域技术人员应明白,本文的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本文可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本文可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质,包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质等。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

本文是参照根据本文实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

尽管已描述了本文的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本文范围的所有变更和修改。

显然,本领域的技术人员可以对本文进行各种改动和变型而不脱离本文的精神和范围。这样,倘若本文的这些修改和变型属于本文权利要求及其等同技术的范围之内,则本文的意图也包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1