一种存储系统的缓存镜像方法

文档序号:6398341阅读:342来源:国知局
专利名称:一种存储系统的缓存镜像方法
技术领域
本发明涉及存储系统的缓存镜像领域,尤其涉及多控制器存储系统的缓存镜像方法。
背景技术
缓存镜像技术是针对于存储处理出现故障时可能产生的缓存中的数据丢失而制定的解决方案,他将缓存数据同时保存在多个控制器上,系统工作时会自动向其他控制器进行备份,是多控制器存储系统中常用的缓存保护技术,其基本原理就是在每个控制器上建立缓存镜像,保证多控制器间的缓存一致性。申请号为200910253317.5的专利文件描述了一种双控制器存储系统的缓存镜像系统及方法。该系统和方法提出了包含有两个控制器的存储系统,第一控制器和第二控制器之间通过存储器直接访问DMA建立直接通讯链路,第一控制器在接收到写请求后将数据写入本地缓存中,然后将数据转发到第二控制器进行镜像,第二控制器回复镜像完成后,结束写请求。但是,在该发明中,使用的存储系统仅限于双控制器存储系统,不支持多控制器存储系统,并且写请求只通过第一控制器下发,第二控制器只作为镜像,并未提及写请求从两个控制器同时下发时的处理方法。

发明内容
为了能够在多控制器存储系统中,同时通过多个控制器写数据时,保证控制器间的缓存一致性,本发明提出一种存储系统的缓存镜像方法。为了解决上述技术问题,本发明提供了一种存储系统的缓存镜像方法,所述存储系统包括η个控制器,其中一个控制器为主控制器,剩余η-l个控制器为从控制器,所述存储系统的各个控制器之间通过通讯链路连接;η > 2 ;任何一个或者多个控制器收到写请求后将对应的数据写入本地缓存,并且向其他控制器转发写请求;收到转发写请求的控制器将写请求的数据写入到本地缓存。进一步地,主控制器的功能包括:执行缓存镜像的功能和执行对物理存储设备读写的功能,从控制器的功能包括:执行缓存镜像的功能。进一步地,在η个控制器的本地缓存的每一个缓存块中增加一个标记位,所述标记位用于记录所述缓存块进行写操作的次数,记为count。进一步地,当收到写请求的控制器是主控制器时,所述方法包括:A)主控制器将写请求转发到从控制器;B)从控制器收到主控制器转发过来的写请求,将写请求的数据写入到本地缓存;C)从控制器写入完成后,从控制器将备份完成的回复返回给主控制器;D)主控制器收到所有从控制器备份完成的回复后,将写请求的数据写入到本地缓存;E)主控制器写入完成后,返回写请求执行成功。
进一步地,当收到写请求的控制器是从控制器时,所述方法包括:a)从控制器将写请求对应的数据写入到本地缓存,b)从控制器将写请求转发到主控制器和其他从控制器;c)主控制器和其他从控制器收到从控制器转发过来的写请求,将写请求的数据写入到本地缓存;d)主控制器和其他从控制器写入完成后,将备份完成的回复返回给从控制器;e )从控制器收到所有主控制器和其他从控制器备份完成的回复后,返回写请求执行成功。进一步地,控制器将写请求的数据写入到本地缓存为:Zl)控制器判断写请求指定的写入位置是否在本地缓存中,若不存在,则执行步骤Z2),若存在,则执行步骤Z3);Z2)增加新的缓存块;并将写请求的数据写入到增加新的缓存块中;结束写入;Z3)根据写请求指定的写入位置定位到对应的缓存块,并将写请求的数据写入到对应的缓存块中;结束写入。进一步地,当收到写请求的控制器是主控制器时,所述方法包括:Aff)主控制器将写请求转发到从控制器;Bff)从控制器收到主控制器转发过来的写请求,将写请求的数据写入到本地缓存相应的缓存块中,并将所述缓存块的count值加I ;CW)从控制器写入完成后,从控制器将备份完成的回复返回给主控制器;所述备份完成的恢复中包括所述缓存块的count值;DW)主控制器收到所有从控制器备份完成的回复后,将写请求的数据写入到本地缓存相应的缓存块中;Eff)主控制器比较本地缓存对应缓存块的count值与从控制器返回的缓存块的count值;若主控制器收到的从控制器返回的缓存块的count值大于本地缓存对应缓存块的count值,则执行步骤FW);否则执行步骤GW);Fff)将收到的从控制器返回的缓存块的count值赋值给主控制器本地缓存对应缓存块的count值;流程结束,返回写请求执行成功;Gff)主控制器本地缓存对应缓存块的count值加I ;流程结束,返回写请求执行成功。进一步地,当收到写请求的控制器是从控制器时,所述方法包括:aw)从控制器将写请求的数据写入到本地缓存相应的缓存块中,并将所述缓存块的count值加I ;bw)从控制器将写请求和本地缓存对应缓存块的count值一并转发到主控制器和其他从控制器;cw)主控制器和其他从控制器收到从控制器转发过来的写请求,将写请求的数据写入到本地缓存相应的缓存块中;dw)主控制器和其他从控制器分别比较本地缓存对应缓存块的count值与从控制器返回的缓存块的count值;若收到的从控制器发送的对应缓存块的count值大于本地缓存对应缓存块的count值,则执行步骤ew);否则执行步骤fw);
ew)将收到的从控制器发送的缓存块的count值赋值给主控制器或其他从控制器本地缓存对应缓存块的count值;流程结束,返回写请求执行成功;fw)主控制器或其他从控制器本地缓存对应缓存块的count值加I ;流程结束,返回写请求执行成功。进一步地,所述方法还包括释放缓存块的步骤。进一步地,所述释放缓存块的步骤包括 I)主控制器释放一组缓存块,保存释放时所述缓存块的count值;2)主控制器把释放缓存块的命令和释放时缓存块的count值发送到从控制器;3)从控制器收到释放缓存块的命令,比较释放缓存块的命令指定的缓存块的count值和收到的主控制器缓存块的count值;若从控制器对应缓存块的count值小于收到的主控制器缓存块的count值,则执行步骤4);否则执行步骤5);4)从控制器释放释放缓存块的命令指定的缓存块;所述缓存块的count值清零,流程结束;5)从控制器释放缓存块的命令指定的缓存块不能释放;流程结束。与现有技术相比,本发明的存储系统的缓存镜像方法在多控制器存储系统中,通过多个控制器同时写数据,而不破坏多控制器间的缓存一致性,从而提高存储系统的读写性能。


