一种提高磁盘阵列数据重构效率的方法

文档序号:6401387阅读:416来源:国知局
专利名称:一种提高磁盘阵列数据重构效率的方法
技术领域
本发明涉及计算机系统及存储技术领域,具体地说是一种提高磁盘阵列数据重构效率的方法。
背景技术
目前内核中的软RAID对数据于重构是按照条带进行,读取所有数据盘经过校验再把得到的数据写到添加的热备盘上;这个过程必须包含读和写操作,分两步完成,读写操作要相互等待,属于串行操作,降低了效率(如图1)。
对于具有冗余校验信息的RAID5系统,RAID5新创建时各成员盘数据并不能保证条带数据是一致性的.数据的不一致性使得系统无法按照正常流程处理主机IO请求,所得到的校验数据可能是错误的,因此这些级别的RAID5创建时必须先进行一致性初始化工作。RAID5是支持一块盘失效的情况,当一块盘失效,出现降级的情况,加入热备盘进行恢复,也相当于要进行一致性校验,任务必须遍历成员盘的所有数据,这是一项非常耗时的工作,并且随着磁盘的容量的增大,这个过程需要的时间就会更长。
在这个过程中,如果再出现另一块盘失效的话,那么由于RAID5的冗余机制,无法再进行恢复了,整个阵列就会失效。因此这个过程时间越长的话,再次有盘失效的概率就越大。因此有必要找到一种方法加快对失效盘的数据重构。发明内容
本发明的目的是提供一种提高磁盘阵列数据重构效率的方法。
本发明的目的是按以下方式实现的,把传统的重构过程对同一条带的读和写处理线程分成A、B两个线程进行,只让条带处理线程A进行读取操作,读取阵列中除热备盘以外的数据并校验,此操作完成后立即释放占有的条带缓存;而另一个写盘操作由一个线程B单独进行;读和写的速度相互协调匹配,这样就把原来串行的操作改成并行的操作,从而提高重构的效率,具体步骤如下: 线程A读取阵列中除热备盘以外的数据,采用队列先进先出原则校验得到重构数据块加入到缓存队列中,为了控制内存的占用情况,系统对缓存队列的数据块数量进行了限制,但数量应大于条带缓存的数量,从而让写数据操作异步进行; 线程B不断从缓存队列按顺序取得数据,队列的先进先出原则使得先校验出来的数据先写入磁盘,对于每次写数据的热备盘的位置,要进行标示记录更新在超级块信息里,防止断电重启后从头开始进行重构,重新启动从这个标示记录开始重构即可; 当线程A发现缓存队列占满时就等待,当写盘线程B发现缓存队列为空的时候也要等待,其中,读取校验出来的数据,很快被写盘线程B写到磁盘,读写速度达到一个均衡,缓存队列也占不满,由于写盘操作的等待不会影响效率,从而整体效率得到提升; 如果写盘速度太慢,读盘速度大于写盘速度,但读盘的数量主要受制于条带缓存的数量,系统设置缓存队列数量大于条带缓存,一个数据块只相当于一个盘对应的数据块,相当于是数倍甚至几十倍于条带缓存,所以只要对缓存队列限制得当,不会影响读盘线程A的效率,反而能够明显提升整个数据重构流程的效率。
本发明的有益效果是:是把重构过程对同一条带的处理分成两个线程进行,一个线程只进行读盘操作,另一个线程进行写盘操作对缓存队列的数据块数量进行了限制,但数量大于条带缓存的数量,从而可以让写数据异步进行,并对读盘操作不造成影响。读取原数据盘的数据,校验得到数据加入到该缓存队列;另一个写盘的线程则从该缓存队列取得数据。对于每次写数据的位置要进行标示记录,可以更新在超级块信息里,防止断电重启后从头开始进行重构。


