一种磁盘阵列数据分布与重建方法及系统的制作方法
【专利摘要】本发明涉及磁盘阵列数据分布与重建方法和系统,该磁盘阵列包括磁盘阵列控制器、正常盘、热备盘,其中磁盘阵列控制器负责管理数据在正常盘上的分布、某一个或多个磁盘故障后的磁盘阵列重建,某一个或多个磁盘故障后,磁盘阵列控制器即选择热备盘进行重建;热备盘的存储空间划分成交替分布的数据空间和空闲空间;主磁盘中存储读出I/O热度统计存储区大小的数据,该数据经过异或运算后,运算结果写入热备盘的数据空间,在完成一次重建操作中,热备盘上I/O的磁头寻道距离减少,磁盘阵列重建速度加快。
【专利说明】一种磁盘阵列数据分布与重建方法及系统
【技术领域】
[0001]本发明涉及所属的【技术领域】是:信息存储领域,尤其涉及一种磁盘阵列数据分布与重建方法及系统。
【背景技术】
[0002]磁盘阵列是将多个物理磁盘通过一定的数据分布方式组织起来通过并发I/O提供数据读写服务的一种存储系统。磁盘是机械组件,其失效概率非常高。当磁盘阵列中一个磁盘失效之后,磁盘阵列进入降级模式,磁盘阵列的并发吞吐量降低,读写I/o的平均响应时间升高。因此,如何在磁盘阵列中一个磁盘失效后在尽可能短的时间内将数据重建到热备盘上,是一个非常重要的,亟待解决的问题。特别是随着磁盘容量的迅速增加而磁盘转速却基本没有提升的情况下,将大容量、低带宽的磁盘上的数据重建到热备盘所需的时间非常长,导致另一块磁盘故障进而导致数据丢失的概率非常高。
[0003]针对磁盘阵列重建这个问题,已有部分研究成果。
[0004]面向条带的重建算法SOR (Striped Oriented Reconstruction)通过创建多个并发的线程,每个线程对应一个条带单元Stripe,挖掘多个Stripe重建的并行性来提升重建速度。SOR的优点是相对单条带串行重建,多个条带通过并行重建,使得多个条带可以并行进行,可以提升重建速度;其缺点是仍然存在单条带重建线程的性能问题,即同一个条带跨越多个磁盘,而多个磁盘的I/O会彼此等待,性能受限;同时,多个重建线程如对磁盘上不同区域的条带进行重建,会带来较长距离的磁盘寻道,从而限制了重建速度。
[0005]面向磁盘的重建算法D0R(Disk Oriented Reconstruction)通过为每个磁盘创建一个线程,充分挖掘磁盘带宽从而提升重建速度。DOR的优点是较为充分的利用磁盘带宽,提升重建速度;其缺点是对磁盘带宽的激进使用会对前端1/0的响应时间和带宽有一定的影响,多个线程独立挖掘磁盘带宽,容易造成缓冲中存在大量的不足满条带的数据片,另外该方案没有充分结合负载特征进行优化。
[0006]基于热度的多线程重建优化算法PRO (Popularity Based Mult1-threadReconstruction Optimization)通过充分挖掘Web类负载局部性强的特性,对不同的存储区域的数据赋予不同的重建优先级,存储区域内的数据的访问热度越高,存储区域的重建优先级越高。PRO是对SOR和DOR的改进方案。PRO的优点是存储区域内的数据访问热度越高,存储区域重建优先级越高;其缺点是PRO仅仅适用于网页Web类只读类型的负载的场景,对于写负载和读负载均表现出局部性的场景,同样会导致磁头的长距离寻道。
[0007]负载重定向WorkOut (Workload Outsourcing)通过将热点数据和所有写数据重定向到另外一个磁盘阵列上来加速降低磁盘阵列的重建。WorkOut的主要缺点是失效磁盘阵列的重建依赖于另外一个磁盘阵列。
[0008]图1为现有技术的磁盘阵列重建原理图。
[0009]10为当前正在重建区域对应的主磁盘组中的数据区,40为对应10的热备盘中的“重建数据区”;20为当前非正在重建区域对应的前端1/0读请求在主磁盘组中的读数据区,50为对应20的热备盘中的“读顺便重建数据区”;30为当前非正在重建区域对应的前端I/O写请求在主磁盘组中的写数据区,60为对应30的热备盘中的“写顺便重建数据区”。
[0010]现有技术的磁盘阵列重建过程为:
[0011]步骤1、将热备盘划分为多个重建区域40、50、60。
[0012]步骤2、周期性统计每个重建区域的前端I/O访问热度。
[0013]步骤3、选择前端I/O访问热度最高的重建区域10,为其对应的重建线程分配定长的时间片资源,启动其重建过程,对数据区40进行重建。
[0014]步骤4、如果前端I/O读请求将数据区20的整个条带的数据读入缓存,则在热备盘上顺便重建相应的数据区50。
[0015]步骤5、如果前端I/O写请求将数据区30的整个条带的数据写入磁盘阵列,则在热备盘上顺便重建相应的数据区60。
[0016]现有技术磁盘阵列重建过程存在如下的问题:在读写混合负载场景下,热备盘的磁头将在“重建数据区”、“读顺便重建数据区”和“写顺便重建数据区”之间移动,频繁的磁头寻道操作将大大降低热备盘的重建带宽,从而延长磁盘阵列重建时间,导致数据丢失的可能性增大。
【发明内容】
[0017]为了解决上述问题,本发明的目的在于提出一种磁盘阵列数据分布与重建方法及系统,通过将空闲存储空间散布在热备盘,缩短读写混合负载场景下热备盘磁头在“重建数据区”、“读顺便重建数据区”和“写顺便重建数据区”之间寻道距离的方法及系统,提升磁盘阵列的重建速度。
[0018]具体地讲,本发明公开了 一种磁盘阵列数据分布与重建系统,该系统包括磁盘阵列控制器、正常盘、热备盘,其中磁盘阵列控制器负责管理数据在正常盘上的分布、某一个或多个磁盘故障后的磁盘阵列重建,某一个或多个磁盘故障后,磁盘阵列控制器即选择热备盘进行重建;热备盘的存储空间划分成交替分布的数据空间和空闲空间;主磁盘中存储读出I/o热度统计存储区大小的数据,该数据经过异或运算后,运算结果写入热备盘的数据空间,从而完成一次重建操作。
[0019]该磁盘阵列控制器包括:
[0020]重建模块,用于选择磁盘阵列的起始地址对应的重建单元开始重建;
[0021]读请求处理模块,用于处理前端应用的I/O读请求;
[0022]写请求处理模块,用于处理前端应用I/O写请求。
[0023]本发明还公开了一种磁盘阵列数据分布与重建方法,包括如下步骤:
[0024]步骤1、将热备盘的存储空间划分成交替分布的数据空间和空闲空间;
[0025]步骤2、从主磁盘中读出I/O热度统计存储区大小的数据,经过异或运算后,将运算结果写入热备盘的数据空间,完成一次重建操作。
[0026]包括:
[0027]步骤21、选择磁盘阵列的起始地址对应的重建单元开始重建;具体包括:
[0028]如果对应的主磁盘上的数据未在缓存中命中,则向主磁盘发送读I/O请求,读取未在缓存中命中的数据,并置于缓存;[0029]如果对应的主磁盘上的数据在缓存中命中,则将缓存中对应的主磁盘上四份数据进行异或运算,并将异或运算得到的结果数据写入热备盘上重建数据区。
[0030]步骤22、处理前端应用的I/O读请求;具体包括:
[0031]将前端应用I/O读请求分裂为多个子I/O读请求,读取未在缓存中命中的数据,并置于缓存;
[0032]如果前端应用I/O读请求对应的条带的所有数据全部在缓存中,则将条带对应的数据进行异或运算,并将异或运算的结果数据写入并重定向到热备盘上距离当前重建数据区最近的空闲空间中,并记录被重定向的数据的目标位置和被重定向之后的位置。
[0033]步骤23、处理前端应用I/O写请求。具体包括:
[0034]将前端应用I/O写请求分裂为多个子I/O写请求。
[0035]如果前端应用I/O写请求对应的条带的所有最新版本的数据全部在缓存中,则将条带对应的数据进行异或运算,并将异或运算的结果写入并重定向到热备盘上距离当前重建数据区最近的空闲空间中,并记录被重定向的数据的目标位置和被重定向之后的位置。
[0036]本发明的技术效果:
[0037]热备盘的存储空间被分为“数据空间”和“空闲空间”且交替分布的技术效果是可以将不同类型的I/o在热备盘上聚集。
[0038]对于热备盘上的1/0,将“读顺便重建数据区”和“写顺便重建数据区”对应的I/O重定向到“重建数据区”临近的“空闲空间”,其技术效果是热备盘上I/o的磁头寻道距离减少,磁盘阵列重建速度加快。
[0039]总的技术效果:缩短磁头寻道距离,加快磁盘阵列重建,降低数据丢失概率。成本低,开销小。
【专利附图】
【附图说明】
[0040]图1为现有技术的磁盘阵列重建原理图;
[0041]图2为本发明的磁盘阵列重建原理图。
【具体实施方式】
[0042]磁盘阵列(RedundantArrays of Inexpensive Disks,RAID),由磁盘阵列控制器、正常盘、热备盘组成。
[0043]磁盘阵列(RAID)技术主要包含RAIDO?RAID7等数个规范。RAID5仅容单盘错,RAID6可容双盘错。在RAID5磁盘阵列中,配置一块热备盘,在RAID6磁盘阵列中,配置两块热备盘。当RAID5中的一个正常盘发生故障后,利用热备盘开始磁盘阵列重建。当RAID5中磁盘阵列重建过程中另一个正常盘故障、或RAID5中同时有两块或两块以上磁盘故障,则数据丢失,无法进行重建。当RAID6中的一个正常盘发生故障后,利用两块热备盘中的任意一个开始磁盘阵列重建,当RAID6种的两块正常盘发生故障后,利用两块热备盘开始磁盘阵列重建。当RAID6重建过程中第三块磁盘故障、或RAID6中同时有三块或三块以上磁盘故障,则数据丢失,无法进行重建。
[0044]磁盘阵列控制器负责管理数据在正常盘上的分布、某一个或多个磁盘故障后的磁盘阵列重建。某一个或多个磁盘故障后,磁盘阵列控制器即选择热备盘进行重建。该磁盘阵列控制器包括三个模块:重建模块,用于选择磁盘阵列的起始地址对应的重建单元开始重建;读请求处理模块,用于处理前端应用的I/o读请求;写请求处理模块,用于处理前端应用I/o写请求。热备盘的存储空间划分成交替分布的数据空间和空闲空间;主磁盘中存储读出I/o热度统计存储区大小的数据,该数据经过异或运算后,运算结果写入热备盘的数据空间,从而完成一次重建操作。
[0045]磁盘阵列数据分布与重建方法,包括如下步骤:
[0046]步骤1、将热备盘的存储空间划分成交替分布的数据空间和空闲空间;
[0047]步骤2、从主磁盘中读出I/O热度统计存储区大小的数据,经过异或运算后,将运算结果写入热备盘的数据空间,完成一次重建操作。
[0048]步骤2具体包括如下步骤:
[0049]步骤21、选择磁盘阵列的起始地址对应的重建单元开始重建;
[0050]步骤22、处理前端应用的I/O读请求;
[0051]步骤23、处理前端应用I/O写请求。
[0052]步骤21具体包括如下步骤:
[0053]步骤31、如果对应的主磁盘上的数据未在缓存中命中,则向主磁盘发送读I/O请求,读取未在缓存中命中的数据,并置于缓存;
[0054]步骤32、如果对应的主磁盘上的数据在缓存中命中,则将缓存中对应的主磁盘上四份数据进行异或运算,并将异或运算得到的结果数据写入热备盘上重建数据区。
[0055]步骤22具体包括如下步骤:
[0056]步骤41、将前端应用I/O读请求分裂为多个子I/O读请求,读取未在缓存中命中的数据,并置于缓存;
[0057]步骤42、如果前端应用I/O读请求对应的条带的所有数据全部在缓存中,则将条带对应的数据进行异或运算,并将异或运算的结果数据写入并重定向到热备盘上距离当前重建数据区最近的空闲空间中,并记录被重定向的数据的目标位置和被重定向之后的位置。
[0058]步骤23具体包括如下步骤:
[0059]步骤51、将前端应用I/O写请求分裂为多个子I/O写请求。
[0060]步骤52、如果前端应用I/O写请求对应的条带的所有最新版本的数据全部在缓存中,则将条带对应的数据进行异或运算,并将异或运算的结果写入并重定向到热备盘上距离当前重建数据区最近的空闲空间中,并记录被重定向的数据的目标位置和被重定向之后的位置。
[0061]下面通过图2实施例具体说明重建的过程。
[0062]图2中所示的“主磁盘1”、“主磁盘2”、“主磁盘3”、“主磁盘4”为处于正常状态的磁盘,“故障盘6”为故障盘。“故障盘6”发生故障之后,用“热备盘5”替换,开始重建。
[0063]首先将热备盘的存储空间划分成交替分布的“数据空间”和“空闲空间”。“数据空间”如图2中“热备盘5”上R2、R4、R6和R8所示,“空闲空间”如图2中“热备盘5”上R1、R3、R5和R7所示。其中R代表Region。设定I/O热度统计周期T和I/O热度统计存储区大小S。I/O热度统计存储区的大小S同时也是磁盘阵列重建的基本单位,即每一次重建操作均从主磁盘中读出S大小的数据,经过异或运算之后,将运算结果写入热备盘。[0064]将热备盘的存储空间分成交替分布的“数据空间”R2、R4、R6和R8和“空闲空间” R1、R3、R5和R7之后,本发明的磁盘阵列重建方法有如下步骤:
[0065]步骤1、选择磁盘阵列的起始地址对应的重建单元开始重建,同时接收前端应用发送到磁盘阵列的I/o读请求和I/O写请求。如果是重建请求,跳转至步骤2 ;否则,如果是前端应用的I/O读请求或I/O写请求,跳转至步骤6。
[0066]步骤2、依此判断对应主磁盘1、主磁盘2、主磁盘3、主磁盘4上的四份数据是否在缓存中命中。如果是,跳转至步骤4;否则,跳转至步骤3。
[0067]步骤3、向主磁盘发送读I/O请求,读取未在缓存中命中的数据,并置于缓存。
[0068]步骤4、将缓存中对应主磁盘1、主磁盘2、主磁盘3、主磁盘4上的四份数据进行异或运算。
[0069]步骤5、将异或运算得到的结果数据写入热备盘上“重建数据区” R2。
[0070]步骤6、如果是前端应用I/O读请求,跳转至步骤7 ;否则,如果是前端应用I/O写请求,跳转至步骤10。
[0071]步骤7、将前端应用I/O读请求分裂为多个子I/O读请求,读取未在缓存中命中的数据,并置于缓存。
[0072]步骤8、如果前端应用I/O读请求对应的条带的所有数据全部在缓存中,则将条带对应的数据进行异或运算。
[0073]步骤9、将异或运算的结果数据写入并重定向到热备盘上距离当前“重建数据区” R2最近的空闲空间R3中50的位置,并记录被重定向的数据的目标位置和被重定向之后的位置。
[0074]步骤10、将前端应用I/O写请求分裂为多个子I/O写请求。
[0075]步骤11、如果前端应用I/O写请求对应的条带的所有最新版本的数据全部在缓存中,则将条带对应的数据进行异或运算。
[0076]步骤12、将异或运算的结果写入并重定向到热备盘上距离当前“重建数据区” R2最近的空闲空间R3中60的位置,并记录被重定向的数据的目标位置和被重定向之后的位置。
【权利要求】
1.一种磁盘阵列数据分布与重建方法,其特征在于,包括如下步骤: 步骤1、将热备盘的存储空间划分成交替分布的数据空间和空闲空间; 步骤2、从主磁盘中读出I/O热度统计存储区大小的数据,经过异或运算后,将运算结果写入热备盘的数据空间,完成一次重建操作。
2.如权利要求1所述的磁盘阵列数据分布与重建方法,其特征在于,所述步骤2具体包括如下步骤: 步骤21、选择磁盘阵列的起始地址对应的重建单元开始重建; 步骤22、处理前端应用的I/O读请求; 步骤23、处理前端应用I/O写请求。
3.如权利要求2所述的磁盘阵列数据分布与重建方法,其特征在于,所述步骤21具体包括如下步骤: 步骤31、如果对应的主磁盘上的数据未在缓存中命中,则向主磁盘发送读I/O请求,读取未在缓存中命中的数据,并置于缓存; 步骤32、如果对应的主磁盘上的数据在缓存中命中,则将缓存中对应的主磁盘上四份数据进行异或运算,并将异或运算得到的结果数据写入热备盘上重建数据区。
4.如权利要求2所述的磁盘阵列数据分布与重建方法,其特征在于,所述步骤22具体包括如下步骤: 步骤41、将前端应用I/O读请求分裂为多个子I/O读请求,读取未在缓存中命中的数据,并置于缓存; 步骤42、如果前端应用I/O读请求对应的条带的所有数据全部在缓存中,则将条带对应的数据进行异或运算,并将异或运算的结果数据写入并重定向到热备盘上距离当前重建数据区最近的空闲空间中,并记录被重定向的数据的目标位置和被重定向之后的位置。
5.如权利要求2所述的磁盘阵列数据分布与重建方法,其特征在于,所述步骤23具体包括如下步骤: 步骤51、将前端应用I/O写请求分裂为多个子I/O写请求。 步骤52、如果前端应用I/O写请求对应的条带的所有最新版本的数据全部在缓存中,则将条带对应的数据进行异或运算,并将异或运算的结果写入并重定向到热备盘上距离当前重建数据区最近的空闲空间中,并记录被重定向的数据的目标位置和被重定向之后的位置。
6.一种磁盘阵列数据分布与重建系统,其特征在于,该磁盘阵列包括磁盘阵列控制器、正常盘、热备盘,其中磁盘阵列控制器负责管理数据在正常盘上的分布、某一个或多个磁盘故障后的磁盘阵列重建,某一个或多个磁盘故障后,磁盘阵列控制器即选择热备盘进行重建;热备盘的存储空间划分成交替分布的数据空间和空闲空间;主磁盘中存储读出I/O热度统计存储区大小的数据,该数据经过异或运算后,运算结果写入热备盘的数据空间,从而完成一次重建操作。
7.如权利要求6所述的磁盘阵列数据分布与重建系统,其特征在于,该磁盘阵列控制器包括: 重建模块,用于选择磁盘阵列的起始地址对应的重建单元开始重建; 读请求处理模块,用于处理前端应用的I/O读请求;写请求处理模块,用于处理前 端应用I/O写请求。
【文档编号】G06F12/08GK103699336SQ201310641681
【公开日】2014年4月2日 申请日期:2013年12月3日 优先权日:2013年12月3日
【发明者】岳银亮, 熊劲, 贾士博, 陈明宇, 张立新 申请人:中国科学院计算技术研究所