磁盘阵列在线容量扩展方法

文档序号:6461475阅读:349来源:国知局
专利名称:磁盘阵列在线容量扩展方法
技术领域
本发明涉及计算机存储领域,具体而言,涉及一种磁盘阵列在 线容量扩展方法。
背景技术
磁盘阵列容量扩展技术在磁盘阵列的应用中具有重要的实用价 值。它能方Y更地扩展存储体-》兹盘阵列的容量,而不用^皮坏原存储 体上的数据。目前,》兹盘阵列容量扩展冲支术^皮广泛地应用到各种^兹 盘阵列存储系统中。
磁盘阵列容量扩展分为在线扩展和离线扩展两种方法,其区别 在于容量扩展的同时允不允许用户访问数据。保持原有磁盘存储的
凄t据不^皮损坏是容量扩展的前4是。通常用户会为RAID (Redundant Array of Independent Disk,独立》兹盘冗余阵列)i殳备准备新的》兹盘, 绑定到磁盘阵列中,供磁盘阵列使用。由于磁盘阵列特殊的数据分 布方式和容错机制,使得容量扩展不仅仅是将磁盘绑定到阵列中, 还要求阵列能够按照一定的RAID算法实现H据分布。其次还要考 虑到对于有容错能力的阵列容量扩展,有磁盘失效时,数据要仍然 能够恢复出来,也就是说同一条带内的数据与校验要一致。对于有 容错级别的阵列,容量扩展之前的阵列有D个磁盘组成,阵列系统 会将这些磁盘按块大小分成相同个数的数据块,通常称为chunk。 对于有冗余校验数据的级别阵列,阵列系统会将磁盘同一偏移位置 的chunk组成条带stripe。 一个条带是一组凄t据-4交-睑组,该组的才交-验块由该组内所有凄t据计算生成。它是在各》兹盘同一偏移位置的凄t 据块组成一个数据_校验组,该组内 一定数目的lt据块失效时可以 通过存储的数据和校验恢复出来。某一条带内的校验由该条带内各
磁盘上的数据按照校验算法生成。对于RAID1,采用直接镜像存储 数据;对于RAID5,则是同一条带内各数据块异或产生校验数据; 对于RAID6的第二4交-验则有多种产生方法,熟知的为采用Reed Solomon编码的方法产生。这样当有凄t据块丢失时,通过剩余l史据 和冲交-验,可以通过一交验逆运算方法恢复H据。
鉴于容量扩展对于用户的重要性,目前存储系统都提供在线容 量扩展功能,但是采用的方法主要是直接的数据搬移和利用空闲空 间暂时存储数据达到纟般移数据的目的。这两个过程都会集中产生大 量与用户请求不相关的读写操作。对于》兹盘阵列,这样大量的读写 必然会对磁盘使用寿命产生影响。磁盘在这种高负荷情况下长时间 工作,其损坏的概率大大增加。这对于磁盘阵列是非常不利的。常 用的扩容方法是采用直接的数据搬移。如图l所示,为一种RAID5 数据分布方式,在该方式下,磁盘被分为同样大小的条带,条带内 每个数据块通常为4kB。磁盘上的一个块大小为用户指定的 chunksize大小。数据块分布先按列再按行依次存放。磁盘上每个条 带的第 一个数据块从校验块后面的第一个块开始编号,依次存放逻 辑块。校验在各磁盘中螺旋分布,数据块按照空闲块依次编号,每 一条带的第一个数据块从校验块后面的第 一个块开始的编号,依次 编完同一行的数据块。校验块是同一条带数据异或的值。按照图1 所示的数据块分布方式,当需要容量扩展时,其采用的方法是依次 读出各数据块,按照新的数据分布方式计算其该写入的位置,然后 写到相应的石兹盘扇区上。
图2示出了一种RAID5容量扩展方法。容量扩展时,按照图中 所示数据分布,将原阵列的所有数据块读出来,条带搬移数据块重 新组成条带,计算4交验。然后将组成的新条带写入磁盘对应位置。该方法是比较基本的容量扩展思想,按照原来数据的分布方法重新 分布凌t据,将lt据4姿照新的配置拍定移到相应的位置。但是此方法在
容量扩展进行时,系统发起大量的读写请求,磁盘I/O带宽基本上 被全部占用,用户的数据请求速度受到严重影响。系统响应速度变 得很慢,数据请求时间变长,效率低下。
在一种现有技术中,并且为了保证数据迁移过程中条带数据、 校-验不一致的区域数据安全,将凄史据校—验不一致区域拷贝到原阵列 和新磁盘尾端暂存,加强了实施条件。
在另一种现有4支术中,通过配置一个不小于原阵列的新阵列, 读取数据写到临时阵列上去,然后调整阵列,释》文临时阵列,进行
容量扩展;其次还提出了解决正常读写与迁移数据读写冲突解决办 法。
在实现本发明过程中,发明人发现现有冲支术中至少存在如下问 题在容量扩展中都需要数据迁移,并且需要分配空间临时存储磁 盘数据,造成了用户请求响应速度慢的问题。

