CN104503706B - 一种基于磁盘阵列的数据存储及读取方法 - Google Patents

一种基于磁盘阵列的数据存储及读取方法 Download PDF

Info

Publication number
CN104503706B
CN104503706B CN201410810681.8A CN201410810681A CN104503706B CN 104503706 B CN104503706 B CN 104503706B CN 201410810681 A CN201410810681 A CN 201410810681A CN 104503706 B CN104503706 B CN 104503706B
Authority
CN
China
Prior art keywords
band
sub
data
mirror image
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.)
Expired - Fee Related
Application number
CN201410810681.8A
Other languages
English (en)
Other versions
CN104503706A (zh
Inventor
何文婷
刘振军
刘浏
董欢庆
张军伟
蔡杰明
杨琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Zhongke Bluewhale Information Technology Co ltd
Institute of Computing Technology of CAS
Original Assignee
Tianjin Zhongke Bluewhale Information Technology Co ltd
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Zhongke Bluewhale Information Technology Co ltd, Institute of Computing Technology of CAS filed Critical Tianjin Zhongke Bluewhale Information Technology Co ltd
Priority to CN201410810681.8A priority Critical patent/CN104503706B/zh
Publication of CN104503706A publication Critical patent/CN104503706A/zh
Application granted granted Critical
Publication of CN104503706B publication Critical patent/CN104503706B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明提供一种基于磁盘阵列的数据存储方法,其中每个条带包括空子条带和纠删码子条带;存储方法包括下列步骤:1)确定需要写入数据的条带并将其作为当前条带;2)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的空子条带,写入完毕后将该空子条带转换为纠删码子条带;3)在新的纠删码子条带生效后,将当前条带的原有纠删码子条带转换为空子条带。所述条带还可以进一步包括镜像子条带。另外,本发明还提供了相应的基于磁盘阵列的数据读取方法。本发明能够解决纠删码技术中的WriteHole问题;能够提高基于纠删码的存储系统的I/O性能;无论在写入数据块较多还是较少时均能达到较高的性能。

Description

