CN104615380B - 一种基于分组编码的磁盘阵列构建方法 - Google Patents
一种基于分组编码的磁盘阵列构建方法 Download PDFInfo
- Publication number
- CN104615380B CN104615380B CN201510016735.8A CN201510016735A CN104615380B CN 104615380 B CN104615380 B CN 104615380B CN 201510016735 A CN201510016735 A CN 201510016735A CN 104615380 B CN104615380 B CN 104615380B
- Authority
- CN
- China
- Prior art keywords
- group
- disk
- block
- logical block
- coding
- 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
- 238000010276 construction Methods 0.000 title claims abstract description 15
- 238000005192 partition Methods 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 20
- 230000008439 repair process Effects 0.000 claims description 8
- 238000011084 recovery Methods 0.000 claims description 5
- 239000011159 matrix material Substances 0.000 claims description 3
- 238000009472 formulation Methods 0.000 abstract description 2
- 239000000203 mixture Substances 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 9
- 230000007257 malfunction Effects 0.000 description 3
- 230000004083 survival effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种基于分组编码的磁盘阵列构建方法,特征是包括磁盘分区步骤,组内编码步骤,组间编码步骤和制定容错策略步骤;采用此构建方法的磁盘阵列能容任意四个磁盘错;当发生单磁盘错时,采用组间编码进行修复;当发生多磁盘错时,采用组内编码和组间编码的混合修复。本发明方法与传统磁盘阵列构建方法相比,在相同的容错能力和冗余率的前提下,修复单磁盘错时所读取的数据总量以及各磁盘的数据读取量都明显减少,节省了网络带宽,加快了修复速度,提高了系统可靠性。
Description
技术领域
本发明属于计算机磁盘阵列技术领域,具体涉及通过分组编码来加快单盘修复的磁盘阵列构建方法。
背景技术
在分布式存储系统中,数据可靠性是一个重要指标,存储系统往往采用基于复制或纠删码的策略生成冗余来保证数据可靠性。在现代存储领域中,由于数据量急剧增加,存储系统的磁盘数也急剧增加,为了保证数据可靠性,需要能同时容多个磁盘错。此时,基于复制的策略存储开销过大,因此往往采用基于纠删码的策略。美国约翰-韦利(John Wiley&Sons)公司出版的《里德所罗门码及其应用》(Reed-Solomon codes and theirapplications,1999年第1版,第60~105页)所介绍的里德所罗门码(Reed–Solomon codes)是目前最常用的能同时容多磁盘错的纠删码。但里德所罗门码是基于有限域运算,编码开销和数据更新开销较大;当进行单盘修复时,需要读取的数据总量较大,因此网络开销较大,修复速度较慢。
发明内容
本发明的目的是提出一种基于分组编码的磁盘阵列构建方法,以克服现有技术的上述缺陷,在能容任意四个磁盘错的前提下减小单盘修复时所需读取的数据总量和各磁盘读取量,节省网络带宽,加快修复速度。
本发明基于分组编码的磁盘阵列构建方法,其特征在于包括以下步骤:
第一步:磁盘分区步骤
首先将每个容量为C MB的磁盘切分成大小为H MB的C/H个逻辑块(Chunk),其中C的范围是256GB~4TB(通常采用2TB或4TB),H的范围是64MB~1GB(通常采用64MB);然后将所有磁盘划分为N组,每组G个磁盘,其中G为素数,N<=G,共G*N个磁盘;在各组中,从每个磁盘中取G个逻辑块组成一个G*G的逻辑块矩阵,构成一个分区;
第二步:组内编码步骤
设Pi,j为某个分区第i行第j列的逻辑块,<j-i>G表示j-i对G求模;取<j-i>G相同的逻辑块来构建组内子阵列(RAID),每个组内子阵列由G个逻辑块构成;组内子阵列采用RAID-5编码,即G-1个数据块产生1个校验块;
第三步:组间编码步骤
在第0组的分区中,对每个逻辑块进行编号,从左到右、从上到下依次为0到G*G-1;定义一个右移操作:在一个分区中,第i行的编号循环右移i个逻辑位置;对第0组的分区进行该右移操作,得到第1组分区的逻辑编号;对第1组的分区进行该右移操作,得到第2组分区的逻辑编号,以此类推;组间编码的方法为,从各分区取出相同编号的逻辑块构建组间子阵列,组间子阵列共由N个逻辑块构成;组间子阵列采用RAID-5编码,即N-1个数据块产生1个校验块;选择非组内编码校验块的逻辑块作为组间编码校验块;
第四步:制定容错策略步骤
当发生单磁盘错误时,记录坏盘所包含的组间子阵列的编号,并发地从其它分区读取相同编号的逻辑块进行异或运算,并发地将恢复的数据临时写入空闲磁盘,最后将恢复的数据写入热备盘;当发生多磁盘错误时,首先采用组内编码修复损坏的逻辑块,再采用组间编码修复剩余的逻辑块。
上述本发明基于分组编码的磁盘阵列构建方法包括了磁盘分区步骤,组内编码步骤,组间编码步骤和制定容错策略步骤;采用此构建方法的磁盘阵列能容任意四个磁盘错;当发生单磁盘错时,采用组间编码进行修复;当发生多磁盘错时,采用组内编码和组间编码的混合修复。单盘修复时,修复一个逻辑块仅需读取N-1个逻辑块。本发明方法与传统磁盘阵列构建方法相比,在相同的容错能力和冗余率的前提下,修复单磁盘错时所读取的数据总量以及各磁盘的数据读取量都明显减少,节省了网络带宽,加快了修复速度,提高了系统可靠性。
本发明基于分组编码的磁盘阵列构建方法与现有技术相比,具有以下优点:
1.由于本发明仅采用基于异或运算的编码就达到了容任意四个磁盘错的目的,与里德所罗门码(Reed–Solomon codes)相比,本发明方法的编码速度更快,数据更新开销更小。
2.在相同的容错能力和冗余率的前提下,本发明方法与里德所罗门码(Reed–Solomon codes)相比,进行单盘修复所需读取的数据总量明显减少,节省了网络带宽;各磁盘的数据读取量减少数倍,加快了修复速度,提高了系统可靠性。
附图说明
图1为按照本发明方法构建的一个具体磁盘阵列的总体结构示意图。
图2为组内编码方法示意图;
图3为组间编码方法示意图。
图4为单盘修复方法示意图;
图5为多盘修复方法示意图。
具体实施方式
下面结合附图通过具体实施例对本发明基于分组编码的磁盘阵列构建方法作进一步的详细说明。
实施例1:
本实施例基于分组编码的磁盘阵列构建方法,具体包括以下步骤:
第一步:磁盘分区步骤
附图1给出了按照本发明方法构建的一个具体实施例磁盘阵列的总体结构示意图。该图中,每一列代表一个磁盘,共有编号为D0~D14的15个磁盘,本实施例中设每个磁盘容量都为2TB;每一个方格代表一个64MB的逻辑块(Chunk),所有磁盘都被切分成32768个逻辑块(图中每个磁盘仅列出了5个逻辑块)。将所有磁盘划分为3组,每组5个磁盘。在各组中,从各个磁盘取出5个逻辑块组成5*5的逻辑块矩阵,称为一个分区,最终形成第0号磁盘分区R0、第1号磁盘分区R1和第2号磁盘分区R2三个分区。在每个分区内进行组内编码,在分区之间进行组间编码。图中小方格内采用空白表示的逻辑块为数据块;图中小方格内采用右斜线表示的逻辑块为组内编码校验块;小方格内采用水平直线表示的逻辑块为组间编码校验块。
第二步:组内编码步骤
形成分区之后进行组内编码。图2为组内编码方法示意图。在图2中,每个逻辑块由2个数字进行标记,第一个数字表示所在行数,设为i;第二个数字表示所在列数,设为j;设<j-i>5表示j-i对5求模。取<j-i>5相同的逻辑块构建组内子阵列,采用RAID-5编码,即4个数据块异或产生一个校验块。附图2中共有编号为①~⑤的五条连线,每条连线上包含5个逻辑块,且这5个逻辑块满足<j-i>5相同。因此每一条连线上的逻辑块均组成一个组内子阵列,其中小方格内采用左斜线表示的逻辑块为校验块。
第三步:组间编码步骤
进行组间编码前,需要对各分区中的逻辑块进行编号。
图3为组间编码方法示意图。如附图3中所示:在第0号分区R0中,从左到右、从上到下依次编号为0~24。现定义一个右移操作:在一个分区中,第i行的编号循环右移i个逻辑位置。对第0号磁盘分区R0中的编号进行该右移操作,得到第1号磁盘分区R1中的编号;对第1号磁盘分区R1中的编号进行该右移操作,得到第2号分区R2中的编号。最终第0号磁盘分区R0中第零行磁盘编号为0、1、2、3、4,第一行磁盘编号为5、6、7、8、9,第二行磁盘编号为10、11、12、13、14,第三行磁盘编号为15、16、17、18、19,第四行磁盘编号为20、21、22、23、24;第1号磁盘分区R1中第零行磁盘编号为0、1、2、3、4,第一行磁盘编号为9、5、6、7、8,第二行磁盘编号为13、14、10、11、12,第三行磁盘编号为17、18、19、15、16,第四行磁盘编号为21、22、23、24、20;第2号磁盘分区R2中第零行磁盘编号为0、1、2、3、4,第一行磁盘编号为8、9、5、6、7,第二行磁盘编号为11、12、13、14、10,由第三行磁盘编号为19、15、16、17、18,第四行磁盘编号为22、23、24、20、21。编号完成之后,从各分区中取相同编号的逻辑块构建组间子阵列,同样采用RAID-5编码,由2个数据块产生1个校验块。图3中用十字外加圆圈的符号表示异或运算,用虚线箭头连接参与运算的逻辑块。如附图3中所示,由第0号磁盘分区R0和第1号磁盘分区R1中的0号数据块通过异或运算产生第2号磁盘分区R2中的0号校验块;由第0号磁盘分区R0、第2号磁盘分区R2中的22号数据块,通过异或运算产生第1号磁盘分区R1中的22号校验块。将21~24号组间子阵列的校验块放置在第1号磁盘分区R1中,是因为组间校验块与组内校验块不能是相同的逻辑块,需要在第2号磁盘分区R2中需留出一行作为组内校验块。
第四步:制定容错策略步骤
当单个磁盘出错时,采用组间编码进行修复。图4为单盘修复方法示意图,图中同样用十字外加圆圈的符号表示异或运算,用虚线箭头表示读取组间相应的逻辑块,通过异或运算修复出损坏的逻辑块。在附图4中,组间编码采用2个数据块产生1个校验块的RAID-5编码,当某个逻辑块坏掉之后,只需读取相同组间子阵列中存活的逻辑块进行异或运算即可修复。例如,图4中在整个第7号磁盘D7上打了“叉”形符号,表示该磁盘D7上的所有逻辑块都损坏。对于该磁盘D7中的2号逻辑块,按图4中上方虚线箭头所示,读取第2号磁盘D2和第12号磁盘D12中的2号逻辑块进行异或运算,即可修复。采用相同的方法,可以依次修复第7号磁盘D7中标注编号为2、6、10、19、23号的逻辑块。
当多个磁盘出错时,采用组内、组间编码混合修复。图5为多盘修复方法示意图,图中同样用十字外加圆圈的符号表示异或运算,用虚线箭头表示读取组间相应的逻辑块,用实线箭头表示读取组内相应的逻辑块,最后均通过异或运算修复出损坏的逻辑块。在附图5中,分别在整个第1号磁盘D1和整个第7号磁盘D7上打了“叉”形符号,表示磁盘D1和磁盘D7上的所有逻辑块都损坏。不难发现,两个磁盘中均包含了编号为6的逻辑块,因此无法通过组间编码修复编号为6的组间子阵列。此时,首先在第0号磁盘分区R0中,采用组内编码修复标注编号为6号的逻辑块,即读取第0号磁盘分区R0中实线箭头上所包含的逻辑块,进行异或运算,以恢复出第1号磁盘D1中的标注编号为6号的逻辑块;然后采用上述组间编码方法修复第2号磁盘分区R2中的标注编号为6号的逻辑块以及其余损坏的逻辑块。
无论是单磁盘修复,还是多磁盘修复,都并发地将恢复的数据临时写入空闲磁盘,最后将恢复的数据写入热备盘。
在附图4的磁盘阵列中,发生了单磁盘出错,即第7号磁盘D7出错,小方格内用左斜线表示的逻辑块为修复第7号磁盘D7所需读取的存活块。假定第7号磁盘D7的数据量为M,可以看出,修复所需读取的数据总量2*M,即(N-1)*M;参与修复的存活盘数量为10,即(N-1)*G;各磁盘读取的数据量为M/5,即M/G。该磁盘阵列校验块所占比例为53.3%,与此比例接近,且能容任意四个磁盘错的Reed Solomon码为RS(3,4),即3个数据盘产生4个校验盘,RS(3,4)校验块比例为57.1%。同样,假定某个数据量为M的磁盘出错,修复时RS(3,4)所需读取的数据总量为3*M,参与修复的存活盘数量为3,各磁盘读取的数据量为M。对比发现,采用本发明的布局方法将单盘修复时所需读取的数据总量减小了33.3%,各磁盘数据读取量减小了80%。而且当G、N选择其它值时,单盘修复性能还可进一步提升。
Claims (1)
1.一种基于分组编码的磁盘阵列构建方法,其特征在于包括以下步骤:
第一步:磁盘分区步骤
首先将每个容量为C MB的磁盘切分成大小为H MB的C/H个逻辑块,其中C的范围是256GB~4TB,H的范围是64MB~1GB;然后将所有磁盘划分为N组,每组G个磁盘,其中G为素数,N<=G,共G*N个磁盘;在各组中,从每个磁盘中取G个逻辑块组成一个G*G的逻辑块矩阵,构成一个分区;
第二步:组内编码步骤
设Pi,j为某个分区第i行第j列的逻辑块,<j-i>G表示j-i对G求模;取<j-i>G相同的逻辑块来构建组内子阵列,每个组内子阵列由G个逻辑块构成;组内子阵列采用RAID-5编码,即G-1个数据块产生1个校验块;
第三步:组间编码步骤
在第0组的分区中,对每个逻辑块进行编号,从左到右、从上到下依次为0到G*G-1;定义一个右移操作:在一个分区中,第i行的编号循环右移i个逻辑位置;对第0组的分区进行该右移操作,得到第1组分区的逻辑编号;对第1组的分区进行该右移操作,得到第2组分区的逻辑编号,以此类推;组间编码的方法为,从各分区取出相同编号的逻辑块构建组间子阵列,组间子阵列共由N个逻辑块构成;组间子阵列采用RAID-5编码,即N-1个数据块产生1个校验块;选择非组内编码校验块的逻辑块作为组间编码校验块;
第四步:制定容错策略步骤
当发生单磁盘错误时,记录坏盘所包含的组间子阵列的编号,并发地从其它分区读取相同编号的逻辑块进行异或运算,并发地将恢复的数据临时写入空闲磁盘,最后将恢复的数据写入热备盘;当发生多磁盘错误时,首先采用组内编码修复损坏的逻辑块,再采用组间编码修复剩余的逻辑块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510016735.8A CN104615380B (zh) | 2015-01-13 | 2015-01-13 | 一种基于分组编码的磁盘阵列构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510016735.8A CN104615380B (zh) | 2015-01-13 | 2015-01-13 | 一种基于分组编码的磁盘阵列构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615380A CN104615380A (zh) | 2015-05-13 |
CN104615380B true CN104615380B (zh) | 2017-07-28 |
Family
ID=53149851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510016735.8A Active CN104615380B (zh) | 2015-01-13 | 2015-01-13 | 一种基于分组编码的磁盘阵列构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615380B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382007B (zh) * | 2018-12-28 | 2024-04-30 | 深圳市茁壮网络股份有限公司 | 一种数据恢复方法、装置及电子设备 |
CN111381769B (zh) * | 2018-12-29 | 2023-11-14 | 深圳市茁壮网络股份有限公司 | 一种分布式数据存储方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719086A (zh) * | 2009-11-30 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 磁盘阵列容错处理方法和装置及容错系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003140840A (ja) * | 2001-10-31 | 2003-05-16 | Toshiba Corp | ネットワーク接続されたディスクアレイのアクセス方法及び記憶装置 |
-
2015
- 2015-01-13 CN CN201510016735.8A patent/CN104615380B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719086A (zh) * | 2009-11-30 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 磁盘阵列容错处理方法和装置及容错系统 |
Non-Patent Citations (3)
Title |
---|
S2-RAID: A new RAID architecture for fast data recovery;Wan J,et al;《IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST)》;20101231;第1-9页 * |
基于EVENODD 码的单盘故障快速恢复算法;常乾等;《计算机应用与软件》;20110630;第28卷(第6期);第15-18页 * |
基于RAID6 编码的校验盘故障修复算法;高玲玲等;《计算机应用与软件》;20140630;第31卷(第6期);第248-302页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104615380A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391026A (zh) | 闪存装置及闪存存储管理方法 | |
CA2225771C (en) | Method for storing parity and rebuilding the data contents of failed disks in an external storage subsystem and apparatus therefor | |
CN103336785B (zh) | 一种基于网络编码的分布式存储方法及其装置 | |
CN101183565A (zh) | 存储介质中数据校验方法 | |
CN107403646A (zh) | 闪存装置及闪存存储管理方法 | |
CN104052576B (zh) | 一种云存储下基于纠错码的数据恢复方法 | |
CN107844272A (zh) | 一种提高纠错能力的交叉分组编译码方法 | |
CN103578565B (zh) | 一种NAND Flash存储芯片的校验方法及装置 | |
JP2010521728A5 (zh) | ||
JP2003068096A5 (zh) | ||
WO2018072294A1 (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
TWI684857B (zh) | 快閃記憶體裝置及快閃記憶體儲存管理方法 | |
CN101504623A (zh) | 独立磁盘冗余阵列构建方法及装置 | |
CN103593260B (zh) | 一种元数据的保护方法和装置 | |
CN112799604B (zh) | 一种基于N-Code的RAID6磁盘阵列扩容方法及数据填充方法 | |
CN104615380B (zh) | 一种基于分组编码的磁盘阵列构建方法 | |
WO2012163070A1 (zh) | 带保护字的二维游程长度受限约束的编解码器及使用方法 | |
CN103283149B (zh) | 用于处理数据元素序列的装置和方法 | |
CN107807788A (zh) | 多平面闪存的数据组织方法与装置 | |
CN110309014B (zh) | 一种全行编解码sram编码器数据读写结构及数据读写方法 | |
CN106788455B (zh) | 一种基于包的最优局部可修复系统码的构造方法 | |
WO1997002574A1 (fr) | Procede de test de memoire a semi-conducteurs et appareil permettant l'application dudit procede | |
CN102346693A (zh) | 一种数据存储和数据恢复方法 | |
CN104809035A (zh) | 一种能快速单盘修复的存储系统构建方法 | |
CN110781024B (zh) | 对称部分重复码的矩阵构造方法及故障节点修复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |