一种RAID重建的方法、系统及RAID技术方案

技术编号:14766083 阅读:377 留言:0更新日期:2017-03-08 10:26
本发明专利技术公开了RAID重建的方法,包括:RAID触发重建时RAID主线程创建三个线程;三个线程中均包含有条带队列;三个线程并行的按照对应的条带队列中条带的顺序依次执行线程操作,当各条带队列中均不含有条带时,完成RAID重建;第一线程主要负责读操作;第二线程主要负责按照条带队列中条带的顺序依次对条带进行异或运算处理;第三线程主要负责按照条带的顺序依次将条带中的数据下发到热备磁盘;利用流水线的方式将RAID重建的工作并行执行,而不是再使用单一的重构线程对RAID进行重建,充分发挥CPU的并行性,提高重建RAID的速度,大大缩短重建时间;本发明专利技术还公开了RAID重建的系统及RAID,具有上述效果。

【技术实现步骤摘要】

本专利技术涉及计算机存储
,特别涉及一种RAID重建的方法、系统及RAID
技术介绍
RAID(RedundantArraysofIndependentDisks,RAID),独立冗余磁盘阵列,是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。同时RAID还提供不同程度的冗余能力(RAID0除外),当阵列中的一块磁盘出现故障时,通过冗余数据,可以将故障盘中的数据恢复到热备盘上。从而保证了用户数据的完整性。RAID根据冗余能力和性能,可划分为不同的等级。目前常用的有RAID0、RAID1、RAID10、RAID5、RAID6、RAID7等。RAID的实现技术主要有两种,一种是镜像技术,像RAID1,一种是条带技术,像RAID5、RAID6。镜像技术是当一块磁盘故障时,可以通过故障盘的镜像直接将数据拷贝到热备盘上,从而恢复了故障盘。条带技术是当一块磁盘故障时,可以利用条带技术,使用其它磁盘中的数据,重新计算出故障盘上的数据到热备盘上,从而恢复了故障盘。恢复数据到热备盘的过程称为RAIDrebuild(重建)。对于镜像RAID(例如RAID1,RAID10)的rebuild过程相对比较简单。它的实现过程主要分两个阶段,第一阶段是读取一个正常镜像中的数据,第二阶段是将读取的数据拷贝到热备盘中。对于条带RAID(例如RAID5,RAID6)它们的rebuild过程相对复杂。第一阶段读取正常磁盘中的数据,第二阶段对读取的数据进行计算,以恢复丢失数据,第三阶段下发恢复数据到热备盘中。目前传统RAID都是采用单一线程来处理上述三个阶段,虽然有使用异步拷贝技术,异步计算校验技术,但某一时刻对镜像或条带的处理还是串行进行的。在处理一个镜像或条带时,其它的镜像或条带不能进行处理。利用传统RAID,如果坏掉一个盘,进行重建通常要花费十多个小时,甚至二十多个小时。因此,如何提高RAID重建的速度,是本领域技术人员需要解决的技术问题。
技术实现思路
本专利技术的目的是提供一种RAID重建的方法、系统及RAID,利用流水线的方式将RAID重建的工作并行执行,而不是再使用单一的重构线程对RAID进行重建,充分发挥CPU的并行性,提高重建RAID的速度,即大大缩短重建时间。为解决上述技术问题,本专利技术提供一种RAID重建的方法,包括:当RAID触发重建时,RAID主线程创建三个线程;其中,三个线程中均包含有条带队列;三个线程并行的按照对应的条带队列中条带的顺序依次执行线程操作,当各条带队列中均不含有条带时,完成RAID重建;其中,第一线程,用于根据磁盘扇区获取空闲条带,并按照空闲条带宽度下发读取数据请求,并把所述空闲条带加入到该线程的条带队列中,当所述空闲条带内所有磁盘中的数据读取完毕后将对应条带发送到第二线程;第二线程,用于按照条带队列中条带的顺序依次对条带进行异或运算处理,并将对应条带发送到第三线程;第三线程,用于按照条带队列中条带的顺序依次将条带中的数据下发到热备磁盘。其中,当RAID触发重建时,RAID主线程创建三个线程,包括:当RAID存在故障磁盘时触发RAID重建,RAID主线程创建三个线程,并分别将三个线程进行CPU绑定。其中,读取条带对应磁盘数据,并将对应条带发送到第二线程,包括:根据磁盘扇区以固定数据长度作为步长申请空闲条带作为当前条带;申请成功后,对RAID中正常磁盘按照当前条带宽度下发起读操作请求并加入条带队列,在发起读操作请求后处理下一个步长的数据;当所述当前条带中读操作对应数据成功返回到所述当前条带缓存区后,将所述当前条带发送到第二线程。其中,对条带进行异或运算处理,并将对应条带发送到第三线程,包括:对当前条带发起异或运算请求,并在发起异或运算请求后处理下一个条带;当所述当前条带成功执行异或运算后,将所述当前条带发送到第三线程。其中,将条带中的数据下发到热备磁盘,包括:将当前条带中异或运算的结果数据下发到热备磁盘中。本专利技术还提供一种RAID重建的系统,包括:主线程模块,用于当RAID触发重建时,RAID主线程创建三个线程;其中,三个线程中均包含有条带队列;三个线程并行的按照对应的条带队列中条带的顺序依次执行线程操作,当各条带队列中均不含有条带时,完成RAID重建;第一线程模块,用于根据磁盘扇区获取空闲条带,并按照空闲条带宽度下发读操作请求,并把所述空闲条带加入到该线程的条带队列中,当所述空闲条带内所有磁盘中的数据读取完毕后将对应条带发送到第二线程;第二线程模块,用于按照条带队列中条带的顺序依次对条带进行异或运算处理,并将对应条带发送到第三线程;第三线程模块,用于按照条带队列中条带的顺序依次将条带中的数据下发到热备磁盘。其中,所述主线程模块具体用于当RAID存在故障磁盘时触发RAID重建,RAID主线程创建三个线程,并分别将三个线程进行CPU绑定。其中,所述第一线程模块,包括:条带申请单元,用于根据磁盘扇区以固定数据长度作为步长申请空闲条带作为当前条带;读操作单元,用于申请成功后,对RAID中正常磁盘按照当前条带宽度下发起读操作请求并加入条带队列,在发起读操作请求后处理下一个步长的数据;第一发送单元,用于当所述当前条带中读操作对应数据成功返回到所述当前条带缓存区后,将所述当前条带发送到第二线程。其中,所述第二线程模块,包括:异或运算单元,用于对当前条带发起异或运算请求,并在发起异或运算请求后处理下一个条带;第二发送单元,用于当所述当前条带成功执行异或运算后,将所述当前条带发送到第三线程。本专利技术还提供一种RAID,包括:根据上述任一项所述的RAID重建的系统。本专利技术所提供的RAID重建的方法,包括:当RAID触发重建时,RAID主线程创建三个线程;其中,三个线程中均包含有条带队列;三个线程并行的按照对应的条带队列中条带的顺序依次执行线程操作,当各条带队列中均不含有条带时,完成RAID重建;其中,第一线程,用于根据磁盘扇区获取空闲条带,并按照空闲条带宽度下发读操作请求,并把所述空闲条带加入到该线程的条带队列中,当所述空闲条带内所有磁盘中的数据读取完毕后将对应条带发送到第二线程;第二线程,用于按照条带队列中条带的顺序依次对条带进行异或运算处理,并将对应条带发送到第三线程;第三线程,用于按照条带队列中条带的顺序依次将条带中的数据下发到热备磁盘;可见,该方法将重建的过程划分3个阶段,处理过程更加清晰,使用流水线处理,充分利用并行操作,提高了条带的处理速度,缩短了RAID重建的时间,克服了传统的RAID在重建时,每个条带都是串行处理的,且只有一个线程,不能充分发挥多核的优势的缺点;本专利技术还提供RAID重建的系统及RAID,具有上述有益效果,在此不再赘述。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例所提供的RAID重建的方法的执行示意图;图2为本专利技术实施例所提供的RA本文档来自技高网
...
一种RAID重建的方法、系统及RAID

