一种双控RAID同步方法及装置与流程

文档序号:11154221阅读:565来源:国知局
一种双控RAID同步方法及装置与制造工艺

本发明涉及计算机存储技术领域,特别涉及一种双控RAID同步方法及装置。



背景技术:

RAID(Redundant Arrays of Independent Disks,RAID),独立冗余磁盘阵列,是由很多价格较为便宜的磁盘,组合成的一个容量巨大的磁盘组,可以利用个别磁盘提供数据所产生的加成效果提升整个磁盘系统效能。利用这项技术,能够将数据切割成许多区段,分别存放在各个硬盘上。同时RAID还提供不同程度的冗余能力(RAID0除外),当阵列中的一块磁盘出现故障时,通过冗余数据,可以将故障盘中的数据恢复到热备盘上。从而保证了用户数据的完整性。

RAID的实现技术主要有两种,一种是镜像技术,像RAID1,一种是条带技术,像RAID5、RAID6。镜像技术是当一块磁盘故障时,可以通过故障盘的镜像直接将数据拷贝到热备盘上,从而恢复了故障盘。条带技术是当一块磁盘故障时,可以利用条带技术,使用其它磁盘中的数据,重新计算出故障盘上的数据到热备盘上,从而恢复了故障盘。

RAID数据恢复,是RAID同步的一种方式,是非常耗时的,尤其是对传统RAID更是非常耗时。耗时主要是磁盘的读写,对于条带RAID另一个耗时的地方就是计算。在同步过程中,每当同步完一定数量的条带,就使用bitmap中的一个bit位来标记。每一个bit位代表一个bitmap chunk(位图数据块)大小的区域是否同步。如果该bit为1表示这块区域为脏,这块区域有条带不一致,否则如果为0,表示该区域所有的条带已经同步。如果bitmap(位图)中的有效位就全部清空,也就是1全部变为0,表示整个RAID已经同步完毕。每当同步完一个chunk(数据块),会同时将bitmap位同步到磁盘的元数据中。

现有技术中,在双控环境中同步一个RAID大部分是在一个控制器中进行的,在同步结束后只是同步两个节点的状态。由于只通过一个控制器也就数在一个节点中运行同步,并不能充分发挥双控RAID的两个节点的资源,造成同步速度过慢,不利于用户体验。因此,如何充分发挥双控RAID的两个节点的资源,提高同步速度,提升用户体验,是现今亟须解决的问题。



技术实现要素:

本发明的目的是提供一种双控RAID同步方法及装置,以充分发挥双控RAID的两个节点的资源,通过两个节点并行运行同步操作,提高同步速度,提升用户体验。

为解决上述技术问题,本发明提供一种双控RAID同步方法,包括:

主节点和从节点从磁盘的元数据区加载置脏后的位图;

所述主节点和所述从节点分别同步所述位图中偶数位对应的偶数数据块和所述位图中奇数位对应的奇数数据块;其中,所述主节点和所述从节点每同步完一个数据块均会更新一次所述元数据区的位图;

所述元数据区的位图的有效位均清空后,所述主节点和所述从节点重新加载所述元数据区的位图。

可选的,所述主节点和从节点分别同步所述位图中偶数位对应的偶数数据块和所述位图中奇数位对应的奇数数据块,包括:

所述主节点从数据块0开始遍历,对偶数数据块进行同步并在遍历到奇数数据块时,将所述奇数数据块的数据块号发送给所述从节点;

所述从节点收到所述数据块号后进行回应,并对所述数据块号对应的数据块进行同步;

所述主节点收到所述回应后,继续遍历。

可选的,所述从节点收到所述数据块号后进行回应之后,还包括:

若所述主节点在预设时间内未接收到所述回应,则停止所述从节点的同步线程,所述主节点将不再发送所述数据块号并同步接下来遍历的全部数据块。

可选的,还包括:

若所述主节点处理出现错误,则切换所述从节点与所述主节点。

可选的,还包括:

若所述从节点下发IO出错,则在全部奇数数据块同步结束后,将全部错误发送到所述主节点。

此外,本发明还提供了一种双控RAID同步装置,包括:

第一加载模块,用于主节点和从节点从磁盘的元数据区加载置脏后的位图;

同步模块,用于所述主节点和所述从节点分别同步所述位图中偶数位对应的偶数数据块和所述位图中奇数位对应的奇数数据块;其中,所述主节点和所述从节点每同步完一个数据块均会更新一次所述元数据区的位图;

第二加载模块,用于所述元数据区的位图的有效位均清空后,所述主节点和所述从节点重新加载所述元数据区的位图。

可选的,所述同步模块,包括:

遍历单元,用于所述主节点从数据块0开始遍历;

第一同步单元,用于所述主节点对偶数数据块进行同步;

发送单元,用于所述主节点在遍历到奇数数据块时,将所述奇数数据块的数据块号发送给所述从节点;

第二遍历单元,用于所述从节点收到所述数据块号后进行回应,并对所述数据块号对应的数据块进行同步;

响应单元,用于所述主节点收到所述回应后,继续遍历。

可选的,所述同步模块,还包括:

第三同步单元,用于若所述主节点在预设时间内未接收到所述回应,则停止所述从节点的同步线程,所述主节点将不再发送所述数据块号并同步接下来遍历的全部数据块。

可选的,所述同步模块,还包括:

切换单元,用于若所述主节点处理出现错误,则切换所述从节点与所述主节点。

可选的,还包括:

错误发送模块,用于若所述从节点下发IO出错,则在全部奇数数据块同步结束后,将全部错误发送到所述主节点。

本发明所提供的一种双控RAID同步方法,包括:主节点和从节点从磁盘的元数据区加载置脏后的位图;所述主节点和所述从节点分别同步所述位图中偶数位对应的偶数数据块和所述位图中奇数位对应的奇数数据块;其中,所述主节点和所述从节点每同步完一个数据块均会更新一次所述元数据区的位图;所述元数据区的位图的有效位均清空后,所述主节点和所述从节点重新加载所述元数据区的位图;

可见,本发明通过主节点和从节点分别同步位图中偶数位对应的偶数数据块和位图中奇数位对应的奇数数据块,可以使双控RAID的同步根据位图上的奇数位和偶数位在两个节点上并行进行,实现了负载均衡,避免了节点空闲的现象,通过元数据区的位图的有效位均清空后,主节点和从节点重新加载元数据区的位图,进行了位图的合并,使得双控RAID可以更加快速的完成同步,缩减了丢失数据风险的时间,提升了用户体验。此外,本发明还提供了一种双控RAID同步装置,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种双控RAID同步方法的流程图;

图2为本发明实施例所提供的另一种双控RAID同步方法的流程图;

图3为本发明实施例所提供的另一种双控RAID同步方法的位图与数据块对应关系示意图;

图4为本发明实施例所提供的另一种双控RAID同步方法的RAID5更新示意图;

图5为本发明实施例所提供的一种双控RAID同步装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的一种双控RAID同步方法的流程图。该方法可以包括:

步骤101:主节点和从节点从磁盘的元数据区加载置脏后的位图。

其中,置脏后的位图可以为位于磁盘元数据中的已经将需要同步的数据块对应的位设置为1的位图。对于位图中置脏的位的设置数量,可以为将位图中全部位均设置为1,也可以为将位图中部分位设置为1,本实施例对此不受任何限制。

对于位图的置脏方式可以为主节点(Owner节点)将位图置脏并更新到磁盘,也可以为从节点(Slave节点)将位图置脏并更新到磁盘,或者通过其他方式将磁盘中的位图置脏,本实施例对此不做任何限制。

可以理解的是,主节点和从节点从磁盘的元数据区加载置脏后的位图,可以为主节点和从节点获取置脏后的位图的步骤,也就是说,只要可以使主节点和从节点获取置脏后的位图,可以不通过两个节点均从磁盘的元数据区加载置脏后的位图的方式,如主节点将位图置脏并更新到磁盘,那么主节点已经获取了置脏后的位图,只需从节点从磁盘的元数据区加载置脏后的位图,便可实现两个节点获取置脏后的位图的目的,本实施例对此不受任何限制。

需要说明的是,主节点和从节点为双控RAID的两个节点,对于主节点和从节点的设置选择,可以根据用户需求和实用场景进行设置,本实施例对此不做任何限制。

步骤102:所述主节点和所述从节点分别同步所述位图中偶数位对应的偶数数据块和所述位图中奇数位对应的奇数数据块;其中,所述主节点和所述从节点每同步完一个数据块均会更新一次所述元数据区的位图。

其中,由于位图中的每一个位均存在使用一个索引,那么若该索引为奇数,我们可以称该位其为奇数位,对应的数据块可以称之为奇数数据块,对奇数数据块进行同步就可以称为奇同步;若该索引为偶数,我们可以称该位其为偶数位,对应的数据块可以称之为偶数数据块,对偶数数据块进行同步就可以称为偶同步。

