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

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

【技术实现步骤摘要】
【专利摘要】本专利技术提供一种基于磁盘阵列的数据存储方法,其中每个条带包括空子条带和纠删码子条带;存储方法包括下列步骤:1)确定需要写入数据的条带并将其作为当前条带;2)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的空子条带,写入完毕后将该空子条带转换为纠删码子条带;3)在新的纠删码子条带生效后,将当前条带的原有纠删码子条带转换为空子条带。所述条带还可以进一步包括镜像子条带。另外,本专利技术还提供了相应的基于磁盘阵列的数据读取方法。本专利技术能够解决纠删码技术中的WriteHole问题;能够提高基于纠删码的存储系统的I/O性能;无论在写入数据块较多还是较少时均能达到较高的性能。【专利说明】
本专利技术涉及存储
,具体地说,本专利技术涉及一种基于磁盘冗余阵列的数据存储及读取方法。
技术介绍
副本和纠删码技术是目前常用的两种高可靠技术。其中,副本技术就是将一份数据完整的拷贝多份存储,以η份副本为例,使用副本技术后,磁盘阵列能够存储数据的量只占原始储存容量的1/η,这会导致硬件采购成本、降温成本、空间占用成本大幅提高。而纠删码(erasure code)技术能够以更小的数据冗余度获得更高数据可靠性。它的基本原理如下:给定η个数据块屯,d2,..., dn,RS技术中根据这η个数据块生成m个校验块Cl,c2,..., cm。对于任意的η和m,从原始数据块及其校验块中任取不少于η块就能解码出原始数据,即纠删码技术中最多容忍m个数据块或者校验块同时丢失。 纠删码在存储中的应用典型代表就是RAID(Redundant Array of IndependentDisks,独立磁盘冗余阵列)。RAID技术将多块磁盘形成一个有机整体,能够提供整体更高的可靠性、容量、性能。使用RAID技术,高性能计算(HPC)使用的文件系统能够以很小的存储开销(〈25% )保证数据高可用性。然而,目前的纠删码技术也存在自身的一些缺陷。 一方面,现存的RAID类型存储技术存在WriteHole问题(又称非一致性更新问题),其中包括广为应用的RAID5,RAID6等。RAID技术中,n+m个分布在不同磁盘上的数据块构成一个具有一致性的条带,RAID条带的一致性是指条带中的数据块和校验块符合预设的不变式,这样,条带中任一数据块丢失时,只要从η个原始数据块和m个校验块中任取不少于η块,就能根据预设的不变式解码出原始数据。当条带中的某个或某些数据块需要修改时,系统通常需要读出相应的一个或多个校验块,然后根据新的数据块重新计算校验块,最后再同时写入新的数据块和校验块。如果在同时写入的过程中突然发生RAID驱动故障(如系统崩溃或断电),就可能会出现部分数据块或校验块已修改,而另一部分数据块或检验块尚未修改完成的现象,以及同一块数据块或校验块只修改了一部分而另一部分未修改完成的现象,上述现象将导致条带上的数据块和校验块不一致的问题,又称为非一致性更新问题(Inconsistent Update Problem)。而当需要同时更新的数据块和校验块的数目和超过m时,上述非一致性更新问题会导致相应条带中的数据,无论是故障前的老数据还是要写入的新数据,都无法利用纠删码技术恢复出来,此时就产生了 WriteHole。 另一方面,相对于副本技术,基于纠删码技术的存储系统I/O性能较弱。首先,纠删码技术中,写入操作依赖对旧数据和旧校验的同步读取操作,当写入数据块较少时,其性能相对较低。其次,纠删码比副本需要更多的缓存来优化写性能,难以适用于需要大量并发写操作的应用场合。再者,冗余副本可用来提供更多的读数据带宽和进行负载平衡的空间,而现有的纠删码技术不具备上述优点。
技术实现思路
因此,本专利技术的任务是提供一种能够克服上述缺陷的基于磁盘阵列的数据存储及读取解决方案。 本专利技术提供了一种基于磁盘阵列的数据存储方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;其特征在于,每个所述条带包括空子条带和纠删码子条带;所述基于磁盘阵列的数据存储方法包括下列步骤: I)确定需要写入数据的条带并将其作为当前条带; 2)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的空子条带,写入完毕后将该空子条带转换为纠删码子条带;所述全条带数据是所述的满足纠删码不变式的一组数据块及其校验块; 3)在新的纠删码子条带生效后,将当前条带的原有纠删码子条带转换为空子条带。 其中,所述每个所述条带还包括镜像子条带,所述逻辑卷还包括副本存储区; 所述基于磁盘阵列的数据存储方法还包括步骤: 4)当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。 其中,所述步骤3)还包括:在新的纠删码子条带生效后,将当前条带的原有镜像子条带转换为空子条带; 所述步骤4)还包括:如果当前条带中没有镜像子条带,则选择任意一个空子条带作为镜像子条带,将所述非全条带数据写入该镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。 其中,每个所述条带包括η个数据块存储单元和m个校验块存储单元,对于空子条带,纠删码子条带和镜像子条带中的任意一种子条带,每个子条带均包括η个数据块子存储单元和m个校验块子存储单元; 所述步骤4)中,所述镜像子条带中的每个数据块子存储单元均对应于所述副本存储区的m个用于存储副本的子存储单元。 其中,所述步骤4)中,每个所述镜像子条带对应于m列竖条带,这m列竖条带作为该镜像子条带所对应的副本存储区,这m列竖条带分别与该镜像子条带中的m个校验块子存储单元处于同一列(即在同一磁盘上);每列竖条带包括η个副本子存储单元,这η个副本子存储单元分别对应于所述镜像子条带中的η个数据块子存储单元。 其中,所述逻辑卷中,相邻条带的校验块存储单元的位置顺序轮转,这样,相邻条带的镜像子条带所对应的副本存储区的位置也顺序轮转。 本专利技术还提供了一种基于磁盘阵列的数据存储方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;每个所述条带包括纠删码子条带和镜像子条带,所述逻辑卷还包括副本存储区;所述基于磁盘阵列的数据存储方法包括下列步骤: 10)确定需要写入数据的条带并将其作为当前条带; 20)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的纠删码子条带;所述全条带数据是所述的满足纠删码不变式的一组数据块及其校验块; 30)当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对应的副本存储区。 其中,每个所述条带包括η个数据块存储单元和m个校验块存储单元,对于纠删码子条带和镜像子条带中的任意一种子条带,每个子条带均包括η个数据块子存储单元和m个校验块子存储单元; 其中,所述基于磁盘阵列的数据存储方法还包括步骤: 40)当需要写入的数据是非全条带数据时,将所述非全条带数据写入当前条带的镜像子条带,写入所述镜像子条带的数据块被镜像至对本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201410810681.html" title="一种基于磁盘阵列的数据存储及读取方法原文来自X技术">基于磁盘阵列的数据存储及读取方法</a>

【技术保护点】
一种基于磁盘阵列的数据存储方法,所述磁盘阵列包括至少一个逻辑卷,所述逻辑卷包括多个条带,其中每个所述条带能够存储满足纠删码不变式的一组数据块及其校验块;其特征在于,每个所述条带包括空子条带和纠删码子条带;所述基于磁盘阵列的数据存储方法包括下列步骤:1)确定需要写入数据的条带并将其作为当前条带;2)当需要写入的数据是全条带数据时,将所述全条带数据写入当前条带的空子条带,写入完毕后将该空子条带转换为纠删码子条带;所述全条带数据是所述的满足纠删码不变式的一组数据块及其校验块;3)在新的纠删码子条带生效后,将当前条带的原有纠删码子条带转换为空子条带。

【技术特征摘要】

【专利技术属性】
技术研发人员:何文婷刘振军刘浏董欢庆张军伟蔡杰明杨琳
申请(专利权)人:中国科学院计算技术研究所天津中科蓝鲸信息技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1