【技术保护点】
一种RAID重建的方法,其特征在于,包括:当RAID触发重建时,RAID主线程创建三个线程;其中,三个线程中均包含有条带队列;三个线程并行的按照对应的条带队列中条带的顺序依次执行线程操作,当各条带队列中均不含有条带时,完成RAID重建;其中,第一线程,用于根据磁盘扇区获取空闲条带,并按照空闲条带宽度下发读操作请求,并把所述空闲条带加入到该线程的条带队列中,当所述空闲条带内所有磁盘中的数据读取完毕后将对应条带发送到第二线程;第二线程,用于按照条带队列中条带的顺序依次对条带进行异或运算处理,并将对应条带发送到第三线程;第三线程,用于按照条带队列中条带的顺序依次将条带中的数据下发到热备磁盘。

【技术特征摘要】
1.一种RAID重建的方法,其特征在于,包括:当RAID触发重建时,RAID主线程创建三个线程;其中,三个线程中均包含有条带队列;三个线程并行的按照对应的条带队列中条带的顺序依次执行线程操作,当各条带队列中均不含有条带时,完成RAID重建;其中,第一线程,用于根据磁盘扇区获取空闲条带,并按照空闲条带宽度下发读操作请求,并把所述空闲条带加入到该线程的条带队列中,当所述空闲条带内所有磁盘中的数据读取完毕后将对应条带发送到第二线程;第二线程,用于按照条带队列中条带的顺序依次对条带进行异或运算处理,并将对应条带发送到第三线程;第三线程,用于按照条带队列中条带的顺序依次将条带中的数据下发到热备磁盘。2.根据权利要求1所述的RAID重建的方法,其特征在于,当RAID触发重建时,RAID主线程创建三个线程,包括:当RAID存在故障磁盘时触发RAID重建,RAID主线程创建三个线程,并分别将三个线程进行CPU绑定。3.根据权利要求2所述的RAID重建的方法,其特征在于,根据磁盘扇区获取空闲条带,并按照空闲条带宽度下发读取数据请求,并把所述空闲条带加入到该线程的条带队列中,当所述空闲条带内所有磁盘中的数据读取完毕后将对应条带发送到第二线程,包括:根据磁盘扇区以固定数据长度作为步长申请空闲条带作为当前条带;申请成功后,对RAID中正常磁盘按照当前条带宽度下发起读操作请求并加入条带队列,在发起读操作请求后处理下一个步长的数据;当所述当前条带中读操作对应数据成功返回到所述当前条带缓存区后,将所述当前条带发送到第二线程。4.根据权利要求3所述的RAID重建的方法,其特征在于,对条带进行异或运算处理,并将对应条带发送到第三线程,包括:对当前条带发起异或运算请求,并在发起异或运算请求后处理下一个条带;当所述当前条带成功执行异或运算后,将所述当前条带发送到第三线程。5.根据权利要求4所述的RAID重建的方法,其特征在于,将...

【专利技术属性】
技术研发人员:李辉侯英利张永锋刘浩
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南;41

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

1