一种基于磁盘阵列的数据存储及读取方法
技术领域
本发明涉及存储技术领域,具体地说,本发明涉及一种基于磁盘冗余阵列的数据存储及读取方法。
背景技术
副本和纠删码技术是目前常用的两种高可靠技术。其中,副本技术就是将一份数据完整的拷贝多份存储,以n份副本为例,使用副本技术后,磁盘阵列能够存储数据的量只占原始储存容量的1/n,这会导致硬件采购成本、降温成本、空间占用成本大幅提高。而纠删码(erasure code)技术能够以更小的数据冗余度获得更高数据可靠性。它的基本原理如下:给定n个数据块d1,d2,...,dn,RS技术中根据这n个数据块生成m个校验块c1,c2,...,cm。对于任意的n和m,从原始数据块及其校验块中任取不少于n块就能解码出原始数据,即纠删码技术中最多容忍m个数据块或者校验块同时丢失。
纠删码在存储中的应用典型代表就是RAID(Redundant Array of IndependentDisks,独立磁盘冗余阵列)。RAID技术将多块磁盘形成一个有机整体,能够提供整体更高的可靠性、容量、性能。使用RAID技术,高性能计算(HPC)使用的文件系统能够以很小的存储开销(<25%)保证数据高可用性。然而,目前的纠删码技术也存在自身的一些缺陷。
一方面,现存的RAID类型存储技术存在WriteHole问题(又称非一致性更新问题),其中包括广为应用的RAID5,RAID6等。RAID技术中,n+m个分布在不同磁盘上的数据块构成一个具有一致性的条带,RAID条带的一致性是指条带中的数据块和校验块符合预设的不变式,这样,条带中任一数据块丢失时,只要从n个原始数据块和m个校验块中任取不少于n块,就能根据预设的不变式解码出原始数据。当条带中的某个或某些数据块需要修改时,系统通常需要读出相应的一个或多个校验块,然后根据新的数据块重新计算校验块,最后再同时写入新的数据块和校验块。如果在同时写入的过程中突然发生RAID驱动故障(如系统崩溃或断电),就可能会出现部分数据块或校验块已修改,而另一部分数据块或检验块尚未修改完成的现象,以及同一块数据块或校验块只修改了一部分而另一部分未修改完成的现象,上述现象将导致条带上的数据块和校验块不一致的问题,又称为非一致性更新问题(Inconsistent Update Problem)。而当需要同时更新的数据块和校验块的数目和超过m时,上述非一致性更新问题会导致相应条带中的数据,无论是故障前的老数据还是要写入的新数据,都无法利用纠删码技术恢复出来,此时就产生了WriteHole。
另一方面,相对于副本技术,基于纠删码技术的存储系统I/O性能较弱。首先,纠删码技术中,写入操作依赖对旧数据和旧校验的同步读取操作,当写入数据块较少时,其性能相对较低。其次,纠删码比副本需要更多的缓存来优化写性能,难以适用于需要大量并发写操作的应用场合。再者,冗余副本可用来提供更多的读数据带宽和进行负载平衡的空间,而现有的纠删码技术不具备上述优点。
发明内容
因此,本发明的任务是提供一种能够克服上述缺陷的基于磁盘阵列的数据存储及读取解决方案。
本发明提供了一种基于磁盘阵列的数据存储方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;其特征在于,每个所述条带包括空子条带和纠删码子条带;所述基于磁盘阵列的数据存储方法包括下列步骤:
1)确定需要写入数据的条带并将其作为当前条带;
2)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的空子条带,写入完毕后将该空子条带转换为纠删码子条带;所述全条带数据是所述的满足纠删码不变式的一组数据块及其校验块;
3)在新的纠删码子条带生效后,将当前条带的原有纠删码子条带转换为空子条带。
其中,所述每个所述条带还包括镜像子条带,所述逻辑卷还包括副本存储区;
所述基于磁盘阵列的数据存储方法还包括步骤:
4)当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。
其中,所述步骤3)还包括:在新的纠删码子条带生效后,将当前条带的原有镜像子条带转换为空子条带;
所述步骤4)还包括:如果当前条带中没有镜像子条带,则选择任意一个空子条带作为镜像子条带,将所述非全条带数据写入该镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。
其中,每个所述条带包括n个数据块存储单元和m个校验块存储单元,对于空子条带,纠删码子条带和镜像子条带中的任意一种子条带,每个子条带均包括n个数据块子存储单元和m个校验块子存储单元;
所述步骤4)中,所述镜像子条带中的每个数据块子存储单元均对应于所述副本存储区的m个用于存储副本的子存储单元。
其中,所述步骤4)中,每个所述镜像子条带对应于m列竖条带,这m列竖条带作为该镜像子条带所对应的副本存储区,这m列竖条带分别与该镜像子条带中的m个校验块子存储单元处于同一列(即在同一磁盘上);每列竖条带包括n个副本子存储单元,这n个副本子存储单元分别对应于所述镜像子条带中的n个数据块子存储单元。
其中,所述逻辑卷中,相邻条带的校验块存储单元的位置顺序轮转,这样,相邻条带的镜像子条带所对应的副本存储区的位置也顺序轮转。
本发明还提供了一种基于磁盘阵列的数据存储方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;每个所述条带包括纠删码子条带和镜像子条带,所述逻辑卷还包括副本存储区;所述基于磁盘阵列的数据存储方法包括下列步骤:
10)确定需要写入数据的条带并将其作为当前条带;
20)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的纠删码子条带;所述全条带数据是所述的满足纠删码不变式的一组数据块及其校验块;
30)当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。
其中,每个所述条带包括n个数据块存储单元和m个校验块存储单元,对于纠删码子条带和镜像子条带中的任意一种子条带,每个子条带均包括n个数据块子存储单元和m个校验块子存储单元;
其中,所述基于磁盘阵列的数据存储方法还包括步骤:
40)当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。
其中,所述步骤40)中,所述镜像子条带中的每个数据块子存储单元均对应于所述副本存储区的m个用于存储副本的子存储单元。
其中,所述步骤40)中,每个所述镜像子条带对应于m列竖条带,这m列竖条带作为该镜像子条带所对应的副本存储区,这m列竖条带分别与该镜像子条带中的m个校验块子存储单元处于同一列;每列竖条带包括n个副本子存储单元,这n个副本子存储单元分别对应于所述镜像子条带中的n个数据块子存储单元;
所述逻辑卷中,相邻条带的校验块存储单元的位置顺序轮转,这样,相邻条带的镜像子条带所对应的副本存储区的位置也顺序轮转。
本发明还提供了一种基于磁盘阵列的数据读取方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;每个所述条带包括空子条带,纠删码子条带和镜像子条带,所述逻辑卷还包括用于存储写入所述镜像子条带的数据块的镜像的副本存储区;其特征在于,包括下列步骤:
a)对于要读取的任意一个条带的任意存储位置,优先从该条带的镜像子条带的相应存储位置读取数据;
b)如果所述镜像子条带中的相应存储位置为空,则从同一条带的纠删码子条带的相应存储位置读取数据。
本发明还提供了一种基于磁盘阵列的数据读取方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;每个所述条带包括纠删码子条带和镜像子条带,所述逻辑卷还包括用于存储写入所述镜像子条带的数据块的镜像的副本存储区;其特征在于,包括下列步骤:
a)对于要读取的任意一个条带的任意存储位置,优先从该条带的镜像子条带的相应存储位置读取数据;
b)如果所述镜像子条带中的相应存储位置为空,则从同一条带的纠删码子条带的相应存储位置读取数据。
相对于现有技术,本发明具有下列技术效果:
1、本发明能够解决纠删码技术中的WriteHole问题。
2、本发明能够提高基于纠删码的存储系统的I/O性能。
3、本发明无论在写入数据块较多还是较少时均能达到较高的性能。
4、本发明允许纠删码存储过程有较高延迟,并且减少纠删码同一数据块上并发的重复I/O。
5、本发明能够减少纠删码的缓存开销。
6、本发明能够提供更多的读数据带宽和进行负载平衡的空间。
附图说明
以下,结合附图来详细说明本发明的实施例,其中:
图1示出了RAID逻辑卷下的一个条带;
图2示出了根据本发明的一个实施例的条带中的三个子条带;
图3示出了本发明一个实施例中具有副本存储功能的一个条带的存储结构;
图4示出了本发明一个实施例中一组条带的一个轮转周期的示意图;
图5示出了本发明一个实施例中增加了副本存储区的由四个条带组成的条带组;
图6示出了本发明一个实施例中一次不满条带写中镜像操作的示意图;
图7示出了本发明一个实施例中基于图5所示的存储结构的写流程;
图8示出了本发明一个实施例中基于图5所示的存储结构的读流程。
具体实施方式
本发明提出了一种纠删码与镜像结合的存储方法,它兼具纠删码和副本技术的优点,下面结合实施例对本发明做进一步的描述。其中,为便于理解,首先由浅入深地介绍本发明的存储结构,然后再叙述基于此存储结构的读写流程及其相应技术效果。
根据本发明的一个实施例,提供了一种基于RAID的数据存储方法,其中,磁盘阵列的每一块磁盘(例如硬盘)作为一个故障单元,直接被整体系统感知。假设磁盘阵列中n块磁盘为普通的数据盘,而m块磁盘为校验盘(parity盘),那么在逻辑卷层可确定系统可靠性级别n+m,即支持最多m块磁盘故障而数据不丢失。下面以n=12,m=4(即12+4的可靠性)为例来叙述。
如前文所述,RAID中,逻辑卷下的条带是贯穿磁盘阵列中所有磁盘上的存储单元的一种数据结构,该数据结构用于在n+m个磁盘上分布式地存储n个数据块和m个校验块(各个数据块和校验块大小均相同),且这n个数据块和m个校验块具有一致性,即条带中的数据块和校验块符合预设的不变式。本实施例中采用里所码(Reed Solomon,缩写为RS)作为纠删码,此时,前述的预设的不变式就是基于RS技术的不变式。
图1示出了RAID逻辑卷下的一个条带,其中每个方格表示一个存储单元,该存储单元用于存储一个数据块或者校验块,并且,图1所示的条带中的存储单元与磁盘阵列中的磁盘一一对应,这样,该条带就贯穿了磁盘阵列中所有磁盘。该条带中,标注了字母P的存储单元表示用于存储校验块的存储单元。
本实施例的数据存储方法中,系统的逻辑卷下的每个条带均包括三个逻辑子条带。图2示出了根据本发明的一个实施例的条带中的三个子条带,其中每个方格表示一个子存储单元(下文中有时将子存储单元称为chunk,它是本发明中进行数据存储和读取操作的基本单元),图2每一列共三个方格对应于图1中的一个方格,即三个子存储单元对应于图1中的一个存储单元。
本实施例中,每个子条带均可以在三个状态间转换,这三个状态分别是空(N),镜像(M)和纠删码(RS)状态,M状态也可以称为副本状态,N状态也可以称为备用状态。在一个条带中,其三个子条带中最多具有一个RS状态的子条带,最多具有一个M状态的子条带,最少具有一个N状态的子条带。
其中,子条带进入RS状态的含义是:该子条带受到RS校验的保护。本文中将进入RS状态的子条带称为RS子条带。如前文所述,在同一条带内,三个子条带中最多只允许有一个有效的RS子条带。当某个时刻RS子条带成功生效后,同一条带中的原有的RS子条带的数据都已经没有价值,空间可以回收。因此,当某个时刻RS子条带成功生效后,同一条带中的原有RS子条带转换至N状态。同理,当下一个RS子条带生效时,当前这个RS子条带也会失效。通过这种方式,即可保持每个条带中最多只有一个RS子条带。另外,在一个实施例中,当某个时刻RS子条带成功生效后,该条带的最新数据均全部存储至新的RS子条带中,所以同一条带中的M子条带的数据也都失去价值,其空间也可以回收,即此时同一条带中的原有M子条带也转换至N状态。也就是说,在本实施例中,当某个时刻RS子条带成功生效后,同一条带中的其它原有子条带均转换至N状态。
子条带进入M状态的含义是:用户向一个条带写入镜像数据时,该数据会被写入至该条带的M子条带中,从而获得镜像保护,本文中将进入M状态的子条带可称为M子条带。当前如果没有M条带,则将一个N条带作为新的M条带并写入镜像数据。在同一条带中,最多只允许有1个M子条带。
子条带进入N状态的含义是:该子条带中没有数据,可随时存入新的数据块,校验块或者镜像块。本文中将进入N状态的子条带称为N子条带。在同一条带内,三个子条带中至少有一个N子条带。当RS子条带和M子条带都最多只允许一条时,显然其中至少有一条N子条带。在某一时刻,某个N子条带上可能存放正在写入但未写入完成的数据,这个正在写入的数据可能是镜像数据,也可能是一条新的RS全条带数据(RS全条带数据是指具有一致性的n个数据块和m个检验块);当写入成功之后,N子条带根据成功写入的是镜像数据还是RS数据相应地转化为M子条带或者RS子条带。
本实施例中,对于每个条带,还为其分配用于存储副本(即用于实现镜像保护)的m×n个子存储单元(用于存储副本的子存储单元大小与条带中子存储单元一致),M子条带中的每个数据块子存储单元均对应于m个用于存储副本的子存储单元。图3示出了具有副本存储功能的一个条带的存储结构,其中包括三个子条带和四列副本存储空间。每列副本存储空间具有n个子存储单元,且该列副本存储空间位于用于存储校验块的子存储单元正下方,为便于描述,下文中有时将用于存储校验块的子存储单元称为校验子单元,将前述副本存储空间称为竖条带,四列副本存储空间就是四个竖条带。图3中,标记P的方格代表用于存储检验块的子存储单元,标记M的方格代表三个子条带下方用于存储副本的子存储单元(为便于描述,下文称为副本子单元或者镜像子单元)。参考图3,当有数据块存入该条带的M子条带时,该数据块会被同时存储到与其对应的m个副本子单元中,具体的对应方式将在下文中进一步地说明。
进一步地,本实施例中,四个条带组成一组,条带组中将纠删码子条带的校验子单元顺序轮转,使得数据,校验信息和镜像均匀的分布在所有的磁盘上。图4示出了一组条带的一个轮转周期的示意图。图5示出了增加了副本存储区的由四个条带组成的条带组,其中用不同的灰度来区分不同的条带及其所属副本存储区,即相邻条带的镜像子条带所对应的副本存储区也随着纠删码子条带的校验子单元顺序轮转。这样,每个条带所对应的副本存储区正好错开。在优选实施例中,存储系统以条带组尺寸的整倍数来划分存储容量。
以上结合实施例介绍了本发明的条带和条带组的存储单元布局,下面再进一步地描述基于上述布局的数据读写方法及其技术效果。
在一个实施例中,写数据的形式包括满条带写和不满条带写。当磁盘阵列接收到以大小为全条带数据量(即前文所述的n个数据块大小)的写请求时,系统直接计算n个数据块的m个校验块,并将数据块和校验块写为纠删码子条带,以节省系统容量和带宽方面的开销。这种写入方式可称为满条带写。当写入数据较小时,例如需要写入的数据量未达到全条带数据量时,系统采用副本方式放置数据,即将数据存储至M子条带及其对应的副本存储区。本发明中将这种写入方式可称为不满条带写。如前文所述,每个子条带以一定的粒度分为n+m个chunk(即子单元)。图6示出了一次不满条带写中镜像操作的示意图,其中假设第一个子条带为M子条带,当要写第4个chunk时,同时下发m个镜像写。如图6所示,M子条带上每个chunk对应的镜像数据必定在对应于该条带的校验所在磁盘上,即M子条带上每个chunk对应的镜像数据均存储于校验磁盘上。这是因为:如果镜像数据存放在非校验磁盘上,那么一个M子条带上的某chunk必定存在两份副本在同一个磁盘上。这样当M-1个磁盘失效时,该chunk的数据全部丢失,这样就无法确保系统的可靠性为N+M。
图7示出了本发明一个实施例的基于图5所示的存储结构的写流程,具体包括下列步骤:
步骤101:接收写请求。本实施例中,写请求既可以是写入新数据的请求,也可以是对原有数据的修改请求。当写请求是对原有数据的修改请求时,需要先找到原有数据的存储位置,即存储原有数据的条带和相应的存储单元,所找到的条带被作为当前条带。当写请求是写入新数据的请求时,则任取一个尚未存储数据的条带作为当前条带。
步骤102:判断所述写请求是否为满条带写,如果是,进入步骤103,否则,进入步骤108。
步骤103:基于需要写入的n个原始数据块,计算出额外的m个冗余校验块,从而得到具有n+m可靠性的全条带数据。
步骤104:对于当前选定的将要写入数据的条带,根据该条带的三个子条带的当前状态,确定该条带的N子条带位置。上述步骤103和104的顺序可以互换。
步骤105:下发对N子条带的N个原始数据块以及M个冗余校验数据块的写请求。
步骤106:修改步骤104所选条带中三个子条带的状态。被写入新数据的N子条带转为RS子条带,其余子条带标为N子条带。例如,当写入数据前三个子条带状态分别为N,M,RS时,写成功后三个子条带状态分别变更为RS,N,N状态。
步骤107:写成功后,通过unmap操作清空步骤104所选条带中的原M子条带和RS子条带上的数据。步骤106和107执行完之后,执行步骤112。另外,本步骤实际上是通过unmap操作将除了新RS子条带外的其余子条带都清空,如果原先只有N条带,可以跳过本步骤,直接执行步骤112。
上述步骤105至107可看作满条带写的过程,该过程中,由于新的全条带数据不覆盖原RS子条带上的数据,因此能够避免类RAID5系统中典型的WriteHole问题。
步骤108:判断所选条带中是否存在M子条带,如果是,进入步骤110,否则,进入步骤109。
步骤109:选择一个N子条带作为新的M子条带,然后继续执行步骤110。
步骤110:下发对镜像子条带及对应竖条带上m个镜像位置的写请求。
步骤111:写成功后,修改镜像子条带对应的位图(即bitmap),位图表明M子条带上哪些位置有数据。
上述步骤108至111可看作不满条带写的过程,一方面,该过程中新的数据不覆盖原RS子条带上的数据,因此能够避免类RAID5系统中典型的WriteHole问题,另一方面,此时的写操作不需要读取数据和计算校验块等过程,因此能够提高系统的写性能。
步骤112:向上返回成功,本次写操作完毕。
图8示出了本发明一个实施例中基于图5所示的存储结构的读流程,具体包括下列步骤:
步骤201:接收读请求。本实施例中,假定要读取数据的位置(地址)已知,即要读取的条带已知。
步骤202:对于要读取的条带,获得该条带的三个子条带状态。
步骤203:判断要读取的当前条带中是否存在M子条带,如果判断为是,进入步骤204,否则,进入步骤207。
步骤204:获得M子条带的位图信息。
步骤205:判断位图中对应的子单元位(chunk位)是否为1(本实施例中,1表示有效,即相应的子单元中有数据),如果是,进入步骤206,否则,进入步骤207。
步骤206:读取M子条带中对应的子单元,然后执行步骤208。本步骤中,可以从M子条带中对应的子单元的m个位于竖条带的副本位置同步读取数据,从而提高读速率。
步骤207:读取RS子条带中对应的子单元,然后执行步骤208。
步骤208:向上层返回数据,本次读操作完毕。
可以看出,图6所示的存储结构中,无论新写入的数据是需要镜像的小写(不满条带写)数据,还是无需镜像的满条带写数据,均有其存放的位置。对于一个条带,在任一时刻,其各个子条带分别承担着明确的角色,因此在任一时刻,3个子条带的状态是确定的。并且,基于三子条带加竖条带的设计,对于每个条带,除了三个连续的的子条带(每个子条带由n+m个子单元构成)空间外,还为M子条带预留了逻辑空间大小为m×n的副本空间(即竖条带)。竖条带正好分布在子条带的P(即校验块)所在的盘上。这种副本数据块分布允许任意4个盘损坏后副本数据仍然是完整的,从而保障了不满条带写数据的高可靠性。
另外,在系统运行期间,当条带长时间未写入新数据时,将该条带的M子条带上的数据和RS子条带上的数据进行合并,合并后的数据作为一个满条带写操作写入空子条带中,并将该空子条带作为新的RS子条带,原M子条带和RS子条带转换为空子条带。
对于(n+m)的纠删码设计,本发明的一个轮转所需的条带个数为:最小公倍数(n+m,m)/m,对于每个纠删码条带,需要3(n+m)的纠删码逻辑空间(即三个子条带的逻辑空间)和nm的镜像数据空间。这样的存储空间占用量远远小于副本技术的占用量。并且,随着时间的推移,冷却下来的条带的M子条带和RS子条带的数据会自动合并,使得存储空间占用量进一步降低。当系统采用64位的地址空间时,假设系统最多支持的校验块数目m=5,那么需要的逻辑空间最多为原来的8倍,需要多占用3位地址空间,这对64位空间而言可以接受的。也就是说,本发明能够利用较小的存储空间开销,实现较高的可靠性,同时显著提升I/O性能。
另外,需要说明的是,本发明并不限于三个子条带的存储结构,在其它一些实施例中,每个条带也可以仅包含两个子条带。例如,在一个实施例中,每个条带由纠删码子条带和空子条带组成,在存储数据时,当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的空子条带,写入完毕后将该空子条带转换为纠删码子条带;在新的纠删码子条带生效后,将当前条带的原有纠删码子条带转换为空子条带。该方案可以解决现有技术中所存在的WriteHole问题。又例如,在另一个实施例中,每个条带由纠删码子条带和镜像子条带(逻辑卷中具有与镜像子条带对应的副本存储区)组成,在存储数据时,当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的纠删码子条带;所述全条带数据是所述的满足纠删码不变式的一组数据块及其校验块;当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。该方案可以解决现有纠删码存储技术中对原有纠删码条带数据进行部分修改时所存在的延迟较高的问题,同时还能帮助提高基于纠删码的存储系统的I/O性能。
最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其它的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。