本实施例中双控RAID的同步是通过主节点和从节点分别进行偶同步和奇同步来实现的,也就是主节点和从节点分别同步位图中偶数位对应的数据块和奇数位对应的数据块。可以理解的是,本实施例的目的是为了充分利用双控RAID中两个节点的资源进行同步,也就是,只要可以使用两个节点并行对双控RAID进行同步便可达到本实施例的目的。也就是说,两个节点不仅可以按照本实施中位图中偶数位和奇数位对对应的数据块进行同步,还可以按照其他的方式,如两个节点按照从位图两端位开始分别开始同步的方式。本实施例对此不受任何限制。由于双控RAID进行偶同步和奇同步可以使两个节点的IO能够顺序达到磁盘,使得磁头尽可能向同一个方向移动,避免产生磁盘的抖动,导致读写效率下降的情况,因此双控RAID进行偶同步和奇同步可以为优选方案。

需要说明的是,双控RAID进行奇同步和偶同步的节点的设置,可以为主节点进行偶同步,从节点进行奇同步,也可以为主节点进行奇同步,从节点进行偶同步,本实施例对此不受任何限制。

对于主节点和从节点分别进行偶同步和奇同步的方式,可以为两个节点分别遍历位图进行偶同步和奇同步,也可以为主节点遍历位图,向从节点发送需要同步的数据块号或位号的方式,本实施对此不受任何限制。由于后一种方式可以充分发挥主节点作为集群的管理者,进行统一管理同步的速度,停止,以及重启同步等的功能,因此,优选的可以使用后一种方式进行偶同步和奇同步。

步骤103:所述元数据区的位图的有效位均清空后,所述主节点和所述从节点重新加载所述元数据区的位图。

其中,元数据区的位图的有效位均清空可以为位图中设置为1的位均变为了0,表明主节点和从节点均分别完成了偶同步和奇同步。

可以理解的是,主节点和从节点均分别完成了偶同步和奇同步后,每个节点的位图中只有自身同步的位变为了0,通过重新加载元数据区的位图,可以更新两个节点中的位图,达到两个节点和磁盘中的位图一致,且均为最新状态。

本实施例中,本发明实施例通过主节点和从节点分别同步位图中偶数位对应的偶数数据块和位图中奇数位对应的奇数数据块,可以使双控RAID的同步根据位图上的奇数位和偶数位在两个节点上并行进行,实现了负载均衡,避免了节点空闲的现象,通过元数据区的位图的有效位均清空后,主节点和从节点重新加载元数据区的位图,进行了位图的合并,使得双控RAID可以更加快速的完成同步,缩减了丢失数据风险的时间,提升了用户体验。

请参考图2、图3和图4,图2为本发明实施例所提供的另一种双控RAID同步方法的流程图;图3为本发明实施例所提供的另一种双控RAID同步方法的位图与数据块对应关系示意图;图4为本发明实施例所提供的另一种双控RAID同步方法的RAID5更新示意图。该方法可以包括:

步骤201:主节点将位图全部置脏,并更新到磁盘;从节点从磁盘的元数据区加载置脏后的位图。

其中,位图中的位与数据盘的数据块的对应关系可以如图3所示,位图(bitmap)中每一个位(bit)对应数据盘(disk)中的一个数据块(chunk)。如果该位值为0,则表明该位对应的数据块都已经同步完毕,如果该位值为1,则表明该位对应的数据块有些没有同步。如图3所示,位图中偶数位对应的数据块为深色,奇数位对应的数据块为浅色。在双控RAID中,每一个节点的RAID都维护一个位图,且要实时更新位图到磁盘的元数据区。

可以理解的是,本实施例是以双控RAID进行重建为例,由主节点将位图全部置脏,并更新到磁盘,然后从节点再从磁盘的元数据区加载该位图。

需要说明的是,主节点和从节点均获取了置脏后的位图后,均可以启动同步线程,准备进行同步。

步骤202:主节点从数据块0开始遍历,对偶数数据块进行同步并在遍历到奇数数据块时,将奇数数据块的数据块号发送给从节点。

可以理解的是,本实施例是以主节点作为同步操作的管理者,由主节点对位图进行遍历的同时,对遍历到的偶数数据块进行同步,将遍历到的奇数数据块的数据块号作为从节点进行同步的请求发送给从节点,可以通过主节点对双控RAID的同步进行统一的管理。

步骤203:从节点收到数据块号后进行回应,并对数据块号对应的数据块进行同步。

其中,从节点向主节点进行的回应,用于向主节点提示从节点可以对该数据块号对应的数据块进行同步,使主节点可以了解从节点的状态。

