本发明专利技术公开了一种基于校验RAID加入镜像结构的阵列构建方法及读写系统;所述阵列构建方法包括地址布局、数据布局、数据存取和数据重构四个步骤;所述读写系统包括I/O模块、镜像管理模块、地址变换模块和基于校验RAID模块;本发明专利技术在基于校验RAID的基础上加入镜像结构,提高了阵列的I/O性能;利用镜像数据重构缩短重构时间;新颖的地址布局方式将原始数据与镜像数据尽可能的放在邻近的位置,缩短了磁头移动的距离;在后台更新校验信息,缓解基于校验RAID的写放大问题,提高阵列的写性能;由于镜像数据的存在,提高了阵列的容错能力,因此在阵列的可用性和可靠性方面有很大的改善。
【技术实现步骤摘要】
一种基于校验RAID加入镜像结构的阵列构建方法及读写系统
本专利技术属于数据储存
,更具体地,涉及一种基于校验RAID加入镜像结构的阵列构建方法及读写系统。
技术介绍
独立磁盘冗余阵列(RedundantArraysofIndependentDisks,RAID)因其性能以及可靠性在大规模分布式并行存储系统中得到了广泛的应用。在性能上,RAID通过条带化实现高吞吐量,在可靠性上,RAID利用镜像或是校验码等冗余数据来提高可靠性。根据其冗余结构的不同可将RAID分为三类。其一,没有冗余结构,代表性的阵列为RAID0,RAID0使用数据分条技术(Datastripping),将数据分散到所有磁盘中,使得磁盘间可以并行操作,提高了读写速度,由于没有冗余结构,其空间利用率是阵列结构中最高的,但也因此导致其可靠性低,阵列中任何一块磁盘出现故障,都会导致整个系统受到破坏。其二,基于校验的RAID,代表性的阵列为RAID5,RAID5同样采用了数据分条的技术,将数据条块化的存储在所有磁盘中,使磁盘可以并行操作,与RAID0不同的是,每个条带都有一个奇偶校验值,所有奇偶校验值均匀地分布在所有磁盘中,其优势是提高了可靠性,阵列中任何一块磁盘出现故障,系统都可以根据剩下的磁盘计算出故障盘的数据;由于加入了冗余结构,空间利用率有所下降,其冗余结构总共需要一个磁盘的容量,同时,由于其冗余结构,导致了写放大的问题,即一次写操作,将产生四个实际的IO操作,包括两次读和两次写;在重构模式下,需要读取剩下所有磁盘的数据来计算故障盘的数据;降级模式下,访问故障盘的请求被分解为多个I/O请求,这将导致重构时间长,降级模式以及重构模式下I/O性能低。其三,基于镜像的RAID,代表性的阵列为RAID1,RAID1也称为磁盘镜像,它将一个磁盘的数据镜像到另一个磁盘上,由于数据在不同磁盘上存在副本,可以实现I/O分流,使其访问可以均匀的分布在镜像中,并且阵列中任何一块磁盘出现故障,数据都不会丢失,访问故障盘的请求可直接转换为访问其镜像盘的请求,不会分解成多个I/O,且重构时可以直接读取故障盘对应镜像盘的数据,重构时间短,I/O性能高,但其空间利用率差,仅能使用阵列容量的一半。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种面向校验磁盘阵列的弹性数据镜像系统及方法,其目的在于:在基于校验RAID的基础上加入镜像结构,提高阵列的容错能力。为实现上述目的,按照本专利技术的一个方面,提供一种基于校验RAID加入镜像结构的阵列构建方法,其特征在于,所述阵列构建方法包括地址布局、数据布局、数据存取和数据重构四个步骤,具体如下:(1)地址布局:(1.1)根据磁盘数M设定段内条带数,段内条带数为M的整数倍;(1.2)根据磁盘中数据块的数目与段内条带数确定段数K,段数K=磁盘中数据块的数目/段内条带数;(1.3)取N=K/2;将段编号为1至N的段与段编号为N+1至K的段交叉存放:编号为1的段之后存放编号为N+1的段,之后存放编号为2的段,编号为2之后存放编号为N+2的段,如此交叉存放;如K/2为非整数,则取整;(2)数据布局:(2.1)原始数据段段内的数据与基于校验的RAID相同布局;(2.2)镜像数据段在原始数据段布局的基础上,改变同条带中数据块存放的磁盘号,磁盘号统一向右或向左偏移;统一向右偏移,即磁盘号加i,若加i后的磁盘号大于M,则减M;统一向左偏移,即磁盘号减i,若减i后的磁盘号小于0,则加M;(3)数据读写:(3.1)计算拟访问数据的物理地址;若为写请求,还要计算校验信息物理地址;(3.2)判断拟访问的数据是否有镜像;如果没有镜像,则进入步骤(3.3),若有镜像,则进入步骤(3.4);(3.3)下发读写请求到数据的物理地址指向的磁盘;若为写请求,还更新原始数据的校验信息;(3.4)计算镜像数据的物理地址;若为写请求,还计算镜像数据校验数据的物理地址,下发写请求到相应的数据物理地址所指向的磁盘和镜像物理地址指向的磁盘,并更新原始数据和镜像数据的校验信息;若为读,均衡原始数据所在磁盘与镜像数据所在磁盘的负载大小,选择负载较小者下发读请求;(4)数据重构:如果出现故障盘,判断故障盘上的数据是否有镜像,如果有镜像,从镜像读取对应数据写入备份盘;如果没有镜像,则根据基于校验RAID的重构方法,读取条带内其他的数据块计算故障盘的数据写入备份盘。优选地,写数据时,若阵列空间不足,则根据用户指定的优先级弹性释放镜像数据空间,所述弹性释放具体为:当用户数据按基于校验的RAID组织所需要的空间小于或等于阵列容量的一半时,所有的数据都有镜像冗余;当用户数据按基于校验的RAID组织所需要的空间大于阵列容量的一半时,用户可指定数据的优先级,先释放优先级低的数据段的镜像;随着用户数据的递增达到饱和,阵列蜕变成基于校验的RAID。优选地,判断是否有镜像的方法具体为:根据镜像管理模块中的条带段位图记录的内容判断,每一个段用2比特来记录状态,为“00”表示空闲;“01”表示有数据没有镜像;“10”表示有数据且其镜像数据在向下相邻的位置;“11”表示有数据且该数据有镜像,镜像位置需通过镜像映射表查找。优选地,所述更新校验信息的方式有两种:其一,若用户不要求校验数据同步更新,则利用I/O模块中的校验延迟队列后台处理;其二,同步处理,在写原始数据和镜像数据时同步更新原始数据的校验信息和镜像数据的校验信息。优选的,在没有镜像的情况下,所述读请求执行过程中,若原始数据所在盘出现故障,则遵循校验RAID的方法执行读;这种遵循校验RAID读操作的方法即为降级读。优选地,在有镜像的情况下,所述读请求执行过程中,若原始数据所在盘出现故障,直接将用户读请求下发到镜像数据所在磁盘。为实现本专利技术的目的,按照本专利技术的另一方面,提供了一种基于校验RAID加入镜像结构的阵列读写系统,其特征在于,所述系统包括I/O模块、镜像管理模块、地址变换模块、基于校验RAID模块;所述I/O模块接收上层读写请求,输出读写请求包含的逻辑地址信息;镜像管理模块根据所述逻辑地址信息,判断查找所述地址所指向的原始数据的镜像数据,输出镜像数据逻辑地址;地址变换模块接收原始数据与镜像数据的逻辑地址,输出原始数据与镜像数据的物理地址;如果为写请求,还输出原始数据和镜像数据检验块的物理地址;I/O模块根据所述物理地址,下发读写请求到对应的磁盘;基于校验RAID模块则用于在没有镜像的情况下,原始数据所在盘出现故障时执行读请求。优选的,所述I/O模块包括校验延迟队列,用于后台更新数据段的校验信息。进一步优选的,所述校验延迟队列可扩展8个比特位或16个比特位;扩展后的队列用于记录需要更新校验的数据块所在段号以及相应的偏移条带号,实现小粒度的更新。优选的,所述镜像管理模块包括条带段位图和镜像映射表,所述条带段位图记录条带段的状态,所述镜像映射表记录不相邻镜像的位置;通过遍历条带段位图查找空闲的段分配给原始数据和镜像数据;若为镜像数据分配的空间不是向下临近的,则将不相邻镜像的位置记录在镜像映射表中;镜像管理模块用于管理空间和镜像数据:为原始数据分配空间、分配镜像;根据原始数据查找对应的镜像、在空间不足的情况下根据用户指定的优先本文档来自技高网...

