一种RAID6磁盘阵列写性能的优化方法技术

技术编号:6920416 阅读:695 留言:0更新日期:2012-04-11 18:40
一种RAID6磁盘阵列写性能的优化方法,具体包括如下步骤:(1)在RAID6磁盘阵列结构外设置日志盘,用于记录RAID6磁盘阵列中的数据块对应的日志记录,同时设置一个Hash链表,用于记录所述日志记录在日志盘中的位置地址信息;(2)读写请求处理,包括(I)预读原始数据阶段和(II)写新数据阶段;(3)发生双盘失效时的数据恢复,包括(I)如果两个校验磁盘失效(II)如果两个数据磁盘失效和(III)一个数据盘和一个校验盘失效的分别的处理过程。本发明专利技术通过采用一种RAID6磁盘阵列结合日志盘的新架构,解决了RAID6磁盘阵列写性能不好的问题,大大提升了RAID6磁盘阵列的写性能。

【技术实现步骤摘要】

本专利技术属于计算机数据存储领域,具体涉及一种RAID6级别磁盘阵列的写性能优化方法。
技术介绍
随着计算机技术和网络通信技术的发展,信息化程度越来越高,人们对数据可靠性的要求也越来越高。磁盘阵列RAID (RedundantArray of Independent Disks)是可靠存储系统领域中的一个典型装置,磁盘阵列的工作原理与特征=RAID的基本结构特征就是组合(Mriping),捆绑2个或多个物理磁盘成组,形成一个单独的逻辑盘。RAID结构被划分为以下几个级别。RAIDO级无冗余无校验的磁盘阵列。数据同时分布在各个磁盘驱动器上,没有容错能力,读写速度在RAID中最快,但因为任何一个磁盘驱动器损坏都会使整个RAID系统失效,所以安全系数反倒比单个的磁盘驱动器还要低。 RAIDl级镜象磁盘阵列。每一个磁盘驱动器都有一个镜像磁盘驱动器,镜像磁盘驱动器随时保持与原磁盘驱动器的内容一致。RAIDl具有较高的安全性,但只有一半磁盘空间被用来存储数据。RAID5级无独立校验盘的奇偶校验磁盘阵列。同样采用奇偶校验来检查错误, 但没有独立的校验盘,校验信息分布在各个磁盘驱动器上。RAID6级和RAID5级很相似,但是RAID6级可以恢复任意双盘出错。RAID6具有容忍阵列中双盘同时出错的能力,因此跟其它磁盘阵列级别相比, RAID6能够提供更高的数据可靠性。但是,RAID6在写性能方面的开销也是最大的。比如, RAID6磁盘阵列的一个校验条带中存在P和Q两个校验块,每更新一个数据块都会导致同校验条带的两个校验块同时更新,对一个数据块的写请求会导致RAID6磁盘阵列进行至少三次磁盘读操作和三次磁盘写操作。显然,RAID6阵列的写代价是非常高的,这也是限制它在实际环境中应用的重要原因。传统的RAID6磁盘阵列都是基于Reed-Solomon编码的,每个校验条带中的Q校验块是采用有限域运算而得到的,因此传统的基于异或运算的写性能优化方法如Parity Logging则不能直接运用于Reed-Solomon编码的RAID6磁盘阵列。目前也没见其它针对 RAID6磁盘阵列的写性能优化方法。
技术实现思路
本专利技术提出一种RAID6磁盘阵列写性能的优化方法,采用一种结合日志盘的架构,使得RAID6的写性能得到提升,尤其是在写请求密集的时候作用更加明显,解决现有的 RAID6级别磁盘阵列写性能不高的问题。为实现本专利技术的目的所采用的技术方案如下一种RAID6磁盘阵列写性能的优化方法,包括如下步骤(1)在传统RAID6磁盘阵列结构外加一个日志盘,同时在内存中设置一个Hash链表,用于记录RAID6磁盘阵列中的数据块对应的日志记录在日志盘中的位置地址信息。(2)读写请求处理读请求的处理与传统的RAID6磁盘阵列相同,写请求的处理分为以下两个阶段(I)预读原始数据阶段针对每个校验条带,系统分别统计此次将被更新的数据块的集合和不被更新的数据块的集合在Hash链表中对应Hash条目的数目,如果将被更新的数据块的集合对应Hash 条目的数目少,则采用读改写的方式;反之,则采用重构写的方式。在读改写方式下,针对校验条带上此次将被更新的数据块的集合中的每个数据块,首先查询该数据块在Hash链表中是否存在对应Hash条目。如果条目不存在,则需要读取出该数据块对应的原始数据并放入日志缓冲区,然后在Hash链表中创建一个该数据块对应的Hash条目,并在Hash条目的“初始数据地址”字段中记录刚才读出的原始数据写入到日志盘中的地址。反之,如果该数据块的对应Hash条目已经存在,则无需读取并记录该数据块的原始数据。在重构写方式下,针对校验条带上此次不被更新的数据块的集合中的每一个数据块,查询该数据块在Hash链表中是否存在对应Hash条目。接下来的处理步骤跟读改写方式下相同如果Hash条目不存在则读取并记录该数据块对应的原始数据到日志盘中,并且为其在Hash链表中创建对应Hash条目,并在Hash条目的“初始数据地址”字段中记录刚才读出的原始数据写入到日志盘中的地址;如果Hash条目存在则无需读取并记录该数据块的原始数据。(II)写新数据阶段针对校验条带上每一个此次将被更新的数据块,系统首先将其要写入的新数据放入到日志缓冲区中。然后,如果该数据块在Hash链表中已经存在对应的Hash条目,则将条目的“最新数据地址”栏更新为刚才写入日志盘的新数据在日志盘中的地址;如果该数据块在Hash链表中不存在对应的Hash条目,则先在Hash链表中创建该数据块对应的Hash条目,然后再将刚才写入日志盘的新数据在日志盘中的地址记录在条目的“最新数据地址”栏中。接下来,系统将数据块的写请求下发到磁盘,在磁盘写操作完成之后,该次写请求即成功返回。(3)发生双盘失效时恢复数据的步骤(I)如果两个校验磁盘失效通过数据磁盘直接计算出最新的校验数据,恢复校验磁盘。(II)两个数据磁盘失效查询丢失的数据块在Hash链表中的对应Hash条目。如果Hash条目存在,再查看Hash条目的“最新数据地址”字段是否为空。如果“最新数据地址”字段不为空,则按照“最新数据地址”直接从日志盘中读出最新数据便可以恢复该数据块。如果“最新数据地址”字段为空,则按照“初始数据地址”从日志盘中读出初始数据便可以恢复该数据块。如果不存在对应Hash条目,则该数据块未被更新过。针对校验条带上每个未丢失的数据块,查询其在Hash链表中的对应Hash条目。如果Hash条目不存在,在数据磁盘上的数据就是该数据块的初始数据;如果Hash条目存在,则按照条目中“初始数据地址”字段从日志盘中读出该数据块的初始数据。读出了校验条带上每个未丢失的数据块的初始数据后,再结合校验块的初始数据,利用RAID6校验算法便可以计算出丢失的数据块的初始数据。其初始数据便是恢复数据。(III) 一个数据盘和一个校验盘失效类似于情况II,首先查询丢失的数据块在Hash链表中的对应Hash条目。如果 Hash条目存在,则可以从日志盘中直接恢复数据;如果Hash条目不存在,则可以读取校验条带上的其它未丢失的数据块和校验块的原始数据,然后按照RAID6校验算法恢复数据。 待丢失的数据块恢复后,通过校验条带上所有的数据块计算出校验块的最新数据。本专利技术基于一个普遍存在的现象,即RAID6磁盘阵列的写性能不高。本专利技术通过采用一种RAID6磁盘阵列结合日志盘的新架构,包括存储系统构建方法、数据读写方法和磁盘失效后的数据恢复方法这三个具体方法,解决了 RAID6磁盘阵列写性能不好的问题, 大大提升了 RAID6磁盘阵列的写性能。附图说明图1为本专利技术系统架构示意图;图2为本专利技术的Hash链表结构示意图;图3为本专利技术的写请求处理示意图;图4为本专利技术的恢复双数据盘失效示意图。具体实施例方式下面结合附图和具体实施例对本专利技术进一步详细说明。本专利技术的一种RAID6磁盘阵列写性能的优化方法,包括存储系统构建方法、数据读写方法和磁盘失效后的数据恢复方法这三个具体方法,具体如下(1)存储系统构建方法,组成架构如图1所示(1. 1)该存储系统由传统的RAID6阵列结构外加一个日志盘组成。写操作到来时, 把相应数据块的原始数据或更新数据记录到日志盘中。(1.2)在内存中本文档来自技高网
...