Claims (11)

1.一种基于磁盘阵列的数据存储方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;其特征在于,每个所述条带包括空子条带和纠删码子条带;所述基于磁盘阵列的数据存储方法包括下列步骤:
1)确定需要写入数据的条带并将其作为当前条带;
2)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的空子条带,写入完毕后将该空子条带转换为纠删码子条带;所述全条带数据是所述的满足纠删码不变式的一组数据块及其校验块;
3)在新的纠删码子条带生效后,将当前条带的原有纠删码子条带转换为空子条带。
2.根据权利要求1所述的基于磁盘阵列的数据存储方法,其特征在于,所述每个所述条带还包括镜像子条带,所述逻辑卷还包括副本存储区;
所述基于磁盘阵列的数据存储方法还包括步骤:
4)当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。
3.根据权利要求2所述的基于磁盘阵列的数据存储方法,其特征在于,所述步骤3)还包括:在新的纠删码子条带生效后,将当前条带的原有镜像子条带转换为空子条带;
所述步骤4)还包括:如果当前条带中没有镜像子条带,则选择任意一个空子条带作为镜像子条带,将所述非全条带数据写入该镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。
4.根据权利要求3所述的基于磁盘阵列的数据存储方法,其特征在于,每个所述条带包括n个数据块存储单元和m个校验块存储单元,对于空子条带,纠删码子条带和镜像子条带中的任意一种子条带,每个子条带均包括n个数据块子存储单元和m个校验块子存储单元;
所述步骤4)中,所述镜像子条带中的每个数据块子存储单元均对应于所述副本存储区的m个用于存储副本的子存储单元。
5.根据权利要求4所述的基于磁盘阵列的数据存储方法,其特征在于,所述步骤4)中,每个所述镜像子条带对应于m列竖条带,这m列竖条带作为该镜像子条带所对应的副本存储区,这m列竖条带分别与该镜像子条带中的m个校验块子存储单元处于同一列;每列竖条带包括n个副本子存储单元,这n个副本子存储单元分别对应于所述镜像子条带中的n个数据块子存储单元。
6.根据权利要求5所述的基于磁盘阵列的数据存储方法,其特征在于,所述逻辑卷中,相邻条带的校验块存储单元的位置顺序轮转,这样,相邻条带的镜像子条带所对应的副本存储区的位置也顺序轮转。
7.一种基于磁盘阵列的数据存储方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;其特征在于,每个所述条带包括纠删码子条带和镜像子条带,所述逻辑卷还包括副本存储区;所述基于磁盘阵列的数据存储方法包括下列步骤:
10)确定需要写入数据的条带并将其作为当前条带;
20)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的纠删码子条带;所述全条带数据是所述的满足纠删码不变式的一组数据块及其校验块;
30)当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。
8.根据权利要求7所述的基于磁盘阵列的数据存储方法,其特征在于,每个所述条带包括n个数据块存储单元和m个校验块存储单元,对于空子条带,纠删码子条带和镜像子条带中的任意一种子条带,每个子条带均包括n个数据块子存储单元和m个校验块子存储单元;
所述步骤4)中,所述镜像子条带中的每个数据块子存储单元均对应于所述副本存储区的m个用于存储副本的子存储单元。
9.根据权利要求8所述的基于磁盘阵列的数据存储方法,其特征在于,所述步骤4)中,每个所述镜像子条带对应于m列竖条带,这m列竖条带作为该镜像子条带所对应的副本存储区,这m列竖条带分别与该镜像子条带中的m个校验块子存储单元处于同一列;每列竖条带包括n个副本子存储单元,这n个副本子存储单元分别对应于所述镜像子条带中的n个数据块子存储单元;
所述逻辑卷中,相邻条带的校验块存储单元的位置顺序轮转,这样,相邻条带的镜像子条带所对应的副本存储区的位置也顺序轮转。
10.一种基于磁盘阵列的数据读取方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;其特征在于,每个所述条带包括空子条带,纠删码子条带和镜像子条带,所述逻辑卷还包括用于存储写入所述镜像子条带的数据块的镜像的副本存储区;其特征在于,包括下列步骤:
a)对于要读取的任意一个条带的任意存储位置,优先从该条带的镜像子条带的相应存储位置读取数据;
b)如果所述镜像子条带中的相应存储位置为空,则从同一条带的纠删码子条带的相应存储位置读取数据。
11.一种基于磁盘阵列的数据读取方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;其特征在于,每个所述条带包括纠删码子条带和镜像子条带,所述逻辑卷还包括用于存储写入所述镜像子条带的数据块的镜像的副本存储区;其特征在于,包括下列步骤:
a)对于要读取的任意一个条带的任意存储位置,优先从该条带的镜像子条带的相应存储位置读取数据;
b)如果所述镜像子条带中的相应存储位置为空,则从同一条带的纠删码子条带的相应存储位置读取数据。
CN201410810681.8A 2014-12-23 2014-12-23 一种基于磁盘阵列的数据存储及读取方法 Expired - Fee Related CN104503706B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410810681.8A CN104503706B (zh) 2014-12-23 2014-12-23 一种基于磁盘阵列的数据存储及读取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410810681.8A CN104503706B (zh) 2014-12-23 2014-12-23 一种基于磁盘阵列的数据存储及读取方法

