CN113190377A - 一种基于分布式存储系统的可靠冗余方法及设备 - Google Patents
一种基于分布式存储系统的可靠冗余方法及设备 Download PDFInfo
- Publication number
- CN113190377A CN113190377A CN202110533133.5A CN202110533133A CN113190377A CN 113190377 A CN113190377 A CN 113190377A CN 202110533133 A CN202110533133 A CN 202110533133A CN 113190377 A CN113190377 A CN 113190377A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- disk
- nodes
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及分布式存储技术领域,公开了一种基于分布式存储系统的可靠冗余方法及设备,包括进行分布式系统分层;进行纠删策略选型;在节点层采用RS纠删算法生成节点层冗余数据,将数据流及节点层冗余数据缓存至各个节点中;在磁盘层采用XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将各个节点的缓存数据及磁盘层冗余数据分别对应写入各个磁盘中;根据不同数据丢失的情况进行不同恢复策略。本发明提高了数据的可靠性,保证数据在系统有少量节点损坏且同时正常节点有单个磁盘损坏的情况下,仍然可以进行数据恢复;本发明保证了磁盘的使用寿命,同时也提高了磁盘并行写入的效率;极大提升了单个磁盘损坏时本地数据重建的效率。
Description
技术领域
本发明涉及分布式存储技术领域,具体地涉及一种基于分布式存储系统的可靠冗余方法及设备。
背景技术
近年来,随着互联网的技术发展,不管是在日常生活的大众用户的使用,还是在智慧城市、国家安全、科技发展等相关领域的推动下,存储数据呈爆炸式增长。数据存储的可靠性显得尤为重要,目前,数据存储基本上采用分布式存储系统,而为了保证数据的安全性、完备性和高可用性,需要提供一定的数据冗余技术。对于分布式存储系统数据存储冗余的方式主要有多副本和纠删码两种方式。多副本就是把数据复制成多份并分别存储到不同的节点上实现数据冗余。以双副本为例,双副本就是将数据存储为两个副本,当某个副本丢失时,可以通过另一个副本复制恢复数据,但这种方式会带来巨大的额外存储空间消耗,无形中提高了很大的成本。纠删码主要通过纠删码算法将原始的数据进行编码得到冗余数据,将原始数据和冗余数据存储到不同的节点上,以达到容错的目的。当原始数据或冗余数据丢失后,可通过剩余数据进行纠删码算法的解码操作恢复原始数据。
目前,大部分的分布式存储系统采用的冗余策略比较单一,同时仅支持一种级别的数据冗余,或采用服务器节点间的数据冗余,或采用磁盘阵列RAID。单一节点间的数据冗余,会将冗余数据分布到不同的节点上,这样可以保证一个或多个节点故障后数据可以恢复,但是数据恢复需要通过获取系统中其他节点的数据进行恢复,导致节点间有大量的数据交互占用网络的带宽资源。同时多个节点内如果有相同原始数据的数据分片丢失则无法进行恢复。大多场景下可能是某个节点的某个磁盘发生故障,这种情况下,替换磁盘后数据恢复也需要从获取其他节点的数据进行恢复,同样会占用网络带宽资源。而RAID技术目前由于需要RAID卡的支持会提高使用成本,且RAID技术目前在分布式存储系统中已经很少被采用。
因此,针对现存分布式存储系统数据恢复时,策略单一导致某些异常场景无法支持,且在一些重构场景会大量占用系统网络资源导致效率低下的问题,亟需一种能够对数据进行更高效且可靠恢复的存储冗余方法。
发明内容
本发明提供一种基于分布式存储系统的可靠冗余方法及设备,从而解决现有技术的上述问题。
第一方面,本发明提供了一种基于分布式存储系统的可靠冗余方法,包括以下步骤:
S1)进行分布式系统分层,分布式系统包括若干个节点,每个节点下挂载若干个磁盘,将节点作为分布式系统的上层,将磁盘作为分布式系统的下层;
S2)进行纠删策略选型,分布式系统采用RS+XOR双层冗余策略;上层节点间的冗余策略选择支持K+M的RS纠删策略,K为数据流的每个子块数据中的数据块数,M为与每个子块数据相对应的节点层冗余数据块数;下层磁盘间的冗余策略采用支持k+1的XOR纠删策略,k为单个节点中参与XOR纠删的数据块数;
S3)获取数据流,在节点层采用K+M的RS纠删算法生成与数据流对应的节点层冗余数据,将数据流以及节点层冗余数据缓存至各个节点中,获得各个节点的缓存数据;
S4)在磁盘层采用k+1的XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中;
S5)判断是否需要进行数据重构,若是,则根据不同数据丢失的情况采用不同恢复策略进行数据重构;若否,返回步骤S3)。
进一步的,在步骤S1)中,进行分布式系统分层,分布式系统包括X个节点,将所述X个节点分别记为Node1、Node2、...、Nodei、...、NodeX;每个节点下挂载Y个磁盘,将第i个节点Nodei下挂载的Y个磁盘分别记为Disk1i、Disk2i、...、DiskYi,将节点作为分布式系统的上层,将磁盘作为分布式系统的下层。
进一步的,在步骤S3)中,获取数据流,在节点层采用K+M的RS纠删算法生成与数据流对应的节点层冗余数据,M≥2,将数据流以及节点层冗余数据缓存至各个节点中,获得各个节点的缓存数据,数据流包括N块数据,将N块数据分别记为D0、D1、...、DN,包括以下步骤:
S31)将N块数据按顺序划分为个子块数据,将第j个子块数据记为表示第j个子块数据中的第二块数据,在节点层采用K+M的RS纠删算法生成与第j个子块数据相对应的M块节点层冗余数据表示与第j个子块数据相对应的第M块节点层冗余数据,计算节点层冗余数据时采用基于伽罗华域的范德蒙矩阵A的编码策略:A基于伽罗华域的范德蒙矩阵A为基于伽罗华域的范德蒙矩阵A为K+M行K列矩阵;
S32)将第j个子块数据DKj以及与第j个子块数据相对应的M块节点层冗余数据Kj中的每块数据分别缓存至各个节点中;
S33)重复步骤S31)至步骤S32),直到所有子块数据以及与所有子块数据相对应的M块节点层冗余数据中的每块数据均缓存到各个节点中,各个节点的缓存区大小至少为k,k的取值范围为大于2且小于单个节点的总磁盘数Y,获得节点缓存矩阵节点缓存矩阵中的一列元素对应一个节点中的缓存数据,第K+1个节点中的缓存数据为1≤K+1≤X。
进一步的,在步骤S4)中,在磁盘层采用k+1的XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中,包括以下步骤:
S42)将第K+1个节点NodeK+1中的缓存数据P1 1、P1 2、…、P1 j、…、P1 k以及第K+1个节点生成的磁盘层冗余数据XK+1分别对应写入第K+1个节点下挂载的k+1个磁盘,第K+1个节点NodeK+1中的第j个缓存数据P1 j与第K+1个节点下挂载的第j个磁盘Diskji对应;
S43)依次重复步骤S41)至步骤S43)直到各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中。
进一步的,在步骤S4)中,在磁盘层采用XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将所述各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中,磁盘轮转工作策略包括将一天24小时分为若干等份时间段,每个时间段的时长满足24÷Y,每隔24÷Y时长每个节点的磁盘轮转工作。
进一步的,在步骤S5)中,根据不同数据丢失的情况采用不同恢复策略进行数据重构,包括以下步骤:
S51)当存在任意一个节点的任意一个磁盘发生损坏时,通过除损坏的磁盘外任意一个节点的其他磁盘中保存的数据、并使用XOR异或对损坏的磁盘上的数据进行恢复;
S52)当存在不大于M个节点发生损坏时,通过除损坏的节点外的其他节点中的任意K个节点中缓存的数据对损坏的节点的数据进行恢复;
S53)若存在多个节点中各有一个磁盘发生损坏时,则按照步骤S51)对每个节点中发生损坏的磁盘的数据进行恢复;
S54)若存在不大于M个节点发生损坏且同时存在多个节点中各有一个磁盘发生损坏时,先按照步骤S51)对每个节点中发生损坏的磁盘的数据进行恢复,再按照步骤S52)对损坏的节点的数据进行恢复。
进一步的,在步骤S51)中,使用XOR异或对损坏的磁盘上的数据进行恢复,包括当第K+1个节点的第j个磁盘DiskjK+1发生损坏时,通过除第j个磁盘DiskjK+1外第K+1个节点的其他磁盘中保存的数据、并使用XOR异或对第K+1个节点的第j个磁盘DiskjK+1上的数据进行恢复,第K+1个节点的第j个磁盘DiskjK+1上恢复的数据
进一步的,在步骤S52)中,当存在不大于M个节点发生损坏时,通过除损坏的节点外的其他节点中的任意K个节点中缓存的数据对损坏的节点的数据进行恢复,包括以下步骤:
S521)假设发生损坏的节点数为d,d≤M,发生损坏的节点分别记为Node1′、Node2′、...、Noded′,未发生损坏的节点数为X-d,从X-d个未发生损坏的节点中选择任意K个节点,使用基于伽罗华域的范德蒙矩阵A中对应的任意K个节点的保留数据位组成矩阵D;
S522)获取矩阵D的增广矩阵,对矩阵D的增广矩阵进行初等变换,获得矩阵D的逆矩阵D-;
S523)获取节点缓存矩阵中的第j行与任意K个节点相对应的数据,并将节点缓存矩阵中的第j行与任意K个节点相对应的数据组成列向量dj′,将逆矩阵D-与列向量dj′相乘,获得恢复向量vj′,通过恢复向量vj′获得每个发生损坏的节点中的第j个损失数据;
S524)j依次取值为1、2、…、k,重复步骤S524),获得每个发生损坏的节点中的所有损失数据。
另一方面,本发明提供了一种基于分布式存储系统的可靠冗余设备,基于分布式存储系统的可靠冗余设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的基于分布式存储系统的可靠冗余程序,基于分布式存储系统的可靠冗余程序被处理器执行时实现基于分布式存储系统的可靠冗余方法的步骤。
进行数据重构时,由于各节点自身磁盘间采用了XOR冗余策略,当某个节点的一个磁盘发生损坏时,如果需要恢复数据,可直接通过其它磁盘上的数据进行反纠删进行恢复,此时不会丢失数据。由于带宽资源在分布式中比较匮乏,原则上可以在本地执行的事务尽可能在本地执行,而无需通过网络。本发明在磁盘层采用XOR冗余策略使得节点在本地能够直接进行恢复,节约了数据传输时间,使重建的效率得到大幅度提升。且由于节点间也存在冗余策略,所以也可以不用在少量磁盘损坏的期间进行立即重构。在此基础上,即当先按照本地重构恢复了本地各磁盘的数据,但此时如果有2个节点的所有磁盘都发生了损坏,本发明也可以通过节点间的反EC操作对数据进行节点间重构。
本发明选择比较空闲的几个节点进行工作,即这些节点的资源占用量相对较少,有能力继续处理其他事务。本发明采用扇入式架构,将每个节点上的每块磁盘上的分片数据发送到资源量占用较少的节点。由于节点间带宽资源有限,若将所有需要重构的节点数据同时发送至某一个节点进行数据恢复,则该接收数据的这个节点的接收数据压力会比较大,会占用较高的带宽资源,降低重构效率。所以可先将数据在部分节点上进行反纠删和恢复,再在系统较为空闲时进行数据的合并,即保证了数据可以在短时间内恢复不丢失,又可以节约系统资源。
本发明反纠删操作通过RS算法计算出原始数据,根据之前的配置及异构冗余策略,存储记录各数据流的分片存储位置及顺序,如:当前K+M是6+2的方式,假如每个原始数据就是1、2、3、4、5、6,保存的冗余信息为7和8。此时Node3和Node5节点的磁盘都发生了损坏,则在各个节点上通过其余1、2、4、6、7、8计算出3和5,然后在保存分别保存在Node3和Node5对应的磁盘上。
本发明的有益效果是:
本发明不同于现有技术仅采用单一的纠删策略,本发明提高了分布式存储系统的可靠性,使用多种不同的纠删算法组合,基于不同的存储粒度进行数据冗余的计算与存储。
本发明既考虑的磁盘休眠的情况,又考虑了磁盘并行IO的情况,采取了一种中间策略,保证了磁盘的使用寿命,同时也提高了磁盘并行写入的效率。
本发明适用于各种异常场景,在M个节点异常、单个磁盘异常、同时多个节点上的单磁盘异常、以及M个节点且K个节点上单磁盘同时异常等情况下,本发明都能够进行数据的重构。
本发明在磁盘层进行了XOR冗余策略,极大提升了单个磁盘损坏时本地数据重建的效率。同时采用扇入式架构,保证跨节点进行数据重建时的负载均衡。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本实施例一提供的基于分布式存储系统的可靠冗余方法流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他单元。
实施例一,第一方面,本实施例提供了一种基于分布式存储系统的可靠冗余方法,如图1所示,包括以下步骤:
S1)进行分布式系统分层,分布式系统包括若干个节点,每个节点下挂载若干个磁盘,分布式系统包括X个节点,将X个节点分别记为Node1、Node2、...、Nodei、...、NodeX;每个节点下挂载Y个磁盘,将第i个节点Nodei下挂载的Y个磁盘分别记为Disk1i、Disk2i、...、DiskYi,将节点作为分布式系统的上层,将磁盘作为分布式系统的下层。
S2)进行纠删策略选型,分布式系统采用RS+XOR双层冗余策略;上层节点间的冗余策略选择支持K+M的RS纠删策略,K为数据流的每个子块数据中的数据块数,M为与每个子块数据相对应的节点层冗余数据块数;下层磁盘间的冗余策略采用支持k+1的XOR纠删策略,k为单个节点中参与XOR纠删的数据块数。在节点层,若K值较小时,会产生更大比重的冗余数据。虽然提高了可靠性,但是磁盘存储的实际数据比例较少,磁盘利用率不高。所以本发明在节点层冗余策略进行选型时,尽量的将K值取大,节约冗余成本。磁盘层同理,若磁盘数量较多时,也可根据实际设备挂载情况,选择较大的k值,但必须满足k+1≤Y。
S3)获取数据流,在节点层采用K+M的RS纠删算法生成与数据流对应的节点层冗余数据,M≥2,将数据流以及节点层冗余数据缓存至各个节点中,获得各个节点的缓存数据,数据流包括N块数据,将N块数据分别记为D0、D1、...、DN,包括以下步骤:
S31)将N块数据按顺序划分为个子块数据,将第j个子块数据记为表示第j个子块数据中的第二块数据,在节点层采用K+M的RS纠删算法生成与第j个子块数据相对应的M块节点层冗余数据表示与第j个子块数据相对应的第M块节点层冗余数据,计算节点层冗余数据时采用基于伽罗华域的范德蒙矩阵A的编码策略:A基于伽罗华域的范德蒙矩阵A为基于伽罗华域的范德蒙矩阵A为K+M行K列矩阵;
S32)将第j个子块数据DKj以及与第j个子块数据相对应的M块节点层冗余数据Kj中的每块数据分别缓存至各个节点中;
S33)重复步骤S31)至步骤S32),直到所有子块数据以及与所有子块数据相对应的M块节点层冗余数据中的每块数据均缓存到各个节点中,各个节点的缓存区大小至少为k,k的取值范围为大于2且小于单个节点的总磁盘数Y,获得节点缓存矩阵节点缓存矩阵中的一列元素对应一个节点中的缓存数据,第K+1个节点中的缓存数据为(P1 1 P1 2…P1 j…P1 k…),1≤K+1≤X。
S4)在磁盘层采用k+1的XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中,包括以下步骤:
S42)将第K+1个节点NodeK+1中的缓存数据P1 1、P1 2、…、P1 j、…、P1 k以及第K+1个节点生成的磁盘层冗余数据XK+1分别对应写入第K+1个节点下挂载的k+1个磁盘,第K+1个节点NodeK+1中的第j个缓存数据P1 j与第K+1个节点下挂载的第j个磁盘Diskji对应;
S43)依次重复步骤S41)至步骤S43)直到各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中。
在步骤S4)中,在磁盘层采用XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将所述各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中,磁盘轮转工作策略包括将一天24小时分为若干等份时间段,每个时间段的时长满足24÷Y,每隔24÷Y时长每个节点的磁盘轮转工作。
分布式系统中节点数量不确定,每个节点下的磁盘数量也不确定,根据不同的磁盘数量进行不同的轮转工作方式。如当前每个节点下挂载Y块磁盘,一般Y≥4,磁盘级别采用k+1的XOR纠删策略,一般设置k≥2,且需要满足k+1≤Y。每次仅有k+1块磁盘同时工作,即disk1、disk2、……、disk(k+1),其余Y-(k+1)块盘磁盘休眠。将一天24小时可分为若干等份,每个时间段满足24÷Y,按照结果的最大整取取值。如若每个节点4块磁盘,采用2+1,则24÷4=6,即每6个小时轮转工作。每天0点至6点时,使用disk1、disk2、disk3。6点至12点使用disk2、disk3、disk4。12点至18点使用disk3、disk4、disk1。18点至0点使用disk4、disk1、disk2。本发明通过磁盘轮转工作保证多个磁盘同时写入,提高写入效率,也可将其余的磁盘休眠,提高磁盘使用寿命,减少系统功耗,提高整个系统的可靠性。
本实施例中,根据集群中的节点数量及磁盘数量选择对应的纠删策略,假设节点数量为5,节点分别是Node1,Node2,Node3,Node4,Node5,可将节点间的RS纠删策略K+M设置为3+2,K=3,M=2,本发明尽可能选取较大的K值,从而减少冗余数据所占的比例;假设每个节点的磁盘数量为4,磁盘分别是D1、D2、D3、D4,将磁盘间的XOR纠删策略k+1设置为2+1。将基于伽罗华域的范德蒙矩阵A设置为获取数据流,当前写入多块数据,内容分别是3、7、11、10、2、4、6、7、8、9、……,首先接收并获取其中的K块数据,即前3块数据(即第1个子块数据,j=1),内容分别是3、7、11,并将3、7、11组成一个向量,记为利用基于伽罗华域的范德蒙矩阵A计算与第1个子块数据相对应的M(M=2)块节点层冗余数据 即求出的21、50这两个数据为支持3+2的RS纠删策略下原始数据3、7、11的冗余数据。按照同样的策略,计算出后续子块数据的冗余数据, 与第2个子块数据相对应的M块节点层冗余数据K2==(1626),与第3个子块数据相对应的M块节点层冗余数据K3==(2144),获得节点缓存矩阵节点缓存矩阵的列序号与节点的序号相对应,第K+1个节点中的缓存数据为Kj=(P1 1 P1 2…P1 j…P1 k),1≤K+1≤X。节点缓存矩阵的每列元素对应一个节点中的缓存数据,第4个节点中的缓存数据为(21 16 21…)。
在磁盘层采用XOR纠删算法生成磁盘层冗余数据,当各节点的缓存数据的数量满足2个时,在磁盘层采用XOR纠删算法生成磁盘层冗余数据,第1个节点生成的磁盘层冗余数据为(即在节点Node1中,将缓存中的前2个数据3、10进行异或运算);第2个节点生成的磁盘层冗余数据为第3个节点生成的磁盘层冗余数据为第4个节点生成的磁盘层冗余数据为第5个节点生成的磁盘层冗余数据为然后将数据3、10、9分别保存在节点Node1中的D1、D2、D3磁盘中;将数据7、2、5分别保存在节点Node2中的D1、D2、D3磁盘中;数据11、4、15分别保存在节点Node3中的D1,D2,D3磁盘中;数据21、16、6分别保存在节点Node4中的D1、D2、D3磁盘中;数据50、26、40分别保存在节点Node5中的D1、D2、D3磁盘中。后续关于数据流的输入数据继续按照步骤S3)至步骤4)中的策略进行分层计算与存储。最终,节点Node1、节点Node2、节点Node3中保存的是最原始的数据,节点Node4、节点Node5保存的是冗余数据。
S5)判断是否需要进行数据重构,若是,则根据不同数据丢失的情况采用不同恢复策略进行数据重构;若否,返回步骤S3)。
在步骤S5)中,根据不同数据丢失的情况进行不同恢复策略,包括以下步骤:
S51)当存在任意一个节点的任意一个磁盘发生损坏时,通过除损坏的磁盘外任意一个节点的其他磁盘中保存的数据、并使用XOR异或对损坏的磁盘上的数据进行恢复;在步骤S51)中,使用XOR异或对损坏的磁盘上的数据进行恢复,包括当第K+1个节点的第j个磁盘DiskjK+1发生损坏时,通过除第j个磁盘DiskjK+1外第K+1个节点的其他磁盘中保存的数据、并使用XOR异或对第K+1个节点的第j个磁盘DiskjK+1上的数据进行恢复,第K+1个节点的第j个磁盘DiskjK+1上恢复的数据
S52)当存在不大于M个节点发生损坏时,通过除损坏的节点外的其他节点中的任意K个节点中缓存的数据对损坏的节点的数据进行恢复;
S53)若存在多个节点中各有一个磁盘发生损坏时,则按照步骤S51)对每个节点中发生损坏的磁盘的数据进行恢复;
S54)若存在不大于M个节点发生损坏且同时存在多个节点中各有一个磁盘发生损坏时,先按照步骤S51)对每个节点中发生损坏的磁盘的数据进行恢复,再按照步骤S52)对损坏的节点的数据进行恢复。
在步骤S52)中,当存在不大于M个节点发生损坏时,通过除损坏的节点外的其他节点中的任意K个节点中缓存的数据对损坏的节点的数据进行恢复,包括以下步骤:
S521)假设发生损坏的节点数为d,d≤M,发生损坏的节点分别记为Node1′、Node2′、...、Noded′,未发生损坏的节点数为X-d,从X-d个未发生损坏的节点中选择任意K个节点,使用基于伽罗华域的范德蒙矩阵A中对应的任意K个节点的保留数据位组成矩阵D;
S522)获取矩阵D的增广矩阵,对矩阵D的增广矩阵进行初等变换,获得矩阵D的逆矩阵D-;
S523)获取节点缓存矩阵中的第j行与任意K个节点相对应的数据,并将节点缓存矩阵中的第j行与任意K个节点相对应的数据组成列向量dj′,将逆矩阵D-与列向量dj′相乘,获得恢复向量vj′,通过恢复向量vj′获得每个发生损坏的节点中的第j个损失数据;
S524)j依次取值为1、2、…、k,重复步骤S524),获得每个发生损坏的节点中的所有损失数据。
在步骤S5)中,根据不同数据丢失的情况进行不同恢复策略。
比如,节点Node2中的D2磁盘发生了损坏,即数据2丢失。此时,需要获取节点Node2的其他正常磁盘中的数据(即节点Node2中的D1磁盘保存的数据7及节点Node2中的D2磁盘保存的5),使用XOR异或计算进行恢复损失数据:其他节点中的某个磁盘发生损坏时的数据恢复方式相同。
又比如,当节点Node3整个节点发生损坏时,即第一轮缓存过程中3块数据11、4、8全部丢失,需要通过其它节点Node1、节点Node2、节点Node4和节点Node5中的任意K=3个节点内的第一轮缓存过程中的数据进行恢复,如选择节点Node1、节点Node2、节点Node5进行节点Node3的数据恢复,计算过程如下:使用基于伽罗华域的范德蒙矩阵中对应的节点Node1、节点Node2、节点Node5的保留数据位组成矩阵获取矩阵D的增广矩阵(D|E),对矩阵D的增广矩阵(D|E)进行初等变换,获得矩阵D的逆矩阵D-, 获取节点缓存矩阵中的第1行与节点Node1、节点Node2、节点Node5相对应的数据,组成列向量以此类推,获得列向量和列向量使用D-×dj′还原数据,获得第一恢复向量 通过第一恢复向量v1′的第3行元素恢复节点Node3中的第一个数据11。计算第二恢复向量 通过第二恢复向量v2′的第3行元素恢复节点Node3中的第二个数据4。计算第三恢复向量通过第三恢复向量v3′的第3行元素恢复节点Node3中的第三个数据8。
再比如,5个节点中有M=2个节点损坏,当节点Node2、节点Node3均发生损坏时,选择节点Node1、节点Node4、节点Node5进行节点Node2以及节点Node3的数据恢复,计算过程如下:使用基于伽罗华域的范德蒙矩阵中对应的节点Node1、节点Node4、节点Node5的保留数据位组成矩阵获得矩阵D的逆矩阵获取节点缓存矩阵中的第1行与节点Node1、节点Node2、节点Node5相对应的数据,组成列向量以此类推,获得列向量和列向量通过计算 恢复节点Node2的第一个数据7以及节点Node3的第一个数据11,通过计算恢复节点Node2的第二个数据2以及节点Node3的第二个数据4;通过计算恢复节点Node2的第三个数据7以及节点Node3的第三个数据8。
当有磁盘发生损坏,需要更换磁盘并重构磁盘数据时,如果节点中只损坏了一块磁盘,则可使用本地其它磁盘上的数据进行数据重构,假设网络当前可用剩余资源量为可写入100MB/s,磁盘写入速率为200MB/s,当有1T的数据需要重构时,如果采用普通数据重构策略,即使用其它节点的原始数据和冗余数据进行恢复时,首先需要将数据通过网络传输,需要的时间为1T÷100MB/s≈10000s,而后再将数据写入磁盘的时间为1T÷200MB/s=5000s,即总共需要15000s;而如果采用本地重构,则仅需要5000s,本发明数据重构效率可以提升3倍。
进行数据重构时,由于各节点自身磁盘间采用了XOR冗余策略,当某个节点的一个磁盘发生损坏时,如果需要恢复数据,可直接通过其它磁盘上的数据进行反纠删进行恢复,此时不会丢失数据。由于带宽资源在分布式中比较匮乏,原则上可以在本地执行的事务尽可能在本地执行,而无需通过网络。本发明在磁盘层采用XOR冗余策略使得节点在本地能够直接进行恢复,节约了数据传输时间,使重建的效率得到大幅度提升。且由于节点间也存在冗余策略,所以也可以不用在少量磁盘损坏的期间进行立即重构。在此基础上,即当先按照本地重构恢复了本地各磁盘的数据,但此时如果有2个节点的所有磁盘都发生了损坏,本发明也可以通过节点间的反EC操作对数据进行节点间重构。
本发明选择比较空闲的几个节点进行工作,即这些节点的资源占用量相对较少,有能力继续处理其他事务。
本发明采用扇入式架构,将每个节点上的每块磁盘上的分片数据发送到资源量占用较少的节点。由于节点间带宽资源有限,如若将所有需要重构的节点数据同时发送至某一个节点进行数据恢复,则该接收数据的这个节点的接收数据压力会比较大,会占用较高的带宽资源,降低重构效率。所以可先将数据在部分节点上进行反纠删和恢复,再在系统较为空闲时进行数据的合并,即保证了数据可以在短时间内恢复不丢失,又可以节约系统资源。
本发明反纠删操作通过RS算法计算出原始数据,根据之前的配置及异构冗余策略,存储记录各数据流的分片存储位置及顺序,如:当前K+M是6+2的方式,假如每个原始数据就是1、2、3、4、5、6,保存的冗余信息为7和8。此时Node3和Node5节点的磁盘都发生了损坏,则在各个节点上通过其余1、2、4、6、7、8计算出3和5,然后在保存分别保存在Node3和Node5对应的磁盘上。
另一方面,本实施例提供了一种基于分布式存储系统的可靠冗余设备,基于分布式存储系统的可靠冗余设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于分布式存储系统的可靠冗余程序,基于分布式存储系统的可靠冗余程序被处理器执行时实现基于分布式存储系统的可靠冗余方法的步骤。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明采用了一种分层双冗余策略,提高了数据的可靠性,保证数据在系统同时有少量节点损坏,同时正常节点有单个磁盘损坏的情况下,仍然可以进行数据恢复;本发明既考虑的磁盘轮转的情况,又考虑了磁盘并行IO的情况,采取了一种中间策略,保证了磁盘的使用寿命,同时也提高了磁盘并行写入的效率;本发明在磁盘层进行了XOR冗余策略,极大地提升了单个磁盘损坏时本地数据重建的效率,防止了由于单个磁盘或少量磁盘损坏仍需要占用网络带宽及其它节点资源的情况。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (9)
1.一种基于分布式存储系统的可靠冗余方法,其特征在于,包括以下步骤:
S1)进行分布式系统分层,所述分布式系统包括若干个节点,每个节点下挂载若干个磁盘,将节点作为分布式系统的上层,将磁盘作为分布式系统的下层;
S2)进行纠删策略选型,所述分布式系统采用RS+XOR双层冗余策略;上层节点间的冗余策略选择支持K+M的RS纠删策略,K为数据流的每个子块数据中的数据块数,M为与每个子块数据相对应的节点层冗余数据块数;下层磁盘间的冗余策略采用支持k+1的XOR纠删策略,k为单个节点中参与XOR纠删的数据块数;
S3)获取数据流,在节点层采用K+M的RS纠删算法生成与所述数据流对应的节点层冗余数据,将所述数据流以及所述节点层冗余数据缓存至各个节点中,获得各个节点的缓存数据;
S4)在磁盘层采用k+1的XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将所述各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中;
S5)判断是否需要进行数据重构,若是,则根据不同数据丢失的情况采用不同恢复策略进行数据重构;若否,返回步骤S3)。
2.根据权利要求1所述的基于分布式存储系统的可靠冗余方法,其特征在于,在步骤S1)中,进行分布式系统分层,所述分布式系统包括X个节点,将所述X个节点分别记为Node1、Node2、...、Nodei、...、NodeX;每个节点下挂载Y个磁盘,将第i个节点Nodei下挂载的Y个磁盘分别记为Disk1i、Disk2i、...、DiskYi,将节点作为分布式系统的上层,将磁盘作为分布式系统的下层。
3.根据权利要求2所述的基于分布式存储系统的可靠冗余方法,其特征在于,在步骤S3)中,获取数据流,在节点层采用K+M的RS纠删算法生成与所述数据流对应的节点层冗余数据,M≥2,将所述数据流以及所述节点层冗余数据缓存至各个节点中,获得各个节点的缓存数据,所述数据流包括N块数据,将所述N块数据分别记为D0、D1、...、DN,包括以下步骤:
S31)将所述N块数据按顺序划分为个子块数据,将第j个子块数据记为 表示第j个子块数据中的第二块数据,在节点层采用K+M的RS纠删算法生成与所述第j个子块数据相对应的M块节点层冗余数据 表示与第j个子块数据相对应的第M块节点层冗余数据,计算节点层冗余数据时采用基于伽罗华域的范德蒙矩阵A的编码策略:所述基于伽罗华域的范德蒙矩阵A为基于伽罗华域的范德蒙矩阵A为K+M行K列矩阵;
S32)将第j个子块数据DKj以及与所述第j个子块数据相对应的M块节点层冗余数据Kj中的每块数据分别缓存至各个节点中;
4.根据权利要求3所述的基于分布式存储系统的可靠冗余方法,其特征在于,在步骤S4)中,在磁盘层采用k+1的XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将所述各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中,包括以下步骤:
S42)将第K+1个节点NodeK+1中的缓存数据P1 1、P1 2、…、P1 j、…、P1 k以及第K+1个节点生成的磁盘层冗余数据XK+1分别对应写入第K+1个节点下挂载的k+1个磁盘,第K+1个节点NodeK+1中的第j个缓存数据P1 j与第K+1个节点下挂载的第j个磁盘Diskji对应;
S43)依次重复步骤S41)至步骤S43)直到各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中。
5.根据权利要求4所述的基于分布式存储系统的可靠冗余方法,其特征在于,在步骤S4)中,在磁盘层采用XOR纠删算法生成磁盘层冗余数据,采用磁盘轮转工作策略将所述各个节点的缓存数据以及磁盘层冗余数据分别对应写入各个磁盘中,所述磁盘轮转工作策略包括将一天24小时分为若干等份时间段,每个时间段的时长满足24÷Y,每隔24÷Y时长每个节点的磁盘轮转工作。
6.根据权利要求5所述的基于分布式存储系统的可靠冗余方法,其特征在于,在步骤S5)中,根据不同数据丢失的情况采用不同恢复策略进行数据重构,包括以下步骤:
S51)当存在任意一个节点的任意一个磁盘发生损坏时,通过除损坏的磁盘外任意一个节点的其他磁盘中保存的数据、并使用XOR异或对损坏的磁盘上的数据进行恢复;
S52)当存在不大于M个节点发生损坏时,通过除损坏的节点外的其他节点中的任意K个节点中缓存的数据对损坏的节点的数据进行恢复;
S53)若存在多个节点中各有一个磁盘发生损坏时,则按照步骤S51)对每个节点中发生损坏的磁盘的数据进行恢复;
S54)若存在不大于M个节点发生损坏且同时存在多个节点中各有一个磁盘发生损坏时,先按照步骤S51)对每个节点中发生损坏的磁盘的数据进行恢复,再按照步骤S52)对损坏的节点的数据进行恢复。
8.根据权利要求6所述的基于分布式存储系统的可靠冗余方法,其特征在于,在步骤S52)中,当存在不大于M个节点发生损坏时,通过除损坏的节点外的其他节点中的任意K个节点中缓存的数据对损坏的节点的数据进行恢复,包括以下步骤:
S521)假设发生损坏的节点数为d,d≤M,发生损坏的节点分别记为Node1′、Node2′、...、Noded′,未发生损坏的节点数为X-d,从X-d个未发生损坏的节点中选择任意K个节点,使用基于伽罗华域的范德蒙矩阵A中对应的所述任意K个节点的保留数据位组成矩阵D;
S522)获取所述矩阵D的增广矩阵,对所述矩阵D的增广矩阵进行初等变换,获得所述矩阵D的逆矩阵D-;
S523)获取所述节点缓存矩阵中的第j行与所述任意K个节点相对应的数据,并将所述节点缓存矩阵中的第j行与所述任意K个节点相对应的数据组成列向量dj′,将所述逆矩阵D-与所述列向量dj′相乘,获得恢复向量vj′,通过所述恢复向量vj′获得每个发生损坏的节点中的第j个损失数据;
S524)j依次取值为1、2、…、k,重复步骤S524),获得每个发生损坏的节点中的所有损失数据。
9.一种基于分布式存储系统的可靠冗余设备,其特征在于,所述基于分布式存储系统的可靠冗余设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于分布式存储系统的可靠冗余程序,所述基于分布式存储系统的可靠冗余程序被所述处理器执行时实现如权利要求1至8任一项所述的基于分布式存储系统的可靠冗余方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110533133.5A CN113190377B (zh) | 2021-05-17 | 2021-05-17 | 一种基于分布式存储系统的可靠冗余方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110533133.5A CN113190377B (zh) | 2021-05-17 | 2021-05-17 | 一种基于分布式存储系统的可靠冗余方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190377A true CN113190377A (zh) | 2021-07-30 |
CN113190377B CN113190377B (zh) | 2022-03-11 |
Family
ID=76982101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110533133.5A Active CN113190377B (zh) | 2021-05-17 | 2021-05-17 | 一种基于分布式存储系统的可靠冗余方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190377B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115964445A (zh) * | 2023-02-23 | 2023-04-14 | 合肥申威睿思信息科技有限公司 | 一种分布式数据库的多副本实现方法和装置 |
CN116010160A (zh) * | 2023-03-09 | 2023-04-25 | 安超云软件有限公司 | 分布式文件系统的纠删码数据分布的方法及应用 |
CN116204137A (zh) * | 2023-05-04 | 2023-06-02 | 苏州浪潮智能科技有限公司 | 基于dpu的分布式存储系统、控制方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104052576A (zh) * | 2014-06-07 | 2014-09-17 | 华中科技大学 | 一种云存储下基于纠错码的数据恢复方法 |
US9529675B2 (en) * | 2013-07-26 | 2016-12-27 | Huawei Technologies Co., Ltd. | Data recovery method, data recovery device and distributed storage system |
CN109358980A (zh) * | 2018-09-25 | 2019-02-19 | 华东交通大学 | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 |
CN112181707A (zh) * | 2020-08-21 | 2021-01-05 | 山东云海国创云计算装备产业创新中心有限公司 | 分布式存储数据恢复调度方法、系统、设备及存储介质 |
-
2021
- 2021-05-17 CN CN202110533133.5A patent/CN113190377B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529675B2 (en) * | 2013-07-26 | 2016-12-27 | Huawei Technologies Co., Ltd. | Data recovery method, data recovery device and distributed storage system |
CN104052576A (zh) * | 2014-06-07 | 2014-09-17 | 华中科技大学 | 一种云存储下基于纠错码的数据恢复方法 |
CN109358980A (zh) * | 2018-09-25 | 2019-02-19 | 华东交通大学 | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 |
CN112181707A (zh) * | 2020-08-21 | 2021-01-05 | 山东云海国创云计算装备产业创新中心有限公司 | 分布式存储数据恢复调度方法、系统、设备及存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115964445A (zh) * | 2023-02-23 | 2023-04-14 | 合肥申威睿思信息科技有限公司 | 一种分布式数据库的多副本实现方法和装置 |
CN115964445B (zh) * | 2023-02-23 | 2024-03-05 | 合肥申威睿思信息科技有限公司 | 一种分布式数据库的多副本实现方法和装置 |
CN116010160A (zh) * | 2023-03-09 | 2023-04-25 | 安超云软件有限公司 | 分布式文件系统的纠删码数据分布的方法及应用 |
CN116204137A (zh) * | 2023-05-04 | 2023-06-02 | 苏州浪潮智能科技有限公司 | 基于dpu的分布式存储系统、控制方法、装置及设备 |
CN116204137B (zh) * | 2023-05-04 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 基于dpu的分布式存储系统、控制方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113190377B (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113190377B (zh) | 一种基于分布式存储系统的可靠冗余方法及设备 | |
EP2394220B1 (en) | Distributed storage of recoverable data | |
JP5298393B2 (ja) | 並列リードソロモンraid(rs−raid)アーキテクチャ、デバイス、および方法 | |
AU2001249987B2 (en) | System and method for data protection with multidimensional parity | |
CN107885612B (zh) | 数据处理方法和系统及装置 | |
CN111149093B (zh) | 分布式存储系统的数据编码、解码及修复方法 | |
US7266716B2 (en) | Method and recovery of data using erasure coded data from stripe blocks | |
Hu et al. | NCFS: On the practicality and extensibility of a network-coding-based distributed file system | |
AU2001249987A1 (en) | System and method for data protection with multidimensional parity | |
US7284088B2 (en) | Methods of reading and writing data | |
JP2004536404A (ja) | Raid装置からのデータ伝送 | |
EP2208138A2 (en) | Generating a parallel recovery plan for a data storage system | |
US20060136778A1 (en) | Process for generating and reconstructing variable number of parity for byte streams independent of host block size | |
WO2009094052A1 (en) | Storage redundant array of independent drives | |
CN113326006B (zh) | 一种基于纠删码的分布式块存储系统 | |
CN108762978B (zh) | 一种局部部分重复循环码的分组构造方法 | |
WO2024098696A1 (zh) | 一种数据恢复方法、装置、设备及可读存储介质 | |
CN112799605A (zh) | 平方部分重复码构造方法、节点修复方法及容量计算方法 | |
CN113419895B (zh) | 一种降低储存集群系统中修复开销的优化方法及装置 | |
CN109343998B (zh) | 一种基于纠删码的全分布修复方法 | |
CN111224747A (zh) | 可降低修复带宽和磁盘读取开销的编码方法及其修复方法 | |
CN107885615B (zh) | 分布式存储数据的复原方法与系统 | |
CN115048061A (zh) | 基于Raft的冷数据存储方法 | |
Li et al. | Exploiting decoding computational locality to improve the I/O performance of an XOR-coded storage cluster under concurrent failures | |
CN113504875A (zh) | 一种基于多级调度的纠删码系统恢复方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |