CN104182176B - 一种独立磁盘冗余阵列raid5的快速扩容方法 - Google Patents

一种独立磁盘冗余阵列raid5的快速扩容方法 Download PDF

Info

Publication number
CN104182176B
CN104182176B CN201310199392.4A CN201310199392A CN104182176B CN 104182176 B CN104182176 B CN 104182176B CN 201310199392 A CN201310199392 A CN 201310199392A CN 104182176 B CN104182176 B CN 104182176B
Authority
CN
China
Prior art keywords
dilatation
lba
reel number
transferred
disk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310199392.4A
Other languages
English (en)
Other versions
CN104182176A (zh
Inventor
冯丹
李楚
王芳
邱丽娜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201310199392.4A priority Critical patent/CN104182176B/zh
Publication of CN104182176A publication Critical patent/CN104182176A/zh
Application granted granted Critical
Publication of CN104182176B publication Critical patent/CN104182176B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明公开了一种独立磁盘冗余阵列RAID5的快速扩容方法,包括:获取条带组大小SS、扩容读单元大小RU、扩容写单元大小WU以及辅助变量Y和St,并初始化当前扩容窗口W_no为0,初始化当前扩容窗口内的偏移w_off为0,并将扩容所需的迁移记录集R设为空,将当前磁盘计数器d初始化为0,获取条带号s=w_no*Wsize+w_off以及在条带组中的偏移s_off=s%SS,获取当前盘扩容读单元的起始条带号Rb=d*St、结束条带号Re=Rb+RU‑1,判断条带号s对应的条带是否在本条带组中扩容读单元的起始条带号和结束条带号之间,如果不是则判断是否有d=n‑1,如果是则判断是否有w_off=Wsize‑1,或者s=v‑1,如果是则从扩容前RAID5中的磁盘读取对应的条带单元写入对应的新加的磁盘上。本发明能够使得扩容后阵列的性能和存储效率有所提升。

Description

一种独立磁盘冗余阵列RAID5的快速扩容方法
技术领域
本发明属于数据存储领域,更具体地,涉及一种独立磁盘冗余阵列RAID5的快速扩容方法。
背景技术
独立磁盘冗余阵列(Redundant array of independent disk,简称RAID)技术是由帕特森等人于1988年提出的一种存储系统架构。其基本思想是将多个磁盘组合起来,通过条带化技术提高并发访问性能;通过存放镜像数据或者奇偶校验等方式来提高存储系统的可靠性。按照组织方式的不同,RAID又被分为多种级别,比较常用的有RAID1、RAID5等级别。
如图1所示,RAID5采用分条的方式将数据和奇偶校验信息均匀分布到阵列中的各个磁盘上,当一个盘发生故障时,可以通过读取剩余磁盘上的数据块和校验块信息,然后通过异或即可恢复出故障磁盘上的数据。因其高并发、高可靠以及较高的存储效率等特性,使得RAID5在服务器端得到了广泛的应用。随着数据信息的爆炸性增长以及大数据时代的到来,人们对存储容量、存储性能的要求越来越高,而对独立磁盘冗余阵列加入更多的磁盘一方面可以带来更高的访问并行度从而降低响应时间,另一方面可以提高存储效率以及存储容量。因此扩容成为一种必要的选择。由于大量应用的7*24不间断服务要求,使得扩容只能在响应正常访问的同时进行,而扩容势必会影响到前台访问性能。因此,如何尽可能快的完成扩容操作,又能尽量减小用户请求相应时间,成为一个研究热点。
传统的RAID5扩容方式是根据扩容后的磁盘数,按照某种数据布局策略重新组织所有的数据块,并计算相应的校验块。这种方式的优点是扩容 后数据从逻辑地址到物理地址的转换简单高效,且所有数据重新均匀分布到各个盘上,提高了访问阵列的并行度。但其缺点在于几乎所有的数据块都要发生迁移,大量的数据迁移一方面增加了扩容需要的时间,另一方面对外部应用带来显著的影响。在美国专利申请公开说明书US6000010中公开了一种RAID5快速扩容的方法,该方法包含两种形式:第一种是初始化新加的磁盘,使其每一个条带内的数据校验和为0,将扩容后新增的地址空间映射全部映射到新加的磁盘上。这种方式完全避免了旧数据和校验的更新,但是造成扩容后校验数据的分布不再是均匀的。为此该专利提出了第二种形式,将某些行条带中的校验块变成数据块,在该条带中新加的盘上映射为校验块和数据块,同样使其校验和为0。这种方式虽然使得数据和校验满足均匀分布,但是因为原来的数据仍然只存放在原来的盘上,所以并不能因为扩容而带来性能的提升。在美国专利申请公开说明书US8239622中公开了一种可用于RAID5的阵列扩容方法,该方法通过重新组织数据布局方式使得扩容引起的数据迁移量达到最小,且满足了数据在扩容后均匀的分布在各个盘上,然而这种方法并不能提高阵列的存储效率。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种独立磁盘冗余阵列RAID5的扩容方法,其目的在于在保证RAID5的存储效率的前提下,满足扩容后数据块和校验块能够均匀的分布到所有盘上,并且能够高效的完成逻辑地址到物理地址的转换,使得扩容后阵列的性能和存储效率有所提升,同时该方法将显著的减少扩容带来的数据块和校验块的迁移,从而大大提高扩容的速度。
为实现上述目的,按照本发明的一个方面,提供了一种独立磁盘冗余阵列RAID5的快速扩容方法,包括以下步骤:
(1)采用以下公式获取条带组大小SS、扩容读单元大小RU、扩容写单元大小WU以及辅助变量Y和St,并初始化当前扩容窗口W_no为0:
其中,gcd表示获得最大公约数;
(2)初始化当前扩容窗口内的偏移w_off为0,并将扩容所需的迁移记录集R设为空;
(3)将当前磁盘计数器d初始化为0,获取条带号s=w_no*Wsize+w_off以及在条带组中的偏移s_off=s%SS,其中Wsize为扩容窗口的大小;
(4)获取当前盘扩容读单元的起始条带号Rb=d*St、结束条带号Re=Rb+RU-1,以及扩容写单元的结束条带号We=Rb+WU-1;
(5)判断条带号s对应的条带是否在本条带组中扩容读单元的起始条带号和结束条带号之间,如果是则继续进入步骤(6),否则跳转到步骤(10);
(6)判断是否有n≥m,如果有则转入步骤(7),否则转入步骤(8);
(7)计算该条带上的条带单元将被迁移到的目标盘号k,其中,若 则k=(d%m+n),否则然后进入步骤(9);
(8)计算该条带上的条带单元将被迁移到的目标盘号k,其中,若s_off≤We,则k=d+n,否则然后进入步骤(9);
(9)将条带s上磁盘号为d的条带单元到磁盘号为k的条带单元的迁移路径记录在迁移记录集R中;
(10)判断是否有d=n-1,如果是则转入步骤(11),否则设置d=d+1,然后返回步骤(4);
(11)判断是否有w_off=Wsize-1,或者s=v-1,如果是则进入步骤(12),否则设置w_off=w_off+1,并返回步骤(3);
(12)对于当前扩容窗口W_no中的所有条带而言,根据R中记录的迁移路径,从扩容前RAID5中的磁盘读取对应的条带单元写入对应的新加的 磁盘上,对扩容前RAID5中被读取的条带单元以及新加磁盘上除被写入的条带单元之外的条带单元都写入“0”;
(13)判断是否有W_no=0,如果是则转入步骤(14),否则转入步骤(15);
(14)获取当前RAID5系统的逻辑块地址LBA,根据该逻辑块地址LBA创建地址映射函数Map1,用于实现原地址空间条带号不超过s的数据块的地址映射;
(15)判断当前窗口号w_no是否等于RAID5的最后一个窗口,如果是则转入步骤(16),否则设置w_no=w_no+1,然后返回步骤(2);
(16)获取当前RAID5系统的逻辑块地址LBA,根据该逻辑块地址LBA创建地址映射函数Map2,用于扩容后新的地址空间的地址映射。
优选地,步骤(14)包括以下子步骤:
(14.1)获取当前RAID5系统的逻辑块地址LBA,根据原始RAID5的地址映射函数获得逻辑块地址LBA对应的条带号S和磁盘号D,以及该条带中的校验块所在的盘号P,并且设置S1=S;
(14.2)采用以下公式计算条带S在该条带组中的偏移s_off1,分别计算D盘扩容读单元的起始条带号Rdb、结束条带号Rde、扩容写单元的结束条带号Wde和P盘扩容读单元的起始条带号Rpb、结束条带号Rpe、扩容写单元的结束条带号Wpe:
(14.3)判断该条带在条带组中的偏移s_off1是否处于D盘扩容读单元的起始条带号和结束条带号之间,如果是则转入步骤(14.4),否则设置D1=D,然后转入步骤(14.7);
(14.4)判断是否有n≥m,如果有则转入步骤(14.5),否则转入步 骤(14.6);
(14.5)计算扩容后逻辑地址块LBA对应的磁盘号D1,其中,若 则D1=D%m+n否则然后转入步骤(14.7);
(14.6)计算扩容后逻辑地址块LBA对应的磁盘号D1,其中,若s_off1≤Wde,则D1=D+n,否则
(14.7)判断该条带在条带组中的偏移s_off1是否处于P盘扩容读单元的起始条带号和结束条带号之间,如果是则转入步骤(14.8),否则设置P1=P,然后转入步骤(14.11);
(14.8)判断是否有n≥m,如果有则转入步骤(14.9),否则转入步骤(14.10);
(14.9)计算扩容后逻辑地址块LBA对应的校验盘号P1,其中,若 则P1=P%m+n,否则然后转入步骤(14.11);
(14.10)计算扩容后逻辑地址块LBA对应的校验盘号P1,其中,若s_off1≤Wpe1,则P1=P+n,否则
(14.11)Map1地址映射完成,返回(S1,D1,P1)。
优选地,步骤(16)包括以下子步骤:
(16.1)获取当前RAID5系统的逻辑块地址LBA,将逻辑块地址LBA转换为在新地址空间的相对偏移x=LBA-(n-1)*v,计算条带组号
s_no=x/(RU*(n+m)),以及在该条带组内新增地址空间的相对偏移
s_off2=x%(RU*(n+m));
(16.2)采用以下公式计算逻辑地址块LBA对应的磁盘号D2和条带号S2,其中按照横向编址的计算方式为:
按照纵向编址的计算方式为:
(16.3)根据条带号S2,由Map1计算出该条带的校验块盘号P’,并设置P2=P’;
(16.4)Map2地址映射完成,返回(S2,D2,P2)。
优选地,步骤(16.3)具体为,将S2*(n-1)作为第S2条带上的第一个数据块的LBA,即Map1函数的输入,并通过步骤(14)获取对应的输出值,即P’=Map1(S2*(n-1))。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明保证了RAID5的存储效率:由于本发明在扩容后,校验块的总量仍然等于一个磁盘的容量,而存储效率=数据块总量/RAID5中的总磁盘容量=1-校验块总量/RAID5中的总磁盘容量,因此保证扩容后的存储效率仍然达到标准RAID5的存储效率。
(2)本发明扩容速度快:由于本发明采用的迁移策略与传统的扩容方法相比,大大减少了数据迁移量,从而使得扩容速度得到显著提高。
(3)步骤(8)和步骤(10)创建的两个地址映射函数Map1和Map2能够高效的完成扩容后的地址转换,避免采用额外的空间来存储各个条带的地址映射,且扩容后数据块和校验块仍然均匀分布在所有盘上,从而使得扩容后的性能有所提高。
(4)本发明具有良好的可适应性:由于扩容窗口大小和步骤(1)中的St的值可由管理员灵活设置,因此管理员可以根据实际情况来选择合适的值;步骤(10)中的Map2也可由管理员根据实际负载情况来选择不同的编址策略,包括但不限于本发明中给出的横向编址和纵向编址方式。
附图说明
图1是独立磁盘冗余阵列RAID5的结构示意图。
图2是本发明独立磁盘冗余阵列RAID5的快速扩容方法的流程图。
图3是本发明方法的应用实例。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
首先给出本发明相关概念的定义:
条带:在RAID5中,条带是可以独立地恢复出失效数据的信息集合。
条带单元:一个条带信息与一个磁盘的交点。
数据块:指RAID5中用来存放数据信息的条带单元。
校验块:指RAID5中用来存放校验信息的条带单元。
条带组:多个条带的集合。其中条带的个数由扩容前后的磁盘数决定。本发明中由SS表示一个条带组中的条带个数。
扩容读单元:指扩容时在单个条带组内,从原来RAID5的磁盘中读取的连续数据块和校验块。本发明中由RU表示扩容读单元大小。
扩容写单元:指扩容时在单个条带组内,向新加入的磁盘上写入的连续数据块和校验块。本发明中有WU表示扩容写单元大小。
扩容窗口:指扩容时,一次处理的条带个数。本发明中由Wsize表示扩容窗口大小,该值可由RAID5扩容操作的实施者指定。
地址映射函数(Map函数):指将一个逻辑块地址(Logical block address,简称LBA)转换到RAID5中相应的条带号S、磁盘号D、校验盘号P的方式。原始RAID5的地址映射函数记为(S,D,P)=Map(LBA)。
地址空间:指RAID5中能被访问的线性逻辑地址范围。
迁移记录集:指用来记录条带中条带单元迁移路径的集合。
本发明的整体思路在于,本发明提供的一种针对RAID5的快速扩容方法用R5S(v,n,m)表示,v,n,m均为正整数。其中v是每个盘的条带个数,n是扩容前RAID5的磁盘个数,m是为扩容而新加入的磁盘个数,即从n盘构成的RAID5扩容到由n+m个盘构成的RAID5。该方法在保证RAID5的存储效率的前提下,满足扩容后数据块和校验块能够均匀的分布到所有盘上,并且能够高效的完成逻辑地址到物理地址的转换,使得扩容后阵列的性能和存储效率有所提升;同时该方法将显著的减少扩容带来的数据块和校验块的迁移,能够显著提高扩容的速度。
如图2所示,本发明独立磁盘冗余阵列RAID5的快速扩容方法包括以下步骤:
(1)获取条带组大小SS、扩容读单元大小RU、扩容写单元大小WU以及辅助变量Y和St,并初始化当前扩容窗口W_no为0;具体而言,Y由扩容前的磁盘数n和新增的磁盘数m确定,St可以根据Y来选取不同的值,St的值越大,越有利于扩容的聚合读写从而提高扩容速度,但是需要更多的缓存空间。因此可由管理员灵活选择St的取值。以上几个参数的计算过程如下:
其中,gcd表示获得最大公约数。
本步骤的优点在于St可由管理员根据实际应用场景灵活选择,因此使得本方法具有良好的可适应性。
(2)初始化当前扩容窗口内的偏移w_off为0,并将扩容所需的迁移记录集R设为空;
(3)将当前磁盘计数器d初始化为0,获取条带号s=w_no*Wsize+w_off 以及在条带组中的偏移s_off=s%SS;其中Wsize为扩容窗口的大小,其数值可为任意正整数;
(4)获取当前盘扩容读单元的起始条带号Rb=d*St、结束条带号Re=Rb+RU-1,以及扩容写单元的结束条带号We=Rb+WU-1;
(5)判断条带号s对应的条带是否在本条带组中扩容读单元的起始条带号和结束条带号之间,如果是则继续进入步骤(6),否则跳转到步骤(10);具体而言,是通过判断该条带在条带组中的偏移s_off是否处于本条带组中扩容读单元的起始条带号和结束条带号之间来判断;
(6)判断是否有n≥m,如果有则转入步骤(7),否则转入步骤(8);
(7)计算该条带上的条带单元将被迁移到的目标盘号k,其中,若 则k=(d%m+n),否则然后进入步骤(9);
(8)计算该条带上的条带单元将被迁移到的目标盘号k,其中,若s_off≤We,则k=d+n,否则然后进入步骤(9);
(9)将条带s上磁盘号为d的条带单元到磁盘号为k的条带单元的迁移路径记录在迁移记录集R中;
(10)判断是否有d=n-1,即当前磁盘号是否等于扩容前RAID5中的最后一个盘,如果是则转入步骤(11),否则设置d=d+1,然后返回步骤(4);
(11)判断是否有w_off=Wsize-1,或者s=v-1,如果是则进入步骤(12),否则设置w_off=w_off+1,并返回步骤(3);
(12)对于当前扩容窗口W_no中的所有条带而言,根据R中记录的迁移路径,从扩容前RAID5中的磁盘读取对应的条带单元写入对应的新加的磁盘上,对扩容前RAID5中被读取的条带单元以及新加磁盘上除被写入的条带单元之外的条带单元都写入“0”;需要注意的是,上述操作实施中可利用高效的顺序IO对每个磁盘一次读写多个连续的条带单元,且充分利用 到多盘的并行IO,即并行的完成多盘读取操作,并行完成多盘写入操作;
本步骤的优点在于扩容后,数据块和校验块会均匀分布到所有磁盘上,使得扩容后性能有所提升;采用一次读写多个连续条带单元的方式又能进一步提高迁移效率。
(13)判断是否有W_no=0,如果是则转入步骤(14),否则转入步骤(15);
(14)获取当前RAID5系统的逻辑块地址LBA,根据该逻辑块地址LBA创建地址映射函数Map1,用于实现原地址空间条带号不超过s的数据块的地址映射;具体而言,新的地址映射函数Map1将返回LBA对应的条带号S1、磁盘号D1以及校验盘号P1,本步骤包含以下子步骤:
(14.1)获取当前RAID5系统的逻辑块地址LBA,根据原始RAID5的地址映射函数(即Map函数)获得逻辑块地址LBA对应的条带号S和磁盘号D,以及该条带中的校验块所在的盘号P,并且设置S1=S;
(14.2)采用以下公式计算条带S在该条带组中的偏移s_off1,分别计算D盘扩容读单元的起始条带号Rdb、结束条带号Rde、扩容写单元的结束条带号Wde和P盘扩容读单元的起始条带号Rpb、结束条带号Rpe、扩容写单元的结束条带号Wpe:
(14.3)判断该条带在条带组中的偏移s_off1是否处于D盘扩容读单元的起始条带号和结束条带号之间,如果是则转入步骤(14.4),否则设置D1=D,然后转入步骤(14.7);
(14.4)判断是否有n≥m,如果有则转入步骤(14.5),否则转入步骤(14.6);
(14.5)计算扩容后逻辑地址块LBA对应的磁盘号D1,其中,若 则D1=D%m+n)否则然后转入步骤(14.7);
(14.6)计算扩容后逻辑地址块LBA对应的磁盘号D1,其中,若s_off1≤Wde,则D1=D+n,否则
(14.7)判断该条带在条带组中的偏移s_off1是否处于P盘扩容读单元的起始条带号和结束条带号之间,如果是则转入步骤(14.8),否则设置P1=P,然后转入步骤(14.11);
(14.8)判断是否有n≥m,如果有则转入步骤(14.9),否则转入步骤(14.10);
(14.9)计算扩容后逻辑地址块LBA对应的校验盘号P1,其中,若 则P1=P%m+n,否则然后转入步骤(14.11);
(14.10)计算扩容后逻辑地址块LBA对应的校验盘号P1,其中,若s_off1≤Wpe1,则P1=P+n,否则
(14.11)Map1地址映射完成,返回(S1,D1,P1)。
本步骤的优点在于创建的Map1地址映射函数能够高效的完成地址转换工作,避免采用额外存储空间存放条带布局信息带来的存储开销。
(15)判断当前窗口号w_no是否等于RAID5的最后一个窗口,如果是则转入步骤(16),否则设置w_no=w_no+1,然后返回步骤(2);
(16)获取当前RAID5系统的逻辑块地址LBA,根据该逻辑块地址LBA创建地址映射函数Map2,用于扩容后新的地址空间的地址映射;至此,完成扩容过程。其中,地址映射函数Map2将返回LBA对应的条带号S2、磁盘号D2以及校验盘号P2,本步骤包含以下子步骤:
(16.1)获取当前RAID5系统的逻辑块地址LBA,将逻辑块地址LBA转换为在新地址空间的相对偏移x=LBA-(n-1)*v,计算条带组号
s_no=x/(RU*(n+m)),以及在该条带组内新增地址空间的相对偏移
s_off2=x%(RU*(n+m));
(16.2)采用以下公式计算逻辑地址块LBA对应的磁盘号D2和条带号S2;具体而言,按照横向编址的计算方式为:
按照纵向编址的计算方式为:
(16.3)根据条带号S2,由Map1计算出该条带的校验块盘号P’,并设置P2=P’;具体而言,将S2*(n-1)作为第S2条带上的第一个数据块的LBA,即Map1函数的输入,并通过上述步骤(14)获取对应的输出值,即P’=Map1(S2*(n-1))。
(16.4)Map2地址映射完成,返回(S2,D2,P2)。
本步骤的优点在于Map2能够完成新增地址空间的高效的地址映射,而且新增的空间完全用来存放数据块,保证了RAID5的存储效率。
为了使本发明方法更容易理解,下面结合图3所示的实例R5S(12,4,2)来说明。图3表示由4个盘组成的RAID5加入2个盘进行扩容,其中每个盘有12个条带,我们以扩容窗口等于12为例。根据步骤(1)计算出Y=2,St∈{1,2,4,…},我们以St=2为例,则有RU=4,WU=8,SS=12;步骤(2)将w_off设为0,并将迁移记录集R置为空;步骤(3)将磁盘计数器设为0,表示从第一个盘开始处理,然后计算当前条带号s=0,在条带组中的偏移s_off=0;步骤(4)计算扩容读单元的起始条带号Rb=0,结束条带号Re=3,扩容写单元的结束条带号We=7;步骤(5)判断该条带是否处于扩容读单元起始和结束条带号之间,因为此时满足s_off∈[Rb,Re],所以转到步骤(6);步骤(6)判断满足n≥m,转入步骤(7);步骤(7)计算该条带上的条带 单元将被迁移到的目标盘号k=4,然后转入步骤(9);步骤(9)将把该条带(当前为条带0)的迁移记录(0号盘迁移到4号盘)加入记录集R;步骤(10)检查到当前磁盘计数器d不等于n-1,将d的值增1后转入步骤(4);步骤(4)计算扩容读单元起始条带号Rb=2,结束条带号Re=5,,扩容写单元的结束条带号We=9;步骤(5)检查到该条带s(此时s仍为0)不在Rb和Re之间,因此转入步骤(10);步骤(10)检查到当前磁盘计数器d不等于3,将d的值增1后转入步骤(4);重复步骤(4)到(10),直到满足d=3转入步骤(11);步骤(11)判断是否满足w_off=Wsize-1或者s=v-1,此时都不满足,将w_off的值增1转入步骤(3);重复步骤(3)到(11)直到满足w_off=Wsize-1或者s=v-1,对于本例,此时有w_off=11,s=11,转入步骤(12);步骤(12)根据R中记录的迁移路径,从前4个磁盘读取对应的条带单元写入后两个磁盘上,对扩容前RAID5中被读取的条带单元以及新加磁盘上除被写入的条带单元之外的条带单元都写入“0”;如图3A所示,迁移过程为将前4个磁盘上带有颜色的条带单元迁移到后两个盘的相应位置,然后将阴影部分写入“0”;步骤(13)判断满足w_no=0,然后转入步骤(14);步骤(14)创建地址映射函数Map1,实现原地址空间中条带号不超过s的逻辑块地址映射;如图3,我们以逻辑块地址LBA=17为例,步骤(14.1)首先利用原地址映射函数Map获得逻辑块地址LBA对应的条带号S、磁盘号D和该条带中的校验块所在的盘号P,结果为(S,D,P)=(5,1,2),然后设置S1=5;步骤(14.2)计算出条带S在条组中的偏移s_off1=5,磁盘D的扩容读单元的起始条带号Rdb=2,结束条带号Rde=5,扩容写单元的结束条带号Wde=9;磁盘P的扩容读单元的起始条带号Rpb=4,结束条带号Rpe=7,扩容写单元的结束条带号Wpe=11;步骤(14.3)判断s_off1处于Rdb和Rde之间,转入步骤(14.4);步骤(14.4)判断n≥m,转入步骤(14.5);步骤(14.5)计算出D1=5,然后转入步骤(14.7);步骤(14.7)判断s_off1处于Rpb和Rpe之间,转入步骤(14.8);步骤(14.8)判断n≥m,转入步骤(14.9);步骤(14.9)计算出P1=4,然后转入步骤(14.11);步骤(14.11)完成Map1的地址映射,返回(S1,D1,P1)=(5,5,4);步骤(15)判断当前窗口号w_no等于最后一个窗口,转入步骤(16);步骤(16)创建地址映射函数Map2,用于扩容后新的地址空间的地址映射;我们以逻辑块地址LBA=50为例,步骤(16.1)计算出LBA在新地址空间的相对偏移x=14,条带组号s_no=0,该条带组内新增地址空间的相对偏移s_off2=14;步骤(16.2)按照编址方式给出两种映射方式,如果按照横向编址的方式(如图3B),则计算得到D2=2,S2=6;如果按照纵向编址的方式(如图3C),则计算得到D2=3,S2=8;步骤(16.3)根据S2由Map1计算出校验盘号P’,我们以图3B为例,则有Map1(6*3)=(6,4,1),因此P2=P’=1;以图3B为例,步骤(16.4)返回(S2,D2,P2)=(6,2,1),完成Map2地址映射。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种独立磁盘冗余阵列RAID5的快速扩容方法,其特征在于,包括以下步骤:
(1)采用以下公式获取条带组大小SS、扩容读单元大小RU、扩容写单元大小WU以及辅助变量Y和St,并初始化当前扩容窗口w_no为0,其中条带组大小指条带组中的条带个数,参数v,n,m均为正整数,v是每个盘的条带个数,n是扩容前RAID5的磁盘个数,m是为扩容而新加入的磁盘个数:
Y = n / gcd ( n , m ) S t &Element; { Y / i | 1 < i &le; Y a n d Y % i = = 0 } &cup; { Y &CenterDot; i | i = 1 , 2 , 3... } R U = S t &CenterDot; m ; W U = S t &CenterDot; n ; S S = S t &CenterDot; ( n + m )
其中,gcd表示获得最大公约数;
(2)初始化当前扩容窗口内的偏移w_off为0,并将扩容所需的迁移记录集R设为空;
(3)将当前磁盘号d初始化为0,获取条带号s=w_no*Wsize+w_off以及在条带组中的偏移s_off=s%SS,其中Wsize为扩容窗口的大小;
(4)获取当前盘扩容读单元的起始条带号Rb=d*St、结束条带号Re=Rb+RU-1,以及扩容写单元的结束条带号We=Rb+WU-1;
(5)判断条带号s对应的条带是否在本条带组中扩容读单元的起始条带号和结束条带号之间,如果是则继续进入步骤(6),否则跳转到步骤(10);
(6)判断是否有n≥m,如果有则转入步骤(7),否则转入步骤(8);
(7)计算该条带上的条带单元将被迁移到的目标盘号k,其中,若则k=(d%m+n),否则然后进入步骤(9);
(8)计算该条带上的条带单元将被迁移到的目标盘号k,其中,若s_off≤We,则k=d+n,否则然后进入步骤(9);
(9)将条带s上磁盘号为d的条带单元到磁盘号为k的条带单元的迁移路径记录在迁移记录集R中;
(10)判断是否有d=n-1,如果是则转入步骤(11),否则设置d=d+1,然后返回步骤(4);
(11)判断是否有w_off=Wsize-1,或者s=v-1,如果是则进入步骤(12),否则设置w_off=w_off+1,并返回步骤(3);
(12)对于当前扩容窗口w_no中的所有条带而言,根据R中记录的迁移路径,从扩容前RAID5中的磁盘读取对应的条带单元写入对应的新加的磁盘上,对扩容前RAID5中被读取的条带单元以及新加磁盘上除被写入的条带单元之外的条带单元都写入“0”;
(13)判断是否有w_no=0,如果是则转入步骤(14),否则转入步骤(15);
(14)获取当前RAID5系统的逻辑块地址LBA,根据该逻辑块地址LBA创建地址映射函数Map1,用于实现原地址空间条带号不超过s的数据块的地址映射;
(15)判断当前窗口号w_no是否等于RAID5的最后一个窗口,如果是则转入步骤(16),否则设置w_no=w_no+1,然后返回步骤(2);
(16)获取当前RAID5系统的逻辑块地址LBA,根据该逻辑块地址LBA创建地址映射函数Map2,用于扩容后新的地址空间的地址映射。
2.根据权利要求1所述的快速扩容方法,其特征在于,步骤(14)包括以下子步骤:
(14.1)获取当前RAID5系统的逻辑块地址LBA,根据原始RAID5的地址映射函数获得逻辑块地址LBA对应的条带号S和磁盘号D,以及该条带中的校验块所在的盘号P,并且设置S1=S;
(14.2)采用以下公式计算条带S在该条带组中的偏移s_off1,分别计算D盘扩容读单元的起始条带号Rdb、结束条带号Rde、扩容写单元的结束条带号Wde和P盘扩容读单元的起始条带号Rpb、结束条带号Rpe、扩容写单元的结束条带号Wpe:
s _ off 1 = S % S S ; R d b = D &CenterDot; S t ; R p b = P &CenterDot; S t R d e = R d b + R U - 1 ; W d e = R d b + W U - 1 ; R p e = R p b + R U - 1 ; W p e = R p b + W U - 1 ;
(14.3)判断该条带在条带组中的偏移s_off1是否处于D盘扩容读单元的起始条带号和结束条带号之间,如果是则转入步骤(14.4),否则设置D1=D,然后转入步骤(14.7);
(14.4)判断是否有n≥m,如果有则转入步骤(14.5),否则转入步骤(14.6);
(14.5)计算扩容后逻辑块地址LBA对应的磁盘号D1,其中,若则D1=D%m+n,否则然后转入步骤(14.7);
(14.6)计算扩容后逻辑块地址LBA对应的磁盘号D1,其中,若s_off1≤Wde,则D1=D+n,否则
(14.7)判断该条带在条带组中的偏移s_off1是否处于P盘扩容读单元的起始条带号和结束条带号之间,如果是则转入步骤(14.8),否则设置P1=P,然后转入步骤(14.11);
(14.8)判断是否有n≥m,如果有则转入步骤(14.9),否则转入步骤(14.10);
(14.9)计算扩容后逻辑块地址LBA对应的校验盘号P1,其中,若则P1=P%m+n,否则然后转入步骤(14.11);
(14.10)计算扩容后逻辑块地址LBA对应的校验盘号P1,其中,若s_off1≤Wpe1,则P1=P+n,否则
(14.11)Map1地址映射完成,返回(S1,D1,P1)。
3.根据权利要求2所述的快速扩容方法,其特征在于,步骤(16)包括以下子步骤:
(16.1)获取当前RAID5系统的逻辑块地址LBA,将逻辑块地址LBA转换为在新地址空间的相对偏移x=LBA-(n-1)*v,计算条带组号s_no=x/(RU*(n+m)),以及在该条带组内新增地址空间的相对偏移s_off2=x%(RU*(n+m));
(16.2)采用以下公式计算逻辑块地址LBA对应的磁盘号D2和条带号S2,其中按照横向编址的计算方式为:
D 2 = s _ o f f 2 % ( n + m ) S 2 = s _ n o &CenterDot; S S + ( s _ o f f 2 / ( n + m ) + D 2 &CenterDot; S t ) % S S
按照纵向编址的计算方式为:
D 2 = s _ o f f 2 / R U S 2 = s _ n o &CenterDot; S S + ( s _ o f f 2 % R U + D 2 &CenterDot; S t ) % S S
(16.3)根据条带号S2,由Map1计算出该条带的校验块盘号P’,并设置P2=P’;
(16.4)Map2地址映射完成,返回(S2,D2,P2)。
4.根据权利要求3所述的快速扩容方法,其特征在于,步骤(16.3)具体为,将S2*(n-1)作为第S2条带上的第一个数据块的LBA,即Map1函数的输入,并通过步骤(14)获取对应的输出值,即P’=Map1(S2*(n-1))。
CN201310199392.4A 2013-05-24 2013-05-24 一种独立磁盘冗余阵列raid5的快速扩容方法 Active CN104182176B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310199392.4A CN104182176B (zh) 2013-05-24 2013-05-24 一种独立磁盘冗余阵列raid5的快速扩容方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310199392.4A CN104182176B (zh) 2013-05-24 2013-05-24 一种独立磁盘冗余阵列raid5的快速扩容方法

Publications (2)

Publication Number Publication Date
CN104182176A CN104182176A (zh) 2014-12-03
CN104182176B true CN104182176B (zh) 2017-06-27

Family

ID=51963267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310199392.4A Active CN104182176B (zh) 2013-05-24 2013-05-24 一种独立磁盘冗余阵列raid5的快速扩容方法

Country Status (1)

Country Link
CN (1) CN104182176B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572842B (zh) * 2014-12-04 2018-12-28 长沙数析信息科技有限公司 一种分布式文件系统中的条带化卷扩展数据迁移方法
CN107340972A (zh) * 2016-11-22 2017-11-10 青海师范大学 一种raid0的容量扩展方法
CN106874218B (zh) * 2017-01-12 2019-12-03 深圳市汉云科技有限公司 一种映射地址空间的分配方法及其装置
CN107992272A (zh) * 2017-12-21 2018-05-04 郑州云海信息技术有限公司 一种云计算架构下的lvm磁盘空间扩容方法
CN112114758B (zh) * 2020-10-12 2022-09-20 苏州浪潮智能科技有限公司 一种独立冗余磁盘阵列扩容的方法、装置及介质
CN112799604B (zh) * 2021-03-18 2022-06-17 河北工业大学 一种基于N-Code的RAID6磁盘阵列扩容方法及数据填充方法
CN114253478B (zh) * 2021-12-17 2024-02-09 山东云海国创云计算装备产业创新中心有限公司 一种计算raid校验盘位置的方法和装置
CN115840540B (zh) * 2023-02-23 2023-05-02 苏州浪潮智能科技有限公司 Raid阵列扩容方法、装置、设备、raid卡及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000010A (en) * 1997-05-09 1999-12-07 Unisys Corporation Method of increasing the storage capacity of a level five RAID disk array by adding, in a single step, a new parity block and N--1 new data blocks which respectively reside in a new columns, where N is at least two
CN102096557A (zh) * 2010-12-31 2011-06-15 成都市华为赛门铁克科技有限公司 一种独立磁盘冗余阵列的扩容方法、装置及系统
CN102200892A (zh) * 2011-04-29 2011-09-28 华中科技大学 一种基于动态raid系统的扩容方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080276041A1 (en) * 2007-05-01 2008-11-06 International Business Machines Corporation Data storage array scaling method and system with minimal data movement

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000010A (en) * 1997-05-09 1999-12-07 Unisys Corporation Method of increasing the storage capacity of a level five RAID disk array by adding, in a single step, a new parity block and N--1 new data blocks which respectively reside in a new columns, where N is at least two
CN102096557A (zh) * 2010-12-31 2011-06-15 成都市华为赛门铁克科技有限公司 一种独立磁盘冗余阵列的扩容方法、装置及系统
CN102200892A (zh) * 2011-04-29 2011-09-28 华中科技大学 一种基于动态raid系统的扩容方法