可以理解的是,对于主节点和从节点的同步过程,可以如图4中主节点和从节点对RAID5数据盘的同步所示,RAID5数据盘有三块磁盘构成,RAID5正在使用热备盘进行重建。disk0,disk1为数据盘,S0为热备盘。位图中偶数位对应的数据块为深色通过主节点的同步条带进行同步,位图中奇数位对应的数据块为浅色通过从节点的同步条带进行同步。

需要说明的是,若从节点下发IO出错,也就是,在同步的过程中出现错误,由于并不影响从节点继续同步,因此可以在此数据块同步完成后,将错误信息发送到同步操作的管理者主节点中,也可以在奇同步完成后,也就是对全部奇数数据块的同步完成后,将全部错误信息发送到主节点,方便主节点集中处理。本实施例对此不受任何限制。

步骤204:主节点收到回应后,继续遍历。

可以理解的是,本实施例是以主节点作为同步操作的管理者,为了确保对从节点进行奇同步的管理,主节点每遍历到位图中的奇数位对应的数据块时,都需要发送该数据块的数据块号到从节点,告知从节点对该数据块进行同步,并根据从节点的回应确定从节点可以对该数据块进行同步,然后再继续遍历。

步骤205:若主节点在预设时间内未接收到回应,则停止从节点的同步线程,主节点将不再发送数据块号并同步接下来遍历的全部数据块。

可以理解的是,若主节点在预设时间内未接收到回应,则说明从节点出现了问题,不能再对奇数数据块进行同步了,因此主节点可以控制停止从节点的同步线程,并不再发送数据块号,而是通过主节点自身对剩下的未同步的数据块进行同步。

步骤206:若主节点处理出现错误,则切换从节点与主节点。

其中,切换从节点与主节点也就数双控RAID进行主备切换,由原来的从节点完成出现错误的主节点需要进行的操作流程。

步骤207:元数据区的位图的有效位均清空后,主节点和从节点重新加载元数据区的位图。

可以理解得是,步骤207与步骤103相似,在此不再赘述。

本实施例中,本发明实施例通过主节点的管理对双控RAID进行奇同步和偶同步,可以使每个磁盘接受两个节点的IO能够顺序达到磁盘,使得磁头尽可能向同一个方向移动,避免产生因磁盘的抖动,导致的读写效率下降的问题,并且处理的区域块不会重复,避免需要加锁处理。

请参考图5,图5为本发明实施例所提供的一种双控RAID同步装置的结构图。该装置可以包括:

第一加载模块100,用于主节点和从节点从磁盘的元数据区加载置脏后的位图;

同步模块200,用于所述主节点和所述从节点分别同步所述位图中偶数位对应的偶数数据块和所述位图中奇数位对应的奇数数据块;其中,所述主节点和所述从节点每同步完一个数据块均会更新一次所述元数据区的位图;

第二加载模块300,用于所述元数据区的位图的有效位均清空后,所述主节点和所述从节点重新加载所述元数据区的位图。

可选的,所述同步模块200,可以包括:

遍历单元,用于所述主节点从数据块0开始遍历;

第一同步单元,用于所述主节点对偶数数据块进行同步;

发送单元,用于所述主节点在遍历到奇数数据块时,将所述奇数数据块的数据块号发送给所述从节点;

第二遍历单元,用于所述从节点收到所述数据块号后进行回应,并对所述数据块号对应的数据块进行同步;

响应单元,用于所述主节点收到所述回应后,继续遍历。

可选的,所述同步模块200,还可以包括:

第三同步单元,用于若所述主节点在预设时间内未接收到所述回应,则停止所述从节点的同步线程,所述主节点将不再发送所述数据块号并同步接下来遍历的全部数据块。

可选的,所述同步模块200,还可以包括:

切换单元,用于若所述主节点处理出现错误,则切换所述从节点与所述主节点。

可选的,该装置还可以包括:

错误发送模块,用于若所述从节点下发IO出错,则在全部奇数数据块同步结束后,将全部错误发送到所述主节点。

本实施例中,本发明实施例通过同步模块200使主节点和从节点分别同步位图中偶数位对应的偶数数据块和位图中奇数位对应的奇数数据块,可以使双控RAID的同步根据位图上的奇数位和偶数位在两个节点上并行进行,实现了负载均衡,避免了节点空闲的现象,通过第二加载模块300使元数据区的位图的有效位均清空后,主节点和从节点重新加载元数据区的位图,进行了位图的合并,使得双控RAID可以更加快速的完成同步,缩减了丢失数据风险的时间,提升了用户体验。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的双控RAID同步方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1