【技术保护点】
一种基于校验RAID加入镜像结构的阵列构建方法,其特征在于,所述阵列构建方法包括地址布局、数据布局、数据存取和数据重构四个步骤,具体如下:(1)地址布局:(1.1)根据磁盘数M设定段内条带数,段内条带数为M的整数倍;(1.2)根据磁盘中数据块的数目与段内条带数确定段数K,段数K=磁盘中数据块的数目/段内条带数;(1.3)取N=K/2;将段编号为1至N的段与段编号为N+1至K的段交叉存放:编号为1的段之后存放编号为N+1的段,之后存放编号为2的段,编号为2之后存放编号为N+2的段,如此交叉存放;如K/2为非整数,则取整;(2)数据布局:(2.1)原始数据段段内的数据与基于校验的RAID相同布局;(2.2)镜像数据段在原始数据段布局的基础上,改变同条带中数据块存放的磁盘号,磁盘号统一向右或向左偏移;统一向右偏移,即磁盘号加i,若加i后的磁盘号大于M,则减M;统一向左偏移,即移磁盘号减i,若减i后的磁盘号小于0,则加M;(3)数据读写:(3.1)计算拟访问数据的物理地址;若为写请求,还要计算校验信息物理地址;(3.2)判断拟访问的数据是否有镜像;如果没有镜像,则进入步骤(3.3),若有镜像,则进入步骤(3.4);(3.3)下发读写请求到数据的物理地址指向的磁盘;若为写请求,还更新原始数据的校验信息;(3.4)计算镜像数据的物理地址;若为写请求,还计算镜像数据校验数据的物理地址,下发写请求到相应的数据物理地址所指向的磁盘和镜像物理地址指向的磁盘,并更新原始数据和镜像数据的校验信息;若为读,均衡原始数据所在磁盘与镜像数据所在磁盘的负载大小,选择负载较小者下发读请求;(4)数据重构:如果出现故障盘,判断故障盘上的数据是否有镜像,如果有镜像,从镜像读取对应数据写入备份盘;如果没有镜像,则根据基于校验RAID的重构方法,读取条带内其他的数据块计算故障盘的数据写入备份盘。...
【技术特征摘要】
1.一种基于校验RAID加入镜像结构的阵列构建方法,其特征在于,所述阵列构建方法包括地址布局、数据布局、数据存取和数据重构四个步骤,具体如下:(1)地址布局:(1.1)根据磁盘数M设定段内条带数,段内条带数为M的整数倍;(1.2)根据磁盘中数据块的数目与段内条带数确定段数K,段数K=磁盘中数据块的数目/段内条带数;(1.3)取N=K/2;将段编号为1至N的段与段编号为N+1至K的段交叉存放:编号为1的段之后存放编号为N+1的段,之后存放编号为2的段,编号为2之后存放编号为N+2的段,如此交叉存放;如K/2为非整数,则取整;(2)数据布局:(2.1)原始数据段段内的数据与基于校验的RAID相同布局;(2.2)镜像数据段在原始数据段布局的基础上,改变同条带中数据块存放的磁盘号,磁盘号统一向右或向左偏移;统一向右偏移,即磁盘号加i,若加i后的磁盘号大于M,则减M;统一向左偏移,即移磁盘号减i,若减i后的磁盘号小于0,则加M;(3)数据读写:(3.1)计算拟访问数据的物理地址;若为写请求,还要计算校验信息物理地址;(3.2)判断拟访问的数据是否有镜像;如果没有镜像,则进入步骤(3.3),若有镜像,则进入步骤(3.4);(3.3)下发读写请求到数据的物理地址指向的磁盘;若为写请求,还更新原始数据的校验信息;(3.4)计算镜像数据的物理地址;若为写请求,还计算镜像数据校验数据的物理地址,下发写请求到相应的数据物理地址所指向的磁盘和镜像物理地址指向的磁盘,并更新原始数据和镜像数据的校验信息;若为读,均衡原始数据所在磁盘与镜像数据所在磁盘的负载大小,选择负载较小者下发读请求;(4)数据重构:如果出现故障盘,判断故障盘上的数据是否有镜像,如果有镜像,从镜像读取对应数据写入备份盘;如果没有镜像,则根据基于校验RAID的重构方法,读取条带内其他的数据块计算故障盘的数据写入备份盘。2.如权利要求1所述的阵列构建方法,其特征在于,在所述步骤(3)中,写数据时,若阵列空间不足,则根据用户指定的优先级弹性释放镜像数据空间:当用户数据按基于校验的RAID组织所需要的空间小于或等于阵列容量的一半时,所有的数据都有镜像冗余;当用户数据按基于校验的RAID组织所需要的空间大于阵列容量的一半时,根据用户指定数据的优先级,先释放优先级低的数据段的镜像;随着用户数据的递增达到饱和,阵列蜕变成基于校验的RA...
【专利技术属性】
技术研发人员:姚杰,曹强,吴思,谢长生,
申请(专利权)人:华中科技大学,
类型:发明
国别省市:湖北;42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。