CN117407209B - 三盘容错存储方法、装置、设备、存储介质及磁盘阵列 - Google Patents
三盘容错存储方法、装置、设备、存储介质及磁盘阵列 Download PDFInfo
- Publication number
- CN117407209B CN117407209B CN202311707397.3A CN202311707397A CN117407209B CN 117407209 B CN117407209 B CN 117407209B CN 202311707397 A CN202311707397 A CN 202311707397A CN 117407209 B CN117407209 B CN 117407209B
- Authority
- CN
- China
- Prior art keywords
- group
- data
- stripe
- erasure
- disk
- 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
- 238000000034 method Methods 0.000 title claims description 64
- 238000004364 calculation method Methods 0.000 claims abstract description 72
- 238000012937 correction Methods 0.000 claims description 69
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012795 verification Methods 0.000 claims description 2
- 238000011084 recovery Methods 0.000 abstract description 5
- 238000004422 calculation algorithm Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及存储技术领域,具体公开了三盘容错存储方法、装置、设备、存储介质及磁盘阵列,相较于传统三盘容错方案中采用与条带宽度同样数量的磁盘,采用多于条带宽度的磁盘,在进行校验条带的计算时将多出来的奇偶对角线校验值保留,并按照一个纠删组中分布在各磁盘中的数据量相同的原则将各一个纠删组中的各条带组均匀存入各磁盘,由于一个纠删组中包含条带组的数量与条带宽度的乘积等于纠删组的预设组宽度与磁盘数量的乘积,故可以实现各磁盘中位于同一纠删组的条带长度之和对齐,且各磁盘中均包含进行三盘容错重构所需的所有校验块,从而降低了实现磁盘阵列三盘容错编码的计算难度,更降低了磁盘阵列故障后数据重构时的恢复难度。
Description
技术领域
本发明涉及存储技术领域,特别是涉及三盘容错存储方法、装置、设备、存储介质及磁盘阵列。
背景技术
磁盘阵列(如Redundant Arrays of Independent Disks,RAID)是由很多块独立的磁盘组成的容量巨大的磁盘组。利用磁盘阵列技术,将数据切割成许多区段,分别存放在各个磁盘上。基于磁盘阵列的容错机制,当磁盘阵列中任意一个磁盘发生故障时,仍可以利用其他磁盘计算出坏盘上的数据,并重构在一个新的磁盘上,这极大提高了存储的可靠性。
传统的磁盘阵列容错方案多为基于奇偶校验的容错方案,如RAID 5和RAID 6,无法防止更多的磁盘同时故障。基于镜像的方案,如RAID 1或RAID 10,虽然提高了磁盘阵列的容错能力,但是镜像的所需要的成本开销是非常大的。在奇偶校验的基础上,磁盘阵列三盘容错算法可以帮助进一步增加对磁盘故障的容忍度,能够在磁盘阵列中最多同时有三块磁盘故障时进行数据恢复。
目前磁盘阵列的三盘容错算法主要包括磁盘阵列三重分布奇偶校验(RedundantArrays of Independent Disks Triple Distributed Parity,简称RAID-TP或RTP)算法和STAR码,其共同点在于将行数据块的异或值、对角线数据块的异或值和反对角线数据块的异或值分别作为第一校验块、第二校验块和第三校验块,区别在于RTP算法将第一校验块参与到第二校验块和第三校验块的计算中,在写数据时需要更多的时间在校验计算上,降低了编码效率。STAR算法中虽然第一校验块不参与第二校验块和第三校验块的计算,但由于进行对角线和反对角线的计算时会多生成一个校验值,即导致第二校验块、第三校验块多出一位,由此会将多出的一位分别与所在校验块的每一位进行异或运算,也存在编码效率较低的问题。
如何提高磁盘阵列三盘容错存储的编码效率,使本领域技术人员需要解决的技术问题。
发明内容
本发明的目的是提供三盘容错存储方法、装置、设备、存储介质及磁盘阵列,用于提高磁盘阵列三盘容错存储的编码效率,从而提高支持三盘容错的磁盘阵列的写数据效率。
为解决上述技术问题,本发明提供一种三盘容错存储方法,包括:
将待写入磁盘阵列的待写入数据分为a×b个待计算数据组;a为所述磁盘阵列的纠删组的数量,b为一个所述纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,z为所述磁盘阵列中的磁盘数量,w为预设组宽度,一个所述纠删组中的数据平均分布于所述磁盘阵列的各磁盘中;
将每个待计算数据组分为e个子计算组,并将每个所述子计算组分为m个数据块;
纵向排列所述子计算组,横向排列所述子计算组中的所述数据块,得到待计算数据块阵列,以所述数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以所述数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以所述数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以所述数据块阵列中各列所述数据块的集合为m个数据条带,得到包含m+3个条带的一个所述条带组;
按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置;
其中,z大于r,且r大于或等于7。
在一些实施中,所述按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置,包括:
在各所述磁盘中,按顺序排布所述纠删组中的第一个所述条带组的条带;自第二个所述条带组中,依次将所述条带组中的条带插入上一个所述条带组中对应位置,并保证各所述磁盘中的条带总长度对齐。
在一些实施中,所述在各所述磁盘中,按顺序排布所述纠删组中的第一个所述条带组的条带;自第二个所述条带组中,依次将所述条带组中的条带插入上一个所述条带组中对应位置,并保证各所述磁盘中的条带总长度对齐,包括:
若所述条带宽度为奇数,则依次排布所述条带组中的所述数据条带和校验条带;
若所述条带宽度为偶数,则在所述条带组中的所述校验条带再次回到所述磁盘循环的一侧时,将所述校验条带调换位置;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
在一些实施中,所述按顺序排布所述纠删组中的第一个所述条带组的条带,包括:
按先校验条带后所述数据条带的顺序排布所述纠删组中的第一个所述条带组的条带;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
在一些实施中,存储块A[i,j]所属的对角奇偶集通过下式计算得到:
;
其中,存储块A[i,j]为第i块所述磁盘的第j行的存储块;i=0,1,……z-1;j=1,2,……f-1,mod()为取余计算,z为所述磁盘的总数,f为一个所述磁盘的分块数。
在一些实施中,存储块A[i,j]所属的反对角奇偶集通过下式计算得到:
;
其中,存储块A[i,j]为第i块所述磁盘的第j行的存储块;i=0,1,……z-1;j=1,2,……f-1,mod()为取余计算,z为所述磁盘的总数,f为一个所述磁盘的分块数。
在一些实施中,第x行存储块处的对角奇偶校验块的值通过下式计算得到:
;
其中,x=1,2,……f-1,z为所述磁盘的总数,f为一个所述磁盘的分块数。
在一些实施中,第x行存储块处的反对角奇偶校验块的值通过下式计算得到:
;
其中,x=1,2,……f-1,z为所述磁盘的总数,f为一个所述磁盘的分块数。
在一些实施中,所述磁盘阵列不包含热备份存储空间,一个纠删组循环包含的所述纠删组的数量根据所述预设条带宽度和所述预设组宽度计算得到,且一个所述纠删组循环所包含的所述纠删组的数量小于或等于所述磁盘阵列所包含的所述纠删组的总数。
在一些实施中,所述磁盘阵列包含热备份存储空间,且在一个纠删组循环中所述热备份存储空间存储于同一所述磁盘中,一个所述纠删组循环包含的所述纠删组的数量为一个热备份存储空间循环所包含的所述热备份存储空间的组数与不包含所述热备份存储空间时一个所述纠删组循环包含的所述纠删组的数量的最小公倍数;
不包含所述热备份存储空间时一个所述纠删组循环包含的所述纠删组的数量根据所述预设条带宽度和所述预设组宽度计算得到,且一个所述纠删组循环所包含的所述纠删组的数量小于或等于所述磁盘阵列所包含的所述纠删组的总数。
在一些实施中,一个所述纠删组循环中,相邻的两个所述纠删组循环中的所述热备份存储空间向左侧或右侧偏移一个所述磁盘。
在一些实施中,所述按顺序排布所述纠删组中的第一个所述条带组的条带,包括:
按先所述数据条带后校验条带的顺序排布所述纠删组中的第一个所述条带组的条带;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
在一些实施中,还包括:
当接收到对所述磁盘阵列的读数据命令时,根据所述读数据命令中携带的待读取数据的标识和所述按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置的纠删计算方式,计算得到所述待读取数据对应的所述数据块;
将读取到的所述数据块组成反馈数据进行反馈。
在一些实施中,还包括:
当所述磁盘阵列中存在不超出三块坏盘时,根据所述坏盘在所述磁盘阵列中的排列位置以及所述按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置的纠删计算方式,对所述坏盘中的数据进行数据重构。
为解决上述技术问题,本发明还提供一种磁盘阵列,包括z块磁盘,所述磁盘中存储待写入数据的方法,包括:
将待写入磁盘阵列的所述待写入数据分为a×b个待计算数据组;a为所述磁盘阵列的纠删组的数量,b为一个所述纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,w为预设组宽度,一个所述纠删组中的数据平均分布于所述磁盘阵列的各所述磁盘中;
将每个待计算数据组分为e个子计算组,并将每个所述子计算组分为m个数据块;
纵向排列所述子计算组,横向排列所述子计算组中的所述数据块,得到待计算数据块阵列,以所述数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以所述数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以所述数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以所述数据块阵列中各列所述数据块的集合为m个数据条带,得到包含m+3个条带的一个所述条带组;
按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置;
在一些实施中,所述按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置,包括:
在各所述磁盘中,按顺序排布所述纠删组中的第一个所述条带组的条带;自第二个所述条带组中,依次将所述条带组中的条带插入上一个所述条带组中对应位置,并保证各所述磁盘中的条带总长度对齐。
在一些实施中,所述在各所述磁盘中,按顺序排布所述纠删组中的第一个所述条带组的条带;自第二个所述条带组中,依次将所述条带组中的条带插入上一个所述条带组中对应位置,并保证各所述磁盘中的条带总长度对齐,包括:
若所述条带宽度为奇数,则依次排布所述条带组中的所述数据条带和校验条带;
若所述条带宽度为偶数,则在所述条带组中的所述校验条带再次回到所述磁盘循环的一侧时,将所述校验条带调换位置;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
在一些实施中,所述按顺序排布所述纠删组中的第一个所述条带组的条带,包括:
按先校验条带后所述数据条带的顺序排布所述纠删组中的第一个所述条带组的条带;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
在一些实施中,若所述磁盘阵列不包含热备份存储空间,则一个纠删组循环包含的所述纠删组的数量根据所述预设条带宽度和所述预设组宽度计算得到,且一个所述纠删组循环所包含的所述纠删组的数量小于或等于所述磁盘阵列所包含的所述纠删组的总数;
若所述磁盘阵列包含所述热备份存储空间,且在一个纠删组循环中所述热备份存储空间存储于同一所述磁盘中,则一个所述纠删组循环包含的所述纠删组的数量为一个热备份存储空间循环所包含的所述热备份存储空间的组数与不包含所述热备份存储空间时一个所述纠删组循环包含的所述纠删组的数量的最小公倍数。
为解决上述技术问题,本发明还提供一种三盘容错存储装置,包括:
第一分组单元,用于将待写入磁盘阵列的待写入数据分为a×b个待计算数据组;a为所述磁盘阵列的纠删组的数量,b为一个所述纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,z为所述磁盘阵列中的磁盘数量,w为预设组宽度,一个所述纠删组中的数据平均分布于所述磁盘阵列的各磁盘中;
第二分组单元,用于将每个待计算数据组分为e个子计算组,并将每个所述子计算组分为m个数据块;
条带计算单元,用于纵向排列所述子计算组,横向排列所述子计算组中的所述数据块,得到待计算数据块阵列,以所述数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以所述数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以所述数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以所述数据块阵列中各列所述数据块的集合为m个数据条带,得到包含m+3个条带的一个所述条带组;
写数据单元,用于按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置;
其中,z大于r,且r大于或等于7。
为解决上述技术问题,本发明还提供一种三盘容错存储设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如上述任意一项所述三盘容错存储方法的步骤。
为解决上述技术问题,本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述三盘容错存储方法的步骤。
本发明所提供的三盘容错存储方法,相较于传统三盘容错方案中采用与条带宽度同样数量的磁盘,采用多于条带宽度的磁盘,在进行校验条带的计算时不将多出来的奇偶对角线校验值与前面的奇偶对角线校验值进行异或计算,而是存储在其后,保留长度大于数据条带和行校验条带的对角线校验条带和反对角线校验条带,并按照一个纠删组中分布在各磁盘中的数据量相同的原则将各一个纠删组中的各条带组均匀存入各磁盘,由于一个纠删组中包含条带组的数量与条带宽度的乘积等于纠删组的预设组宽度与磁盘数量的乘积,故可以实现各磁盘中位于同一纠删组的条带长度之和对齐,且各磁盘中均包含进行三盘容错重构所需的所有校验块,从而降低了实现磁盘阵列三盘容错编码的计算难度,更降低了磁盘阵列故障后数据重构时的恢复难度。
本发明所提供的三盘容错存储方法,通过在各磁盘中,按顺序排布纠删组中的第一个条带组的条带;自第二个条带组中,依次将条带组中的条带插入上一个条带组中对应位置,并保证各磁盘中的条带总长度对齐,来实现一个纠删组在各磁盘的数据均匀分布的效果。
本发明所提供的三盘容错存储方法,针对不包含热备份存储空间时根据预设条带宽度和预设组宽度计算得到一个纠删组循环包含的纠删组的数量,包含热备份存储空间时则以一个热备份存储空间循环所包含的热备份存储空间的组数与不包含热备份存储空间时一个纠删组循环包含的纠删组的数量的最小公倍数为一个纠删组循环包含的纠删组的数量,以便进行整个磁盘阵列中纠删组的排列以及读数据乃至数据重构时的计算。
本发明还提供一种三盘容错存储装置、设备、存储介质及磁盘阵列,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种磁盘阵列的架构图;
图2为传统STAR三盘容错算法中行角线校验块的计算示意图;
图3为传统STAR三盘容错算法中对角线校验块的计算示意图;
图4为传统STAR三盘容错算法中反对角线校验块的计算示意图;
图5为本发明实施例提供的磁盘阵列三盘容错算法中对角线校验块和反对角线校验块的计算示意图;
图6为本发明实施例提供的第一种磁盘阵列数据分布示意图;
图7为本发明实施例提供第二种磁盘阵列数据分布示意图;
图8为本发明实施例提供的一种三盘容错存储方法的流程图;
图9为本发明实施例提供的一种三盘容错存储装置的结构示意图;
图10为本发明实施例提供的一种三盘容错存储设备的结构示意图。
具体实施方式
本发明的核心是提供三盘容错存储方法、装置、设备、存储介质及磁盘阵列,用于提高磁盘阵列三盘容错存储的编码效率,从而提高支持三盘容错的磁盘阵列的写数据效率。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种磁盘阵列的架构图;图2为传统STAR三盘容错算法中行角线校验块的计算示意图;图3为传统STAR三盘容错算法中对角线校验块的计算示意图;图4为传统STAR三盘容错算法中反对角线校验块的计算示意图;图5为本发明实施例提供的磁盘阵列三盘容错算法中对角线校验块和反对角线校验块的计算示意图;图6为本发明实施例提供的第一种磁盘阵列数据分布示意图;图7为本发明实施例提供第二种磁盘阵列数据分布示意图。
为便于理解,首先对本发明提供的磁盘阵列进行介绍。
如图1所示,本发明实施例提供的磁盘阵列包括z块磁盘,各磁盘的读写可以基于磁盘阵列的存储控制器控制。即将本发明提供的磁盘阵列三盘容错算法部署于存储控制器中。
以将一份待写入数据分为五个数据块,计算得到三个校验块为例。如图2所示,在传统的STAR三盘容错算法中,在计算第一校验块P(行校验块)时,分别将对应行的数据块的异或和填入对应行的位置,得到的第一校验块P的条带长度与数据块的条带长度相同。如图3所示,在传统的STAR三盘容错算法中,在计算第二校验块Q(对角线校验块)时,分别将对角线(即从右上到左下)的数据块的异或和填入各行位置,但计算得到的对角线数据异或和的数量比数据块的条带数量多出一位“4”。同理,如图4所示,在传统的STAR三盘容错算法中,在计算第三校验块R(反对角线校验块)时,分别将反对角线(即从左上到右下)的数据块的异或和填入各行位置,计算得到的对角线数据异或和的数量也比数据块的条带数量多出一位“4”。为使条带对齐,在传统的STAR三盘容错算法中,在计算第二校验块Q和第三校验块R时,分别将多出来的对角线异或和以及反对角线异或和与此前行的数据均做异或计算,增加了编码难度,降低了编码效率。
而利用本发明实施例提供的磁盘阵列三盘容错算法,计算第一校验块P(行校验块)的方式与传统的STAR三盘容错算法相同。但在计算第二校验块Q(对角线校验块)和第三校验块R(反对角线校验块)时,将多出来的对角线异或和以及反对角线异或和分别存储在第二校验块Q(对角线校验块)和第三校验块R(反对角线校验块)末尾,由此降低了编码难度,提高了编码效率,更有助于进行数据恢复时的计算。但这导致第二校验块Q(对角线校验块)中的对角线校验条带的长度以及第三校验块R(反对角线校验块)中的反对角线校验条带的长度均长出一部分,如果按照传统的磁盘阵列分布算法,直接将m+3个条带存储于m+3个磁盘中,将无法保证各磁盘中的条带对齐。
故在本发明实施例提供的磁盘阵列三盘容错算法中,如图5所示,在第一校验块P(行校验块)不参与第二校验块Q(对角线校验块)和第三校验块R(反对角线校验块)的计算,多出的对角线和反对角线也不参与第二校验块Q(对角线校验块)和第三校验块R(反对角线校验块)的计算的同时,通过将各磁盘的空间分组的方式,即条带排列整齐的集合成为一个纠删组,一个纠删组中包括多个条带组,各条带组由m条数据条带和3条校验条带组成,定义条带组中条带的数量即m+3为条带宽度,设置条带宽度小于磁盘数量。此外,条带宽度需大于或等于7。由此,可以改变一个纠删组中各条带组中的条带在磁盘中的排列顺序的方式来使一个纠删组分布在各磁盘中的条带长度之和相同,即实现各磁盘中的条带对齐。
如图6所示,记D1、D2、D3、D4为一个条带组中的数据条带,记P、Q、R为一个条带组中的校验条带(条带宽度为7),可以按照先排布数据条带、后排布数据条带的方式顺次排布各条带。可以看到,虽然校验条带Q、R长度大于数据条带D1、D2、D3、D4及校验条带P,但分配在9块磁盘后,各磁盘中条带总长度一致且均包含P、Q、R校验条带,实现了各磁盘中条带对齐,此9个条带组为一个纠删组。如果考虑到数据重构,预留热备份存储空间S,则可以再额外设置3块热备盘(记为热备份存储空间宽度为3,也可以不为3),则共需12块磁盘(盘1~盘12)。若考虑到各磁盘的读写均匀,可以将热备份存储空间均匀分布在各磁盘中。
则在本发明实施例提供的磁盘阵列三盘容错算法中,磁盘中存储待写入数据的方法,包括:
将待写入磁盘阵列的待写入数据分为a×b个待计算数据组;a为磁盘阵列的纠删组的数量,b为一个纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,w为预设组宽度,一个纠删组中的数据平均分布于磁盘阵列的各磁盘中;
将每个待计算数据组分为e个子计算组,并将每个子计算组分为m个数据块;
纵向排列子计算组,横向排列子计算组中的数据块,得到待计算数据块阵列,以数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以数据块阵列中各列数据块的集合为m个数据条带,得到包含m+3个条带的一个条带组;
按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置;
其中,z大于r,且r大于或等于7。
在具体实施中,磁盘中存储待写入数据的方法由磁盘阵列所在的存储系统的存储控制器实现。在初始化磁盘阵列对应的存储池时,初始化纠删算法以实现将长度不等的数据条带和纠删条带均匀存储于各磁盘中。
其中,按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置,可以包括:
在各磁盘中,按顺序排布纠删组中的第一个条带组的条带;自第二个条带组中,依次将条带组中的条带插入上一个条带组中对应位置,并保证各磁盘中的条带总长度对齐。
具体来说,按顺序排布纠删组中的第一个条带组的条带;自第二个条带组中,依次将条带组中的条带插入上一个条带组中对应位置,并保证各磁盘中的条带总长度对齐,可以包括:
若条带宽度为奇数,则依次排布条带组中的数据条带和校验条带;
若条带宽度为偶数,则在条带组中的校验条带再次回到磁盘循环的一侧时,将校验条带调换位置;
校验条带包括行校验条带、对角线校验条带和反对角线校验条带。
在排布各条带组时,按顺序排布纠删组中的第一个条带组的条带,可以包括:按先校验条带后数据条带的顺序排布纠删组中的第一个条带组的条带;校验条带包括行校验条带、对角线校验条带和反对角线校验条带。如图7所示,以纠删组1为例,对第一个条带组(包含校验条带P1、Q1、R1和数据条带10、11、12、13)先按顺序排布,在排布第二个条带组时,则将第四个数据条带23插入第一个条带组的第三个数据条带12之后,并对应第一个条带组的P1的盘,将第二个条带组的Q2向左移动至P1之下,第二条条带组的P2退回到与第一个条带组的第四个数据条带13之下,以此类推,共排满盘3~盘10共8个磁盘,实现将各磁盘中的条带总长度对齐。
对纠删组2乃至之后的纠删组同理。
则若磁盘阵列不包含热备份存储空间,则一个纠删组循环包含的纠删组的数量根据预设条带宽度和预设组宽度计算得到,且一个纠删组循环所包含的纠删组的数量小于或等于磁盘阵列所包含的纠删组的总数;
若磁盘阵列包含热备份存储空间,且在一个纠删组循环中热备份存储空间存储于同一磁盘中,则一个纠删组循环包含的纠删组的数量为一个热备份存储空间循环所包含的热备份存储空间的组数与不包含热备份存储空间时一个纠删组循环包含的纠删组的数量的最小公倍数。
如图7所示,在不包含热备份存储空间S时,纠删组x和纠删组x+c的空间分布图一致,纠删组的循环范围c有两种情况,取决于预设条带宽度r和预设组宽度w的组合:第一种情况下,纠删组的循环范围c为根据预设条带宽度和预设组宽度确定的数;第二种情况下,纠删组的循环范围c=磁盘中容纳纠删组的上限(如16)。
在包含热备份存储空间S的情况下,热备份存储空间S的循环范围=预设组宽度+热备份存储空间宽度。则纠删组x和纠删组x+y的空间分布图一致,其中,y为w和c的最小公倍数。
在图7中,热备份存储空间S在纠删组0中,位于阵列前三列,随纠删组每增加1,热备份存储空间S依次向后旋转一位。针对不同纠删组,第一个条带组每个分块会有固定磁盘位置,下一条带的该分块依次向左旋转一个磁盘(旋转时前面若有热备盘,跳过热备盘旋转),要么同行向左旋转一个,要么下一行向左旋转一个(若旋转到磁盘0位置时,下一步旋转到磁盘最后一列位置)。
在上述架构的基础上,下面继续对本发明实施例提供的三盘容错存储方法进行说明。
图8为本发明实施例提供的一种三盘容错存储方法的流程图。
如图8所示,本发明实施例提供的三盘容错存储方法包括:
S801:将待写入磁盘阵列的待写入数据分为a×b个待计算数据组。
其中,a为磁盘阵列的纠删组的数量,b为一个纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,z为磁盘阵列中的磁盘数量,w为预设组宽度,一个纠删组中的数据平均分布于磁盘阵列的各磁盘中。
S802:将每个待计算数据组分为e个子计算组,并将每个子计算组分为m个数据块。
S803:纵向排列子计算组,横向排列子计算组中的数据块,得到待计算数据块阵列,以数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以数据块阵列中各列数据块的集合为m个数据条带,得到包含m+3个条带的一个条带组。
S804:按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置。
其中,z大于r,且r大于或等于7。
本发明实施例提供的三盘容错存储方法,相较于传统三盘容错方案中采用与条带宽度同样数量的磁盘,采用多于条带宽度的磁盘,在进行校验条带的计算时不将多出来的奇偶对角线校验值与前面的奇偶对角线校验值进行异或计算,而是存储在其后,保留长度大于数据条带和行校验条带的对角线校验条带的长度和反对角线校验条带,并按照一个纠删组中分布在各磁盘中的数据量相同的原则将各一个纠删组中的各条带组均匀存入各磁盘,由于一个纠删组中包含条带组的数量与条带宽度的乘积等于纠删组的预设组宽度与磁盘数量的乘积,故可以实现各磁盘中位于同一纠删组的条带长度之和对齐,且各磁盘中均包含进行三盘容错重构所需的所有校验块,从而降低了实现磁盘阵列三盘容错编码的计算难度,更降低了磁盘阵列故障后数据重构时的恢复难度。
在具体实施中,可以将磁盘阵列划分为16个纠删组,每个纠删组形成一个独立的行和对角奇偶校验集。每个条带由来自每个磁盘的不同块组成。行校验盘上的每个块存储同一条带内所有数据块的水平异或和。
以16个纠删组为例,对角线校验条带和反对角线校验条带上均存储了17条对角线的异或和,这些对角线覆盖了所有数据盘。对角线由一组17条构成。由于不计算行校验值到对角线校验值和反对角线校验值中,采用将17条对角线全部存储的方案。
按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置,可以包括:在各磁盘中,按顺序排布纠删组中的第一个条带组的条带;自第二个条带组中,依次将条带组中的条带插入上一个条带组中对应位置,并保证各磁盘中的条带总长度对齐。
进一步的,在各磁盘中,按顺序排布纠删组中的第一个条带组的条带;自第二个条带组中,依次将条带组中的条带插入上一个条带组中对应位置,并保证各磁盘中的条带总长度对齐,可以包括:若条带宽度为奇数,则依次排布条带组中的数据条带和校验条带;若条带宽度为偶数,则在条带组中的校验条带再次回到磁盘循环的一侧时,将校验条带调换位置;校验条带包括行校验条带、对角线校验条带和反对角线校验条带。
在一些实施中,按顺序排布纠删组中的第一个条带组的条带,可以包括:按先校验条带后数据条带的顺序排布纠删组中的第一个条带组的条带;校验条带包括行校验条带、对角线校验条带和反对角线校验条带。
或者,按顺序排布纠删组中的第一个条带组的条带,也包括:按先数据条带后校验条带的顺序排布纠删组中的第一个条带组的条带;校验条带包括行校验条带、对角线校验条带和反对角线校验条带。
应用本发明实施例提供的三盘容错存储方法,将磁盘号作为磁盘阵列的列编号i=0,1,……z-1,行编号为j=1,2,……f-1,z为磁盘的总数,f为一个磁盘的分块数。定义A[i, j]为第i块磁盘的第j行的存储块。
则存储块A[i,j]所属的对角奇偶集可以通过下式计算得到:
;
其中,存储块A[i,j]为第i块磁盘的第j行的存储块;i=0,1,……z-1;j=1,2,……f-1,mod()为取余计算,z为磁盘的总数,f为一个磁盘的分块数。
存储块A[i,j]所属的反对角奇偶集可以通过下式计算得到:
;
其中,存储块A[i,j]为第i块磁盘的第j行的存储块;i=0,1,……z-1;j=1,2,……f-1,mod()为取余计算,z为磁盘的总数,f为一个磁盘的分块数。
其中,在对角线校验条带和反对角线校验条带的最后一行数据存储在[f,Q]和[f,R]中。
则每个数据条带的长度以及行校验条带为f,对角线校验条带和反对角线校验条带的长度为g=f+1。因为对角奇偶校验集的计算不包括反对角奇偶校验盘(反之亦然),i的最大值为f-1。因此,当计算另一种类型的奇偶校验集时,不必对反对角线和对角线奇偶校验盘进行编号。行奇偶校验磁盘上的块被计算为同一条带内数据块的水平奇偶校验和。
则第x行存储块处的对角奇偶校验块的值通过下式计算得到:/>
;
其中,x=1,2,……f-1,z为磁盘的总数,f为一个磁盘的分块数。
第x行存储块处的反对角奇偶校验块的值通过下式计算得到:
;
其中,x=1,2,……f-1,z为磁盘的总数,f为一个磁盘的分块数。
参考图7,在磁盘阵列不包含热备份存储空间时,一个纠删组循环包含的纠删组的数量根据预设条带宽度和预设组宽度计算得到,且一个纠删组循环所包含的纠删组的数量小于或等于磁盘阵列所包含的纠删组的总数。
若磁盘阵列包含热备份存储空间,且在一个纠删组循环中热备份存储空间存储于同一磁盘中,一个纠删组循环包含的纠删组的数量为一个热备份存储空间循环所包含的热备份存储空间的组数与不包含热备份存储空间时一个纠删组循环包含的纠删组的数量的最小公倍数;不包含热备份存储空间时一个纠删组循环包含的纠删组的数量根据预设条带宽度和预设组宽度计算得到,且一个纠删组循环所包含的纠删组的数量小于或等于磁盘阵列所包含的纠删组的总数。
在图7中,热备份存储空间S在纠删组0中,位于阵列前三列,随纠删组每增加1,热备份存储空间S依次向后旋转一位。针对不同纠删组,第一个条带组每个分块会有固定磁盘位置,下一条带的该分块依次向左旋转一个磁盘(旋转时前面若有热备盘,跳过热备盘旋转),要么同行向左旋转一个,要么下一行向左旋转一个(若旋转到磁盘0位置时,下一步旋转到磁盘最后一列位置)。
在一些实施中,一个纠删组循环中,相邻的两个纠删组循环中的热备份存储空间向左侧或右侧偏移一个磁盘。如图7所示,即为将相邻的两个纠删组循环中的热备份存储空间向右侧偏移一个磁盘。
此外,还可以设置不为3个热备份存储空间,或者不止将相邻的两个纠删组循环中的热备份存储空间向左侧或右侧偏移一个磁盘。
在上述实施例的基础上,在执行对磁盘阵列的读数据命令时,本发明实施例提供的三盘容错存储方法还可以包括:
当接收到对磁盘阵列的读数据命令时,根据读数据命令中携带的待读取数据的标识和按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置的纠删计算方式,计算得到待读取数据对应的数据块;
将读取到的数据块组成反馈数据进行反馈。
在上述实施例的基础上,在执行对磁盘阵列的坏盘数据恢复,本发明实施例提供的三盘容错存储方法还可以包括:
当磁盘阵列中存在不超出三块坏盘时,根据坏盘在磁盘阵列中的排列位置以及按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置的纠删计算方式,对坏盘中的数据进行数据重构。
上文详述了三盘容错存储方法对应的各个实施例,在此基础上,本发明还公开了与上述方法对应的三盘容错存储装置、设备及存储介质。
图9为本发明实施例提供的一种三盘容错存储装置的结构示意图。
如图9所示,本发明实施例提供的三盘容错存储装置包括:
第一分组单元901,用于将待写入磁盘阵列的待写入数据分为a×b个待计算数据组;a为磁盘阵列的纠删组的数量,b为一个纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,z为磁盘阵列中的磁盘数量,w为预设组宽度,一个纠删组中的数据平均分布于磁盘阵列的各磁盘中;
第二分组单元902,用于将每个待计算数据组分为e个子计算组,并将每个子计算组分为m个数据块;
条带计算单元903,用于纵向排列子计算组,横向排列子计算组中的数据块,得到待计算数据块阵列,以数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以数据块阵列中各列数据块的集合为m个数据条带,得到包含m+3个条带的一个条带组;
写数据单元904,用于按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置;
其中,z大于r,且r大于或等于7。
在一些实施中,写数据单元904按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置,包括:
在各磁盘中,按顺序排布纠删组中的第一个条带组的条带;自第二个条带组中,依次将条带组中的条带插入上一个条带组中对应位置,并保证各磁盘中的条带总长度对齐。
在一些实施中,写数据单元904在各磁盘中,按顺序排布纠删组中的第一个条带组的条带;自第二个条带组中,依次将条带组中的条带插入上一个条带组中对应位置,并保证各磁盘中的条带总长度对齐,包括:
若条带宽度为奇数,则依次排布条带组中的数据条带和校验条带;
若条带宽度为偶数,则在条带组中的校验条带再次回到磁盘循环的一侧时,将校验条带调换位置;
校验条带包括行校验条带、对角线校验条带和反对角线校验条带。
在一些实施中,写数据单元904按顺序排布纠删组中的第一个条带组的条带,包括:
按先校验条带后数据条带的顺序排布纠删组中的第一个条带组的条带;
校验条带包括行校验条带、对角线校验条带和反对角线校验条带。
在一些实施中,存储块A[i,j]所属的对角奇偶集通过下式计算得到:
;
其中,存储块A[i,j]为第i块磁盘的第j行的存储块;i=0,1,……z-1;j=1,2,……f-1,mod()为取余计算。
在一些实施中,存储块A[i,j]所属的反对角奇偶集通过下式计算得到:/>
;
其中,存储块A[i,j]为第i块磁盘的第j行的存储块;i=0,1,……z-1;j=1,2,……f-1,mod()为取余计算。
在一些实施中,行存储块处的对角奇偶校验块的值通过下式计算得到:
;
其中,x=1,2,……f-1。
在一些实施中,第x行存储块处的反对角奇偶校验块的值通过下式计算得到:
;
其中,x=1,2,……f-1。
在一些实施中,磁盘阵列不包含热备份存储空间,一个纠删组循环包含的纠删组的数量根据预设条带宽度和预设组宽度计算得到,且一个纠删组循环所包含的纠删组的数量小于或等于磁盘阵列所包含的纠删组的总数。
在一些实施中,磁盘阵列包含热备份存储空间,且在一个纠删组循环中热备份存储空间存储于同一磁盘中,一个纠删组循环包含的纠删组的数量为一个热备份存储空间循环所包含的热备份存储空间的组数与不包含热备份存储空间时一个纠删组循环包含的纠删组的数量的最小公倍数;
不包含热备份存储空间时一个纠删组循环包含的纠删组的数量根据预设条带宽度和预设组宽度计算得到,且一个纠删组循环所包含的纠删组的数量小于或等于磁盘阵列所包含的纠删组的总数。
在一些实施中,一个纠删组循环中,相邻的两个纠删组循环中的热备份存储空间向左侧或右侧偏移一个磁盘。
在一些实施中,按顺序排布纠删组中的第一个条带组的条带,包括:
按先数据条带后校验条带的顺序排布纠删组中的第一个条带组的条带;
校验条带包括行校验条带、对角线校验条带和反对角线校验条带。
在一些实施中,本发明实施例提供的三盘容错存储装置还可以包括:
读数据单元,用于当接收到对磁盘阵列的读数据命令时,根据读数据命令中携带的待读取数据的标识和按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置的纠删计算方式,计算得到待读取数据对应的数据块;
将读取到的数据块组成反馈数据进行反馈。
在一些实施中,本发明实施例提供的三盘容错存储装置还可以包括:
重构计算单元,用于当磁盘阵列中存在不超出三块坏盘时,根据坏盘在磁盘阵列中的排列位置以及按一个待计算数据组对应的纠删组分布在各磁盘中的数据量相同的原则,将条带组依次存入各磁盘中纠删组对应的位置的纠删计算方式,对坏盘中的数据进行数据重构。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
图10为本发明实施例提供的一种三盘容错存储设备的结构示意图。
如图10所示,本发明实施例提供的三盘容错存储设备包括:
存储器1010,用于存储计算机程序1011;
处理器1020,用于执行计算机程序1011,该计算机程序1011被处理器1020执行时实现如上述任意一项实施例所述三盘容错存储方法的步骤。
其中,处理器1020可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器1020可以采用数字信号处理DSP(Digital Signal Processing)、现场可编程门阵列FPGA(Field-Programmable Gate Array)、可编程逻辑阵列PLA(Programmable LogicArray)中的至少一种硬件形式来实现。处理器1020也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器CPU(CentralProcessing Unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1020可以集成有图像处理器GPU(Graphics Processing Unit),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1020还可以包括人工智能AI(Artificial Intelligence)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1010可以包括一个或多个存储介质,该存储介质可以是非暂态的。存储器1010还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器1010至少用于存储以下计算机程序1011,其中,该计算机程序1011被处理器1020加载并执行之后,能够实现前述任一实施例公开的三盘容错存储方法中的相关步骤。另外,存储器1010所存储的资源还可以包括操作系统1012和数据1013等,存储方式可以是短暂存储或者永久存储。其中,操作系统1012可以为Windows。数据1013可以包括但不限于上述方法所涉及到的数据。
在一些实施例中,三盘容错存储设备还可包括有显示屏1030、电源1040、通信接口1050、输入输出接口1060、传感器1070以及通信总线1080。
本领域技术人员可以理解,图10中示出的结构并不构成对三盘容错存储设备的限定,可以包括比图示更多或更少的组件。
本发明实施例提供的三盘容错存储设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的三盘容错存储方法,效果同上。
需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。
为此,本发明实施例还提供一种存储介质,该存储介质上存储有计算机程序,计算机程序被处理器执行时实现如三盘容错存储方法的步骤。
该存储介质可以包括:U盘、移动硬盘、只读存储器ROM(Read-Only Memory)、随机存取存储器RAM(Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例中提供的存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的三盘容错存储方法的步骤,效果同上。
以上对本发明所提供的一种三盘容错存储方法、装置、设备、存储介质及磁盘阵列进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及存储介质而言,由于其与实施例公开的方法及磁盘阵列相对应,所以描述的比较简单,相关之处参见方法及磁盘阵列部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (18)
1.一种三盘容错存储方法,其特征在于,包括:
将待写入磁盘阵列的待写入数据分为a×b个待计算数据组;a为所述磁盘阵列的纠删组的数量,b为一个所述纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,z为所述磁盘阵列中的磁盘数量,w为预设组宽度,一个所述纠删组中的数据平均分布于所述磁盘阵列的各磁盘中;
将每个待计算数据组分为e个子计算组,并将每个所述子计算组分为m个数据块;
纵向排列所述子计算组,横向排列所述子计算组中的所述数据块,得到待计算数据块阵列,以所述数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以所述数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以所述数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以所述数据块阵列中各列所述数据块的集合为m个数据条带,得到包含m+3个条带的一个所述条带组;
按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置;
其中,z大于r,且r大于或等于7。
2.根据权利要求1所述的三盘容错存储方法,其特征在于,所述按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置,包括:
在各所述磁盘中,按顺序排布所述纠删组中的第一个所述条带组的条带;自第二个所述条带组中,依次将所述条带组中的条带插入上一个所述条带组中对应位置,并保证各所述磁盘中的条带总长度对齐。
3.根据权利要求2所述的三盘容错存储方法,其特征在于,所述在各所述磁盘中,按顺序排布所述纠删组中的第一个所述条带组的条带;自第二个所述条带组中,依次将所述条带组中的条带插入上一个所述条带组中对应位置,并保证各所述磁盘中的条带总长度对齐,包括:
若条带宽度为奇数,则依次排布所述条带组中的所述数据条带和校验条带;
若所述条带宽度为偶数,则在所述条带组中的所述校验条带再次回到所述磁盘循环的一侧时,将所述校验条带调换位置;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
4.根据权利要求2所述的三盘容错存储方法,其特征在于,所述按顺序排布所述纠删组中的第一个所述条带组的条带,包括:
按先校验条带后所述数据条带的顺序排布所述纠删组中的第一个所述条带组的条带;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
5.根据权利要求4所述的三盘容错存储方法,其特征在于,所述磁盘阵列不包含热备份存储空间,一个纠删组循环包含的所述纠删组的数量根据所述预设条带宽度和所述预设组宽度计算得到,且一个所述纠删组循环所包含的所述纠删组的数量小于或等于所述磁盘阵列所包含的所述纠删组的总数。
6.根据权利要求4所述的三盘容错存储方法,其特征在于,所述磁盘阵列包含热备份存储空间,且在一个纠删组循环中所述热备份存储空间存储于同一所述磁盘中,一个所述纠删组循环包含的所述纠删组的数量为一个热备份存储空间循环所包含的所述热备份存储空间的组数与不包含所述热备份存储空间时一个所述纠删组循环包含的所述纠删组的数量的最小公倍数;
不包含所述热备份存储空间时一个所述纠删组循环包含的所述纠删组的数量根据所述预设条带宽度和所述预设组宽度计算得到,且一个所述纠删组循环所包含的所述纠删组的数量小于或等于所述磁盘阵列所包含的所述纠删组的总数。
7.根据权利要求6所述的三盘容错存储方法,其特征在于,一个所述纠删组循环中,相邻的两个所述纠删组循环中的所述热备份存储空间向左侧或右侧偏移一个所述磁盘。
8.根据权利要求2所述的三盘容错存储方法,其特征在于,所述按顺序排布所述纠删组中的第一个所述条带组的条带,包括:
按先所述数据条带后校验条带的顺序排布所述纠删组中的第一个所述条带组的条带;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
9.根据权利要求1所述的三盘容错存储方法,其特征在于,还包括:
当接收到对所述磁盘阵列的读数据命令时,根据所述读数据命令中携带的待读取数据的标识和所述按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置的纠删计算方式,计算得到所述待读取数据对应的所述数据块;
将读取到的所述数据块组成反馈数据进行反馈。
10.根据权利要求1所述的三盘容错存储方法,其特征在于,还包括:
当所述磁盘阵列中存在不超出三块坏盘时,根据所述坏盘在所述磁盘阵列中的排列位置以及所述按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置的纠删计算方式,对所述坏盘中的数据进行数据重构。
11.一种磁盘阵列,其特征在于,包括z块磁盘,所述磁盘中存储待写入数据的方法,包括:
将待写入磁盘阵列的所述待写入数据分为a×b个待计算数据组;a为所述磁盘阵列的纠删组的数量,b为一个所述纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,w为预设组宽度,一个所述纠删组中的数据平均分布于所述磁盘阵列的各所述磁盘中;
将每个待计算数据组分为e个子计算组,并将每个所述子计算组分为m个数据块;
纵向排列所述子计算组,横向排列所述子计算组中的所述数据块,得到待计算数据块阵列,以所述数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以所述数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以所述数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以所述数据块阵列中各列所述数据块的集合为m个数据条带,得到包含m+3个条带的一个所述条带组;
按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置;
其中,z大于r,且r大于或等于7。
12.根据权利要求11所述的磁盘阵列,其特征在于,所述按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置,包括:
在各所述磁盘中,按顺序排布所述纠删组中的第一个所述条带组的条带;自第二个所述条带组中,依次将所述条带组中的条带插入上一个所述条带组中对应位置,并保证各所述磁盘中的条带总长度对齐。
13.根据权利要求12所述的磁盘阵列,其特征在于,所述在各所述磁盘中,按顺序排布所述纠删组中的第一个所述条带组的条带;自第二个所述条带组中,依次将所述条带组中的条带插入上一个所述条带组中对应位置,并保证各所述磁盘中的条带总长度对齐,包括:
若条带宽度为奇数,则依次排布所述条带组中的所述数据条带和校验条带;
若所述条带宽度为偶数,则在所述条带组中的所述校验条带再次回到所述磁盘循环的一侧时,将所述校验条带调换位置;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
14.根据权利要求12所述的磁盘阵列,其特征在于,所述按顺序排布所述纠删组中的第一个所述条带组的条带,包括:
按先校验条带后所述数据条带的顺序排布所述纠删组中的第一个所述条带组的条带;
所述校验条带包括所述行校验条带、所述对角线校验条带和所述反对角线校验条带。
15.根据权利要求14所述的磁盘阵列,其特征在于,若所述磁盘阵列不包含热备份存储空间,则一个纠删组循环包含的所述纠删组的数量根据所述预设条带宽度和所述预设组宽度计算得到,且一个所述纠删组循环所包含的所述纠删组的数量小于或等于所述磁盘阵列所包含的所述纠删组的总数;
若所述磁盘阵列包含所述热备份存储空间,且在一个纠删组循环中所述热备份存储空间存储于同一所述磁盘中,则一个所述纠删组循环包含的所述纠删组的数量为一个热备份存储空间循环所包含的所述热备份存储空间的组数与不包含所述热备份存储空间时一个所述纠删组循环包含的所述纠删组的数量的最小公倍数。
16.一种三盘容错存储装置,其特征在于,包括:
第一分组单元,用于将待写入磁盘阵列的待写入数据分为a×b个待计算数据组;a为所述磁盘阵列的纠删组的数量,b为一个所述纠删组中的条带组的数量,b×r=z×w,r为预设条带宽度,z为所述磁盘阵列中的磁盘数量,w为预设组宽度,一个所述纠删组中的数据平均分布于所述磁盘阵列的各磁盘中;
第二分组单元,用于将每个待计算数据组分为e个子计算组,并将每个所述子计算组分为m个数据块;
条带计算单元,用于纵向排列所述子计算组,横向排列所述子计算组中的所述数据块,得到待计算数据块阵列,以所述数据块阵列中各行数据的异或和计算对应的行校验值的集合为行校验条带,以所述数据块阵列中各对角线数据的异或和计算对应的对角线校验值的集合为对角线校验条带,以所述数据块阵列中各反对角线数据的异或和计算对应的反对角线校验值的集合为反对角线校验条带,以所述数据块阵列中各列所述数据块的集合为m个数据条带,得到包含m+3个条带的一个所述条带组;
写数据单元,用于按一个所述待计算数据组对应的所述纠删组分布在各所述磁盘中的数据量相同的原则,将所述条带组依次存入各所述磁盘中所述纠删组对应的位置;
其中,z大于r,且r大于或等于7。
17.一种三盘容错存储设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至10任意一项所述三盘容错存储方法的步骤。
18.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10任意一项所述三盘容错存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311707397.3A CN117407209B (zh) | 2023-12-13 | 2023-12-13 | 三盘容错存储方法、装置、设备、存储介质及磁盘阵列 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311707397.3A CN117407209B (zh) | 2023-12-13 | 2023-12-13 | 三盘容错存储方法、装置、设备、存储介质及磁盘阵列 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117407209A CN117407209A (zh) | 2024-01-16 |
CN117407209B true CN117407209B (zh) | 2024-03-12 |
Family
ID=89496591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311707397.3A Active CN117407209B (zh) | 2023-12-13 | 2023-12-13 | 三盘容错存储方法、装置、设备、存储介质及磁盘阵列 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407209B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040085723A1 (en) * | 2002-10-28 | 2004-05-06 | Hartung Steven F. | Optical disk storage method and apparatus |
CN101339524A (zh) * | 2008-05-22 | 2009-01-07 | 清华大学 | 大规模磁盘阵列存储系统的磁盘容错方法 |
US20110302446A1 (en) * | 2007-05-10 | 2011-12-08 | International Business Machines Corporation | Monitoring lost data in a storage system |
-
2023
- 2023-12-13 CN CN202311707397.3A patent/CN117407209B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040085723A1 (en) * | 2002-10-28 | 2004-05-06 | Hartung Steven F. | Optical disk storage method and apparatus |
US20110302446A1 (en) * | 2007-05-10 | 2011-12-08 | International Business Machines Corporation | Monitoring lost data in a storage system |
CN101339524A (zh) * | 2008-05-22 | 2009-01-07 | 清华大学 | 大规模磁盘阵列存储系统的磁盘容错方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117407209A (zh) | 2024-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9552258B2 (en) | Method and system for storing data in raid memory devices | |
US7188270B1 (en) | Method and system for a disk fault tolerance in a disk array using rotating parity | |
US8566673B2 (en) | Method for improving performance in RAID systems | |
US8086783B2 (en) | High availability memory system | |
US7934120B2 (en) | Storing data redundantly | |
CN107526531B (zh) | 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备 | |
US8843782B2 (en) | Method and apparatus for reconstructing redundant array of inexpensive disks, and system | |
US9811416B2 (en) | Memory access method and apparatus for message-type memory module | |
CN104246708B (zh) | 针对nand闪存上数据的存储的架构 | |
US8489916B2 (en) | Multi-disk fault-tolerant system, method for generating a check block, and method for recovering a data block | |
WO2015095850A1 (en) | Method to distribute user data and error correction data over different page types by leveraging error rate variations | |
EP2921961A2 (en) | Method of, and apparatus for, improved data recovery in a storage system | |
US8365043B2 (en) | Efficient redundant memory unit array | |
CN105353974B (zh) | 一种适用于磁盘阵列及分布式存储系统的二容错编码方法 | |
CN105808170B (zh) | 一种能够修复单磁盘错误的raid6编码方法 | |
US20150100819A1 (en) | Method of Recovering Data in a Storage Device | |
CN103412799A (zh) | 数据恢复方法、数据恢复设备和分布式存储系统 | |
JP2007524930A (ja) | ディスクアレイ内の2つのディスク故障に対する保護を提供する一様で対称な二重故障訂正技術 | |
JP2016038767A (ja) | ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法 | |
US7133965B2 (en) | Raid storage device | |
CN104516679A (zh) | 一种raid数据处理方法及装置 | |
CN111930552A (zh) | 坏块数据的恢复方法、装置、存储介质及电子设备 | |
CN104461373B (zh) | 一种raid数据处理方法及装置 | |
CN104658609A (zh) | 用于存储器系统的纠错码分布的方法和系统 | |
CN117407209B (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 |