Publications (2)

Publication Number Publication Date
CN104503706A CN104503706A (zh) 2015-04-08
CN104503706B true CN104503706B (zh) 2017-10-10

Family

ID=52945107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410810681.8A Expired - Fee Related CN104503706B (zh) 2014-12-23 2014-12-23 一种基于磁盘阵列的数据存储及读取方法

Country Status (1)

Country Link
CN (1) CN104503706B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630423B (zh) * 2015-12-25 2018-11-27 华中科技大学 一种基于数据缓存的纠删码集群存储扩容方法
CN106293543B (zh) * 2016-08-25 2019-03-12 中国科学院计算技术研究所 一种基于捎带回收的瓦记录raid写顺序化方法及装置
CN107797946B (zh) * 2016-09-06 2021-06-29 中车株洲电力机车研究所有限公司 一种车载存储装置
CN106484333A (zh) * 2016-10-18 2017-03-08 郑州云海信息技术有限公司 一种用于多个存储控制器的存储镜像方法
CN106681848B (zh) * 2016-12-13 2019-10-18 中国科学院计算技术研究所 一种纠删码raid的数据一致性保障方法及系统
CN107197324B (zh) * 2017-05-15 2020-11-20 苏州浪潮智能科技有限公司 一种分布式文件系统的视频容错方法及装置
CN108052294B (zh) * 2017-12-26 2021-05-28 郑州云海信息技术有限公司 一种分布式存储系统的修改写方法和修改写系统
CN110874284B (zh) * 2018-09-03 2024-03-22 阿里巴巴集团控股有限公司 数据处理的方法和装置
CN111176880B (zh) * 2018-11-09 2021-08-13 杭州海康威视系统技术有限公司 磁盘分配方法、装置和可读存储介质
CN109814807B (zh) * 2018-12-28 2022-05-06 曙光信息产业(北京)有限公司 一种数据存储方法及装置
CN111381767B (zh) * 2018-12-28 2024-03-26 阿里巴巴集团控股有限公司 一种数据处理方法及装置
CN111414271B (zh) * 2020-03-17 2023-10-13 上海爱数信息技术股份有限公司 一种基于自适应存储冗余策略的存储方法
CN112162693B (zh) * 2020-09-04 2024-06-18 郑州浪潮数据技术有限公司 一种数据刷写方法、装置、电子设备和存储介质
CN112199054A (zh) * 2020-12-07 2021-01-08 上海七牛信息技术有限公司 一种文件存储的方法及系统
CN113391948B (zh) * 2021-06-29 2022-10-21 西安电子科技大学 一种折叠式可扩展分布式存储编码及修复、扩展方法
CN114281270B (zh) * 2022-03-03 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种数据存储方法、系统、设备以及介质
CN116010160A (zh) * 2023-03-09 2023-04-25 安超云软件有限公司 分布式文件系统的纠删码数据分布的方法及应用
CN117420969B (zh) * 2023-12-19 2024-04-16 中电云计算技术有限公司 一种分布式数据存储方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101339524A (zh) * 2008-05-22 2009-01-07 清华大学 大规模磁盘阵列存储系统的磁盘容错方法
CN101923441A (zh) * 2009-06-17 2010-12-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统
CN102004769A (zh) * 2010-11-12 2011-04-06 成都市华为赛门铁克科技有限公司 文件管理方法、设备及存储系统
US8898387B1 (en) * 2010-06-30 2014-11-25 Emc Corporation Data caching system and method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495246B2 (en) * 2013-01-21 2016-11-15 Kaminario Technologies Ltd. Raid erasure code applied to partitioned stripe

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101339524A (zh) * 2008-05-22 2009-01-07 清华大学 大规模磁盘阵列存储系统的磁盘容错方法
CN101923441A (zh) * 2009-06-17 2010-12-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统
US8898387B1 (en) * 2010-06-30 2014-11-25 Emc Corporation Data caching system and method
CN102004769A (zh) * 2010-11-12 2011-04-06 成都市华为赛门铁克科技有限公司 文件管理方法、设备及存储系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
存储系统中的纠删码研究综述;罗象宏,舒继武;《计算机研究与发展》;20120131;第49卷(第1期);全文 *