图1现有技术的数据重构处理示意图; 图2改进后数据重构处理示意图; 图3改进后读盘操作线程A流程; 图4改进后读盘操作线程B流程图。
具体实施方式
参照说明书附图对本发明的方法作以下详细地说明。
目前内核中的软RAID对于重构是按照条带进行,读取所有数据盘经过校验再把得到的数据写到添加的热备盘上;这个过程必须包含读和写操作,分两步完成,读写操作要相互等待,属于串行操作,降低了效率(如图1)。本发明就是把读和写分开进行,只让条带处理线程A进行读取操作,读取阵列中除热备盘以外的数据并校验,此操作完成后立即释放占有的条带缓存;而另一个写盘操作由一个线程B单独进行;读和写的速度可以相互协调匹配(如图2 )。这样就把原来串行的操作改成并行的操作,从而提高重构的效率。
线程A的处理流程如图3,线程B的流程如图4。
线程A读取阵列中除热备盘以外的数据,校验得到重构数据块加入到缓存队列(先进先出原则)中,为了控制内存的占用情况,本发明对缓存队列的数据块数量(每个数据块4K )进行了限制,但数量应大于条带缓存的数量,从而可以让写数据操作异步进行。另一个线程B不断从缓存队列按顺序取得数据,队列的先进先出原则使得先校验出来的数据先写入磁盘,对于每次写数据的热备盘的位置要进行标示记录,可以更新在超级块信息里,防止断电重启后从头开始进行重构,重新启动从这个标示记录开始重构即可。
当线程A发现缓存队列占满时就等待,当写盘线程B发现缓存队列为空的时候也要等待。本发明的一种情况是读取校验出来的数据,很快被写盘线程B写到磁盘,读写速度达到一个均衡,缓存队列也占不满,从而相对目前的方法有很大的效率提升(写盘操作的等待不会影响效率);本发明的另一种情况可能是写盘速度太慢,读盘速度大于写盘速度,但读盘的数量主要受制于条带缓存的数量,本发明设置缓存队列数量大于条带缓存,一个数据块只相当于一个盘对应的数据块,可以是数倍甚至几十倍于条带缓存(具体要考虑到内存的大小),所以只要对缓存队列限制得当,不会影响读盘线程A的效率,反而能够明显提升整个数据重构流程的效率。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
权利要求
1.一种提高磁盘阵列数据重构效率的方法,其特征在于,把传统的重构过程对同一条带的读和写处理线程分成A、B两个线程进行,只让条带处理线程A进行读取操作,读取阵列中除热备盘以外的数据并校验,此操作完成后立即释放占有的条带缓存;而另一个写盘操作由一个线程B单独进行;读和写的速度相互协调匹配,这样就把原来串行的操作改成并行的操作,从而提高重构的效率,具体步骤如下: 线程A读取阵列中除热备盘以外的数据,采用队列先进先出原则校验得到重构数据块加入到缓存队列中,为了控制内存的占用情况,系统对缓存队列的数据块数量进行了限制,但数量应大于条带缓存的数量,从而让写数据操作异步进行; 线程B不断从缓存队列按顺序取得数据,队列的先进先出原则使得先校验出来的数据先写入磁盘,对于每次写数据的热备盘的位置,要进行标示记录更新在超级块信息里,防止断电重启后从头开始进行重构,重新启动从这个标示记录开始重构即可; 当线程A发现缓存队列占满时就等待,当写盘线程B发现缓存队列为空的时候也要等待,其中,读取校验出来的数据,很快被写盘线程B写到磁盘,读写速度达到一个均衡,缓存队列也占不满,由于写盘操作的等待不会影响效率,从而整体效率得到提升; 如果写盘速度太慢,读盘速度大于写盘速度,但读盘的数量主要受制于条带缓存的数量,系统设置缓存队列数量大于条带缓存,一个数据块只相当于一个盘对应的数据块,相当于是数倍甚至几十倍于条带缓存,所以只要对缓存队列限制得当,不会影响读盘线程A的效率,反而能够明显提升整个数据重构流程的效率。
全文摘要
本发明提供一种提高磁盘阵列数据重构效率的方法,是把重构过程对同一条带的处理分成两个线程进行,一个线程只进行读盘操作,另一个线程进行写盘操作对缓存队列的数据块数量进行了限制,但数量大于条带缓存的数量,从而可以让写数据异步进行,并对读盘操作不造成影响。读取原数据盘的数据,校验得到数据加入到该缓存队列;另一个写盘的线程则从该缓存队列取得数据。对于每次写数据的位置要进行标示记录,可以更新在超级块信息里,防止断电重启后从头开始进行重构。
文档编号G06F3/06GK103186438SQ201310112269
公开日2013年7月3日 申请日期2013年4月2日 优先权日2013年4月2日
发明者古世磊, 吴庆民 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1