[发明专利]一种磁盘阵列初始化性能提升方法有效
申请号: | 201310671498.X | 申请日: | 2013-12-12 |
公开(公告)号: | CN103645862A | 公开(公告)日: | 2014-03-19 |
发明(设计)人: | 杨峰;孙斌;李艳国;周泽湘;李辉;单晓宇;罗华;谢红军 | 申请(专利权)人: | 北京同有飞骥科技股份有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100095 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 磁盘阵列 初始化 性能 提升 方法 | ||
技术领域
本发明涉及存储技术,尤其涉及一种更加有效的磁盘阵列初始化方法,属于计算机存储技术领域。
背景技术
磁盘阵列(RAID)技术为了保证数据的可用性和后续应用访问的性能,在使用之前通常要进行初始化。
磁盘阵列在未初始化的区域中,为了保证写入数据的一致性,通过重构写的方式进行条带写处理。即,当前条带从所有不需要修改的数据块中读取原来的数据,再和本条带中写入位置的新数据块数据校验出新的校验块数据,并将新的数据块数据以及新的校验块数据一并写入当前条带。
RAID(以RAID5为例)在已初始化的区域中,条带数据已经具有一致性,该条带中的每个数据都可通过其他存储介质中同一条带中的数据校验出来。新写入的数据,通过读改写的方式进行条带写处理。即,只读取写入位置的数据块数据和校验块数据,重新经过校验得出新的校验块数据,并将新的数据块数据以及新的校验块数据一并写入当前条带。
现有技术中,RAID(以RAID5为例)初始化的处理方式是以条带为单位的。在初始化时,会先读取每个存储介质的数据,将所有数据块数据与校验块数据一起进行异或运算,判断运算结果,如果为0,则说明该条带数据一致,跳过此条带,继续初始化下一个条带;如果非0,则说明该条带数据不一致,需要使用所有数据块数据校验出新的校验块数据。但因为现有技术RAID校验块数据按照条带大小分布在所有存储介质中,在初始化时,每个存储介质都会有读写操作,导致存储介质读写交叉频繁,限制了初始化速度。
发明内容
本发明提供一种磁盘阵列初始化方法,应用于计算机存储领域存储设备中,解决现有技术存储介质读写交叉频繁,初始化速度受限的问题,具体技术方案为:
步骤一、对存储介质进行区域划分:将组成RAID设备中的每个存储介质划分为N个区域,其中1<=N<=STRIPE_NUM,STRIPE_NUM为条带个数,每个区域包含STRIPE_NUM/N个条带;
步骤二、进行多区域并行初始化,且多区域在并行初始化时,同一存储介质保证一次处理的读写请求足够长,避免读写频繁交叉造成的性能下降;
步骤三、每个区域内部,选择至少一个存储介质为校验块写入盘,其他存储介质为数据块读取盘;
步骤四、进行读写请求判断,若为读请求,则执行步骤五,若为写请求,执行步骤六;
步骤五、读线程用于各区域内初始化读请求的下发:
(1)当初始化开始时,唤醒一个空闲的读线程;
(2)读线程唤醒后,选择一个未被初始化区域,根据初始化位置计算出该位置所在区域号;
(3)计算该区域内校验块数据写入盘号;
(4)从该区域内非校验块数据写入盘上读取数据,其中所有数据的大小相同,记录读请求下发个数;
(5)检查该区域内读请求是否处理完毕,如果是,则唤醒一个空闲写线程,执行步骤六,然后读线程继续下一步;如果不是,则读线程继续下一步;
(6)判断所有区域的读请求是否下发完毕,如果是,则跳转至步骤五(7);如果不是,则返回步骤五(1)继续下一个区域的读请求下发;
(7)读线程停止;
步骤六、写线程用于处理完成读请求的区域写请求的下发,在某一区域数据读取完毕后,写线程负责校验出校验块数据,并写入该区域内的校验盘对应位置,具体处理流程如下:
(1)唤醒一个空闲写线程,第一次被唤醒是由步骤五(5)触发;
(2)扫描一个初始化未完成区域;
(3)判断该区域内读请求计数是否为0,如果是,则使用RAID校验所有读取出来的数据,返回步骤六(1);如果不是,则写线程继续下一步;
(4)判断该区域内是否有数据校验完成,如果是,则向当前区域内校验块写入盘下发写请求,准备将校验出来的数据写入校验盘,返回步骤六(1);如果不是,则写线程继续下一步;
(5)判断该区域内是否有写请求处理完成,如果是,则更新当前区域初始化状态和初始化位置信息,然后写线程继续下一步;如果不是,则写线程停止,跳转至步骤六(8);
(6)判断当前区域初始化是否完成,如果是,则写线程继续下一步;如果不是,则写线程停止,跳转至步骤六(8);
(7)判断所有区域初始化是否完成,如果是则更新RAID初始化状态,然后初始化结束;如果不是,则写线程停止;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京同有飞骥科技股份有限公司,未经北京同有飞骥科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310671498.X/2.html,转载请声明来源钻瓜专利网。