Also Published As

Publication number Publication date
CN104503706A (zh) 2015-04-08

Similar Documents

Publication Publication Date Title
CN104503706B (zh) 一种基于磁盘阵列的数据存储及读取方法
US10496481B2 (en) Methods and systems for rebuilding data subsequent to the failure of a storage unit
US8601311B2 (en) System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
CN102023815B (zh) 在固态存储器中实现raid
US8307159B2 (en) System and method for providing performance-enhanced rebuild of a solid-state drive (SSD) in a solid-state drive hard disk drive (SSD HDD) redundant array of inexpensive disks 1 (RAID 1) pair
US7831768B2 (en) Method and apparatus for writing data to a disk array
JP5923964B2 (ja) ディスクアレイ装置、制御装置、およびプログラム
US6785836B2 (en) In-place data transformation for fault-tolerant disk storage systems
US6393516B2 (en) System and method for storage media group parity protection
US20070088990A1 (en) System and method for reduction of rebuild time in raid systems through implementation of striped hot spare drives
US20040123032A1 (en) Method for storing integrity metadata in redundant data layouts
CN101916173B (zh) 一种基于raid的数据读写方法及其系统
CN101833422B (zh) 磁盘阵列的数据处理方法及设备
KR101678868B1 (ko) 플래시 주소 변환 장치 및 그 방법
CN105531677A (zh) Raid奇偶校验条带重建
DE202008018573U1 (de) Speichersystem
US20100306466A1 (en) Method for improving disk availability and disk array controller
CN102799533B (zh) 一种磁盘损坏扇区屏蔽方法及装置
US10564865B2 (en) Lockless parity management in a distributed data storage system
WO2012051931A1 (zh) 廉价磁盘冗余阵列重构方法,装置及系统
CN108958656B (zh) 基于raid5固态硬盘阵列的动态条带系统设计方法
CN101609420A (zh) 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器
CN110347344A (zh) 一种基于分布式存储系统的自动配置块存储方法
CN103336727B (zh) 对nand闪存存储设备进行数据操作的方法
CN106168920A (zh) 控制包括只读闪速数据存储设备的独立磁盘冗余阵列(raid)

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171010

CF01 Termination of patent right due to non-payment of annual fee