CN113094213B - GPyramid-Code布局及该布局单盘故障的数据恢复与存储方法 - Google Patents
GPyramid-Code布局及该布局单盘故障的数据恢复与存储方法 Download PDFInfo
- Publication number
- CN113094213B CN113094213B CN202110494918.6A CN202110494918A CN113094213B CN 113094213 B CN113094213 B CN 113094213B CN 202110494918 A CN202110494918 A CN 202110494918A CN 113094213 B CN113094213 B CN 113094213B
- Authority
- CN
- China
- Prior art keywords
- data
- recovery
- check
- disk
- block
- 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.)
- Active
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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Detection And Correction Of Errors (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种GPyramid‑Code布局及该布局单盘故障的数据恢复方法与恢复数据的存储方法。采用GPyramid‑Code编码,该编码通过构建公共数据块的方法,不仅能减少在数据恢复期间从有效磁盘中读取数据块的数量,而且摒弃了传统热备盘存储恢复数据,利用最大跨度存储路径算法寻找一条存储路径,根据该路径将恢复的数据存储到垃圾块中,提高对恢复数据的存储效率。该数据恢复方法,由于降低了参与恢复的数据块的数量,进而提高了存储系统的可靠性。该存储方法利用最大跨度存储路径算法可以选择尽可能多的磁盘来存储恢复数据,减少排队等待延迟,提高恢复数据存储的并行性。
Description
技术领域
本发明涉及计算机数据存储及重构技术领域,具体是一种GPyramid-Code布局及该布局单盘故障的数据恢复方法与恢复数据的存储方法。
背景技术
现代信息技术的发展和存储规模的扩大导致数据盘损坏概率不断增加。对于很多用户来说,关键数据的重要性已经远高于存储工具本身的价值。为了保障数据即使在磁盘发生故障后仍保持完整性,就需要对数据进行恢复。因此,数据恢复的时间和恢复过程所需读取的数据量成为了存储系统可靠性的关键。
文献《EVENODD:an effcient scheme for tolerating double disk failuresin RAID architectures》提出EVENODD码是存储系统中较为常见的一种编码,其原理主要是利用水平编码和对角线编码实现双盘故障的恢复。其优点在于结构简单,编码和解码过程基于异或运算,使得恢复速度更快。但是其主要缺点是单盘故障恢复所需读取的数据块过多,数据的恢复效率较低。
在对故障数据重构期间,存储系统需要将恢复的数据存到新磁盘。数据重构前一般采用人工方式更换已损坏磁盘,这种方式会延误数据重构时间,导致其它磁盘失效概率增加。利用热备盘存储重构数据可以有效解决这一问题,但这种方法不仅需要增加额外的空磁盘,而且在数据量较大时也会降低对重构数据的存储效率。
发明内容
针对现有技术的不足,本发明拟解决的技术问题是,提供一种GPyramid-Code布局及该布局单盘故障的数据恢复方法与恢复数据的存储方法。
本发明解决所述布局技术问题的技术方案是,提供一种GPyramid-Code布局,其特征在于,该布局为(n-1)*n的阵列;该阵列由n个磁盘组成,包括n-1个数据盘和1个校验盘;将每个数据盘划分成n-1个大小相同的数据块,将校验盘划分成n-1个与数据块大小相同的校验块;Bi,j表示第j个磁盘上的第i个块,i和j的取值范围分别为:0≤i≤n-2,0≤j≤n-1;对所有磁盘进行条带化,同一偏移单位的数据块和校验块组成一个条带;
在(n-1)*n的阵列中,第n列为校验盘,校验块中的数据由公式(1)生成:
式(1)中,Bi,n-1代表校验盘上的第i个校验块;<t-1>n-1=(t-1)mod(n-1)。
本发明解决所述数据恢复方法技术问题的技术方案是,提供一种基于GPyramid-Code布局的单盘故障的数据恢复方法,其特征在于,该数据恢复方法包括以下步骤:
步骤一、设计GPyramid-Code的布局,将GPyramid-Code设计成(n-1)*n的阵列;
步骤二、当单个数据盘发生故障时,根据GPyramid-Code的单盘恢复算法进行数据恢复;当单个检验盘发生故障时,根据公式(1)进行数据恢复;
步骤二中,GPyramid-Code的单盘恢复算法包括以下步骤:
步骤1、确定所有校验链:对于n-1行n列的阵列,校验链的数量为n-1条,第k条校验链Lk表达为:
式(2)中,0≤k≤n-2;
步骤2、确定故障磁盘的恢复序列串RS:恢复序列串中的元素由校验链按k值大小顺序组成;对于故障数据盘的故障数据块M,存在一条或两条校验链L由故障数据块M生成;
如果故障数据块M参与两条校验链的生成,M为此两条校验链的一个公共块,则选择M生成的两条校验链中的一个作为一条恢复序列串中的一个元素,两条校验链中的另一个作为另一条恢复序列串中的一个元素;如果故障数据块M参与一条校验链的生成,则该条校验链作为每条恢复序列串的一个元素;进而得到所有恢复序列串;
若故障磁盘中公共块的个数为p,则恢复序列串共2p条;
步骤3、选择2p条中任意一条恢复序列串,故障数据块M的恢复链MR=Lk-M,根据此条恢复链MR中数据块之间的异或生成故障数据块M的重构数据,完成故障数据块M的数据恢复;
同理,完成所有故障数据块的数据恢复。
本发明解决所述存储方法技术问题的技术方案是,提供一种基于GPyramid-Code布局的恢复数据的存储方法,其特征在于,该存储方法包括以下步骤:
步骤一、绘制校验链与非故障公共块的关系表:对于非故障公共块Bc,d,存在校验链Lk和Lt由Bc,d生成,其余非故障公共块同理,由此可以得到非故障公共块与校验链的生成关系表;0≤c≤n-2,0≤d≤n-1;
步骤二、根据生成关系表建立多根树:从恢复序列串的第一个元素到最后一个元素,将第s个元素对应的非故障公共块Bc,d作为多根树的节点并存储在多根树的第s层第d列;
步骤三、根据最大跨度存储路径算法利用多根树寻找存储路径;
步骤四、利用GPyramid-Code会产生未使用的数据块即垃圾块;确定所有垃圾块的所在位置,将故障数据块M的重构数据根据步骤三得到的存储路径中的节点所在磁盘存储到该磁盘的垃圾块中。
与现有技术相比,本发明有益效果在于:
(1)本发明采用GPyramid-Code编码,该编码通过构建公共数据块的方法,不仅能减少在数据恢复期间从有效磁盘中读取数据块的数量,而且摒弃了传统热备盘存储恢复数据,利用最大跨度存储路径算法寻找一条存储路径,根据该路径将恢复的数据存储到垃圾块中,提高对恢复数据的存储效率。
(2)解决了现有编码单盘故障恢复读取开销过高的问题:本发明基于异或运算,编码和解码效率较高,由于增加了公共块,在数据恢复时,第一次读取到的公共块存储到内存单元中。当恢复其余数据块时,如果需要读取该公共块,系统将不再从磁盘中读取,取而代之的是从内存单元中得到该块数据。由于内存读取的速度高于磁盘,因此,GPyramid-Code可以缩短故障数据的恢复时间。
(3)提升了存储系统整体的可靠性:在存储系统中绝大多数的磁盘故障都是单盘故障,而系统可靠性就取决于单盘故障的恢复时间和读取开销。本发明提出的数据恢复方法,由于降低了参与恢复的数据块的数量,进而提高了存储系统的可靠性。
(4)提高了存储系统的性能和用户服务质量:由于故障恢复的请求和来自用户的请求会相互竞争,本发明通过缩短恢复时间,可以有效的提高存储系统的性能和用户的服务质量。
(5)在磁盘出现故障,新磁盘替换之前,垃圾块会代替其存储重构数据,新磁盘替换后,仅需将完成重构的数据迁移到新磁盘。一方面,不需要等待新磁盘替换后再重构数据,降低其它磁盘故障的可能性;另一方面,使用多个磁盘存储重构数据可以降低单磁盘存储的压力,有效提高了对重构数据的存储效率。
(6)提高恢复数据存储的并行性:利用最大跨度存储路径算法可以选择尽可能多的磁盘来存储恢复数据,减少排队等待延迟。
附图说明
图1为本发明实施例1中水平检验盘数据算法示意图;
图2为本发明实施例1中生成的校验链L0;
图3为本发明实施例1中生成的校验链L1;
图4为本发明实施例1中生成的校验链L2;
图5为本发明实施例1中生成的校验链L3;
图6为本发明实施例1中生成的校验链L4;
图7为本发明实施例1中生成的校验链L5;
图8为本发明实施例1中D0发生数据故障时,选择RS1用于故障恢复的结构示意图;
图9为本发明实施例1中D0发生数据故障时,选择RS2用于故障恢复的结构示意图;
图10为本发明实施例1中D0发生数据故障时,选择RS1生成的多根树;
图11为本发明实施例1中D0发生数据故障时,根据最大跨度存储路径算法找到的第一条存储路径;
图12为本发明实施例1中D0发生数据故障时,根据最大跨度存储路径算法找到的第二条存储路径;
图13为本发明实施例1中生成的垃圾块;
图14为本发明实施例1中选择第一条存储路径时,重构数据的存储位置;
图15为本发明实施例1中选择第二条存储路径时,重构数据的存储位置;
具体实施方式
下面给出本发明的具体实施例。具体实施例仅用于进一步详细说明本发明,不限制本申请权利要求的保护范围。
本发明提供了一种GPyramid-Code布局(简称布局),其特征在于,该布局为(n-1)*n的阵列;该阵列由n个磁盘组成,包括n-1个数据盘和1个校验盘;将每个数据盘划分成n-1个大小相同的数据块,将校验盘划分成n-1个与数据块大小相同的校验块,因此在n个磁盘组成的存储系统中共有(n-1)*n个块;Bi,j表示第j个磁盘上的第i个块,i和j的取值范围分别为:0≤i≤n-2,0≤j≤n-1;对所有磁盘进行条带化,同一偏移单位的数据块和校验块组成一个条带;
在(n-1)*n的阵列中,第n列为校验盘,校验块中的数据由公式(1)生成:
式(1)中,Bi,n-1代表第n-1个磁盘(即校验盘)上的第i个校验块;<t-1>n-1=(t-1)mod(n-1)。
本发明同时提供了一种基于GPyramid-Code布局的单盘故障的数据恢复方法(简称数据恢复方法),其特征在于,该数据恢复方法包括以下步骤:
步骤一、设计GPyramid-Code的布局,将GPyramid-Code设计成(n-1)*n的阵列;
步骤二、当单个数据盘发生故障(即数据丢失)时,根据GPyramid-Code的单盘恢复算法进行数据恢复;当单个检验盘发生故障(即数据丢失)时,根据公式(1)进行数据恢复;
具体地,GPyramid-Code的单盘恢复算法包括以下步骤:
步骤1、确定所有校验链:对于n-1行n列的阵列,校验链的数量为n-1条,第k条校验链Lk表达为:
式(2)中,0≤k≤n-2;
步骤2、确定故障磁盘的恢复序列串RS:恢复序列串中的元素由校验链按k值大小顺序组成;对于故障数据盘的故障数据块M,存在一条或两条校验链L由故障数据块M生成;
如果故障数据块M参与两条校验链的生成(即M∈Lk且M∈Lt),M为此两条校验链的一个公共块(即M是Lk和Lt的一个公共块),则选择M生成的两条校验链中的一个作为一条恢复序列串中的一个元素,两条校验链中的另一个作为另一条恢复序列串中的一个元素;如果故障数据块M参与一条校验链的生成,则该条校验链作为每条恢复序列串的一个元素;进而得到所有恢复序列串;
若故障磁盘中公共块的个数为p,则恢复序列串共2p条;
步骤3、选择2p条中任意一条恢复序列串,故障数据块M的恢复链MR=Lk-M,根据此条恢复链MR中数据块之间的异或生成故障数据块M的重构数据,完成故障数据块M的数据恢复;
同理,完成所有故障数据块的数据恢复。
优选地,步骤3中,若2p≥2,则首先确定每条恢复序列串中公共块的个数,然后选择所有恢复序列串中公共块个数最多的一条用于故障磁盘的数据恢复;
优选地,确定恢复序列串中公共块的个数,具体是:
对于恢复序列串RS中若干个连续的校验链(即k的取值连续):如果连续的校验链的个数为m条,1<m≤|RS|,那么这m条校验链之间公共块的个数为:
对于恢复序列串RS中不连续的校验链:如果两条校验链Lk和Lt之间的距离为奇数,即t-k=odd(t>k),那么两条校验链Lk和Lt之间一定存在唯一的公共块。
本发明同时提供了一种基于GPyramid-Code布局的恢复数据的存储方法(简称存储方法),其特征在于,该存储方法包括以下步骤:
步骤一、绘制校验链与非故障公共块的关系表:对于非故障公共块Bc,d,存在校验链Lk和Lt由Bc,d生成,其余非故障公共块同理,由此可以得到非故障公共块与校验链的生成关系表;0≤c≤n-2,0≤d≤n-1;
步骤二、根据生成关系表建立多根树:从恢复序列串的第一个元素(即第一个校验链)到最后一个元素(即最后一个校验链),将第s个元素对应的非故障公共块Bc,d作为多根树的节点并存储在多根树的第s层第d列;
步骤三、根据最大跨度存储路径算法利用多根树寻找存储路径;
优选地,步骤三中,最大跨度存储路径算法包括如下步骤:
步骤1、确定任意一个多根树的第一层的所有节点(即第1个校验链对应的非故障公共块,也即多根树的根节点),并存入到存储路径中;
步骤2、向下一层遍历,找到下一层的所有节点,开始本层的节点存入;
步骤3、一次筛选:从本层的第一个节点开始,判断是否与存储路径中的节点相同,如果相同则跳到本层的下一个节点,并剔除与存储路径中的节点相同的节点;
步骤4、二次筛选:确定一次筛选的节点所在的列,剔除与存储路径中的节点所在列相同的节点;若二次筛选为空,则从一次筛选中选择与上一层存入的节点距离最近的节点,并将该节点存入到存储路径中;
步骤5、否则,从二次筛选中选择与上一层存入的节点距离最近的节点,并将该节点存入到存储路径中;
步骤6、如果已遍历至最后一层,则结束该算法;否则转至步骤2;
步骤四、利用GPyramid-Code会产生未使用的数据块即垃圾块;确定所有垃圾块的所在位置,将故障数据块M的重构数据根据步骤三得到的存储路径中的节点所在磁盘存储到该磁盘的垃圾块中。
实施例1
(一)GPyramid-Code的布局:该布局为6*7的阵列:该阵列由7个磁盘组成,包括6个数据盘和1个校验盘;将每个数据盘划分成6个大小相同的数据块,每个校验块盘划分成6个与数据块大小相同的校验块,因此,在7个磁盘组成的存储系统中共有6*7个块;对所有磁盘进行条带化,同一偏移单位的数据块和校验块组成一个条带。
在6*7的阵列中,第7列为校验盘,如图1中所有校验块中的数据生成公式如下:
(二)GPyramid-Code布局的单盘故障的数据恢复方法:
步骤一、设计GPyramid-Code的布局,将GPyramid-Code设计成6*7的阵列;
步骤二、当数据盘D0发生故障(即数据丢失)时,根据GPyramid-Code的单盘恢复算法进行数据恢复;当检验盘D6发生故障(即数据丢失)时,根据B0,6~B5,6的数据生成公式进行数据恢复。
具体地,GPyramid-Code的单盘恢复算法的具体步骤为:
步骤1、确定所有校验链:如图2所示,对于6*7的GPyramid-Code阵列,校验链的数量为6条,校验链L0~L5分别由图2~图7中线段连接的数据块和校验块表示:
当k=0时,L0=B0,0∪B1,1∪B2,2∪B3,3∪B4,4∪B5,5∪B0,6
当k=1时,L1=B0,0∪B0,1∪B1,2∪B2,3∪B3,4∪B4,5∪B5,6
当k=2时,L2=B1,0∪B0,1∪B0,2∪B1,3∪B2,4∪B3,5∪B4,6
当k=3时,L3=B2,0∪B1,1∪B0,2∪B0,3∪B1,4∪B2,5∪B3,6
当k=4时,L4=B3,0∪B2,1∪B1,2∪B0,3∪B0,4∪B1,5∪B2,6
当k=5时,L5=B4,0∪B3,1∪B2,2∪B1,3∪B0,4∪B0,5∪B1,6
步骤2、确定故障磁盘的恢复序列串:如上式所示,故障数据盘D0的故障数据块B0,0参与了校验链L0和L1的生成,同理,故障数据块B1,0~B4,0分别参与了校验链L2、L3、L4、L5的生成;由于B0,0∈L0且B0,0∈L1,因此B0,0为故障磁盘D0的公共块;故障磁盘中公共块的个数为1,则恢复序列串的个数为2条,包括RS1=L0L2L3L4L5和RS2=L1L2L3L4L5;
步骤3、本实施例中,2p=2;
情况一、若选择RS1作为故障磁盘的恢复序列串,图8给出恢复故障磁盘中的数据需要读取的数据块;B0,0、B1,0、B2,0、B3,0、B4,0、B5,0表示发生数据故障的块(即图8中的所在的块),B0,1、B2,1、B3,1、B1,2、B3,3、B1,4、B2,4、B4,4、B0,5、B1,5、B2,5、B3,5、B5,5、B0,6、B1,6、B2,6、B3,6、B4,6表示该块需要读取一次(即图8中的所在的块),B1,1、B0,2、B2,2、B0,3、B1,3、B0,4表示该块需要读取两次(即图8中的所在的块);
同理可以将故障数据块B2,0~B4,0中的数据恢复。
情况二、若选择RS2作为故障磁盘的恢复序列串,图9给出恢复故障磁盘中的数据需要读取的数据块,B0,0、B1,0、B2,0、B3,0、B4,0和B5,0表示发生数据故障(即图9中的所在的块),B0,1、B2,1、B3,1、B1,2、B3,3、B1,4、B2,4、B4,4、B0,5、B1,5、B2,5、B3,5、B5,5、B0,6、B1,6、B2,6、B3,6和B4,6表示该块需要读取一次(即图9中的所在的块),B1,1、B0,2、B2,2、B0,3、B1,3和B0,4等表示该块需要读取两次(写全,即图9中的所在的块);
同理可以将故障数据块B2,0~B4,0中的数据恢复。
优选地,在步骤3恢复序列串的选择中,恢复序列串的条数为2,分别判断RS1和RS2中两两校验链之间是否存在公共块:
(1)针对RS1=L0L2L3L4L5:
在RS1中,校验链L2L3L4L5是连续的,连续的校验链的个数为4条,那么L2L3L4L5之间公共块的个数为42/4=4。
在RS1中,校验链L0与其他校验链之间不连续,因此,分别判断L0与L2、L3、L4和L5之间是否存在公共块;其中,L0与L3之间存在一个公共块,L0与L5之间存在一个公共块。
因此,在RS1中公共块的个数为6。
(2)针对RS2=L1L2L3L4L5:
在RS2中,校验链L1L2L3L4L5是连续的,连续的校验链的个数为5条,那么L1L2L3L4L5之间公共块的个数为(52-1)/4=6。因此,在RS2中公共块的个数为6。
综上,RS1和RS2中公共块的个数都为6,因此,选择RS1和RS2中任意一条用于故障磁盘的恢复即可。
(三)GPyramid-Code布局的恢复数据的存储方法:
步骤一、绘制校验链与非故障公共块的关系表:对于非故障公共块B0,1,由于L1=B0,0∪B0,1∪B1,2∪B2,3∪B3,4∪B4,5∪B5,6,L2=B1,0∪B0,1∪B0,2∪B1,3∪B2,4∪B3,5∪B4,6,校验链L1和L2由非故障公共块B0,1生成,其余非故障公共块以此类推,由此可以得到所有非故障公共块与校验链的生成关系表(如表1所示,表1为实施例1中D0发生数据故障时,非故障公共块与校验链的生成关系表);
表1
步骤二、根据生成关系表建立多根树(如图10所示):从RS1的第一个校验链开始,生成校验链L0的非故障公共块为B1,1和B2,2,因此,B1,1和B2,2作为多根树的第一层节点(根节点)分别位于第一层第1列和第2列;同理,生成L2的非故障公共块为B0,1、B0,2和B1,3,因此,B0,1、B0,2和B1,3分别位于第二层第1列、第2列和第3列;其它层的节点以此类推;
步骤三、根据最大跨度存储路径算法寻找存储路径:如图11所示,连线一条存储路径(即第一条存储路径);从第一层节点B1,1出发,将B1,1写入存储路径;向下一层遍历,B0,1与存储路径中的节点B1,1同列,该节点不能写入存储路径,接着B1,1分别与B0,2和B1,3节点不同且位于不同列,但B0,2与B1,1距离最近,因此,将B0,2写入存储路径,此时,存储路径为B1,1→B0,2;在第三层,B1,1、B0,2与存储路径中的节点B1,1、B0,2(即第一层的B1,1以及第二层的B0,2)相同,不能写入存储路径,接着B0,3与存储路径的节点不同,且不在同列,因此,将B0,3写入存储路径,此时,存储路径为B1,1→B0,2→B0,3;在第四层,B1,2与存储路径中的节点B0,2(即第二层的B0,2)同列,B0,3与存储路径中的节点B0,3(即第三层的B0,3)相同,不能写入,B0,4与存储路径中的节点不同,且不在同列,B0,4被写入存储路径,此时,存储路径为B1,1→B0,2→B0,3→B0,4;在最后一层,首先排除与存储路径相同的节点B0,4,B2,2和B1,3所在列分别与存储路径中的节点B0,2和B0,3同列,由于无其他可匹配的节点,需要从B2,2和B1,3中找到与上一层所选节点距离最近的节点即B1,3,将B1,3写入存储节点,此时,存储路径为B1,1→B0,2→B0,3→B0,4→B1,3。因此,根据最大跨度存储路径算法最终找到存储路径为B1,1→B0,2→B0,3→B0,4→B1,3。同理,如图12所示,从第一层节点(根节点)B2,2出发,找到第二条存储路径为B2,2→B0,1→B0,3→B0,4→B1,3。
步骤四、确定垃圾块所在位置,将重构数据根据存储路径中的节点所在磁盘存储到垃圾块(即图13中的圆圈所在的块)B3,2、B4,1、B4,2、B4,3、B5,0、B5,1、B5,2、B5,3和B5,4中;如果选择B1,1→B0,2→B0,3→B0,4→B1,3作为一条存储路径,每个节点所在磁盘分别为D1、D2、D3、D4和D3,将故障数据块B0,0~B4,0的重构数据分别存储到D1、D2、D3、D4和D3的垃圾块中(即图14中○所在的数据块);
同样,如果选择B2,2→B0,1→B0,3→B0,4→B1,3作为故障数据块的存储路径,将故障数据块B0,0~B4,0的重构数据分别存储到D1、D2、D3、D4和D3的垃圾块中(即图15中的○所在的数据块)。
上述实施例只展示了n=7的情况,由于n的取值通常较大,无法一一列举多个典型的实施例,可以认为上述实施例是本发明的较佳实施例而非全部实施例,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。
本发明未述及之处适用于现有技术。
Claims (6)
1.一种基于GPyramid-Code布局的单盘故障的数据恢复方法,其特征在于,该GPyramid-Code布局为(n-1)*n的阵列;该阵列由n个磁盘组成,包括n-1个数据盘和1个校验盘;将每个数据盘划分成n-1个大小相同的数据块,将校验盘划分成n-1个与数据块大小相同的校验块;Bi,j表示第j个磁盘上的第i个块,i和j的取值范围分别为:0≤i≤n-2,0≤j≤n-1;对所有磁盘进行条带化,同一偏移单位的数据块和校验块组成一个条带;
在(n-1)*n的阵列中,第n列为校验盘,校验块中的数据由公式(1)生成:
式(1)中,Bi,n-1代表校验盘上的第i个校验块;<t-1>n-1=(t-1)mod(n-1);
该数据恢复方法包括以下步骤:
步骤一、设计GPyramid-Code的布局,将GPyramid-Code设计成(n-1)*n的阵列;
步骤二、当单个数据盘发生故障时,根据GPyramid-Code的单盘恢复算法进行数据恢复;当单个检验盘发生故障时,根据公式(1)进行数据恢复;
步骤二中,GPyramid-Code的单盘恢复算法包括以下步骤:
步骤1、确定所有校验链:对于n-1行n列的阵列,校验链的数量为n-1条,第k条校验链Lk表达为:
式(2)中,0≤k≤n-2;
步骤2、确定故障磁盘的恢复序列串RS:恢复序列串中的元素由校验链按k值大小顺序组成;对于故障数据盘的故障数据块M,存在一条或两条校验链L由故障数据块M生成;
如果故障数据块M参与两条校验链的生成,M为此两条校验链的一个公共块,则选择M生成的两条校验链中的一个作为一条恢复序列串中的一个元素,两条校验链中的另一个作为另一条恢复序列串中的一个元素;如果故障数据块M参与一条校验链的生成,则该条校验链作为每条恢复序列串的一个元素;进而得到所有恢复序列串;
若故障磁盘中公共块的个数为p,则恢复序列串共2p条;
步骤3、选择2p条中任意一条恢复序列串,故障数据块M的恢复链MR=Lk-M,根据此条恢复链MR中数据块之间的异或生成故障数据块M的重构数据,完成故障数据块M的数据恢复;
同理,完成所有故障数据块的数据恢复。
2.根据权利要求1所述的GPyramid-Code布局的单盘故障的数据恢复方法,其特征在于,步骤3中,若2p≥2,则首先确定每条恢复序列串中公共块的个数,然后选择所有恢复序列串中公共块个数最多的一条用于故障磁盘的数据恢复。
4.一种根据权利要求1-3任一所述的GPyramid-Code布局的单盘故障的数据恢复方法得到的GPyramid-Code布局的恢复数据。
5.一种基于权利要求4所述的GPyramid-Code布局的恢复数据的存储方法,其特征在于,该存储方法包括以下步骤:
步骤一、绘制校验链与非故障公共块的关系表:对于非故障公共块Bc,d,存在校验链Lk和Lt由Bc,d生成,其余非故障公共块同理,由此可以得到非故障公共块与校验链的生成关系表;0≤c≤n-2,0≤d≤n-1;
步骤二、根据生成关系表建立多根树:从恢复序列串的第一个元素到最后一个元素,将第s个元素对应的非故障公共块Bc,d作为多根树的节点并存储在多根树的第s层第d列;
步骤三、根据最大跨度存储路径算法利用多根树寻找存储路径;
步骤四、利用GPyramid-Code会产生未使用的数据块即垃圾块;确定所有垃圾块的所在位置,将故障数据块M的重构数据根据步骤三得到的存储路径中的节点所在磁盘存储到该磁盘的垃圾块中。
6.根据权利要求5所述的GPyramid-Code布局的恢复数据的存储方法,其特征在于,步骤三中,最大跨度存储路径算法包括如下步骤:
步骤1、确定任意一个多根树的第一层的所有节点,并存入到存储路径中;
步骤2、向下一层遍历,找到下一层的所有节点,开始本层的节点存入;
步骤3、一次筛选:从本层的第一个节点开始,判断是否与存储路径中的节点相同,如果相同则跳到本层的下一个节点,并剔除与存储路径中的节点相同的节点;
步骤4、二次筛选:确定一次筛选的节点所在的列,剔除与存储路径中的节点所在列相同的节点;若二次筛选为空,则从一次筛选中选择与上一层存入的节点距离最近的节点,并将该节点存入到存储路径中;
步骤5、否则,从二次筛选中选择与上一层存入的节点距离最近的节点,并将该节点存入到存储路径中;
步骤6、如果已遍历至最后一层,则结束该算法;否则转至步骤2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110494918.6A CN113094213B (zh) | 2021-05-07 | 2021-05-07 | GPyramid-Code布局及该布局单盘故障的数据恢复与存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110494918.6A CN113094213B (zh) | 2021-05-07 | 2021-05-07 | GPyramid-Code布局及该布局单盘故障的数据恢复与存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113094213A CN113094213A (zh) | 2021-07-09 |
CN113094213B true CN113094213B (zh) | 2022-07-05 |
Family
ID=76681760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110494918.6A Active CN113094213B (zh) | 2021-05-07 | 2021-05-07 | GPyramid-Code布局及该布局单盘故障的数据恢复与存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113094213B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104052576A (zh) * | 2014-06-07 | 2014-09-17 | 华中科技大学 | 一种云存储下基于纠错码的数据恢复方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8473779B2 (en) * | 2008-02-29 | 2013-06-25 | Assurance Software And Hardware Solutions, Llc | Systems and methods for error correction and detection, isolation, and recovery of faults in a fail-in-place storage array |
CN102103533A (zh) * | 2011-02-25 | 2011-06-22 | 华中科技大学 | 一种双盘容错磁盘阵列中单盘重构的方法 |
CN108228382B (zh) * | 2018-01-11 | 2021-08-10 | 成都信息工程大学 | 一种针对evenodd码单盘故障的数据恢复方法 |
CN111679793B (zh) * | 2020-06-16 | 2023-03-14 | 成都信息工程大学 | 一种基于star码的单盘故障快速恢复方法 |
CN112256478B (zh) * | 2020-10-16 | 2023-05-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种单磁盘故障的修复方法、系统、设备及存储介质 |
-
2021
- 2021-05-07 CN CN202110494918.6A patent/CN113094213B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104052576A (zh) * | 2014-06-07 | 2014-09-17 | 华中科技大学 | 一种云存储下基于纠错码的数据恢复方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113094213A (zh) | 2021-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391026B (zh) | 闪存装置及闪存存储管理方法 | |
CN107403646B (zh) | 闪存装置及闪存存储管理方法 | |
CN101868785B (zh) | 生成数据存储系统的并行恢复策略 | |
US7640452B2 (en) | Method for reconstructing data in case of two disk drives of RAID failure and system therefor | |
US9195551B2 (en) | Enhanced storage of metadata utilizing improved error detection and correction in computer memory | |
US8489916B2 (en) | Multi-disk fault-tolerant system, method for generating a check block, and method for recovering a data block | |
CN108228382B (zh) | 一种针对evenodd码单盘故障的数据恢复方法 | |
JP2004227560A (ja) | 外部格納サブシステムにおけるパリティー格納方法及びエラーブロック復旧方法 | |
CN102521058A (zh) | Raid组磁盘数据预迁移方法 | |
US7818524B2 (en) | Data migration systems and methods for independent storage device expansion and adaptation | |
CN101840360A (zh) | Raid系统的快速重建方法及装置 | |
US9063869B2 (en) | Method and system for storing and rebuilding data | |
TWI684857B (zh) | 快閃記憶體裝置及快閃記憶體儲存管理方法 | |
CN111782439B (zh) | 一种基于水平编码的双盘循环校验方法 | |
US7870464B2 (en) | System and method for recovery of data for a lost sector in a storage system | |
CN105808170A (zh) | 一种能够以最小磁盘读写修复单磁盘错误的raid6编码方法 | |
JP4794439B2 (ja) | アレイ・ストレージ・システムでの冗長性 | |
CN107885620B (zh) | 一种提高固态盘阵列性能和可靠性的方法及系统 | |
JP6260193B2 (ja) | ストレージシステム、及びストレージプログラム | |
CN111679793B (zh) | 一种基于star码的单盘故障快速恢复方法 | |
CN110600070B (zh) | 一种提升固态硬盘阵列系统修复性能的编码和修复方法 | |
CN110532128B (zh) | 一种降低数据更新代价的纠删码编码及数据重构方法 | |
CN113094213B (zh) | GPyramid-Code布局及该布局单盘故障的数据恢复与存储方法 | |
RU2502124C1 (ru) | Способ восстановления записей в запоминающем устройстве и система для его осуществления | |
US7246301B2 (en) | Method for storage array error correction |
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 |