一种存储系统扩容后数据迁移的方法、存储系统与流程

文档序号:14897310发布日期:2018-07-08 08:46阅读:196来源:国知局
本发明涉及存储
技术领域
:,尤其涉及一种存储系统扩容后数据迁移的方法、存储系统
背景技术
::现有技术中,存储系统用于保存企业、用户的海量数据,随着信息的爆炸式增长,需要保存在所述存储系统中的数据越来越多,所以经常会出现对已有存储系统进行扩容的需求。在现有技术中,在扩容后,需要针对扩容后的存储系统设计新的数据布局方式,并依据所述新的数据布局方式将扩容前的存储系统中已保存的全部数据迁移到扩容后的存储系统中的对应位置上,依据这种方法中,扩容前存储系统中保存的所有数据都会被迁移,由此导致扩容后的数据迁移工作量太大,数据迁移所需要的时间多。技术实现要素:本申请提供了一种存储系统扩容后数据迁移的方法、存储系统,可以实现在所述存储系统扩容后只需要对扩容前的所保存的数据中部分数据进行迁移,由此降低扩容后数据迁移的工作量。第一方面,本申请的实施例提供了一种存储系统扩容后数据迁移的方法,所述存储系统包括控制器,第i次扩容前所述存储系统包含vi-1个磁盘,第i次扩容后所述存储系统包括vi个磁盘,i大于等于1;所述控制器同所有磁盘可通信;所述数据在所述存储系统中基于校验块分散技术分布在所述磁盘上该方法包括:所述控制器确认第i次扩容的迁移单元包含的块个数;将扩容前所述存储系统包含的vi-1个磁盘中的每个磁盘的存储空间分别划分为多个迁移单元,每个迁移单元包含上述个数的块;基于扩容后所述存储系统包括的磁盘数vi、及扩容前所述存储系统包含的磁盘数vi-1确认第i次扩容后数据迁移所需要的辅助平衡不完全区组设计基于所述辅助平衡不完全区组设计从所述扩容前的vi-1个磁盘的所述多个迁移单元中选择至少1个迁移单元,将所述选择的至少1个迁移单元所包含的块迁移到扩容后的vi个磁盘中的1个磁盘上。结合第一方面,在第一方面的第一种实现中,所述数据在所述存储系统中基于校验块分散技术分布在所述磁盘上具体为:所述控制器基于完全区组设计表确定所述数据在所述存储系统的保存位置,所述完全区组设计表基于平衡不完全区组设计生成,所述平衡不完全区组设计的参数为(b,v,k,r,λ),其中:v表示所述存储系统包含v个磁盘;b表示所述存储系统包含b个条带,分别对应所述平衡不完全区组设计的b个区组,所述b个区组中的每个区组中的每一个元素表示1个块在在所述存储系统中的磁盘的磁盘号;k表示每个条带包含k个块;r表示每个磁盘包含r个块;所述v个磁盘中任意2个磁盘分别含有λ个相同的条带;所述块是数据块或校验块。结合第一方面的第一种实现,在第一方面的第二种实现中,所述方法还包括:为每一次扩容后的存储系统生成完全区组设计表t[i],所述t[i]是在第i次扩容后为保存新数据所使用的完全区组设计表,其中bi、vi、ki、ri、λi为构成t[i]的bibd参数。结合第一方面,在第一方面的第三种实现中,所述基于扩容后所述存储系统包括的磁盘数vi、及扩容前所述存储系统包含的磁盘数vi-1确认所述第i次扩容后数据迁移所需要的辅助平衡不完全区组设计具体为:确认所述的参数的取值为所述vi的取值、的取值为所述vi-1的取值;基于所述和查询平衡不完全区组设计数据库以确认的取值;基于所述和所述的取值确认查询所述平衡不完全区组设计数据库以确认构成所述的区组;确认所述的参数和的取值。结合第一方面及上述任意一种实现,在第一方面的第四种实现中,所述控制器确认迁移单元包含的块个数具体为通过如下公式确认所述迁移单元包含的块的个数:其中ri-1为构成t[i-1]的平衡不完全区组设计的参数;为构成b[i-1]的平衡不完全区组设计的参数,gcd为取最大公约数的操作结合第一方面及上述任意一种实现,在第一方面的第五种实现中,所述基于所述辅助平衡不完全区组设计从所述扩容前的vi-1个磁盘的所述多个迁移单元中选择至少1个迁移单元,将所述选择的至少1个迁移单元所包含的块迁移到扩容后的vi个磁盘中的1个磁盘上具体为:所述选择的至少1个迁移单元为rm,n,其中m表示所述选择的至少1个迁移单元的迁移单元号,n表示所述选择的至少1个迁移单元所在的磁盘号;获取集合s0,所述集合s0为所述的区组m与集合{0,1,···,vi-1-1}的差集;获取集合s1,所述集合s1为集合{0,1,···,vi-1-1}与所述的区组m的差集;若n的取值是集合s1中的第k小的元素,则确认所述迁移单元rm,n待迁移到的目标磁盘号为所述集合s0中取值为第k小的元素;将所述迁移单元rm,n迁移到与所述目标磁盘号相对应的磁盘上。可选的,在迁移过程中所述迁移单元rm,n的偏移量保持不变。本申请的实施例的第二方面提供了一种存储系统,所述存储系统包括控制器,第i次扩容前所述存储系统包含vi-1个磁盘,第i次扩容后所述存储系统包括vi个磁盘,所述i大于等于1;所述控制器同所有磁盘可通信;所述磁盘,用于保存数据,所述数据基于校验块分散技术分布在所述磁盘上;所述控制器,用于确认第i次扩容的迁移单元包含的块个数;将扩容前所述存储系统包含的vi-1个磁盘中的每个磁盘的存储空间分别划分为多个迁移单元,每个迁移单元包含上述个数的块;基于扩容后所述存储系统包括的磁盘数vi、及扩容前所述存储系统包含的磁盘数vi-1确认第i次扩容后数据迁移所需要的辅助平衡不完全区组设计基于所述辅助平衡不完全区组设计从所述扩容前的vi-1个磁盘的所述多个迁移单元中选择至少1个迁移单元,将所述选择的至少1个迁移单元所包含的块迁移到扩容后的vi个磁盘中的1个磁盘上。所述第二方面的第一至第五种实现同上述第一方面的第一至第五种实现,此处不再赘述。第三方面,本申请的实施例提供了一种控制器,所述控制器应用于存储系统中,所述存储系统包括所述控制器,第i次扩容前所述存储系统包含vi-1个磁盘,第i次扩容后所述存储系统包括vi个磁盘,i大于等于1;所述控制器同所有磁盘可通信;所述数据在所述存储系统中基于校验块分散技术分布在所述磁盘上;所述控制器包括处理器、存储器,所述存储器保存有程序指令,所述处理器用于执行所述程序指令以完成如下动作:所述控制器确认第i次扩容的迁移单元包含的块个数;将扩容前所述存储系统包含的vi-1个磁盘中的每个磁盘的存储空间分别划分为多个迁移单元,每个迁移单元包含上述个数的块;基于扩容后所述存储系统包括的磁盘数vi、及扩容前所述存储系统包含的磁盘数vi-1确认第i次扩容后数据迁移所需要的辅助平衡不完全区组设计基于所述辅助平衡不完全区组设计从所述扩容前的vi-1个磁盘的所述多个迁移单元中选择至少1个迁移单元,将所述选择的至少1个迁移单元所包含的块迁移到扩容后的vi个磁盘中的1个磁盘上。所述第三方面的第一至第五种实现同上述第一方面的第一至第五种实现,此处不再赘述。结合第三方面及第三方面的第二种实现,在第三方面的第七种实现中,所述控制器还包括第一通信接口,则所述第一通信接口还用于接收来自主机的写请求,所述写请求携带有新的待写入的数据,所述存储器还用于缓存所述新的待写入数据,所述处理器确定所述新的待写入数据的校验块,所述处理器还用于根据所述t[i],通过所述第二通信接口将所述新的待写入数据和其校验块分别写入磁盘。第四方面,本申请的实施例提供了一种存储介质,该存储介质中存储了程序,该程序被计算设备运行时,该计算设备执行前述第一方面或第一方面的任一实现方式提供的方法。该存储介质包括但不限于快闪存储器、hdd或ssd。本申请第五方面提供了一种计算机程序产品,该计算机程序产品包括程序指令,当该计算机程序产品被计算机执行时,该计算机执行前述第一方面或第一方面的任一实现方式提供的方法。该计算机程序产品可以为一个软件安装包。本发明实施例中,所述存储系统完成了第i次扩容后通过利用辅助平衡不完全区组设计指导数据迁移,由于所述辅助平衡不完全区组设计中的任何元素包含在的区组的个数相同,且每个迁移单元内含有相同数量的校验块,扩容后数据迁移量达到最小,由此明显减小了扩容后数据迁移所需要的时间,也减小了因扩容后需要进行数据迁移操作而造成的对用户请求响应的延迟。附图说明图1本发明实施例提供的存储系统的组成示意图;图2为本发明实施例提供的一个(4,4,3,3,2)-bibd的区组图;图3为本发明实施例提供的基于图2所示的bibd构建的完全区组设计表示例图;图4为本发明实施例提供的一种在存储系统扩容后数据迁移的方法的流程示意图;图5为本发明实施例提供的一种辅助bibd的区组图;图6为本发明实施例提供的数据迁移的逻辑示意图;图7为本发明实施例提供的扩容后完成数据迁移后的数据布局示意图;图8为本发明实施例提供的扩容后所述存储系统写入新数据的方法流程图;图9为本发明实施例提供的扩容后所述存储系统写入新数据的示意图;图10为本发明实施例提供的一种控制器的结构示意图。具体实施方式图1描绘了本发明实施例提供的存储系统的组成图,所述存储系统包括控制器和磁盘,在实际组网中,所述磁盘可以有多个。所述控制器与主机(图中未示出)可通信,如可以是通过存储区域网络(英文:storageareanetwork,san),也可以通过其他网络,如以太网、局域网、广域网等与所述主机通信。所述控制器可以是一种计算设备,如服务器、台式计算机等等,在所述控制器上可以安装操作系统以及应用程序。所述控制器可以接收来自主机的输入输出(i/o)请求。所述控制器还可以存储所述i/o请求中携带的数据(如果有的话),并且将该数据写入磁盘中。图1仅是示例性说明,在实际应用中存储系统可包含多个控制器,每个控制器的物理结构和功能与控制器类似,各个控制器之间、以及各个控制器和磁盘之间能够相互通信。本实施例并不限定控制器的个数、各个控制器之间的连接方式、以及任意一个控制器与磁盘之间的连接方式。所述控制器是所述存储系统的系统控制器,系统控制器一般是独立的设备,如无特别指明,本实施例中的控制器都是指系统控制器。待保存在所述存储系统中的每一个块(chunk)按照满足平衡不完全区组设计(balancedincompleteblockdesign,bibd)的方式来决定该块在所述存储系统中的位置,所述每一个块可以是数据块,也可以是校验块,这种数据分布方式通常也叫做校验块分散(paritydeclustering)技术。其中bibd为组合数学中的“平衡不完全区组设计”,定义如下:设集合x={0,1…,v-1},b={t0,t1…,tb-1}是集合x上的一个区组(tuple)设计,若满足如下条件则称b为(b,v,k,r,λ)-bibd:1)|t0|=|t1|=…=|tb-1|=k;2)x中的任何元素均属于r个区组;3)x中的任何一对元素均包含在λ个区组中。如图2所示,为一个(4,4,3,3,2)-bibd,其中b=4,v=4,k=3,r=3,λ=2;其中x={0,1,2,3},b={t0,t1,t2,t3},t0即为区组0,t1即为区组1,t2即为区组2,t3即为区组3,且满足|t0|=|t1|=|t2|=|t3|=k=3;x中的任何元素均属于r=3个区组,如x中的元素0属于区组t0、t1、t2;x中的任何一对元素均包含在λ=2个区组中,如元素0和元素1这对元素包含在区组t0、t1中。本发明实施例中,所述控制器利用(b,v,k,r,λ)-bibd生成完全区组设计表(fullblockdesigntable),并基于所述完全区组设计表决定每一个块在存储系统中的磁盘上的保存位置。在所述完全区组设计表所对应的存储系统中:由v个磁盘组成磁盘阵列,共有b个条带(stripe),每个条带包含k个块,每个磁盘含有r个块,且任意2个磁盘分别含有λ个相同的条带,例如,磁盘1所保存的各个块所归属的条带与磁盘2所保存的各个块所归属的条带中有λ个条带是一致的。所述bibd的b个区组分别对应所述b个条带,所述每一个区组中的每一个元素分别表示1个块应当保存在所述存储系统中的磁盘的磁盘号,在每个区组中可以标记部分元素用于表示校验块(paritychunk),且这种标记使校验块均匀分布。本发明实施例中,所述的校验块分散技术即是利用所述完全区组设计表来指导每一个块(如数据块、或校验块)应放置的磁盘号,且将所述每一个块在偏移量尽可能小的位置上,本实施例中,所述偏移量是指:以块的长度对每个磁盘的存储空间进行划分,每一个块长度的存储空间对应1个偏移量,可以从每个磁盘的起始存储位置开始对偏移量进行编号,一般从0开始编号。如图3所示,为本发明实施例通过图2所示的(4,4,3,3,2)-bibd构建的完全区组设计表的示例图,以及基于所述完全区组设计表完成的块在与其对应存储系统中的位置分布,在图3左边的所述完全区组设计表中,条带号0-3分别对应于图2中的区组0-3,如上所述,每个条带对应的区组的内的每个元素表示相应的块在所述存储系统中的磁盘的磁盘号,图中的方框用于标记该条带中的校验块,每个条带中方框内的元素表示该条带中的校验块保存在所述存储系统中的磁盘的磁盘号。如图所示,条带0对应的区组t0取值为{0,1,2},即表示所述条带0所包含的3个块分别应该保存在磁盘号为d0、d1、d2的3个磁盘上,其中条带0的第一元素是校验块,该校验块应该在磁盘d0上,所以在图3右边的磁盘阵列中p0、d0,0、d0,1分别在磁盘d0、d1、d2上,这里pi表示第i个条带的校验块,di,j表示第i个条带的数据块,j取值为0至k-1,分别表示第i个条带中的k个数据块。本发明实施例中,假设t[0]、t[1]、…、t[t]为在扩容的历史记录中使用的完全区组设计表,其中t[i]是在第i次扩容后为填充新数据所使用的完全区组设计表,t[0]即为所述存储系统没有进行过任何扩容前所使用的完全区组设计表,其中bi、vi、ki、ri、λi为构成t[i]的bibd参数。在第i次扩容过程中增加的磁盘数为vi-vi-1。为在扩容的历史记录中使用的辅助平衡不完全区组设计,其中为在第i次扩容后数据迁移所需要的辅助bibd,为的bibd参数,且需满足基于上述描述,本领域技术人员可以理解的是:若所述存储系统没有进行过任何扩容,则所述控制器基于所述t[0]来决定新写入的数据在磁盘上的保存位置,也是基于所述t[0]来查询已保存的数据;当进行第1次扩容时,生成并基于所述完成数据迁移,然后在所述第一次扩容后的存储系统中,所述控制器基于所述t[0]和所述完成对第一次扩容前已保存的数据进行查询,并进一步生成t[1],用于基于所述t[1]来决定第1次扩容后再写入所述存储系统中的数据的保存位置;进一步的,当需要第2次扩容时,所述控制器生成并基于所述完成数据迁移,然后在所述第2次扩容后的存储系统中,所述控制器基于所述t[0]、所述所述t[1]和所述完成对第2次扩容前已保存的数据进行查询,并进一步生成t[2],用于基于所述t[2]来决定第2次扩容后再写入所述存储系统中的数据的保存位置,依次类推,在第i次扩容后,所述控制器基于所述t[0]、t[1]、…、t[i-1]、以及基于所述来完成对在所述第i次扩容前已保存的数据进行查询,并且进一步生成t[i],并基于所述t[i]决定第i次扩容后再写入所述存储系统中的数据的保存位置。如图4所示,为本发明实施例提供的一种在存储系统扩容后数据迁移的方法的流程示意图。步骤400、控制器确认迁移单元包含的块的个数扩容前,将每个磁盘的存储空间划分若干区域,每个区域包含相同数量的块,在所述存储系统中每一磁盘的同偏移量范围的区域内所读取的数据量相同,这样的区域作为迁移单元,可知每个迁移单元含有相同数量的校验块。数据迁移的过程中,迁移单元为数据迁移最小单位。一个迁移单元如需迁移,则其内的块全部迁移。本发明实施例中,定义leni如下公式,用于表示在第i次扩容中,一个迁移单元所含的块的个数:上述公式的含义如下:当i=1时,即所述存储系统第1次扩容时,所述迁移单元应包含的块的个数为r0;当i>1时,其中,gcd为取最大公约数的操作,其中ri-1为构成t[i-1]的平衡不完全区组设计的参数;为构成b[i-1]的平衡不完全区组设计的参数。假设如图3所示的4块磁盘组成的存储系统还未做过扩容,则构成所述存储系统的t[0]的bibd参数为(b0,v0,k0,r0,λ0)=(4,4,3,3,2),以第1次扩容为例,迁移单元包含块的个数为len1=r0=3,即第1扩容的迁移单元中包含的块的个数为3。所述控制器基于上述方法确定第i次扩容后进行数据迁移所需的迁移单元所包含的块数leni后,基于所述leni将所述存储系统在第i次扩容前所包含的每个磁盘的存储空间进行划分,得到一个或多个区域,若某个区域包含有效块,也即该区域在扩容前保存有有效数据,则说明该区域是一个迁移单元。本领域普通技术人员可以理解的是,若某个区域不包含有效块,则表明该区域在扩容前没有存储数据、或存储的数据已经被删除,则表明该区域在扩容后不需要进行数据迁移。本发明实施例中,可以用rm,n表示一个迁移单元,其中m表示该迁移单元的迁移单元号,n表示该迁移单元在所述存储系统进行第i次扩容前所在的磁盘号。本发明实施例中,所述m可以通过如下公式计算获得:即磁盘n上每一个块的偏移量除以所述leni后向下取整,可以得知该块所归属的迁移单元的迁移单元号。以前述例子说明,假设所述存储系统第1次扩容迁移单元中包含的块的个数为3,则根据上述公式可知,在每个磁盘上,偏移量为0、1、2的3个块归属迁移单元0,偏移量为3、4、5的3个块归属迁移单元1,以此类推。步骤401、所述控制器确认本次迁移的辅助平衡不完全区组设计如上所述,其中为在第i次扩容过程中所使用的辅助bibd,为的bibd参数,且需满足也即在第i扩容时迁移数据需要的辅助bibd的参数取值中,的取值为所述存储系统第i次扩容后所包含的磁盘数vi的取值,的取值为第i次扩容前所述存储系统所包含的磁盘数vi-1的取值。进一步的,在明确了和两个参数的取值后,所述控制器可以查询bibd数据库,从与所述和相匹配的多个λ取值中选择1个作为的取值,需要强调的是,当取值越大,则会导致后续数据查询时需要的耗时越高,通常情况下,建议取较小的值。在所述控制器确认和的取值后,就可以在所述bibd数据库中查询与所述和对应的区组,以得到第i次迁移所需要的辅助bibd。进一步的,所述控制器还要确认所述辅助bibd中和的取值,本发明实施例中,可以有2种方式得到所述和的取值,方法1:可以依据如下公式确认和的取值:方法2:所述控制器可以直接通过统计上述在所述bibd数据库中查询到的与所述和对应的区组,也可以得到所述和的取值。针对图3所示的存储4块磁盘组成的存储系统,在第1次扩容前其bibd如图2所示,其相应的t[0]如图3所示。假设在第1扩容时增加了3块磁盘,即扩容后阵列所含的磁盘数为v1=4+3=7,记的参数为参数需要满足如图5所示,为一个满足该条件的则所述的参数为(7,7,4,4,2)。上述步骤400与步骤401的执行没有时间先后顺序的限制,2个步骤可以同时进行,也可以先执行步骤400再执行步骤401,或者反之。步骤402、所述控制器迁移数据所述控制器基于所述辅助平衡不完全区组设计从所述扩容前的vi-1个磁盘的所述多个迁移单元中选择至少1个迁移单元,将所述选择的至少1个迁移单元所包含的块迁移到扩容后的vi个磁盘中的1个磁盘上。其中,所述辅助平衡不完全区组设计决定了第i次扩容后各迁移单元所在的磁盘号,针对任一迁移单元rm,n,则根据所述的区组m来决定所述rm,n是否需要迁移。本发明实施例中,可参照如下准则判断某一迁移单元rm,n是否需要迁移:若rm,n已在辅助bibd所指示的磁盘上,则该迁移单元rm,n不需迁移,否则迁移至由辅助bibd指示的新添加的磁盘上。具体的,当n的取值已经在所述的区组m中,则表明rm,n已在辅助bibd所指示的磁盘上,则所述迁移单元rm,n不用迁移,否则根据所述所述的区组m的指示将所述迁移单元rm,n迁移到新添加的磁盘上。本发明实施例中,所述根据所述所述的区组m的指示将所述迁移单元rm,n迁移到新添加的磁盘上具体可以参照如下方法进行:假设所述迁移单元rm,n应迁移到的磁盘号表示为x,则x可如下计算:获取集合s0,所述集合s0为所述的区组m与集合{0,1,···,vi-1-1}的差集;获取集合s1,所述集合s1为集合{0,1,···,vi-1-1}与所述的区组m的差集;若n的取值是集合s1中的第k小的元素,则磁盘号x的取值为集合s0中第k小的元素。举例说明,如图6所示,为数据迁移的逻辑示意图,其中每个圆点代表1个迁移单元,如图可知,扩容后,位于磁盘d4至d6的圆点为被迁移的单元。扩容后,数据布局如图7所示,数据块d4,1的迁移过程如下所述:在扩容前d4,1在磁盘d2,其偏移量为3,如步骤400计算的每个迁移单元包含3个块,则d4,1归属的迁移单元号l为3/3=1,可将所述d4,1所归属的迁移单元标记为r1,2,也即m取值为1,n取值为2。故利用辅助bibd的区组1:{0,1,4,5}进行迁移,因为n的取值2不在所述区组1中,则表明所述迁移单元r1,2需要被迁移。本领域技术人员可以理解的是,在迁移前4个磁盘(d0-d3)相同偏移量范围的所保存的块对应的迁移单元对应的区组为{0,1,2,3},则在确认所述迁移单元r1,2需迁移到的磁盘号x具体为:集合s1为{0,1,2,3}-{0,1,4,5}={2,3},集合s0为{0,1,4,5}–{0,1,2,3}={4,5},因为n的取值2在所述集合s1中是第1小的元素,也即k取值为1,所以所述迁移单元r1,2需迁移到的磁盘号x应该为所述集合s0中的第1小的元素,即为4,也就是说,所述迁移单元r1,2需要从扩容前所在的磁盘d2迁移到扩容后的磁盘d4,迁移过程中所述迁移单元r1,2的偏移量保持不变,同理,针对迁移单元r1,3,根据上述方法可以确定需要迁移到磁盘d5上。本领域技术人员可以理解的是,上述实例仅是以数据块d4,1为例进行说明,在实际迁移过程中,是将迁移单元作为整体进行迁移,如针对所述迁移单元r1,2,则是d4,1、p6和d7,1这3个块作为一个整体迁移到磁盘d4在第1次扩容后,如果用户需要查询扩容前已经保存在所述存储系统中的数据,则所述控制器可以参照所述t[0]及所述即可完成数据查询。至此,本发明实施例中,所述存储系统完成了第1次扩容后的数据迁移。在本发明实施例中,扩容后通过利用辅助bibd指导数据迁移,由于所述辅助bibd中的任何元素包含在的区组的个数相同,且每个迁移单元内含有相同数量的校验块,所以扩容后数据块和校验块达到了均匀分布,扩容过程中数据迁移量达到最小,如图7所示,仅有不到50%的数据被迁移,由此明显减小了扩容后数据迁移所需要的时间,也减小了因扩容后需要进行数据迁移操作而造成的对用户请求响应的延迟。进一步的,因为所述存储系统扩容后依然会有新数据源源不断写入,针对后续新数据应该在所述扩容后的存储系统中的保存,如图8所示,为本发明实施例提供的扩容后所述存储系统写入新数据的方法流程图。步骤800、控制器生成新的完全区组设计表t[i]所述控制器确定所述扩容后的存储系统中每个磁盘的剩余可用存储空间,对于在上述扩容前就已经存在在所述存储系统中的磁盘,其剩余可用空间一般为数据被迁移后的释放的空间,也可能还包含在扩容前未被占用的空间,对于扩容中新增加的磁盘,其剩余可用空间一般是除被迁移进来的数据占用的空间外的未占用存储空间。从逻辑上所述控制器将各个磁盘的剩余可用空间看做一个逻辑上独立的磁盘,则将各个磁盘的剩余空间组成的存储系统作为一个逻辑上新的存储系统,以上图7所示,在第一次扩容后的存储系统中,一共有7个磁盘,每个磁盘上都还有9个偏移量的可用存储空间。所述控制器针对所述扩容后的存储系统生成新的完全区组设计表t[i],所述t[i]用于第i次扩容后新数据写入所述存储系统时的存储位置查找。所述构成所述t[i]的bibd的5个参数(bi、vi、ki、ri、λi),所述控制器可以根据存储策略的需要灵活为vi、ki、λi取值,并通过前述的方法得到用于构成所述t[i]的bibd以及相应的bi、ri的取值,然后并根据所述得出的新的bibd得到所述t[i]。步骤801、控制器根据所述t[i]将新数据写入所述存储系统如图9所示,为本发明实施例给出的示意图,该示意图中展示了为前述第1次扩容后的存储系统确认的t[1]并基于所述t[1]写入新数据的示例。所述图9右侧是所述t[1],表明在新生成的t[1]中包含7个条带,每个条带包含3个块,其中1个是校验块,每个条带上校验块的分布如图所示。则在扩容结束后,若所述控制器接收来自主机的写请求,所述写请求中携带新的待写入数据,假如所述控制器确定所述新的待写入数据为数据块d28,0、数据块d28,1,则进一步基于校验算法确认其相应的校验块p28,根据图9右侧的t[1],决定上述数据应写入条带0,也即需要写入磁盘d1,d2,d4,写入顺序为将所述校验块p28和数据块d28,0、d28,1应依次写入磁盘d1,d2,d4,在写入操作是默认将每个块写入磁盘当前偏移量最小的可用位置,因此校验块会写被写入磁盘d1的偏移量为6的位置,数据块d28,0会写被写入磁盘d2的偏移量为3的位置,数据块d28,1会写被写入磁盘d4的偏移量为0的位置,则所述控制器依次把数据块d28,0、数据块d28,1和校验块p28分别写入磁盘d1,d2,d4的对应位置。如图10所示,为本发明实施例给出的一种控制器的结构示意图,所述控制器包括第一通信接口1001、处理器1002、存储器1003和第二通信接口1004。所述第一通信接口1001用于和主机通信,所述控制器可以通过所述第一通信接口1001接收主机的操作指令,如读请求、写请求等,并将其交由所述处理器1002处理;所述第一通信接口1001还用于向所述主机发送消息,如写成功消息、写失败消息、读失败消息、或读取的数据等;所述第一通信接口1001可以是主机总线适配器(hostbusadapter,hba)卡。所述处理器1002可能是一个中央处理器(英文:centralprocessingunit,cpu),或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。所述控制器还可以包括存储器1003,所述存储器1003可以用于缓存所述第一通信接口1001从主机接收的写请求中携带的数据、或缓存从所述磁盘读取的数据。所述存储器1003可以是易失性存储器,非易失性存储器或其组合。易失性存储器例如为随机访问存储器(英文:random-accessmemory,ram)。非易失性存储器例如软盘、磁盘、固态磁盘(solidstatedisk,ssd)、光盘等各种可以存储程序代码或数据的机器可读介质。所述存储器1003可以具有保电功能,保电功能是指系统发生掉电又重新上电时存储器1003中存储的数据也不会丢失。存储器1003中还可以保存有程序指令,所述处理器1002用于执行所述程序指令以完成所述控制器的各种处理动作,具体参见上述图2-图9及相应实施例中控制器的所有处理动作,本装置实施例不再赘述。可选的。进一步的,所述处理器1002生成的t[0]、t[1]、…、t[t]、及可以都保存在所述存储器1003中。所述第二通信接口1004,用于和所述磁盘通信,所述控制器的所述处理器1002可以通过所述第二通信接口1004将操作命令,如写请求、或读请求等,发送给所述磁盘,接收来自所述磁盘的各类消息。本领域普通技术人员将会理解,本发明实施例的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明实施例的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。计算机可读介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机访问存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、光盘。计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作。计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,本领域普通技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1