发明名称 一种RAID5重构中的数据源选择方法
摘要 本发明涉及一种RAID5重构中的数据源选择方法。本发明方法首先确定被损坏磁盘中一个磁盘块B(x,y)的两个数据源集合S<sub>raid</sub>和S<sub>backup</sub>,然后对损坏磁盘的每个磁盘块分别计算该磁盘块两个数据源S<sub>raid</sub>和S<sub>backup</sub>的权重W<sub>raid</sub>和W<sub>backup</sub>,W<sub>raid</sub>和W<sub>backup</sub>用来估算读取S<sub>raid</sub>和S<sub>backup</sub>中所有块的代价,最后根据获得的单个磁盘块的数据源及其权重,得到损坏磁盘k中所有磁盘块的最佳数据源集合V<sub>k</sub>。本发明方法通过对当前存储系统性能和数据更新状况进行分析,在RAID5剩余磁盘和备份系统这两个数据源之间选择最为合适的数据源来重构数据,有效提高了RAID5的重构性能。
申请公布号 CN104199623A 申请公布日期 2014.12.10
申请号 CN201410445171.5 申请日期 2014.09.03
申请人 创业软件股份有限公司 发明人 朱旭东;高春蓉;苏寿海
分类号 G06F3/06(2006.01)I;G06F11/14(2006.01)I 主分类号 G06F3/06(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项  一种RAID5重构中的数据源选择方法,RAID5损坏磁盘上的数据过两个来源进行恢复:(a)RAID5剩余的正常磁盘;(b)备份系统;其特征在于:在重构过程中,首先对损坏磁盘上的每一个磁盘块建立两个数据源集合,第一数据源集合完全由RAID5剩余正常磁盘上的磁盘块组成,通过这些磁盘块计算出损坏磁盘上的这个磁盘块上的数据;第一数据源集合由备份系统中能够用于计算这一损坏磁盘块的备份块组成,如果备份系统上的备份块上的数据不是最新的版本,则由RAID5剩余正常磁盘中与该备份块对应的磁盘块代替这个备份块加入到第二数据源集合,使用第二数据源集合计算出损坏磁盘块;然后根据RAID5的构成和备份系统的性能分别估算出读出这两个数据源集合的代价;最后选择代价低的数据源集合来对损坏磁盘的这一磁盘块进行重构;具体步骤是:步骤一、确定被损坏磁盘中一个磁盘块B(x,y)的两个数据源集合S<sub>raid</sub>和S<sub>backup</sub>,1≤x≤n,1≤y≤m;其中n 为RAID5中的磁盘个数,m为每个磁盘的磁盘块个数,x表示该磁盘块所在磁盘的磁盘号,y表示该磁盘块在磁盘x中的磁盘块号,S<sub>raid</sub>为全部来自RAID5的数据源,S<sub>backup</sub>为基于备份系统的数据源,确定的具体方法是:步骤1、S<sub>raid</sub> =Φ;S<sub>backup</sub>=Φ;Φ表示空集合;步骤2、设定i=1;i为当前检测的磁盘号;步骤3、如果i≠x,则 S<sub>raid</sub>∪{B(i,y)};步骤4、设置i=i+1;如果i≤n,则重复执行步骤3;步骤5、确定磁盘块B(x,y)的类型:如果x等于(2‑y)﹪n,则表示B(x,y)为校验块P(x,y),直接执行步骤8;如果x不等于(2‑y)﹪n,则表示B(x,y)为数据块D(x,y),执行步骤6;其中﹪表示取模操作;步骤 6、如果x大于(2‑y)﹪n,设定r=x;如果x小于(2‑y)﹪n,设定r=x‑1;r为中间变量;步骤7、 z=y×n+r;如果bitmap[z]=0,则S<sub>backup</sub>= S<sub>backup</sub>∪{C(z)},其中bitmap[z]表示第z个块的更新标识,C(z)表示RAID5在备份系统中的最新版本第z号备份块,直接执行步骤10;步骤8、设定i=1; 步骤9、如果i等于x,直接执行步骤11;步骤10、如果bitmap[z]=0,则S<sub>backup</sub>= S<sub>backup</sub>∪{C(z)};如果bitmap[z]=1,则S<sub>backup</sub>= S<sub>backup</sub>∪{B(i,y)};步骤11、设置i=i+1;如果i≤n,则重复执行步骤9;步骤12、如果S<sub>backup</sub>= S<sub>raid</sub>,则S<sub>backup</sub>=Φ;步骤13、返回S<sub>raid</sub>和S<sub>backup</sub>;步骤二、对损坏磁盘的每个磁盘块分别计算该磁盘块两个数据源S<sub>raid</sub>和S<sub>backup</sub>的权重W<sub> raid</sub>和W<sub>backup</sub>,W<sub> raid</sub>和W<sub>backup</sub>用来估算读取S<sub>raid</sub>和S<sub>backup</sub>中所有块的代价,具体方法是:步骤Ⅰ、获取当前每秒钟到达RAID5的读写请求个数q,每秒钟到达备份系统的读写请求个数为p;步骤Ⅱ、W<sub> raid</sub> =| S<sub>raid</sub> |×(100×n)/q,其中| S<sub>raid</sub> |表示S<sub>raid</sub>中元素的个数;步骤Ⅲ、如果S<sub>backup</sub>=Φ,则W<sub>backup</sub>=∞;步骤Ⅳ、W<sub>backup</sub> =|S<sub>backup‑B</sub>|×(100×n)/q+| S<sub>backup‑C</sub> |×100/p,其中|S<sub>backup‑B</sub>|表示S<sub>backup</sub>中磁盘块的个数,|S<sub>backup‑C</sub>|表示S<sub>backup</sub>中备份块的个数;步骤Ⅴ、返回W<sub> raid</sub>和W<sub>backup</sub>;步骤三、根据步骤一和二获得的单个磁盘块的数据源及其权重,得到损坏磁盘k中所有磁盘块的最佳数据源集合V<sub>k</sub>;具体方法是:步骤(1)、设定j=1;V<sub>k</sub>=Φ;j为损害磁盘上当前需要重构的磁盘块号;步骤(2)、如果j&gt;m,则跳转到步骤(7);步骤(3)、使用步骤一获得磁盘块B(k,j)的两个数据源S<sub>raid</sub>和S<sub>backup</sub>;步骤(4)、使用步骤二获得数据源S<sub>raid</sub>和S<sub>backup</sub>权重W<sub> raid</sub>和W<sub>backup</sub>;步骤(5)、如果W<sub> raid</sub>&gt;W<sub>backup</sub>,则V<sub>k</sub>=V<sub>k</sub>∪{S<sub>raid</sub>};如果W<sub> raid</sub>≤W<sub>backup</sub>,则V<sub>k</sub>=V<sub>k</sub>∪{S<sub>backup</sub>};步骤(6)、设置j=j+1,跳转到步骤(2);步骤(7)、V<sub>k</sub>即为损坏磁盘k每一个磁盘块的数据源集合。
地址 310012 浙江省杭州市西湖区文三路199号创业大厦五楼