发明内容
本发明旨在提供一种磁盘阵列在线容量扩展方法,以解决现有 技术中容量扩展效率较低的问题。
在本发明的实施例中,提供了 一种磁盘阵列在线容量扩展方法, 包括接收磁盘阵列容量扩展的信息;根据磁盘阵列容量扩展的信 息的指示,将添加的磁盘绑定到原磁盘阵列中得到新的磁盘阵列, 其中,保持原磁盘阵列的数据块分布方式,并且添加的磁盘的数据 块接着原f兹盘阵列的最后一个H据块进行编号;通过新的f兹盘阵列 的数据块分布方式计算新的磁盘阵列的数据块的逻辑地址到物理地 址的映射。
7优选的,该方法还包括才艮据新的》兹盘阵列的^:据块的逻辑地 址到物理地址的映射关系处理lt据的读/写4乘作请求。
优选的,该方法还包括创建对应于新的磁盘阵列的条带的位 图,所有的位图构成位图组,位图的初始值为0;位图的值为O表 示位图对应的数据和校验为不一致状态,生成条带校验块的数据块 为原磁盘阵列数据块;位图的值为1表示位图对应的数据和校验为 一致状态,生成条带才交验块的数据块为新的;兹盘阵列数据块;其中, 冲交-验块设置于原》兹盘阵列中。
优选的,如果在容量扩展时没有》兹盘失效,该方法进一步包括 如果位图的值为0,在写操作时计算校验数据,并将校验数据写入 相对应的校验块,修改写操作所在条带对应的位图的值为1,其中, 校验数据由写操作所在的条带对应的数据块以及所写的数据生成。
优选的,如果在容量扩展时有^兹盘失效,该方法进一步包括 如果失效》兹盘的条带对应的位图值为0,则根据原》兹盘阵列配置参 数和条带内的原^兹盘阵列的数据块以及校验块恢复条带内丢失的数 据;以及如果失效f兹盘的条带对应的位图值为1,则根据新的磁盘 阵列配置参数和条带内有效的所有数据块和校验块恢复条带内丟失 的数据。
优选的,如果在容量扩展时有^兹盘失效,该方法进一步包括 记录失效磁盘在磁盘阵列中的位置,当进行读/写操作或者有备用磁 盘时,恢复丢失的凄W居块。
优选的,该方法进一步包括如果位图组不是所有值都为1, 则维持容量扩展的状态,按容量扩展状态处理读/写操作请求;优选的,当新的》兹盘阵列空闲时,重新计算不为1的位图Y直所 对应的条带的校验数据,将校验数据写入相对应的校验块,并修改 条带对应的位图的值为1。
优选的,该方法进一步包括如果位图组的所有值为1,则容 量扩展完成,释放位图组所占资源。
上述实施例的》兹盘阵列在线容量扩展方法因为采用了在线扩展 磁盘容量的方式,所以克服了现有技术中容量扩展效率较低的问题, 进而提高了磁盘容量扩展速度。