【技术保护点】
1.一种RAID6磁盘阵列写性能的优化方法,具体包括如下步骤:(1)在RAID6磁盘阵列结构外设置日志盘,用于记录RAID6磁盘阵列中的数据块对应的日志记录,同时设置一个Hash链表,用于记录所述日志记录在日志盘中的位置地址信息;(2)读写请求处理,其中写请求的处理包括:(I)预读原始数据阶段首先,针对每个校验条带,分别统计此次将被更新的数据块的集合和不被更新的数据块的集合在Hash链表中对应Hash条目的数目;其次,根据所述将被更新或不被更新的数据块的集合对应Hash条目的数目,采用读改写或重构写的方式对数据块进行预读处理;(II)写新数据阶段针对校验条带上每一个此次将被更新的数据块,首先将其要写入的新数据放入到日志盘的日志缓冲区中,然后,如果该数据块在Hash链表中已经存在对应的Hash条目,则将该Hash条目的“最新数据地址”字段更新为刚才写入日志盘的新数据在日志盘中的地址;如果该数据块在Hash链表中不存在对应的Hash条目,则先在Hash链表中创建该数据块对应的Hash条目,然后再将刚才写入日志盘的新数据在日志盘中的地址记录在条目的“最新数据地址”栏中;接下来,将数据块的写请求下发到磁盘,在磁盘写操作完成之后,该次写请求即成功返回;(3)发生双盘失效时的数据恢复(I)如果两个校验磁盘失效通过数据磁盘直接计算出最新的校验数据,恢复校验磁盘;(II)如果两个数据磁盘失效(A)查询丢失的数据块在Hash链表中的对应Hash条目;(B)如果Hash条目存在,再查看Hash条目的“最新数据地址”字段是否为空,如果不为空,则直接从日志盘中读出最新数据便可以恢复该数据块,如果为空,则从日志盘中读出初始数据便可以恢复该数据块;(C)如果不存在对应Hash条目,则该数据块未被更新过,针对校验条带上每个未丢失的数据块,查询其在Hash链表中的对应Hash条目,如果对应Hash条目不存在,在数据磁盘上的数据就是该数据块的初始数据;如果对应Hash条目存在,则按照该对应Hash条目中“初始数据地址”字段从日志盘中读出该数据块的初始数据;(D)读出了校验条带上每个未丢失的数据块的初始数据后,再结合校验块的初始数据,即可计算出丢失的数据块的初始数据,该初始数据即为恢复数据;(III)一个数据盘和一个校验盘失效首先查询丢失的数据块在Hash链表中的对应Hash条目,如果对应的Hash条目存在,则从日志盘中直接恢复数据;如果Hash条目不存在,则读取校验条带上的其它未丢失的数据块和校验块的原始数据,然后按照RAID6校验算法恢复数据;然后,在待丢失的数据块恢复后,通过校验条带上所有的数据块计算出校验块的最新数据。...