图1为本发明实施例的存储系统的结构示意图;图2为本发明实施例的近端写的流程图;图3为本发明实施例的远端写的流程图;图4为本发明实施例的释放缓存快的流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。本发明实施例提出了一种存储系统的缓存镜像方法,应用于存储系统,所述存储系统包括η个控制器,其中一个控制器为主控制器,剩余η-l个控制器为从控制器,所述存储系统的各个控制器之间通过通讯链路连接;n ^ 2 ;如图1所示。任何一个或者多个控制器收到写请求后将对应的数据写入本地缓存,并且向其他控制器转发写请求;收到转发写请求的控制器将写请求的数据写入到本地缓存。本发明实施例所述控制器分为主控制器和从控制器,这是人为指定的,只有主控制器可以执行对物理存储设备读写的动作,从控制器只执行缓存的镜像功能。无论主控制器还是从控制器中的任何一个控制器收到写请求后将对应的数据写入本地缓存和向其他控制器转发写请求,促使其他控制器进行写镜像。当多个控制器同时收到写请求时,由于多个控制器不会同时收到对同一位置的写请求,因此多个控制器可以按照本发明实施例的方法各自处理自己收到的写请求。控制器收到写请求的时候,首先将需要写的数据存到本地缓存中,然后再由本地的缓存模块将数据写入到物理存储设备。第一步,如果存在多个控制器,则要将本身缓存中的数据发送到其他控制器上,进行备份,这个过程叫做缓存镜像。第二步,执行对物理存储设备的读写,是在缓存镜像过程完成后,再将数据写入实际的物理存储设备。若收到写请求的控制器是主控制器,主控制器首先将写请求转发到从控制器,在从控制器上进行镜像,这个过程称为近端写。若收到写请求的控制器是从控制器,从控制器首先将写请求对应的数据保存到本地缓存,然后转发到其他控制器上进行镜像。这个过程称为远端写。分别结合图2和图3说明近端写和远端写的存储系统的缓存镜像方法。如图2所示,对于近端写,收到写请求的控制器是主控制器,所述方法包括:A)主控制器将写请求转发到从控制器;B)从控制器收到主控制器转发过来的写请求,将写请求的数据写入到本地缓存;C)从控制器写入完成后,从控制器将备份完成的回复返回给主控制器;D)主控制器收到所有从控制器备份完成的回复后,将写请求的数据写入到本地缓存;E)主控制器写入完成后,返回写请求执行成功。步骤B)和D)将写请求的数据写入到本地缓存前,控制器首先判断写请求指定的写入位置是否在本地缓存中,若存在,根据写请求指定的写入位置定位到对应的缓存块,并将写请求的数据写入到对应的缓存块中。若不存在,则增加新的缓存块,将写请求的数据写入到增加新的缓存块中。写请求执行结果返回给向主控制器发送写请求的模块或者应该调用写操作的其他模块。如图3所示,对于远端写,收到写请求的控制器是从控制器,所述方法包括:a)从控制器将写请求对应的数据写入到本地缓存,b)从控制器将写请求转发到主控制器和其他从控制器;c)主控制器和其他从控制器收到从控制器转发过来的写请求,将写请求的数据写入到本地缓存;d)主控制器和其他从控制器写入完成后,将备份完成的回复返回给从控制器;
e )从控制器收到所有主控制器和其他从控制器备份完成的回复后,返回写请求执行成功。步骤a)和c)将写请求的数据写入到本地缓存前,与近端写的过程一样,控制器首先判断写请求指定的写入位置是否在本地缓存中,若存在,根据写请求指定的写入位置定位到对应的缓存块,并将写请求的数据写入到对应的缓存块中。若不存在,则增加新的缓存块,将写请求的数据写入到增加新的缓存块中。写请求执行结果返回给从主控制器发送写请求的模块或者应该调用写操作的其他模块。由于控制器中的缓存块是有限的,只能暂时存储数据,当写请求结束后,用于暂存数据的缓存块就是可以被释放的,通过其他的机制,在必要时候会释放出来。主控制器释放缓存块的时候,会通知从控制器进行相应的释放。但是,如果从控制器上正在进行一个远端写流程,就会将最新的缓存数据也释放掉,造成多控制器镜像间数据不一致。因此,本发明实施例通过记录缓存块写计数机制,保证多控制器间缓存一致性。
在η个控制器的本地缓存的每一个缓存块中增加一个标记位,所述标记位用于记录所述缓存块进行写操作的次数,记为count。本发明实施例对于每一个用于暂存数据的缓存块,增加一个标记位,用来记录该缓存块进行写操作的计数,主控制器和从控制器在写数据时,通过不同的机制增加该计数,保证计数的一致。在释放缓存块时,通过比较count值,判断是否可以释放该缓存块。如图2所示,在近端写流程中,收到写请求的控制器是主控制器,所述方法包括:Aff)主控制器将写请求转发到从控制器;Bff)从控制器收到主控制器转发过来的写请求,将写请求的数据写入到本地缓存相应的缓存块中,并将所述缓存块的count值加I ;CW)从控制器写入完成后,从控制器将备份完成的回复返回给主控制器;所述备份完成的恢复中包括所述缓存块的count值;DW)主控制器收到所有从控制器备份完成的回复后,将写请求的数据写入到本地缓存相应的缓存块中;Eff)主控制器比较本地缓存对应缓存块的count值与从控制器返回的缓存块的count值;若主控制器收到的从控制器返回的缓存块的count值大于本地缓存对应缓存块的count值,则执行步骤FW);否则执行步骤GW);Fff)将收到的从控制器返回的缓存块的count值赋值给主控制器本地缓存对应缓存块的count值;流程结束,返回写请求执行成功;Gff)主控制器本地缓存对应缓存块的count值加I ;流程结束,返回写请求执行成功。如图3所示,在远端写流程中,收到写请求的控制器是从控制器,所述方法包括:aw)从控制器将写请求的数据写入到本地缓存相应的缓存块中,并将所述缓存块的count值加I ;bw)从控制器将写请求和本地缓存对应缓存块的count值一并转发到主控制器和其他从控制器;cw)主控制器和其他从控制器收到从控制器转发过来的写请求,将写请求的数据写入到本地缓存相应的缓存块中;dw)主控制器和其他从控制器分别比较本地缓存对应缓存块的count值与从控制器返回的缓存块的count值;若收到的从控制器发送的对应缓存块的count值大于本地缓存对应缓存块的count值,则执行步骤ew);否则执行步骤fw);ew)将收到的从控制器发送的缓存块的count值赋值给主控制器或其他从控制器本地缓存对应缓存块的count值;流程结束,返回写请求执行成功;fw)主控制器或其他从控制器本地缓存对应缓存块的count值加I ;流程结束,返回写请求执行成功。步骤BW)、DW)、aw)和cw),将写请求的数据写入到本地缓存相应的缓存块中时,控制器首先判断写请求指定的写入位置是否在本地缓存中,若存在,根据写请求指定的写入位置定位到对应的缓存块,并将写请求的数据写入到对应的缓存块中。若不存在,则增加新的缓存块,将写请求的数据写入到增加新的缓存块中。当存储系统中主控制器将缓存块的内容写到物理设备上以后,会进行缓存块的释放动作。当主控制器释放一组缓存块时,记录这些缓存块在被释放时候的count值,主控制器端释放完成后,向从控制器发送释放的命令。步骤EW)和ew),主控制器和其他从控制器分别比较本地缓存对应缓存块的count值与从控制器返回的缓存块的count值时,原则上收到一个回复,比较一次,最终的值为最大值。一般情况下,只有两个控制器做备份,不存在多个从控制器,在有多个控制器存在的情况下,也是做两两备份。当从控制器收到释放缓存块的命令,找到相应的缓存块时,比较该缓存块当前的count值和收到的count值,如果当前的count小于收到的count值,则释放该缓存块,否贝U,说明该缓存块比主控制器相应的缓存块内容更新,不能释放。当释放缓存块时,该缓存块对应的count值清零。具体为:I)主控制器释放一组缓存块,保存释放时所述缓存块的count值;2)主控制器把释放缓存块的命令和释放时缓存块的count值发送到从控制器;3)从控制器收到释放缓存块的命令,比较释放缓存块的命令指定的缓存块的count值和收到的主控制器缓存块的count值;若从控制器对应缓存块的count值小于收到的主控制器缓存块的count值,则执行步骤4);否则执行步骤5);4)从控制器释放释放缓存块的命令指定的缓存块;该缓存块对应的count值清零,流程结束;5)从控制器释放缓存块的命令指定的缓存块不能释放;流程结束。本发明实施例的存储系统的缓存镜像方法,应用于两个以上控制器的存储系统,每个控制器收到写请求后将对应的数据写入本地缓存和向其他控制器转发写请求,促使其他控制器进行写镜像。通过记录缓存块写计数机制,保证多控制器间缓存一致性。以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种存储系统的缓存镜像方法,其特征在于:所述存储系统包括η个控制器,其中一个控制器为主控制器,剩余η-l个控制器为从控制器,所述存储系统的各个控制器之间通过通讯链路连接;η彡2 ; 任何一个或者多个控制器收到写请求后将对应的数据写入本地缓存,并且向其他控制器转发写请求;收到转发写请求的控制器将写请求的数据写入到本地缓存。
2.按权利要求1所述的方法,其特征在于:主控制器的功能包括:执行缓存镜像的功能和执行对物理存储设备读写的功能,从控制器的功能包括:执行缓存镜像的功能。
3.按权利要求1所述的方法,其特征在于:在η个控制器的本地缓存的每一个缓存块中增加一个标记位,所述标记位用于记录所述缓存块进行写操作的次数,记为count。
4.按权利要求1所述的方法,其特征在于:当收到写请求的控制器是主控制器时,所述方法包括: A)主控制器将写请求转发到从控制器; B)从控制器收到主控制器转发过来的写请求,将写请求的数据写入到本地缓存; C)从控制器写入完成后,从控制器将备份完成的回复返回给主控制器; D)主控制器收到所有从控制器备份完成的回复后,将写请求的数据写入到本地缓存; E)主控制器写入完成后,返回写请求执行成功。
5.按权利要求1所述的方法,其特征在于:当收到写请求的控制器是从控制器时,所述方法包括: a)从控制器将写请求对应的数据写入到本地缓存, b)从控制器将写请求转发到主控制器和其他从控制器; c)主控制器和其他从控制器收到从控制器转发过来的写请求,将写请求的数据写入到本地缓存; d)主控制器和其他从控制器写入完成后,将备份完成的回复返回给从控制器; e )从控制器收到所有主控制器和其他从控制器备份完成的回复后,返回写请求执行成功。
6.按权利要求4或5所述的方法,其特征在于:控制器将写请求的数据写入到本地缓存为: Zl)控制器判断写请求指定的写入位置是否在本地缓存中,若不存在,则执行步骤Z2),若存在,则执行步骤Z3); Z2)增加新的缓存块;并将写请求的数据写入到增加新的缓存块中;结束写入; Z3)根据写请求指定的写入位置定位到对应的缓存块,并将写请求的数据写入到对应的缓存块中;结束写入。
7.按权利要求3所述的方法,其特征在于:当收到写请求的控制器是主控制器时,所述方法包括: Aff)主控制器将写请求转发到从控制器; Bff)从控制器收到主控制器转发过来的写请求,将写请求的数据写入到本地缓存相应的缓存块中,并将所述缓存块的count值加I ; CW)从控制器写入完成后,从控制器将备份完成的回复返回给主控制器;所述备份完成的恢复中包括所述缓存块的count值;DW)主控制器收到所有从控制器备份完成的回复后,将写请求的数据写入到本地缓存相应的缓存块中; Eff)主控制器比较本地缓存对应缓存块的count值与从控制器返回的缓存块的count值;若主控制器收到的从控制器返回的缓存块的count值大于本地缓存对应缓存块的count值,则执行步骤FW);否则执行步骤GW); Fff)将收到的从控制器返回的缓存块的count值赋值给主控制器本地缓存对应缓存块的count值;流程结束,返回写请求执行成功; Gff)主控制器本地缓存对应缓存块的count值加I ;流程结束,返回写请求执行成功。
8.按权利要求3所述的方法,其特征在于:当收到写请求的控制器是从控制器时,所述方法包括: aw)从控制器将写请求的数据写入到本地缓存相应的缓存块中,并将所述缓存块的count 值加 I ; bw)从控制器将写请求和本地缓存对应缓存块的count值一并转发到主控制器和其他从控制器; cw)主控制器和其他从控制器收到从控制器转发过来的写请求,将写请求的数据写入到本地缓存相应的缓存块中; dw)主控制器和其他从控制器分别比较本地缓存对应缓存块的count值与从控制器返回的缓存块的count值;若收到的从控制器发送的对应缓存块的count值大于本地缓存对应缓存块的count值,则执行步骤ew);否则执行步骤fw); ew)将收到的从控制器发送的缓存块的count值赋值给主控制器或其他从控制器本地缓存对应缓存块的count值;流程结束,返回写请求执行成功; fw)主控制器或其他从控制器本地缓存对应缓存块的count值加I ;流程结束,返回写请求执行成功。
9.按权利要求7或8所述的方法,其特征在于:所述方法还包括释放缓存块的步骤。
10.按权利要求9所述的方法,其特征在于:所述释放缓存块的步骤包括 1)主控制器释放一组缓存块,保存释放时所述缓存块的count值; 2)主控制器把释放缓存块的命令和释放时缓存块的count值发送到从控制器; 3)从控制器收到释放缓存块的命令,比较释放缓存块的命令指定的缓存块的count值和收到的主控制器缓存块的count值;若从控制器对应缓存块的count值小于收到的主控制器缓存块的count值,则执行步骤4);否则执行步骤5); 4)从控制器释放释放缓存块的命令指定的缓存块;所述缓存块的count值清零,流程结束; 5)从控制器释放缓存块的命令指定的缓存块不能释放;流程结束。
全文摘要
一种存储系统的缓存镜像方法,及存储系统的缓存镜像领域,能够在多控制器存储系统中,同时通过多个控制器写数据时,保证控制器间的缓存一致性,所述存储系统包括n个控制器,其中一个控制器为主控制器,剩余n-1个控制器为从控制器,所述存储系统的各个控制器之间通过通讯链路连接;n≥2;所述方法为任何一个或者多个控制器收到写请求后将对应的数据写入本地缓存,并且向其他控制器转发写请求;收到转发写请求的控制器将写请求的数据写入到本地缓存。本发明的存储系统的缓存镜像方法在多控制器存储系统中,通过多个控制器同时写数据,而不破坏多控制器间的缓存一致性,从而提高存储系统的读写性能。
文档编号G06F12/16GK103092778SQ20131002549
公开日2013年5月8日 申请日期2013年1月23日 优先权日2013年1月23日
发明者王倩 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1