此处所i兑明的附图用来提供对本发明的进一步理解,构成本申 请的一部分,本发明的示意性实施例及其说明用于解释本发明,并 不构成对本发明的不当限定。在附图中
图1示出了现有技术一种基于RAID5的数据、校验分布方式示 意图2示出了现有技术一种基于RAID5容量扩展后的数据分布方 式示意图3示出了根据本发明实施例的磁盘阵列在线容量扩展方法的 流程图4示出了#4居本发明实施例的容量扩展后的数据分布方式示 意图5示出了根据本发明实施例的容量扩展时的位图组示意9图6示出了根据本发明实施例的基于RAID5按照本发明容量扩 展后的数据分布方式;
图7示出了才艮据本发明实施例的容量扩展时没有》兹盘失效读凝: 据流程图8示出了根据本发明实施例的容量扩展时没有磁盘失效写数 据流程图9示出了根据本发明实施例的容量扩展时有磁盘失效读写数 据流程图。
具体实施例方式
下面将参考附图并结合实施例,来详细说明本发明。
本发明的实施例提出了一种磁盘阵列在线容量扩展方法,如图 3所示,包括
步骤S302,接收磁盘阵列容量扩展的信息;
步骤S304,根据磁盘阵列容量扩展的信息的指示,将添加的磁 盘绑定到原磁盘阵列中得到新的磁盘阵列,其中,保持原磁盘阵列 的数据块分布方式,并且添加的磁盘的数据块接着原磁盘阵列的最 后 一个数据块进行编号;
步骤S306,通过新的磁盘阵列的数据块分布方式计算新的磁盘 阵列的凄tl居块的逻4辱;也址到物理;也址的映射。
优选的,该方法还包括根据新的磁盘阵列的数据块的逻辑地 址到物理地址的映射关系处理凄t据的读/写才喿作^青求。优选的,该方法还包括创建对应于新的磁盘阵列的条带的位 图,所有的位图构成位图组,位图的初始值为0;位图的值为0表 示位图对应的数据和校验为不一致状态,生成条带校验块的数据块 为原磁盘阵列数据块;位图的值为1表示位图对应的数据和校验为 一致状态,生成条带校验块的数据块为新的磁盘阵列数据块;其中, 校验块设置于原磁盘阵列中。
优选的,如果在容量扩展时没有石兹盘失效,该方法进一步包括 如果位图的值为0,在写操作时计算校验数据,并将校验数据写入 相对应的校验块,修改写操作所在条带对应的位图的值为1,其中,. 校验数据由写操作所在的条带对应的数据块以及所写的数据生成。
伊C选的,如果在容量扩展时有石兹盘失岁丈,该方法进一步包4舌 如果失效^磁盘的条带对应的位图值为0,则才艮据原》兹盘阵列配置参 数和条带内的原》兹盘阵列的数据块以及校-验块恢复条带内丢失的数 据;以及如果失效磁盘的条带对应的位图值为1,则根据新的磁盘 阵列配置参凄t和条带内有效的所有数据块和才交验块恢复条带内丢失 的数据。
伊乙选的,如果在容量扩展时有》兹盘失凌文,该方法进一步包4舌 记录失效石兹盘在》兹盘阵列中的位置,当进4亍读/写4喿作或者有备用》兹 盘时,恢复丟失的数据块。
优选的,该方法进一步包括如果位图组不是所有值都为1, 则维持容量扩展的状态,按容量扩展状态处理读/写操作请求;
优选的,当新的^t盘阵列空闲时,重新计算不为1的位图值所 对应的条带的校验数据,将校验数据写入相对应的校验块,并修改 条带对应的^f立图的^直为1。
ii优选的,该方法进一步包括如果位图组的所有值为1,则容 量扩展完成,释放位图组所占资源。
图4示出了根据本发明实施例的容量扩展后的数据分布方式, 如图所示,原磁盘阵列磁盘个数为D个,校验块个数为n个,容量 扩展新添加的磁盘个数为X个,共有k个条带。原磁盘阵列的最后 一个数据块编号为C。容量扩展时,使新加磁盘的第一个数据块紧 接着原阵列最后一个数据块进行编号,所有新磁盘上的数据块依次 分散存放到各个新加磁盘上。新添加的磁盘的第一个数据块为C+l, 第二个》兹盘第一个凄t据块为C+2,第X个》兹盘第一个^t据块为C+X, 这样新磁盘阵列的第0个条带的数据块为第0号数据块,第1号数 据块,……,第D-Np-l号数据块,第C+l号lt据块,第C+2号,…..., 第C+X号数据块,生成4^险块P1, P2,……,Pn个才交马全块。依次 类推。按照本发明所示的数据分布方法,原磁盘的最后一个数据块 编号为C,它是第D-l块磁盘偏移量为k的数据块,也是第D-l个 石兹盘的最后一个^t据块。容量扩展之后新添加的》兹盘从第C + 1个 数据块205到最后一个第C + ( k+l ) X个H据块,共(k+l ) X个 凄t据块分布在新添加的i兹盘上。
图5示出了根据本发明实施例的容量扩展时的位图组示意图, 在容量扩展命令启动时,为所有条带创建一组位图。位图中每一个 bit (位)对应一个条带。石兹盘阵列初始化时,该位图中所有的值设 置为0。
位图值为0则表示该位图所对应的条带校验处于不一致状态, 其校验值为原磁盘阵列的条带数据块计算所得,即原阵列条带数据 和校验处于一致;位图值为1则表示容量扩展后的磁盘阵列的条带 (第4条带)数据、校验处于一致状态,校验由新条带所有数据计 算得到。图6示出了才艮据本发明实施例的基于RAID5的容量扩展后的数 据分布方式,RAID5校验个数为一个异或校验。容量扩展添加两个 磁盘。对于原阵列第O条带601包含第0数据块,第1数据块,第 2数据块和P校验数据块。而容量扩展后的第0条带602除了包含 原第O条带的所有数据块和校验块外还包括第C数据块和第C+l数 据块。每个条带对应于位图组中的一位,该位标识当前该条带是原 条带数据-校验组有效,或者是新条带数据-校验组有效。
图7示出了根据本发明实施例的容量扩展时没有磁盘失效的情 况读lt据流程,包括以下步骤
步骤S702,判断所读扇区位于原阵列数据区域还是新阵列数据 区域,不同区域所4吏用的逻辑地址到物理地址映射关系不同。
步骤S704至S706,所读扇区位于新石兹盘阵列,按照新数据区域 逻辑地址到物理地址的映射方法读数据,对于在新添加磁盘上的数 据,编号为R的逻辑扇区,其所在的磁盘序号为D-1+(R-C)%X,所 在磁盘的偏移位置为[(R-C)/X]。
步艰《S708,所读扇区位于原磁盘阵列,4安照原》兹盘阵列映射方 式读数据。
图8示出了根据本发明实施例的容量扩展时没有磁盘失效的情 况写数据流程。图中对于写,不论是写原阵列数据还是写新区域的 数据,都按新条带数据-校验重新计算该条带校验块。这样有利于达 到所有条带校验、数据一致。该流程包括以下步骤
步骤S802,判断所写扇区位于原阵列数据区域还是新阵列数据 区域,不同区域所使用的逻辑地址到物理地址映射关系不同。步艰《S804,所写扇区位于新》兹盘阵列,按照新lt据区i或逻辑地 址到物理地址的映射方法读^:据。
步骤S806,所写扇区位于原》兹盘阵列,4安照原凝:据区域逻辑地 址到物理地址的映射方法读数据。
步艰《S808,读出该条带内除所写^兹盘外其^f也所有》兹盘上的彩:据。
步骤S810,以所写万兹盘数据和读出的数据计算生成新的效验。 步骤S812,将要写的凄t据,生成的效-验ft据写入对应石兹盘。 步驶《S814,在写完lt据更新4交-验后,置该条带对应的位图值为1。
图9示出了根据本发明实施例的容量扩展时有磁盘失效的情况 读写数据流程。恢复数据使用一致的条带数据。根据条带位图值, 确定是原条带数据-校验一致,还是新条带数据-校验一致。在数据-校验一致的条带中,n个校验最多可以恢复n个数据块。恢复丟失 凄t据使用才交-验和剩余数据参与计算,仿照解方程的方式解出丟失的 数据值。
乂人以上的描述中,可以看出,本发明上述实施例的优点在于
1 )在容量扩展时维持原磁盘阵列数据分布方式不变,容量扩展 过程中不需要搬移数据。对于容量扩展过程中的读写,能迅速做出 响应,提高磁盘阵列在容量扩展过程中的读写性能。2 )在不需要搬移数据的同时,对于新写入的数据仍然保持一定 程度上的分散存放,磁盘阵列读写新写入数据时仍然能够并行操作, 保持》兹盘阵列的高I/O速度。
显然,本领域的技术人员应该明白,上述的本发明的各模块或 各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算 装置上,或者分布在多个计算装置所组成的网络上,可选地,它们 可以用计算装置可执行的程序代码来实现,从而,可以将它们存储 在存储装置中由计算装置来执行,或者将它们分别制作成各个集成 电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模 块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述^f又为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1. 一种磁盘阵列在线容量扩展方法,其特征在于,包括以下步骤接收磁盘阵列容量扩展的信息;根据所述磁盘阵列容量扩展的信息的指示,将添加的磁盘绑定到原磁盘阵列中得到新的磁盘阵列,其中,保持所述原磁盘阵列的数据块分布方式,并且所述添加的磁盘的数据块接着所述原磁盘阵列的最后一个数据块进行编号;通过所述新的磁盘阵列的数据块分布方式计算所述新的磁盘阵列的数据块的逻辑地址到物理地址的映射。
2. 根据权利要求1所述的方法,其特征在于,还包括根据所述新的磁盘阵列的数据块的逻辑地址到物理地址 的映射关系处理数据的读/写操作请求。
3. 根据权利要求2所述的方法,其特征在于,还包括创建对应于所述新的磁盘阵列的条带的位图,所有的位图 构成^f立图l且,所述4立图的#刀始4直为0;所述位图的值为0表示所述位图对应的数据和4交-睑为不 一致状态,生成所述条带校验块的数据块为所述原磁盘阵列数 据块;所述位图的值为1表示所述位图对应的lt据和冲交验为一 致状态,生成所述条带校验块的数据块为所述新的磁盘阵列数 据块;其中,所述4交-验块"i殳置于所述原》兹盘阵列中。
4. 根据权利要求3所述的方法,其特征在于,如果在容量扩展时 没有》兹盘失岁丈,所述方法进一步包4舌如果所述位图的值为O,在写操作时计算校验数据,并将 所述校验数据写入相对应的校验块,修改所述写操作所在条带 对应的位图的值为1,其中,所述校验数据由所述写操作所在 的条带对应的数据块以及所写的数据生成。
5. 根据权利要求3或4所述的方法,其特征在于,如果在容量扩 展时有f兹盘失效,所述方法进一步包4舌如果失效磁盘的条带对应的位图值为0,则根据所述原磁 盘阵列配置参ft和所述条带内的所述原》兹盘阵列的lt据块以 及校验块恢复所述条带内丢失的数据;以及如果失效磁盘的条带对应的位图值为1,则根据所述新的 磁盘阵列配置参数和条带内有效的所有数据块和校验块恢复 所述条带内丟失的数据。
6. 根据权利要求5所述的方法,其特征在于,如果在容量扩展时 有》兹盘失岁文,所述方法进一步包4舌记录失效磁盘在磁盘阵列中的位置,当进行读/写操作或 者有备用磁盘时,恢复丢失的数据块。
7. 4艮据权利要求6所述的方法,其特征在于,所述方法进一步包 括如果所述位图组不是所有值都为1,则维持容量扩展的状 态,按容量扩展状态处理读/写操作请求;当所述新的》兹盘阵列空闲时,重新计算不为1的位图值所 对应的条带的校验数据,将所述校验数据写入相对应的校验 块,并修改所述条带对应的位图的值为1。
8. 根据权利要求7所述的方法,其特征在于,所述方法进一步包 括如果位图组的所有^直为1,则容量扩展完成,释方文位图组 所占资源。
全文摘要
本发明提供了一种磁盘阵列在线容量扩展方法,包括接收磁盘阵列容量扩展的信息;根据磁盘阵列容量扩展的信息的指示,将添加的磁盘绑定到原磁盘阵列中得到新的磁盘阵列,其中,保持原磁盘阵列的数据块分布方式,并且添加的磁盘的数据块接着原磁盘阵列的最后一个数据块进行编号;通过新的磁盘阵列的数据块分布方式计算新的磁盘阵列的数据块的逻辑地址到物理地址的映射。本发明实现了磁盘阵列在线扩展容量。
文档编号G06F3/06GK101546249SQ20081008409
公开日2009年9月30日 申请日期2008年3月26日 优先权日2008年3月26日
发明者兰玉龙 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1