【技术特征摘要】
1.一种RAID6磁盘阵列写性能的优化方法,具体包括如下步骤(1)在RAID6磁盘阵列结构外设置日志盘,用于记录RAID6磁盘阵列中的数据块对应的日志记录,同时设置一个Hash链表,用于记录所述日志记录在日志盘中的位置地址信息;(2)读写请求处理,其中写请求的处理包括(I)预读原始数据阶段首先,针对每个校验条带,分别统计此次将被更新的数据块的集合和不被更新的数据块的集合在Hash链表中对应Hash条目的数目;其次,根据所述将被更新或不被更新的数据块的集合对应Hash条目的数目,采用读改写或重构写的方式对数据块进行预读处理;(II)写新数据阶段针对校验条带上每一个此次将被更新的数据块,首先将其要写入的新数据放入到日志盘的日志缓冲区中,然后,如果该数据块在Hash链表中已经存在对应的Hash条目,则将该 Hash条目的“最新数据地址”字段更新为刚才写入日志盘的新数据在日志盘中的地址;如果该数据块在Hash链表中不存在对应的Hash条目,则先在Hash链表中创建该数据块对应的Hash条目,然后再将刚才写入日志盘的新数据在日志盘中的地址记录在条目的“最新数据地址”栏中;接下来,将数据块的写请求下发到磁盘,在磁盘写操作完成之后,该次写请求即成功返回;(3)发生双盘失效时的数据恢复(I)如果两个校验磁盘失效通过数据磁盘直接计算出最新的校验数据,恢复校验磁盘;(II)如果两个数据磁盘失效(A)查询丢失的数据块在Hash链表中的对应Hash条目;(B)如果Hash条目存在,再查看Hash条目的“最新数据地址”字段是否为空,如果不为空,则直接从日志盘中读出最新数据便可以恢复该数据块,如果为空,则从日志盘中读出初始数据便可以恢复该数据块;(C)如果不存在对应Hash条目,则该数据块未被更新过,针对校验条带上每个未丢失的数据块,查询其在Hash链表中的对应Hash条目,如果对应Hash条目不存在,在数据磁盘上的数据就是该数据块的初始数据;如果对应Hash条目存在,则按照该对应Hash条目中 “初始数据地址”字段从日志盘中读出该数据块...

【专利技术属性】
技术研发人员:冯丹刘景宁金超陈俭喜沙睿彬刘建平
申请(专利权)人:华中科技大学
类型:发明
国别省市:83

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

1