Also Published As

Publication number Publication date
CN104182176A (zh) 2014-12-03

Similar Documents

Publication Publication Date Title
CN104182176B (zh) 一种独立磁盘冗余阵列raid5的快速扩容方法
CN104461391B (zh) 一种存储设备元数据管理处理方法及系统
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
CN101587425B (zh) 一种增加独立磁盘冗余阵列冗余性的方法及装置
CN101458613B (zh) 一种混合分级阵列的实现方法、混合分级阵列和存储系统
CN105573681B (zh) 一种ssd盘片内部raid组建方法及系统
CN102831222A (zh) 一种基于重复数据删除的差量压缩方法
CN101620518B (zh) 一种磁盘冗余阵列raid的创建方法及装置
CN106293511A (zh) 一种面向连续数据存储的动态局部并行数据布局
CN107704194A (zh) 无锁io处理方法及其装置
CN101556802B (zh) 一种raid阵列转换的方法及装置
CN110413454A (zh) 基于存储阵列的数据重建方法、装置及存储介质
CN107728937A (zh) 一种使用非易失性内存介质的键值对持久存储方法及系统
CN107122269A (zh) 用于保证映射独立磁盘冗余阵列的可靠性的方法和装置
CN104375784A (zh) 一种降低虚拟磁盘管理复杂度的方法和装置
CN105808378B (zh) 元数据修复方法及装置
CN107678690A (zh) 一种固态硬盘及其冗余独立磁盘阵列的实现方法
CN109375876A (zh) 基于ssd的raid存储方法、装置、设备及介质
TWI687811B (zh) 資料儲存裝置及系統資訊的編程方法
CN103645995B (zh) 写数据的方法及装置
CN107273306A (zh) 一种固态硬盘的数据读取、数据写入方法及固态硬盘
CN106775453A (zh) 一种混合存储阵列的构建方法
CN107728943B (zh) 一种延迟产生校验光盘的方法及其对应的数据恢复方法
CN106547472A (zh) 存储阵列管理方法及装置
CN106844229B (zh) 固态硬盘固件映射表的组织方法、系统及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant