CN103605582B - 一种基于写重定向的纠删码存储重构优化方法 - Google Patents
一种基于写重定向的纠删码存储重构优化方法 Download PDFInfo
- Publication number
- CN103605582B CN103605582B CN201310616406.8A CN201310616406A CN103605582B CN 103605582 B CN103605582 B CN 103605582B CN 201310616406 A CN201310616406 A CN 201310616406A CN 103605582 B CN103605582 B CN 103605582B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- write
- user
- offset
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于写重定向的纠删码存储重构优化方法,将写入失效数据节点的数据重定向到由存活节点空余空间所组成的RS阵列,将数据重定向过程与包括失效数据节点的重构、重定向数据的迁移以及迁移所引起的校验数据更新的数据迁移过程分开处理,降低二者对磁盘、内存、网络带宽等资源的竞争,在加速后台重构过程的同时,优化前台用户访问性能。
Description
技术领域
本发明属于计算机存储领域,更具体地,涉及一种基于写重定向的纠删码存储重构优化方法。
背景技术
廉价冗余磁盘阵列RAID(Redundant Array of Independent Disk)是将多个磁盘进行连接,构成具有一定容错能力的存储设备。构成RAID的多个磁盘驱动器在逻辑上可以看成是一个磁盘驱动器,各个磁盘可以同时工作,提高I/O并行性。RAID大多提供一定的校验技术,在一定数量的磁盘数据丢失的情况下,解码出丢失数据,达到容错的目的。一般地,数据恢复操作和用户I/O相互影响。一方面,在丢失数据恢复的过程中,磁盘阵列的读写性能将降低;另一方面,相对于离线重构模式,在线重构的时间也将增加,原因在于用户I/O对磁盘、网络和内存等资源的竞争。另外,研究表明,RAID系统中的磁盘错误存在“爆发”式特性,即当一个磁盘失效后,同一系统中的其它磁盘失效的概率将增大;此外,在高负载强度的重构过程中,存活磁盘发生失效的概率将进一步提高。
如图1所示,在(k+r,k)纠删码存储集群中,含k个数据节点,r个校验节点。集群内数据分布示意图如图2所示。失效写(Missed Writes)表示往失效数据节点中写入数据。参看图3,失效写的传统处理过程如下:(1)接收用户写数据请求,得到所写分块数据在纠删码集群的具体位置(即某数据节点上的某偏移地址)和所写入数据(以下称为新数据);(2)将新数据写入替代数据节点的相应磁盘位置;(3)从k-1个存活节点读取所对应的分块数据;(4)由该k-1个存活分块数据和新数据分块计算出其余r个节点 对应位置分块数据,并发送至r个节点,该r个节点完成数据更新;(5)返回更新操作的结果(成功或失效)。图4给出该传统纠删码存储集群中数据写的流程图。
传统纠删码存储集群中的写失效数据过程存在以下问题:
1、写失效数据节点过程与失效数据重构过程同时进行,两个过程之间相互竞争网络带宽、磁盘、内存等资源,重构时间随之增加,从而降低了系统可靠性。
2、用户的写请求涉及失效数据恢复、新数据写入,以及校验数据更新等三方面操作,因此用户写请求的响应时间也会增大。
发明内容
针对传统失效写方法存在的不足,本发明提供一种纠删码存储中写失效数据节点的优化方法,其不仅能够保证失效数据节点的重构性能,而且能降低用户失效写的响应时间。
为实现以上发明目的,本发明采用以下技术方案:
一种基于写重定向的纠删码存储重构优化方法,包括数据重定向过程和数据迁移过程。
重定向过程包括以下步骤:
(A1)接收用户写失效数据节点的用户请求记录;
(A2)将用户请求记录写入空余RS阵列数据区;
(A3)更新空余RS阵列校验区域;
(A4)返回用户写失效数据节点请求结果,判断用户请求是否结束,如果结束,则程序结束,否则转入步骤(A1)。
数据迁移过程与重定向过程分开处理。数据迁移过程包括失效数据节点的重构、重定向数据的迁移,以及迁移数据所导致的校验更新三个子过程。重定向数据迁移过程包括以下步骤:
(B1)判断纠删码存储集群中失效数据节点数据是否恢复完成。若恢复完 成,则转入步骤(B6),否则转入步骤(B2);
(B2)假设写入失效数据节点node的失效数据块是Di,j,记录其偏移地址为offset,其中Di,j表示数据节点i中偏移位置为j*512字节处的数据块;
(B3)读取任意k个存活节点偏移位置为offset的数据块,,统一记为Cl,j(0<=l<k),其中Cl,j表示存活节点l中偏移位置为j*512字节处的数据块;
(B4)从该k个存活分块数据Cl,j解码出失效数据分块Di,j;并将数据Di,j写入数据节点node的替代节点node’中偏移地址为offset的位置;
(B5)判断失效节点的数据是否恢复完成。若没有完成,则转入至步骤(B2),否则转入步骤(B6);
(B6)读取RS阵列中用户请求记录(包括node、offset、newdata等信息);
(B7)从替代数据节点node’中偏移位置为offset处读取数据分块olddata;
(B8)在替代节点node’中偏移位置为offset处写入新数据分块newdata;
(B9)将新旧数据分块(olddata和newdata)发送至各校验节点,各校验节点利用新旧数据分块结合已有校验分块,采用校验数据更新算法实现校验数据的更新;
(B10)读取空闲RS阵列中下一条用户请求记录,并判断是否结束,若未结束,则转入至步骤(B6);否则转入步骤(B11)。
(B11)数据迁移过程结束。
与现有失效写技术相比,本发明具有以下有益效果:
1、在重定向过程中,使用存活节点空余磁盘空间构成空余RS阵列,如步骤(A1)。将写入失效数据节点的数据重定向到该RS阵列中,如步骤(A3),并完成空闲RS阵列中的校验部分的更新,如步骤(A4)。这种由空闲磁盘区域构成的RS阵列能够提高重定向数据的可靠性。
2、在重定向过程中,将用户写入失效数据节点的数据重定向到空闲RS阵列中后,用户请求立即返回,如步骤(A5),缩短了用户请求的响应时间。
3、将重定向过程和数据迁移过程分开处理,两过程相互独立,减少了 两个过程对内存、磁盘、网络带宽等资源的竞争,确保了重构I/O和用户I/O之间的相互独立,从整体上优化重构性能和用户响应时间。
附图说明
参照下面的说明,结合附图,可以对本发明有最佳的理解。在附图中,相同的部分可由相同的标号表示。
图1为(k+r,k)纠删码存储集群磁盘示意图。
图2为纠删码存储集群中各节点数据分块示意图。
图3为传统纠删码存储集群写数据示意图。
图4为传统纠删码存储集群写数据流程图。
图5为本发明纠删码存储集群写数据示意图。
图6为本发明纠删码存储集群重定向过程流程图。
图7为本发明纠删码存储集群数据迁移过程流程图。
图8为RS(9,6)编码实施例示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及示例性实施例,对本发明进行进一步详细说明。应当理解,此处所描述的示例性实施例仅用以解释本发明,并不用于限定本发明的适用范围。
以下首先就本发明的技术术语进行解释和说明:
写惩罚:在写数据节点的过程中,由于数据节点中数据分块内容的改变,根据纠删码的编码存储方式,校验节点对应位置的数据分块也要随之改变,带来额外的校验节点的写操作。如图1(k+r,k)纠删码存储集群磁盘示意图所示,磁盘阵列包含k个数据节点,分别标记为“数据节点0”,“数据节点1”,……,“数据节点k-1”;r个校验节点,分别标记为“校验节点0”,“校验节点1”,……,“校验节点r-1”。图2为图1对应各节点的数据分块示意图,Di,j表示数据节点i中偏移位置为j*512字节处的数据块,Pi,j表示校验节点i中偏移位置为j*512字节处的数据块。数据节点中数据块 D0,j、D1,j、……Dk-1,j和校验节点中数据块P0,j、P1,j、……、Pr-1,j构成一个条带。P0,j、P1,j、……、Pr-1,j存放由D0,j、D1,j、……Dk-1,j编码得到的校验数据。写惩罚即为当Di,j(0<=i<k)中数据发生改变时,条带中校验节点数据P0,j、P1,j、……、Pr-1,j也随之发生改变,而带来额外的写操作。
偏移位置:数据分块的偏移位置为数据分块在低地址处的起始位置。如图2各节点数据分块示意图所示,数据分块的大小为512字节,则Di,j的偏移位置为j*512字节。纠删码集群中的数据读写最小单位为数据分块,即512字节。
编解码过程:编码过程为根据所有数据节点中特定数据分块计算出同一条带中对应位置校验节点数据分块块的过程。在图2各节点数据分块示意图中,若用f表示计算过程,则编码过程可以表示为f(D0,j,D1,j,……,Dk-1,j)→(P0,j,P1,j,……,Pr-1,j)。解码过程为编码过程的逆过程,即在存活节点(未失效的数据节点和校验节点)数量大于等于k的情况下,任意选取k个存活节点数据分块,计算出同一条带中其它节点数据分块的过程。
RS阵列:RS类纠删码为三大纠删码中的一种,具有很强的纠错能力,包括范德蒙码和柯西码两种编码方式。RS阵列即为使用RS类纠删码进行数据校验的磁盘阵列。
在本发明实施例中,选定m个存活节点,利用该m个节点的空余空间构成空余RS阵列,用于存储用户的请求。总体思路为:将写入失效数据节点的数据重定向到由存活节点空余空间所组成的RS阵列(以下称为重定向RS阵列)中,以保障重定向数据的可靠性。本发明将数据重定向过程(以下称之为重定向过程)与其后续过程(包括失效数据节点的重构、重定向数据的迁移,以及迁移所引起的校验数据更新,以下称之为数据迁移过程)分开处理,降低二者对磁盘、内存、网络带宽等资源的竞争,在加速后台重构过程的同时,优化前台用户访问性能。
如图3所示,为传统纠删码写数据过程示意图。其中,D0数据节点为失效数据节点,D0’为D0失效数据节点的替代节点。标有“*”的数据块为失效数据块,标有“**”的数据块为用户请求写入的数据块。图中数字表示传统纠删码写过程的具体步骤。
如图5所示,为本发明纠删码存储集群写数据示意图。其中D0数据节点为失效数据节点,D0’为D0失效数据节点的替换节点。标有“*”的数据块为失效数据块,标有“**”的数据块为用户请求写入的数据块。图中数字如“A1”、“A2”、“A3”为重定向过程步骤号码,图中数字为“B1”、“B2”、“B3”等为数据迁移过程步骤号码。空余空间RS阵列为由存活节点空余空间构成的具有一定容错能力的磁盘阵列,整个空余RS阵列的起始偏移地址为baseoffset,即重定向的基准偏移量为baseoffset。
对于重定向过程,存储集群将用户请求的写失效节点的数据重定向至空余空间RS阵列之后,用户请求立即返回,并继续响应其它用户请求。用户写请求包括写数据的具体信息,如写数据节点编号node,写数据偏移地址offset,写数据大小size,和写入的新数据newdata。以下称用户写数据的具体信息为一条用户请求记录。
图6为本发明纠删码存储集群重定向过程流程图,如图所示,重定向过程步骤如下:
(A1)接收用户写失效数据节点的用户请求记录。其中,所述用户请求记录包括写数据节点编号node,写数据偏移地址offset和写入的新数据newdata。
例如,应用访问请求命令为<1,2,1,buffer>,则表示从buffer中取出1*512字节的数据,从磁盘编号为1的数据节点中偏移位置为2*512字节的位置开始写入。
(A2)将用户请求记录写入空余RS阵列数据区。具体为:假设选取k’+r’个存活节点构成RAID5(k’+r’,k’)阵列,RAID5阵列的起始偏移地 址为baseoffset,则将用户请求记录写入RAID5(k’+r’,k’)中数据分块Di’,j’中,其中Di’,j’表示数据节点i‘中偏移位置为j’*512字节处的数据块。
(A3)更新空余RS阵列校验区。即根据新写入的数据,完成RAID5的写惩罚过程。
(A4)返回用户写失效数据节点请求结果,判断用户请求是否结束,如果结束,则重定向过程结束,否则转入步骤(A1)。
图7为本发明纠删码存储集群数据迁移过程流程图,数据迁移过程步骤如下:
(B1)判断纠删码存储集群中失效数据节点数据是否恢复完成。若恢复完成,则转入步骤(B6),否则转入步骤(B2);
(B2)假设写入失效数据节点node的失效数据块是Di,j,记录其偏移地址为offset;
(B3)读取任意k个存活节点偏移位置为offset的数据块Dl,j(l!=i);
(B4)从该k个存活分块数据解码出失效数据分块Di,j;并将数据Di,j写入数据节点node的替代节点node’中偏移地址为offset的位置;
(B5)判断失效节点的数据是否恢复完成。若没有完成,则转入至步骤(B2),否则转入步骤(B6);
(B6)读取空余RS阵列中用户请求记录(包括node、offset、newdata等信息);
(B7)从替代数据节点node’中偏移位置为offset处读取数据分块olddata;
(B8)在替代节点node’中偏移位置为offset处写入新数据分块newdata;
(B9)将旧数据分块olddata和新数据分块newdata发送至各校验节点,各校验节点利用新旧数据分块结合已有校验分块,采用校验数据更新算法实现校验数据的更新;
(B10)读取空余RS阵列中下一条用户请求记录,并判断是否结束,若未结束,则转入至步骤(B6);否则转入步骤(B11)。
(B11)数据迁移过程结束。
如图8所示,D0,D1,D2,D3,D4,D5为数据节点,D0为失效数据节点,D0`为D0的替代节点,P0,P1,P2为校验节点。图中a,b,c,d,e,f,g,h,i,j分别为各个节点偏移位置为2*512处开始1*512字节大小的数据分块。图中A,B,C,D,E为由D4,D5,P0,P1,P2空闲区域在baseoffset偏移位置之后构成的RAID(5,3)阵列。用户发出一条<0,2,1,buffer>的应用访问请求。该应用访问请求在两种不同的写过程中的操作过程如下所示:
(1)传统纠删码存储集群中的操作为:
从buffer中取出1*512字节的数据(newdata),写入替代节点D0`偏移位置为2*512即图8中a所示位置。读取存活节点D1,D2,D3,D4,D5,D6中2*512字节偏移位置(即c,d,e,f,g,h)处数据,解码出失效节点D0中b处旧数据olddata,将新数据newdata和旧数据olddata发送至校验节点P0,P1,P2。P0,P1,P2在位置h,i,j处进行更新。最后向用户返回操作结果。
(2)本发明中的操作过程为:
第一步:将用户请求记录写入由空闲区域组成的RAID(5,3)阵列中的位置A。读取位置B,C中数据,将A,B,C中数据进行编码之后,将编码后数据写入位置D,E中。
第二步:用户写请求返回,继续监听用户请求。
第三步:读取<c,d,e,f,g,h>位置数据分块,解码出位置b的旧数据(olddata),并将旧数据olddata写入替代节点D0’对应位置,即为图中位置a。
第四步:读取A位置旧数据olddata,在D0’中位置a处写入新数据newdata。并将olddata和newdata发送至校验节点P0,P1,P2。
第五步:P0,P1,P2根据新旧数据和原始校验数据在位置h,i,j处 进行数据更新。数据迁移过程完成。
总而言之,本发明具有以下的有益效果:
1、在重定向过程中,使用存活节点空余磁盘空间构成空余RS阵列,如步骤(A1)。将写入失效数据节点的数据重定向到该RS阵列中,如步骤(A3),并完成空闲RS阵列中的校验部分的更新,如步骤(A4)。这种由空闲磁盘区域构成的RS阵列能够提高重定向数据的可靠性。
2、在重定向过程中,将用户写入失效数据节点的数据重定向到空闲RS阵列中后,用户请求立即返回,如步骤(A5),缩短了用户请求的响应时间。
3、将重定向过程和数据迁移过程分开处理,两过程相互独立,减少了两个过程对内存、磁盘、网络带宽等资源的竞争,确保了重构I/O和用户I/O之间的相互独立,从整体上优化重构性能和用户响应时间。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.一种基于写重定向的纠删码存储重构优化方法,包括数据重定向过程和数据迁移过程,其中,数据重定向过程包括以下步骤:
A1接收用户写失效数据节点的用户请求记录;
A2将用户请求记录写入空余RS阵列数据区;
A3更新空余RS阵列校验区;
A4返回用户写失效数据节点请求结果,判断用户请求是否结束,如果结束,则重定向过程结束,否则转入步骤A1;
数据迁移过程包括以下步骤:
B1判断纠删码存储集群中失效数据节点数据是否恢复完成,若恢复完成,则转入步骤B6,否则转入步骤B2;
B2假设写入失效数据节点的失效数据块是Di,j,记录其偏移地址为offset,其中Di,j表示数据节点i中偏移位置为j*512字节处的数据块;
B3读取任意k个存活节点偏移地址为offset的数据块,统一记为Cl,j(0<=l<k),其中Cl,j表示存活节点l中偏移位置为j*512字节处的数据块;
B4从该k个数据块Cl,j解码出失效数据分块Di,j,并将失效数据分块Di,j写入失效数据节点的替代数据节点中偏移地址为offset的位置;
B5判断失效数据节点的数据是否恢复完成,若没有完成,则转入至步骤B2,否则转入步骤B6;
B6读取空余RS阵列中的用户请求记录;
B7从替代数据节点中偏移地址为offset处读取旧数据分块;
B8在替代数据节点中偏移地址为offset处写入新数据分块;
B9将旧数据分块和新数据分块发送至各校验节点,各校验节点利用新旧数据分块结合已有校验分块,采用校验数据更新算法实现校验数据的更 新;
B10读取空余RS阵列中下一条用户请求记录,并判断是否结束,若未结束,则转入至步骤B6;否则转入步骤B11;
B11数据迁移过程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310616406.8A CN103605582B (zh) | 2013-11-27 | 2013-11-27 | 一种基于写重定向的纠删码存储重构优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310616406.8A CN103605582B (zh) | 2013-11-27 | 2013-11-27 | 一种基于写重定向的纠删码存储重构优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103605582A CN103605582A (zh) | 2014-02-26 |
CN103605582B true CN103605582B (zh) | 2017-01-25 |
Family
ID=50123811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310616406.8A Active CN103605582B (zh) | 2013-11-27 | 2013-11-27 | 一种基于写重定向的纠删码存储重构优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103605582B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914402B (zh) * | 2014-04-17 | 2016-08-31 | 华中科技大学 | 一种基于纠删码缓存的重构优化方法 |
CN106469100B (zh) | 2015-08-17 | 2019-04-05 | 华为技术有限公司 | 一种数据恢复的方法、存储的方法相应的装置及系统 |
CN106649406B (zh) | 2015-11-04 | 2020-04-28 | 华为技术有限公司 | 一种自适应存储文件的方法和装置 |
CN105610921B (zh) * | 2015-12-23 | 2018-09-07 | 华中科技大学 | 一种集群下基于数据缓存的纠删码归档方法 |
US10740198B2 (en) | 2016-12-22 | 2020-08-11 | Purdue Research Foundation | Parallel partial repair of storage |
CN109344012B (zh) * | 2018-09-14 | 2022-04-12 | 新华三技术有限公司成都分公司 | 数据重构控制方法、装置和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840377A (zh) * | 2010-05-13 | 2010-09-22 | 上海交通大学 | 基于rs纠删码的数据存储方法 |
CN102546755A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 云存储系统的数据存储方法 |
CN102681793A (zh) * | 2012-04-16 | 2012-09-19 | 华中科技大学 | 一种基于纠删码集群存储系统的局部式数据更新方法 |
-
2013
- 2013-11-27 CN CN201310616406.8A patent/CN103605582B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840377A (zh) * | 2010-05-13 | 2010-09-22 | 上海交通大学 | 基于rs纠删码的数据存储方法 |
CN102546755A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 云存储系统的数据存储方法 |
CN102681793A (zh) * | 2012-04-16 | 2012-09-19 | 华中科技大学 | 一种基于纠删码集群存储系统的局部式数据更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103605582A (zh) | 2014-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103605582B (zh) | 一种基于写重定向的纠删码存储重构优化方法 | |
US20020194428A1 (en) | Method and apparatus for distributing raid processing over a network link | |
US20030084397A1 (en) | Apparatus and method for a distributed raid | |
CN104246707B (zh) | 存储系统和存储装置 | |
US6950901B2 (en) | Method and apparatus for supporting parity protection in a RAID clustered environment | |
US8719520B1 (en) | System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity | |
US8677063B2 (en) | Parity declustered storage device array with partition groups | |
JP5298393B2 (ja) | 並列リードソロモンraid(rs−raid)アーキテクチャ、デバイス、および方法 | |
US20170161146A1 (en) | Methods and systems for rebuilding data subsequent to the failure of a storage unit | |
US20160217040A1 (en) | Raid parity stripe reconstruction | |
CN109814807B (zh) | 一种数据存储方法及装置 | |
US7523257B2 (en) | Method of managing raid level bad blocks in a networked storage system | |
CN101868830A (zh) | 容错非易失性集成电路存储器 | |
US20100306466A1 (en) | Method for improving disk availability and disk array controller | |
WO2010133080A1 (zh) | 基于(d,k)摩尔图的网络存储结构的数据存储方法 | |
US20040037120A1 (en) | Storage system using fast storage devices for storing redundant data | |
CN102520890B (zh) | 基于gpu的rs-draid系统及存储设备数据控制方法 | |
CN103914402B (zh) | 一种基于纠删码缓存的重构优化方法 | |
JP2000207136A (ja) | 複数ドライブ故障トレラントraidアルゴリズム | |
CN101609420A (zh) | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 | |
CN110187830A (zh) | 一种加速磁盘阵列重建的方法及系统 | |
JP2009545062A (ja) | RAID(RedundantArrayofIndependentDisks)システム用のファイルサーバ | |
CN106951340A (zh) | 一种基于局部性优先的rs纠删码数据布局方法及系统 | |
US7827469B2 (en) | Method of implementing XOR based RAID algorithms | |
EP0657801A1 (en) | System and method for supporting reproduction of full motion video on a plurality of playback platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |